summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--WHATSNEW.txt225
-rw-r--r--docs/Samba-Developers-Guide.pdf3778
-rw-r--r--docs/Samba-HOWTO-Collection.pdf10370
-rw-r--r--docs/announce3
-rwxr-xr-xdocs/docbook/configure13
-rw-r--r--docs/docbook/configure.in10
-rw-r--r--docs/docbook/devdoc/dev-doc.sgml2
-rw-r--r--docs/docbook/devdoc/rpc_plugin.sgml76
-rw-r--r--docs/docbook/faq/clientapp.sgml24
-rw-r--r--docs/docbook/faq/config.sgml16
-rw-r--r--docs/docbook/faq/errors.sgml4
-rw-r--r--docs/docbook/faq/features.sgml6
-rw-r--r--docs/docbook/faq/general.sgml2
-rw-r--r--docs/docbook/faq/install.sgml4
-rw-r--r--docs/docbook/faq/printing.sgml36
-rw-r--r--docs/docbook/faq/sambafaq.sgml2
-rw-r--r--docs/docbook/manpages/findsmb.1.sgml56
-rw-r--r--docs/docbook/manpages/lmhosts.5.sgml37
-rw-r--r--docs/docbook/manpages/net.8.sgml21
-rw-r--r--docs/docbook/manpages/nmbd.8.sgml101
-rw-r--r--docs/docbook/manpages/nmblookup.1.sgml33
-rw-r--r--docs/docbook/manpages/pdbedit.8.sgml104
-rw-r--r--docs/docbook/manpages/rpcclient.1.sgml74
-rw-r--r--docs/docbook/manpages/samba.7.sgml67
-rw-r--r--docs/docbook/manpages/smb.conf.5.sgml1493
-rw-r--r--docs/docbook/manpages/smbcacls.1.sgml53
-rw-r--r--docs/docbook/manpages/smbclient.1.sgml102
-rw-r--r--docs/docbook/manpages/smbcontrol.1.sgml29
-rw-r--r--docs/docbook/manpages/smbd.8.sgml88
-rw-r--r--docs/docbook/manpages/smbgroupedit.8.sgml78
-rw-r--r--docs/docbook/manpages/smbmnt.8.sgml9
-rw-r--r--docs/docbook/manpages/smbmount.8.sgml41
-rw-r--r--docs/docbook/manpages/smbpasswd.5.sgml26
-rw-r--r--docs/docbook/manpages/smbpasswd.8.sgml83
-rw-r--r--docs/docbook/manpages/smbsh.1.sgml69
-rw-r--r--docs/docbook/manpages/smbspool.8.sgml27
-rw-r--r--docs/docbook/manpages/smbstatus.1.sgml27
-rw-r--r--docs/docbook/manpages/smbtar.1.sgml36
-rw-r--r--docs/docbook/manpages/smbumount.8.sgml9
-rw-r--r--docs/docbook/manpages/swat.8.sgml42
-rw-r--r--docs/docbook/manpages/testparm.1.sgml42
-rw-r--r--docs/docbook/manpages/testprns.1.sgml27
-rw-r--r--docs/docbook/manpages/vfstest.1.sgml7
-rw-r--r--docs/docbook/manpages/wbinfo.1.sgml70
-rw-r--r--docs/docbook/manpages/winbindd.8.sgml92
-rw-r--r--docs/docbook/projdoc/ADS-HOWTO.sgml29
-rw-r--r--docs/docbook/projdoc/Browsing-Quickguide.sgml16
-rw-r--r--docs/docbook/projdoc/CVS-Access.sgml2
-rw-r--r--docs/docbook/projdoc/DOMAIN_MEMBER.sgml133
-rw-r--r--docs/docbook/projdoc/ENCRYPTION.sgml189
-rw-r--r--docs/docbook/projdoc/GROUP-MAPPING-HOWTO.sgml1
-rw-r--r--docs/docbook/projdoc/GroupProfiles.sgml285
-rw-r--r--docs/docbook/projdoc/Integrating-with-Windows.sgml18
-rw-r--r--docs/docbook/projdoc/NT_Security.sgml6
-rw-r--r--docs/docbook/projdoc/Portability.sgml12
-rw-r--r--docs/docbook/projdoc/Samba-BDC-HOWTO.sgml21
-rw-r--r--docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml (renamed from docs/docbook/projdoc/passdb.sgml)458
-rw-r--r--docs/docbook/projdoc/Samba-PDC-HOWTO.sgml28
-rw-r--r--docs/docbook/projdoc/msdfs_setup.sgml2
-rw-r--r--docs/docbook/projdoc/pdb_mysql.sgml146
-rw-r--r--docs/docbook/projdoc/pdb_xml.sgml42
-rw-r--r--docs/docbook/projdoc/printer_driver2.sgml6
-rw-r--r--docs/docbook/projdoc/samba-doc.sgml16
-rw-r--r--docs/docbook/projdoc/upgrading-to-3.0.sgml20
-rw-r--r--docs/docbook/projdoc/winbind.sgml40
-rw-r--r--docs/docs-status4
-rw-r--r--docs/faq/clientapp.html19
-rw-r--r--docs/faq/errors.html44
-rw-r--r--docs/faq/general.html31
-rw-r--r--docs/faq/install.html55
-rw-r--r--docs/faq/samba-faq.html111
-rw-r--r--docs/htmldocs/Samba-Developers-Guide.html145
-rw-r--r--docs/htmldocs/Samba-HOWTO-Collection.html17270
-rw-r--r--docs/htmldocs/ads.html86
-rw-r--r--docs/htmldocs/appendixes.html177
-rw-r--r--docs/htmldocs/browsing-quick.html70
-rw-r--r--docs/htmldocs/bugreport.html31
-rw-r--r--docs/htmldocs/cvs-access.html35
-rw-r--r--docs/htmldocs/diagnosis.html67
-rw-r--r--docs/htmldocs/domain-security.html227
-rw-r--r--docs/htmldocs/findsmb.1.html195
-rw-r--r--docs/htmldocs/groupmapping.html11
-rw-r--r--docs/htmldocs/groupprofiles.html565
-rw-r--r--docs/htmldocs/improved-browsing.html81
-rw-r--r--docs/htmldocs/install.html89
-rw-r--r--docs/htmldocs/integrate-ms-networks.html105
-rw-r--r--docs/htmldocs/introduction.html213
-rw-r--r--docs/htmldocs/lmhosts.5.html94
-rw-r--r--docs/htmldocs/msdfs.html15
-rw-r--r--docs/htmldocs/net.8.html45
-rw-r--r--docs/htmldocs/nmbd.8.html370
-rw-r--r--docs/htmldocs/nmblookup.1.html95
-rw-r--r--docs/htmldocs/optional.html608
-rw-r--r--docs/htmldocs/other-clients.html59
-rw-r--r--docs/htmldocs/pam.html19
-rw-r--r--docs/htmldocs/passdb.html1646
-rw-r--r--docs/htmldocs/pdb-mysql.html67
-rw-r--r--docs/htmldocs/pdb-xml.html15
-rw-r--r--docs/htmldocs/pdbedit.8.html215
-rw-r--r--docs/htmldocs/portability.html23
-rw-r--r--docs/htmldocs/printing.html107
-rw-r--r--docs/htmldocs/pwencrypt.html39
-rw-r--r--docs/htmldocs/rpcclient.1.html100
-rw-r--r--docs/htmldocs/samba-bdc.html62
-rw-r--r--docs/htmldocs/samba-howto-collection.html673
-rw-r--r--docs/htmldocs/samba-ldap-howto.html55
-rw-r--r--docs/htmldocs/samba-pdc.html121
-rw-r--r--docs/htmldocs/samba.7.html160
-rw-r--r--docs/htmldocs/securitylevels.html11
-rw-r--r--docs/htmldocs/smb.conf.5.html3242
-rw-r--r--docs/htmldocs/smbcacls.1.html77
-rw-r--r--docs/htmldocs/smbclient.1.html177
-rw-r--r--docs/htmldocs/smbcontrol.1.html96
-rw-r--r--docs/htmldocs/smbd.8.html345
-rw-r--r--docs/htmldocs/smbgroupedit.8.html156
-rw-r--r--docs/htmldocs/smbmnt.8.html25
-rw-r--r--docs/htmldocs/smbmount.8.html84
-rw-r--r--docs/htmldocs/smbpasswd.5.html67
-rw-r--r--docs/htmldocs/smbpasswd.8.html216
-rw-r--r--docs/htmldocs/smbsh.1.html179
-rw-r--r--docs/htmldocs/smbspool.8.html61
-rw-r--r--docs/htmldocs/smbstatus.1.html79
-rw-r--r--docs/htmldocs/smbtar.1.html120
-rw-r--r--docs/htmldocs/smbumount.8.html23
-rw-r--r--docs/htmldocs/speed.html57
-rw-r--r--docs/htmldocs/swat.8.html115
-rw-r--r--docs/htmldocs/testparm.1.html136
-rw-r--r--docs/htmldocs/testprns.1.html87
-rw-r--r--docs/htmldocs/type.html182
-rw-r--r--docs/htmldocs/unix-permissions.html63
-rw-r--r--docs/htmldocs/vfs.html59
-rw-r--r--docs/htmldocs/vfstest.1.html51
-rw-r--r--docs/htmldocs/wbinfo.1.html189
-rw-r--r--docs/htmldocs/winbind.html169
-rw-r--r--docs/htmldocs/winbindd.8.html230
-rw-r--r--docs/manpages/findsmb.139
-rw-r--r--docs/manpages/lmhosts.524
-rw-r--r--docs/manpages/net.820
-rw-r--r--docs/manpages/nmbd.870
-rw-r--r--docs/manpages/nmblookup.125
-rw-r--r--docs/manpages/pdbedit.875
-rw-r--r--docs/manpages/rpcclient.150
-rw-r--r--docs/manpages/samba.756
-rw-r--r--docs/manpages/smb.conf.51127
-rw-r--r--docs/manpages/smbcacls.116
-rw-r--r--docs/manpages/smbclient.164
-rw-r--r--docs/manpages/smbcontrol.122
-rw-r--r--docs/manpages/smbd.864
-rw-r--r--docs/manpages/smbgroupedit.823
-rw-r--r--docs/manpages/smbmnt.89
-rw-r--r--docs/manpages/smbmount.832
-rw-r--r--docs/manpages/smbpasswd.522
-rw-r--r--docs/manpages/smbpasswd.867
-rw-r--r--docs/manpages/smbsh.152
-rw-r--r--docs/manpages/smbspool.817
-rw-r--r--docs/manpages/smbstatus.119
-rw-r--r--docs/manpages/smbtar.125
-rw-r--r--docs/manpages/smbumount.89
-rw-r--r--docs/manpages/swat.830
-rw-r--r--docs/manpages/testparm.128
-rw-r--r--docs/manpages/testprns.119
-rw-r--r--docs/manpages/vfstest.15
-rw-r--r--docs/manpages/wbinfo.149
-rw-r--r--docs/manpages/winbindd.863
-rw-r--r--docs/roadmap-3.html2
-rw-r--r--docs/textdocs/CreatingGroupProfiles-Win2K.txt112
-rw-r--r--docs/textdocs/CreatingGroupProfiles-Win9X.txt58
-rw-r--r--docs/textdocs/CreatingGroupProfilesInNT4.txt71
-rw-r--r--examples/LDAP/export_smbpasswd.pl63
-rw-r--r--examples/LDAP/import_smbpasswd.pl65
-rw-r--r--examples/pdb/README46
-rw-r--r--examples/pdb/pdb_test.c14
-rwxr-xr-xexamples/printing/smbprint.old95
-rw-r--r--examples/sam/.cvsignore1
-rw-r--r--examples/sam/Makefile.in28
-rw-r--r--examples/sam/README29
-rw-r--r--examples/sam/sam_skel.c250
-rw-r--r--packaging/RedHat/makerpms.sh.tmpl4
-rw-r--r--packaging/RedHat/samba2.spec.tmpl10
-rw-r--r--packaging/SGI/relnotes.html21
-rw-r--r--source3/.cvsignore4
-rw-r--r--source3/Makefile.in112
-rw-r--r--source3/auth/auth.c1
-rw-r--r--source3/auth/auth_domain.c2
-rw-r--r--source3/auth/auth_ntlmssp.c2
-rw-r--r--source3/auth/auth_sam.c43
-rw-r--r--source3/auth/auth_util.c31
-rw-r--r--source3/bin/.cvsignore3
-rw-r--r--source3/change-log2
-rw-r--r--source3/client/client.c11
-rw-r--r--source3/client/clitar.c50
-rw-r--r--source3/client/smbmount.c2
-rwxr-xr-xsource3/config.guess337
-rwxr-xr-xsource3/config.sub236
-rw-r--r--source3/configure.in40
-rwxr-xr-xsource3/configure.nodebug.developer3
-rw-r--r--source3/groupdb/mapping.c55
-rw-r--r--source3/include/.cvsignore1
-rw-r--r--source3/include/charset.h16
-rw-r--r--source3/include/client.h13
-rw-r--r--source3/include/debug.h1
-rw-r--r--source3/include/genparser.h78
-rw-r--r--source3/include/genparser_samba.h58
-rw-r--r--source3/include/gums.h240
-rw-r--r--source3/include/idmap.h56
-rw-r--r--source3/include/includes.h28
-rw-r--r--source3/include/ntlmssp.h23
-rw-r--r--source3/include/passdb.h8
-rw-r--r--source3/include/rpc_client_proto.h231
-rw-r--r--source3/include/rpc_lsa.h20
-rw-r--r--source3/include/rpc_misc.h16
-rw-r--r--source3/include/safe_string.h19
-rw-r--r--source3/include/sam.h238
-rw-r--r--source3/include/secrets.h4
-rw-r--r--source3/include/smb.h2
-rw-r--r--source3/include/tdbsam2.h95
-rw-r--r--source3/include/version.h2
-rw-r--r--source3/lib/crc32.c4
-rw-r--r--source3/lib/domain_namemap.c1317
-rw-r--r--source3/lib/gencache.c28
-rw-r--r--source3/lib/genparser.c786
-rw-r--r--source3/lib/genparser_samba.c200
-rw-r--r--source3/lib/iconv.c218
-rw-r--r--source3/lib/module.c71
-rw-r--r--source3/lib/substitute.c31
-rw-r--r--source3/lib/util_getent.c2
-rw-r--r--source3/lib/util_sid.c18
-rw-r--r--source3/lib/util_str.c27
-rw-r--r--source3/libads/ads_utils.c46
-rw-r--r--source3/libads/krb5_setpw.c11
-rw-r--r--source3/libsmb/cliconnect.c98
-rw-r--r--source3/libsmb/clientgen.c16
-rw-r--r--source3/libsmb/clifile.c2
-rw-r--r--source3/libsmb/clilist.c4
-rw-r--r--source3/libsmb/netlogon_unigrp.c37
-rw-r--r--source3/libsmb/ntlmssp.c37
-rw-r--r--source3/libsmb/smbencrypt.c100
-rw-r--r--source3/libsmb/trust_passwd.c (renamed from source3/libsmb/trusts_util.c)66
-rw-r--r--source3/mainpage.dox7
-rw-r--r--source3/modules/developer.c132
-rw-r--r--source3/modules/vfs_fake_perms.c289
-rw-r--r--source3/modules/vfs_recycle.c245
-rw-r--r--source3/nmbd/nmbd.c2
-rw-r--r--source3/nmbd/nmbd_become_lmb.c6
-rw-r--r--source3/nmbd/nmbd_browsesync.c4
-rw-r--r--source3/nmbd/nmbd_packets.c15
-rw-r--r--source3/nsswitch/winbindd.c12
-rw-r--r--source3/nsswitch/winbindd.h39
-rw-r--r--source3/nsswitch/winbindd_ads.c262
-rw-r--r--source3/nsswitch/winbindd_cache.c159
-rw-r--r--source3/nsswitch/winbindd_cm.c10
-rw-r--r--source3/nsswitch/winbindd_group.c114
-rw-r--r--source3/nsswitch/winbindd_idmap.c589
-rw-r--r--source3/nsswitch/winbindd_idmap_tdb.c441
-rw-r--r--source3/nsswitch/winbindd_rpc.c150
-rw-r--r--source3/nsswitch/winbindd_user.c56
-rw-r--r--source3/nsswitch/winbindd_util.c40
-rw-r--r--source3/nsswitch/winbindd_wins.c16
-rw-r--r--source3/param/loadparm.c429
-rw-r--r--source3/passdb/pdb_guest.c123
-rw-r--r--source3/passdb/pdb_interface.c170
-rw-r--r--source3/passdb/pdb_ldap.c59
-rw-r--r--source3/passdb/pdb_mysql.c (renamed from source3/modules/mysql.c)19
-rw-r--r--source3/passdb/pdb_plugin.c (renamed from source3/sam/sam_plugin.c)47
-rw-r--r--source3/passdb/pdb_smbpasswd.c85
-rw-r--r--source3/passdb/pdb_tdb.c59
-rw-r--r--source3/passdb/pdb_unix.c88
-rw-r--r--source3/passdb/pdb_xml.c (renamed from source3/modules/xml.c)14
-rw-r--r--source3/passdb/secrets.c90
-rw-r--r--source3/printing/nt_printing.c2
-rw-r--r--source3/python/py_spoolss_printers.c16
-rw-r--r--source3/rpc_client/cli_lsarpc.c56
-rw-r--r--source3/rpc_parse/parse_lsa.c135
-rw-r--r--source3/rpc_parse/parse_misc.c72
-rw-r--r--source3/rpc_parse/parse_net.c28
-rw-r--r--source3/rpc_parse/parse_sec.c18
-rw-r--r--source3/rpc_server/srv_dfs.c2
-rw-r--r--source3/rpc_server/srv_lsa.c178
-rw-r--r--source3/rpc_server/srv_lsa_nt.c139
-rw-r--r--source3/rpc_server/srv_netlog.c2
-rw-r--r--source3/rpc_server/srv_pipe.c27
-rw-r--r--source3/rpc_server/srv_reg.c2
-rw-r--r--source3/rpc_server/srv_samr.c2
-rwxr-xr-xsource3/rpc_server/srv_spoolss.c2
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c6
-rw-r--r--source3/rpc_server/srv_srvsvc.c2
-rw-r--r--source3/rpc_server/srv_srvsvc_nt.c9
-rw-r--r--source3/rpc_server/srv_wkssvc.c2
-rw-r--r--source3/rpcclient/cmd_lsarpc.c45
-rw-r--r--source3/rpcclient/display.c1338
-rw-r--r--source3/sam/SAM-interface_handles.txt123
-rw-r--r--source3/sam/account.c305
-rw-r--r--source3/sam/get_set_account.c845
-rw-r--r--source3/sam/get_set_domain.c263
-rw-r--r--source3/sam/get_set_group.c106
-rw-r--r--source3/sam/group.c193
-rw-r--r--source3/sam/gumm_tdb.c1193
-rw-r--r--source3/sam/gums.c161
-rw-r--r--source3/sam/gums_api.c1470
-rw-r--r--source3/sam/gums_helper.c610
-rw-r--r--source3/sam/idmap.c214
-rw-r--r--source3/sam/idmap_tdb.c526
-rw-r--r--source3/sam/interface.c1338
-rwxr-xr-xsource3/sam/sam_ads.c1378
-rw-r--r--source3/sam/sam_skel.c251
-rwxr-xr-xsource3/script/find_missing_doc.pl2
-rwxr-xr-xsource3/script/genstruct.pl299
-rw-r--r--source3/smbd/dir.c4
-rw-r--r--source3/smbd/ipc.c8
-rw-r--r--source3/smbd/negprot.c6
-rw-r--r--source3/smbd/reply.c10
-rw-r--r--source3/smbd/server.c12
-rw-r--r--source3/smbd/service.c14
-rw-r--r--source3/smbd/srvstr.c41
-rw-r--r--source3/smbd/trans2.c34
-rw-r--r--source3/smbd/vfs.c74
-rw-r--r--source3/stf/comfychair.py333
-rwxr-xr-xsource3/stf/example.py33
-rw-r--r--source3/tdb/spinlock.h2
-rw-r--r--source3/tdb/tdb.c21
-rw-r--r--source3/tdb/tdbbackup.c10
-rw-r--r--source3/tdb/tdbutil.c153
-rw-r--r--source3/torture/cmd_sam.c514
-rw-r--r--source3/torture/denytest.c54
-rw-r--r--source3/torture/mangle_test.c18
-rw-r--r--source3/torture/masktest.c11
-rw-r--r--source3/torture/samtest.c451
-rw-r--r--source3/torture/t_strcmp.c21
-rw-r--r--source3/torture/torture.c1901
-rw-r--r--source3/torture/utable.c49
-rw-r--r--source3/utils/editreg.c2069
-rw-r--r--source3/utils/net.c6
-rw-r--r--source3/utils/net_ads.c11
-rw-r--r--source3/utils/net_rap.c4
-rw-r--r--source3/utils/net_rpc_samsync.c5
-rw-r--r--source3/utils/pdbedit.c24
-rw-r--r--source3/utils/profiles.c16
-rw-r--r--source3/utils/smbcacls.c2
-rw-r--r--source3/utils/testparm.c8
-rw-r--r--source3/wrepld/server.c2
340 files changed, 19884 insertions, 58859 deletions
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 4446832fd4..23453e813c 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,6 +1,6 @@
- WHATS NEW IN Samba 3.0 alpha21
- 26th November 2002
- ===============================
+ WHATS NEW IN Samba 3.0 alpha22
+ 4th March 2003
+ ==============================
This is a pre-release of Samba 3.0. This is NOT a stable release.
Use at your own risk.
@@ -45,8 +45,17 @@ Major new features:
- Samba now negotiates NT-style status32 codes on the wire. This
improves error handling a lot.
-- better w2k printing support. The support for printing from win2000
- clients has improved greatly.
+- better w2k printing support including publishing printer
+ attributes in active directory
+
+- new loadable RPC modules
+
+- new dual-daemon winbindd support for better performance
+
+- support for migrating from a Windows NT 4.0 domain
+
+- support for establishing trust relationships with Windows NT 4.0
+ domain controllers
Plus lots of other changes!
@@ -55,40 +64,118 @@ Reporting bugs & Development Discussion
---------------------------------------
Please discuss this release on the samba-technical mailing list or by
-joining the #samba-technical IRC channel on irc.openprojects.net
+joining the #samba-technical IRC channel on irc.freenode.net.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored.
-Removed Parameters
-------------------
- * postscript
- * printer driver
- * printer driver location
- * printer driver file
+Changes in alpha22:
+-------------------
-Added Parameters
----------------
+ Added Parameters
- * ldap trust ids
- * acl compatibility
- * mangle prefix
+ * client NTLMv2 auth
+ * client lanman auth
+ * client signing
+ * client use spnego
+ * max reported print jobs
+ * msdfs proxy
-Modified Parameters
--------------------
+ See cvs log for SAMBA_3_0 for complete details. There are many
+ smaller numerous changes that would clutter the release notes.
- * restrict anonymous
- * password server
+1) remove the global_myname string and replace with wrapper function
+ global_myname()
+2) create vfs/ and pdb/ subdirectories for library installs
+3) Fixup of ordered cleanup of get_dc_list()
+4) Added more autoconf tests for Stratus VOS
+5) Fixed nasty bug where file writes with start offsets in the
+ range 0x80000000 -> 0xFFFFFFFF would fail as they were being cast
+ from IVAL (uint32) to SMB_OFF_T (off_t or off64_t, both *signed*
+ types). The sign extension would cause the offset to be treated
+ as negative.
+6) Add support to automatically retrieve the dns host name and domain
+ name of an AD server
+7) Add support for PRINTER_INFO_7 and publishing printer attributes
+ in active directory
+8) Fix for 64 bit issues with oplocks and allocation size
+9) Remove assert(count ==1) for multi-homed PDCs when resolving
+ DOMAIN<0x1b>
+10) Ensure that change_trust_account_password() always talks to
+ the PDC
+11) Add some docs on CUPS printing
+12) Fix rpcclient querygroup command
+13) The _abs time functions should not be converting from/to GMT
+14) Fix broken incremental tar in smbclient
+15) Adding supporting code for better testing using Valgrind
+16) Fix for old DOS client when veto files is set to /.*/
+17) Add win32 utility to query driver capabilities to publish
+ (examples/printing/prtpub.c)
+18) Fix memory leak when constructing an driver_level_6 structure and
+ no dependent files
+19) Add some friendly versions of NT_STATUS codes
+20) Protect nmbd against malformed reply packets
+21) Removal of unpopular winbind client environment variable
+22) Add msdfs proxy functionality; a CIFS share can directly be a
+ stand-in for another share, and when clients connect to the first
+ share, they will be redirected to the proxied share
+23) Make Samba compile cleanly with -Wwrite-strings
+24) Add new timegm() that actually works on solaris
+25) Add support for running smbd, nmbd, & winbindd under the daemontools
+ package
+26) Move user password changes into the NTSTATUS era, and add support
+ for the 'min password age' and 'min passwd len' concepts
+27) Add new gencache based namecache code
+28) Add profiles utility support to Samba 3.0.x
+29) Fix open problem with changing attributes on an existing file
+30) Efficiency fixes for internal messaging system
+31) Make sure to update print queue cache during timeout_processing()
+ to send notify events
+32) Make -i flag work like it did in 2.2
+33) Merge some rpcclient and net functionality from HEAD
+34) Add support for compiling with Heimdal kerberos libraries
+35) Connect to the actual netbios name in smb.conf and not LOCALHOST
+36) Add support for CUPS-PRINTER_CLASS
+37) Add ntlm_auth tool and update NTLMSSP support
+38) require Autoconf 2.53 and remove configure from CVS
+39) Check for too many processes *before* the fork
+40) Fix delete on close semantics to match W2K.
+41) merge desired_access for open_printer_ex from HEAD, allowing
+ cupsaddsmb to work again!
+42) Add support for dynamic RPC modules
+43) wrap all cm_get_XX calls and their subsequent requests in a retry loop
+ in case we've temporarily lost connection to the DC. Makes winbindd
+ more reliable
+44) Optimize user_ok() and user_in_group() when verifying group membership
+45) Add NTLMv2 client code (that works) and some SMB signing fixes
+46) Add caching of PRINTER_INFO_2 structures to open printer handles
+47) Add 1/3 second delay in OpenPrinter() reply to trigger a LAN/WAN
+ optimization in Windows 2000 clients
+48) Add "WinXP" to the possible values of the %a variable
+49) Fix to allow blocking lock notification to be done rapidly (no wait for
+ smb -> smb lock release). Adds new PENDING_LOCK type to lockdb (does
+ not interfere with existing locks)
+50) Limit the unix domain sockets used by winbindd (also solves FD_SETSIZE
+ problem in winbindd to boot !). Adds a "last_access" field to winbindd
+ connections, and will close the oldest idle connection once the number
+ of open connections goes over WINBINDD_MAX_SIMULTANEOUS_CLIENTS (defined
+ in local.h as 200 currently)
+51) Limit the number of print jobs returned in EnumJobs()
+
+
+
+ ===============================
+Changes in older alpha releases follow:
-Changes in alpha21:
+---------------------------------------------------------------------
- See cvs log for SAMBA_3_0 for complete details. There are many
- smaller numerous changes that would clutter the release notes.
+Changes in alpha21:
+-------------------
1) Numerous documentation updates including new Samba FAQ
2) Fixed logic error in checking wins server lists
@@ -105,7 +192,7 @@ Changes in alpha21:
11) Merge the new ACL mapping code from Andreas Gruenbacher
12) Removed make_printerdef tool from build
13) Fix fd leak on printer queue tdb's
-14) Better error/status loggin in both the pam_winbind client and
+14) Better error/status logging in both the pam_winbind client and
winbindd_pam
15) Fix fd leak with kernel change notify
16) Fix slowdown because of enumerating all print queues on every smbd startup
@@ -124,14 +211,8 @@ Changes in alpha21:
of DC's, but not authoritative (e.g. password server = DC1 DC2 *)
-
- ===============================
-
-Changes in older alpha releases follow:
-
----------------------------------------------------------------------
-
Changes in alpha20:
+-------------------
1) Rework the 'guest account gets RID 501' code again...
2) Change to use NT-based session key negotiated for Win2k SPNEGO
@@ -294,85 +375,5 @@ Changes in alpha20:
125) Add -r parameter to smbgroupedit. With -r you can manually choose
a rid
-Changes in alpha19
-1) Virtual registry framework with printing hooks (jerry)
-2) Heavy registry updates (jerry)
-3) Use 850 as the default DOS character set in smb.conf (tpot)
-4) printer fixes ) removed encoding of queueid in job number (jra)
-5) A lot of small fixes (jra)
-6) Don't crash on setfileinfo on printer fsp(jra)
-7) fixed line buffer mode in XFILE(jra)
-8) update samba.schema from 2.2 (jerry,idra)
-9) Fix problem with oplock breaks and win2k )
- noticed by Lev Iserovich <lev@ciprico.com> (jra)
-10) Update smbgroupedit to document -d ) thanks to metze (abartlet)
-11) Support weird behaviour used by win9x pass-through auth (abartlet,tpot)
-12) Support for duplicating stderr in log files (abartlet)
-13) Move startup time initialisation to server.c (abartlet)
-14) *A lot* of fixes and cleanups (abartlet)
-15) Fix up compiler warnings (abartlet)
-16) Few small fixes (tpot)
-17) Renamed new_cli_netlogon_* -> cli_netlogon_* (tpot)
-18) Fixed segfault in net time when host is unavailable (tridge)
-19) Ensure to be root when opening printer backend tdb (jra)
-20) Merges from APPLIANCE_HEAD (tpot,jerry)
-21) configure updates (tridge)
-22) getgrouplist() updates (tridge)
-23) Support for pdbedit to query account policy values (abartlet)
-24) Allow one to create trusting domain account using smbpasswd (mimir,abartlet)
-25) 'Net rpc trustdom list' (mimir, abartlet)
-26) Fix fallback to anonymous connection (mimir, abartlet)
-27) Fix for pdb_ldap and OpenLDAP 2.1
-28) Added support in swat to determine whether winbind is running (idra)
-29) Add 'hide unwritable' option (idra)
-30) Correct pickup of [homes] share after subsequent session setups (abartlet)
-31) Update rebind code in pdb_ldap (abartlet)
-32) Add some info levels to RPC srvsvc code )
- thanks to Nigel Williams" <nigel@veritas.com> (abartlet)
-33) Small doc fixes (tridge)
-34) good security patch from Timothy.Sell@unisys.com (tridge)
-35) fix minor nits in nmbd from adtam@cup.hp.com (tridge)
-36) make sure async dns nmbd child dies (tridge)
-37) interim fix for nmbd not registering DOMAIN#1b (tridge)
-38) fix for smbtar filename matching (tridge)
-39) Better quote handling in smb.conf (abartlet)
-40) Support browsers setting multiple languages in swat (idra)
-41) Changed str_list_make to be able to use a different separator string (idra)
-42) Samsync support to insert account info into the pdb (tpot)
-43) Don't hide unwritable dirs when 'hide unwritable' is enabled )
- suggested by Alexander Oswald <oswald@is.haw-hamburg.de> (idra)
-44) Fix for handling sparse files in smbd (tridge)
-45) Merges from 2_2 (jerry)
-46) Minor printer fixes (jerry)
-47) Add some checks to SID lookup code (abartlet)
-48) Cascaded VFS (Alexander Bokovoy, idra)
-49) Some netbios-less connections support in ADS mode (tridge)
-50) ADS tweaks (tridge)
-51) Fix plaintext passwords with win2k (tridge)
-52) 'net ads info' reports IP of LDAP server (tridge)
-53) Add some more RPC functions (jmcd)
-54) Add 'smb ports = ' option (tridge)
-55) Various small fixes (tridge)
-56) Passdb security checks (abartlet)
-57) Large winbind updates (abartlet)
-58) Moved rpc client routines from libsmb to rpc_client (tpot)
-59) Few nmbd fixes (jmcd)
-60) Fix swat to handle new debug level code (idra)
-61) Fix name length bug in namequeries (tridge)
-62) Don't have client binaries depend on libs they don't use )
- patch from Steve Langasek <vorlon@netexpress.net> (abartlet)
-63) Printing change notification (merged from HEAD_APPLIANCE) (jerry)
-64) fix delete printer driver (from HEAD_APPLIANCE) (jerry)
-65) Added pdb_xml and pdb_mysql (jelmer)
-66) Update pdb_test (jelmer)
-67) Fix security issues with %m (abartlet)
-68) Support for service joins from win2k AND use SPNEGO (jmcd)
-69) pdbedit -i and -e fix, add -b (idra)
-70) textdocs converted to sgml (jelmer, jerry)
-71) Merge netbios namecache code from APPLIANCE_HEAD (tpot)
-72) Fix segs in new NTLMSSP code (abartlet)
-73) Always make guest rid 501 (abartlet)
-
-
diff --git a/docs/Samba-Developers-Guide.pdf b/docs/Samba-Developers-Guide.pdf
index 3b467e0ec1..897074783c 100644
--- a/docs/Samba-Developers-Guide.pdf
+++ b/docs/Samba-Developers-Guide.pdf
@@ -1,6 +1,6 @@
%PDF-1.3
%âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030218221725-0100)/Title(SAMBA Developers Guide)/Creator(Modular DocBook HTML Stylesheet Version 1.77+)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030115164419+0600)/Title(SAMBA Developers Guide)/Creator(Modular DocBook HTML Stylesheet Version 1.77)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -12,48 +12,48 @@
10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
12 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
-13 0 obj<</Subtype/Link/Rect[72.0 684.0 197.9 697.0]/Border[0 0 0]/Dest[533 0 R/XYZ 0 734 0]>>endobj
-14 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[533 0 R/XYZ 0 696 0]>>endobj
-15 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[535 0 R/XYZ 0 734 0]>>endobj
-16 0 obj<</Subtype/Link/Rect[72.0 618.0 409.3 631.0]/Border[0 0 0]/Dest[541 0 R/XYZ 0 734 0]>>endobj
-17 0 obj<</Subtype/Link/Rect[108.0 604.8 173.7 617.8]/Border[0 0 0]/Dest[541 0 R/XYZ 0 672 0]>>endobj
-18 0 obj<</Subtype/Link/Rect[108.0 591.6 237.6 604.6]/Border[0 0 0]/Dest[541 0 R/XYZ 0 201 0]>>endobj
-19 0 obj<</Subtype/Link/Rect[108.0 578.4 200.3 591.4]/Border[0 0 0]/Dest[543 0 R/XYZ 0 705 0]>>endobj
-20 0 obj<</Subtype/Link/Rect[72.0 552.0 219.9 565.0]/Border[0 0 0]/Dest[545 0 R/XYZ 0 734 0]>>endobj
-21 0 obj<</Subtype/Link/Rect[108.0 538.8 181.6 551.8]/Border[0 0 0]/Dest[545 0 R/XYZ 0 696 0]>>endobj
-22 0 obj<</Subtype/Link/Rect[108.0 525.6 244.6 538.6]/Border[0 0 0]/Dest[545 0 R/XYZ 0 529 0]>>endobj
-23 0 obj<</Subtype/Link/Rect[108.0 512.4 199.0 525.4]/Border[0 0 0]/Dest[545 0 R/XYZ 0 335 0]>>endobj
-24 0 obj<</Subtype/Link/Rect[108.0 499.2 200.3 512.2]/Border[0 0 0]/Dest[547 0 R/XYZ 0 734 0]>>endobj
-25 0 obj<</Subtype/Link/Rect[108.0 486.0 186.2 499.0]/Border[0 0 0]/Dest[547 0 R/XYZ 0 434 0]>>endobj
-26 0 obj<</Subtype/Link/Rect[72.0 459.6 252.9 472.6]/Border[0 0 0]/Dest[549 0 R/XYZ 0 734 0]>>endobj
-27 0 obj<</Subtype/Link/Rect[108.0 446.4 214.6 459.4]/Border[0 0 0]/Dest[549 0 R/XYZ 0 696 0]>>endobj
-28 0 obj<</Subtype/Link/Rect[108.0 433.2 223.8 446.2]/Border[0 0 0]/Dest[551 0 R/XYZ 0 734 0]>>endobj
-29 0 obj<</Subtype/Link/Rect[108.0 420.0 247.6 433.0]/Border[0 0 0]/Dest[553 0 R/XYZ 0 734 0]>>endobj
-30 0 obj<</Subtype/Link/Rect[108.0 406.8 245.2 419.8]/Border[0 0 0]/Dest[553 0 R/XYZ 0 514 0]>>endobj
-31 0 obj<</Subtype/Link/Rect[108.0 393.6 194.2 406.6]/Border[0 0 0]/Dest[555 0 R/XYZ 0 734 0]>>endobj
-32 0 obj<</Subtype/Link/Rect[126.0 380.4 193.8 393.4]/Border[0 0 0]/Dest[555 0 R/XYZ 0 700 0]>>endobj
-33 0 obj<</Subtype/Link/Rect[126.0 367.2 192.0 380.2]/Border[0 0 0]/Dest[555 0 R/XYZ 0 602 0]>>endobj
-34 0 obj<</Subtype/Link/Rect[126.0 354.0 244.5 367.0]/Border[0 0 0]/Dest[555 0 R/XYZ 0 491 0]>>endobj
-35 0 obj<</Subtype/Link/Rect[72.0 327.6 216.8 340.6]/Border[0 0 0]/Dest[557 0 R/XYZ 0 734 0]>>endobj
-36 0 obj<</Subtype/Link/Rect[72.0 301.2 202.8 314.2]/Border[0 0 0]/Dest[561 0 R/XYZ 0 734 0]>>endobj
-37 0 obj<</Subtype/Link/Rect[108.0 288.0 213.7 301.0]/Border[0 0 0]/Dest[561 0 R/XYZ 0 696 0]>>endobj
-38 0 obj<</Subtype/Link/Rect[108.0 274.8 209.1 287.8]/Border[0 0 0]/Dest[561 0 R/XYZ 0 568 0]>>endobj
-39 0 obj<</Subtype/Link/Rect[108.0 261.6 224.7 274.6]/Border[0 0 0]/Dest[563 0 R/XYZ 0 705 0]>>endobj
-40 0 obj<</Subtype/Link/Rect[126.0 248.4 223.5 261.4]/Border[0 0 0]/Dest[563 0 R/XYZ 0 630 0]>>endobj
-41 0 obj<</Subtype/Link/Rect[126.0 235.2 222.2 248.2]/Border[0 0 0]/Dest[563 0 R/XYZ 0 571 0]>>endobj
-42 0 obj<</Subtype/Link/Rect[126.0 222.0 245.8 235.0]/Border[0 0 0]/Dest[563 0 R/XYZ 0 513 0]>>endobj
-43 0 obj<</Subtype/Link/Rect[126.0 208.8 222.2 221.8]/Border[0 0 0]/Dest[563 0 R/XYZ 0 455 0]>>endobj
-44 0 obj<</Subtype/Link/Rect[126.0 195.6 219.8 208.6]/Border[0 0 0]/Dest[563 0 R/XYZ 0 383 0]>>endobj
-45 0 obj<</Subtype/Link/Rect[126.0 182.4 228.4 195.4]/Border[0 0 0]/Dest[563 0 R/XYZ 0 325 0]>>endobj
-46 0 obj<</Subtype/Link/Rect[126.0 169.2 225.9 182.2]/Border[0 0 0]/Dest[563 0 R/XYZ 0 266 0]>>endobj
-47 0 obj<</Subtype/Link/Rect[126.0 156.0 244.5 169.0]/Border[0 0 0]/Dest[563 0 R/XYZ 0 208 0]>>endobj
-48 0 obj<</Subtype/Link/Rect[126.0 142.8 242.1 155.8]/Border[0 0 0]/Dest[563 0 R/XYZ 0 149 0]>>endobj
-49 0 obj<</Subtype/Link/Rect[126.0 129.6 256.2 142.6]/Border[0 0 0]/Dest[565 0 R/XYZ 0 734 0]>>endobj
-50 0 obj<</Subtype/Link/Rect[126.0 116.4 253.7 129.4]/Border[0 0 0]/Dest[565 0 R/XYZ 0 675 0]>>endobj
-51 0 obj<</Subtype/Link/Rect[126.0 103.2 235.1 116.2]/Border[0 0 0]/Dest[565 0 R/XYZ 0 617 0]>>endobj
-52 0 obj<</Subtype/Link/Rect[126.0 90.0 232.6 103.0]/Border[0 0 0]/Dest[565 0 R/XYZ 0 558 0]>>endobj
-53 0 obj<</Subtype/Link/Rect[126.0 76.8 257.4 89.8]/Border[0 0 0]/Dest[565 0 R/XYZ 0 500 0]>>endobj
-54 0 obj<</Subtype/Link/Rect[126.0 63.6 254.9 76.6]/Border[0 0 0]/Dest[565 0 R/XYZ 0 428 0]>>endobj
+13 0 obj<</Subtype/Link/Rect[72.0 684.0 197.9 697.0]/Border[0 0 0]/Dest[524 0 R/XYZ 0 734 0]>>endobj
+14 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[524 0 R/XYZ 0 696 0]>>endobj
+15 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[526 0 R/XYZ 0 734 0]>>endobj
+16 0 obj<</Subtype/Link/Rect[72.0 618.0 409.3 631.0]/Border[0 0 0]/Dest[532 0 R/XYZ 0 734 0]>>endobj
+17 0 obj<</Subtype/Link/Rect[108.0 604.8 173.7 617.8]/Border[0 0 0]/Dest[532 0 R/XYZ 0 672 0]>>endobj
+18 0 obj<</Subtype/Link/Rect[108.0 591.6 237.6 604.6]/Border[0 0 0]/Dest[532 0 R/XYZ 0 201 0]>>endobj
+19 0 obj<</Subtype/Link/Rect[108.0 578.4 200.3 591.4]/Border[0 0 0]/Dest[534 0 R/XYZ 0 705 0]>>endobj
+20 0 obj<</Subtype/Link/Rect[72.0 552.0 219.9 565.0]/Border[0 0 0]/Dest[536 0 R/XYZ 0 734 0]>>endobj
+21 0 obj<</Subtype/Link/Rect[108.0 538.8 181.6 551.8]/Border[0 0 0]/Dest[536 0 R/XYZ 0 696 0]>>endobj
+22 0 obj<</Subtype/Link/Rect[108.0 525.6 244.6 538.6]/Border[0 0 0]/Dest[536 0 R/XYZ 0 529 0]>>endobj
+23 0 obj<</Subtype/Link/Rect[108.0 512.4 199.0 525.4]/Border[0 0 0]/Dest[536 0 R/XYZ 0 335 0]>>endobj
+24 0 obj<</Subtype/Link/Rect[108.0 499.2 200.3 512.2]/Border[0 0 0]/Dest[538 0 R/XYZ 0 734 0]>>endobj
+25 0 obj<</Subtype/Link/Rect[108.0 486.0 186.2 499.0]/Border[0 0 0]/Dest[538 0 R/XYZ 0 434 0]>>endobj
+26 0 obj<</Subtype/Link/Rect[72.0 459.6 252.9 472.6]/Border[0 0 0]/Dest[540 0 R/XYZ 0 734 0]>>endobj
+27 0 obj<</Subtype/Link/Rect[108.0 446.4 214.6 459.4]/Border[0 0 0]/Dest[540 0 R/XYZ 0 696 0]>>endobj
+28 0 obj<</Subtype/Link/Rect[108.0 433.2 223.8 446.2]/Border[0 0 0]/Dest[542 0 R/XYZ 0 734 0]>>endobj
+29 0 obj<</Subtype/Link/Rect[108.0 420.0 247.6 433.0]/Border[0 0 0]/Dest[544 0 R/XYZ 0 734 0]>>endobj
+30 0 obj<</Subtype/Link/Rect[108.0 406.8 245.2 419.8]/Border[0 0 0]/Dest[544 0 R/XYZ 0 514 0]>>endobj
+31 0 obj<</Subtype/Link/Rect[108.0 393.6 194.2 406.6]/Border[0 0 0]/Dest[546 0 R/XYZ 0 734 0]>>endobj
+32 0 obj<</Subtype/Link/Rect[126.0 380.4 193.8 393.4]/Border[0 0 0]/Dest[546 0 R/XYZ 0 700 0]>>endobj
+33 0 obj<</Subtype/Link/Rect[126.0 367.2 192.0 380.2]/Border[0 0 0]/Dest[546 0 R/XYZ 0 602 0]>>endobj
+34 0 obj<</Subtype/Link/Rect[126.0 354.0 244.5 367.0]/Border[0 0 0]/Dest[546 0 R/XYZ 0 491 0]>>endobj
+35 0 obj<</Subtype/Link/Rect[72.0 327.6 216.8 340.6]/Border[0 0 0]/Dest[548 0 R/XYZ 0 734 0]>>endobj
+36 0 obj<</Subtype/Link/Rect[72.0 301.2 202.8 314.2]/Border[0 0 0]/Dest[552 0 R/XYZ 0 734 0]>>endobj
+37 0 obj<</Subtype/Link/Rect[108.0 288.0 213.7 301.0]/Border[0 0 0]/Dest[552 0 R/XYZ 0 696 0]>>endobj
+38 0 obj<</Subtype/Link/Rect[108.0 274.8 209.1 287.8]/Border[0 0 0]/Dest[552 0 R/XYZ 0 568 0]>>endobj
+39 0 obj<</Subtype/Link/Rect[108.0 261.6 224.7 274.6]/Border[0 0 0]/Dest[554 0 R/XYZ 0 705 0]>>endobj
+40 0 obj<</Subtype/Link/Rect[126.0 248.4 223.5 261.4]/Border[0 0 0]/Dest[554 0 R/XYZ 0 630 0]>>endobj
+41 0 obj<</Subtype/Link/Rect[126.0 235.2 222.2 248.2]/Border[0 0 0]/Dest[554 0 R/XYZ 0 571 0]>>endobj
+42 0 obj<</Subtype/Link/Rect[126.0 222.0 245.8 235.0]/Border[0 0 0]/Dest[554 0 R/XYZ 0 513 0]>>endobj
+43 0 obj<</Subtype/Link/Rect[126.0 208.8 222.2 221.8]/Border[0 0 0]/Dest[554 0 R/XYZ 0 455 0]>>endobj
+44 0 obj<</Subtype/Link/Rect[126.0 195.6 219.8 208.6]/Border[0 0 0]/Dest[554 0 R/XYZ 0 383 0]>>endobj
+45 0 obj<</Subtype/Link/Rect[126.0 182.4 228.4 195.4]/Border[0 0 0]/Dest[554 0 R/XYZ 0 325 0]>>endobj
+46 0 obj<</Subtype/Link/Rect[126.0 169.2 225.9 182.2]/Border[0 0 0]/Dest[554 0 R/XYZ 0 266 0]>>endobj
+47 0 obj<</Subtype/Link/Rect[126.0 156.0 244.5 169.0]/Border[0 0 0]/Dest[554 0 R/XYZ 0 208 0]>>endobj
+48 0 obj<</Subtype/Link/Rect[126.0 142.8 242.1 155.8]/Border[0 0 0]/Dest[554 0 R/XYZ 0 149 0]>>endobj
+49 0 obj<</Subtype/Link/Rect[126.0 129.6 256.2 142.6]/Border[0 0 0]/Dest[556 0 R/XYZ 0 734 0]>>endobj
+50 0 obj<</Subtype/Link/Rect[126.0 116.4 253.7 129.4]/Border[0 0 0]/Dest[556 0 R/XYZ 0 675 0]>>endobj
+51 0 obj<</Subtype/Link/Rect[126.0 103.2 235.1 116.2]/Border[0 0 0]/Dest[556 0 R/XYZ 0 617 0]>>endobj
+52 0 obj<</Subtype/Link/Rect[126.0 90.0 232.6 103.0]/Border[0 0 0]/Dest[556 0 R/XYZ 0 558 0]>>endobj
+53 0 obj<</Subtype/Link/Rect[126.0 76.8 257.4 89.8]/Border[0 0 0]/Dest[556 0 R/XYZ 0 500 0]>>endobj
+54 0 obj<</Subtype/Link/Rect[126.0 63.6 254.9 76.6]/Border[0 0 0]/Dest[556 0 R/XYZ 0 428 0]>>endobj
55 0 obj[13 0 R
14 0 R
15 0 R
@@ -96,50 +96,50 @@
52 0 R
53 0 R
54 0 R]endobj
-56 0 obj<</Subtype/Link/Rect[72.0 684.0 202.8 697.0]/Border[0 0 0]/Dest[561 0 R/XYZ 0 734 0]>>endobj
-57 0 obj<</Subtype/Link/Rect[108.0 670.8 244.9 683.8]/Border[0 0 0]/Dest[565 0 R/XYZ 0 370 0]>>endobj
-58 0 obj<</Subtype/Link/Rect[126.0 657.6 202.4 670.6]/Border[0 0 0]/Dest[565 0 R/XYZ 0 220 0]>>endobj
-59 0 obj<</Subtype/Link/Rect[126.0 644.4 210.0 657.4]/Border[0 0 0]/Dest[567 0 R/XYZ 0 441 0]>>endobj
-60 0 obj<</Subtype/Link/Rect[108.0 631.2 217.7 644.2]/Border[0 0 0]/Dest[569 0 R/XYZ 0 734 0]>>endobj
-61 0 obj<</Subtype/Link/Rect[72.0 604.8 205.8 617.8]/Border[0 0 0]/Dest[571 0 R/XYZ 0 734 0]>>endobj
-62 0 obj<</Subtype/Link/Rect[108.0 591.6 201.5 604.6]/Border[0 0 0]/Dest[571 0 R/XYZ 0 696 0]>>endobj
-63 0 obj<</Subtype/Link/Rect[126.0 578.4 260.4 591.4]/Border[0 0 0]/Dest[571 0 R/XYZ 0 423 0]>>endobj
-64 0 obj<</Subtype/Link/Rect[126.0 565.2 289.5 578.2]/Border[0 0 0]/Dest[571 0 R/XYZ 0 259 0]>>endobj
-65 0 obj<</Subtype/Link/Rect[126.0 552.0 266.6 565.0]/Border[0 0 0]/Dest[573 0 R/XYZ 0 652 0]>>endobj
-66 0 obj<</Subtype/Link/Rect[108.0 538.8 157.8 551.8]/Border[0 0 0]/Dest[573 0 R/XYZ 0 240 0]>>endobj
-67 0 obj<</Subtype/Link/Rect[126.0 525.6 223.2 538.6]/Border[0 0 0]/Dest[575 0 R/XYZ 0 665 0]>>endobj
-68 0 obj<</Subtype/Link/Rect[72.0 499.2 246.5 512.2]/Border[0 0 0]/Dest[577 0 R/XYZ 0 734 0]>>endobj
-69 0 obj<</Subtype/Link/Rect[108.0 486.0 181.6 499.0]/Border[0 0 0]/Dest[577 0 R/XYZ 0 696 0]>>endobj
-70 0 obj<</Subtype/Link/Rect[108.0 472.8 176.1 485.8]/Border[0 0 0]/Dest[577 0 R/XYZ 0 595 0]>>endobj
-71 0 obj<</Subtype/Link/Rect[108.0 459.6 195.4 472.6]/Border[0 0 0]/Dest[577 0 R/XYZ 0 216 0]>>endobj
-72 0 obj<</Subtype/Link/Rect[108.0 446.4 173.7 459.4]/Border[0 0 0]/Dest[579 0 R/XYZ 0 692 0]>>endobj
-73 0 obj<</Subtype/Link/Rect[108.0 433.2 163.9 446.2]/Border[0 0 0]/Dest[579 0 R/XYZ 0 458 0]>>endobj
-74 0 obj<</Subtype/Link/Rect[108.0 420.0 183.8 433.0]/Border[0 0 0]/Dest[581 0 R/XYZ 0 734 0]>>endobj
-75 0 obj<</Subtype/Link/Rect[108.0 406.8 194.8 419.8]/Border[0 0 0]/Dest[581 0 R/XYZ 0 566 0]>>endobj
-76 0 obj<</Subtype/Link/Rect[108.0 393.6 186.2 406.6]/Border[0 0 0]/Dest[581 0 R/XYZ 0 438 0]>>endobj
-77 0 obj<</Subtype/Link/Rect[108.0 380.4 219.2 393.4]/Border[0 0 0]/Dest[581 0 R/XYZ 0 178 0]>>endobj
-78 0 obj<</Subtype/Link/Rect[72.0 354.0 253.5 367.0]/Border[0 0 0]/Dest[585 0 R/XYZ 0 734 0]>>endobj
-79 0 obj<</Subtype/Link/Rect[72.0 327.6 212.9 340.6]/Border[0 0 0]/Dest[589 0 R/XYZ 0 734 0]>>endobj
-80 0 obj<</Subtype/Link/Rect[108.0 314.4 181.6 327.4]/Border[0 0 0]/Dest[589 0 R/XYZ 0 696 0]>>endobj
-81 0 obj<</Subtype/Link/Rect[126.0 301.2 188.3 314.2]/Border[0 0 0]/Dest[591 0 R/XYZ 0 626 0]>>endobj
-82 0 obj<</Subtype/Link/Rect[126.0 288.0 185.3 301.0]/Border[0 0 0]/Dest[591 0 R/XYZ 0 516 0]>>endobj
-83 0 obj<</Subtype/Link/Rect[108.0 274.8 218.9 287.8]/Border[0 0 0]/Dest[591 0 R/XYZ 0 394 0]>>endobj
-84 0 obj<</Subtype/Link/Rect[126.0 261.6 179.2 274.6]/Border[0 0 0]/Dest[591 0 R/XYZ 0 360 0]>>endobj
-85 0 obj<</Subtype/Link/Rect[126.0 248.4 214.6 261.4]/Border[0 0 0]/Dest[593 0 R/XYZ 0 718 0]>>endobj
-86 0 obj<</Subtype/Link/Rect[126.0 235.2 198.1 248.2]/Border[0 0 0]/Dest[593 0 R/XYZ 0 235 0]>>endobj
-87 0 obj<</Subtype/Link/Rect[108.0 222.0 283.7 235.0]/Border[0 0 0]/Dest[613 0 R/XYZ 0 428 0]>>endobj
-88 0 obj<</Subtype/Link/Rect[126.0 208.8 216.8 221.8]/Border[0 0 0]/Dest[613 0 R/XYZ 0 366 0]>>endobj
-89 0 obj<</Subtype/Link/Rect[126.0 195.6 185.3 208.6]/Border[0 0 0]/Dest[615 0 R/XYZ 0 567 0]>>endobj
-90 0 obj<</Subtype/Link/Rect[126.0 182.4 171.2 195.4]/Border[0 0 0]/Dest[623 0 R/XYZ 0 531 0]>>endobj
-91 0 obj<</Subtype/Link/Rect[126.0 169.2 249.5 182.2]/Border[0 0 0]/Dest[623 0 R/XYZ 0 407 0]>>endobj
-92 0 obj<</Subtype/Link/Rect[126.0 156.0 286.4 169.0]/Border[0 0 0]/Dest[625 0 R/XYZ 0 548 0]>>endobj
-93 0 obj<</Subtype/Link/Rect[126.0 142.8 231.7 155.8]/Border[0 0 0]/Dest[625 0 R/XYZ 0 140 0]>>endobj
-94 0 obj<</Subtype/Link/Rect[126.0 129.6 256.5 142.6]/Border[0 0 0]/Dest[627 0 R/XYZ 0 492 0]>>endobj
-95 0 obj<</Subtype/Link/Rect[126.0 116.4 303.5 129.4]/Border[0 0 0]/Dest[627 0 R/XYZ 0 145 0]>>endobj
-96 0 obj<</Subtype/Link/Rect[126.0 103.2 231.1 116.2]/Border[0 0 0]/Dest[629 0 R/XYZ 0 586 0]>>endobj
-97 0 obj<</Subtype/Link/Rect[126.0 90.0 207.6 103.0]/Border[0 0 0]/Dest[629 0 R/XYZ 0 301 0]>>endobj
-98 0 obj<</Subtype/Link/Rect[126.0 76.8 243.3 89.8]/Border[0 0 0]/Dest[631 0 R/XYZ 0 734 0]>>endobj
-99 0 obj<</Subtype/Link/Rect[126.0 63.6 250.0 76.6]/Border[0 0 0]/Dest[631 0 R/XYZ 0 249 0]>>endobj
+56 0 obj<</Subtype/Link/Rect[72.0 684.0 202.8 697.0]/Border[0 0 0]/Dest[552 0 R/XYZ 0 734 0]>>endobj
+57 0 obj<</Subtype/Link/Rect[108.0 670.8 244.9 683.8]/Border[0 0 0]/Dest[556 0 R/XYZ 0 370 0]>>endobj
+58 0 obj<</Subtype/Link/Rect[126.0 657.6 202.4 670.6]/Border[0 0 0]/Dest[556 0 R/XYZ 0 220 0]>>endobj
+59 0 obj<</Subtype/Link/Rect[126.0 644.4 210.0 657.4]/Border[0 0 0]/Dest[558 0 R/XYZ 0 441 0]>>endobj
+60 0 obj<</Subtype/Link/Rect[108.0 631.2 217.7 644.2]/Border[0 0 0]/Dest[560 0 R/XYZ 0 734 0]>>endobj
+61 0 obj<</Subtype/Link/Rect[72.0 604.8 205.8 617.8]/Border[0 0 0]/Dest[562 0 R/XYZ 0 734 0]>>endobj
+62 0 obj<</Subtype/Link/Rect[108.0 591.6 201.5 604.6]/Border[0 0 0]/Dest[562 0 R/XYZ 0 696 0]>>endobj
+63 0 obj<</Subtype/Link/Rect[126.0 578.4 260.4 591.4]/Border[0 0 0]/Dest[562 0 R/XYZ 0 423 0]>>endobj
+64 0 obj<</Subtype/Link/Rect[126.0 565.2 289.5 578.2]/Border[0 0 0]/Dest[562 0 R/XYZ 0 259 0]>>endobj
+65 0 obj<</Subtype/Link/Rect[126.0 552.0 266.6 565.0]/Border[0 0 0]/Dest[564 0 R/XYZ 0 652 0]>>endobj
+66 0 obj<</Subtype/Link/Rect[108.0 538.8 157.8 551.8]/Border[0 0 0]/Dest[564 0 R/XYZ 0 240 0]>>endobj
+67 0 obj<</Subtype/Link/Rect[126.0 525.6 223.2 538.6]/Border[0 0 0]/Dest[566 0 R/XYZ 0 665 0]>>endobj
+68 0 obj<</Subtype/Link/Rect[72.0 499.2 246.5 512.2]/Border[0 0 0]/Dest[568 0 R/XYZ 0 734 0]>>endobj
+69 0 obj<</Subtype/Link/Rect[108.0 486.0 181.6 499.0]/Border[0 0 0]/Dest[568 0 R/XYZ 0 696 0]>>endobj
+70 0 obj<</Subtype/Link/Rect[108.0 472.8 176.1 485.8]/Border[0 0 0]/Dest[568 0 R/XYZ 0 595 0]>>endobj
+71 0 obj<</Subtype/Link/Rect[108.0 459.6 195.4 472.6]/Border[0 0 0]/Dest[568 0 R/XYZ 0 216 0]>>endobj
+72 0 obj<</Subtype/Link/Rect[108.0 446.4 173.7 459.4]/Border[0 0 0]/Dest[570 0 R/XYZ 0 692 0]>>endobj
+73 0 obj<</Subtype/Link/Rect[108.0 433.2 163.9 446.2]/Border[0 0 0]/Dest[570 0 R/XYZ 0 458 0]>>endobj
+74 0 obj<</Subtype/Link/Rect[108.0 420.0 183.8 433.0]/Border[0 0 0]/Dest[572 0 R/XYZ 0 734 0]>>endobj
+75 0 obj<</Subtype/Link/Rect[108.0 406.8 194.8 419.8]/Border[0 0 0]/Dest[572 0 R/XYZ 0 566 0]>>endobj
+76 0 obj<</Subtype/Link/Rect[108.0 393.6 186.2 406.6]/Border[0 0 0]/Dest[572 0 R/XYZ 0 438 0]>>endobj
+77 0 obj<</Subtype/Link/Rect[108.0 380.4 219.2 393.4]/Border[0 0 0]/Dest[572 0 R/XYZ 0 178 0]>>endobj
+78 0 obj<</Subtype/Link/Rect[72.0 354.0 253.5 367.0]/Border[0 0 0]/Dest[576 0 R/XYZ 0 734 0]>>endobj
+79 0 obj<</Subtype/Link/Rect[72.0 327.6 212.9 340.6]/Border[0 0 0]/Dest[580 0 R/XYZ 0 734 0]>>endobj
+80 0 obj<</Subtype/Link/Rect[108.0 314.4 181.6 327.4]/Border[0 0 0]/Dest[580 0 R/XYZ 0 696 0]>>endobj
+81 0 obj<</Subtype/Link/Rect[126.0 301.2 188.3 314.2]/Border[0 0 0]/Dest[582 0 R/XYZ 0 626 0]>>endobj
+82 0 obj<</Subtype/Link/Rect[126.0 288.0 185.3 301.0]/Border[0 0 0]/Dest[582 0 R/XYZ 0 516 0]>>endobj
+83 0 obj<</Subtype/Link/Rect[108.0 274.8 218.9 287.8]/Border[0 0 0]/Dest[582 0 R/XYZ 0 394 0]>>endobj
+84 0 obj<</Subtype/Link/Rect[126.0 261.6 179.2 274.6]/Border[0 0 0]/Dest[582 0 R/XYZ 0 360 0]>>endobj
+85 0 obj<</Subtype/Link/Rect[126.0 248.4 214.6 261.4]/Border[0 0 0]/Dest[584 0 R/XYZ 0 718 0]>>endobj
+86 0 obj<</Subtype/Link/Rect[126.0 235.2 198.1 248.2]/Border[0 0 0]/Dest[584 0 R/XYZ 0 235 0]>>endobj
+87 0 obj<</Subtype/Link/Rect[108.0 222.0 283.7 235.0]/Border[0 0 0]/Dest[604 0 R/XYZ 0 428 0]>>endobj
+88 0 obj<</Subtype/Link/Rect[126.0 208.8 216.8 221.8]/Border[0 0 0]/Dest[604 0 R/XYZ 0 366 0]>>endobj
+89 0 obj<</Subtype/Link/Rect[126.0 195.6 185.3 208.6]/Border[0 0 0]/Dest[606 0 R/XYZ 0 567 0]>>endobj
+90 0 obj<</Subtype/Link/Rect[126.0 182.4 171.2 195.4]/Border[0 0 0]/Dest[614 0 R/XYZ 0 531 0]>>endobj
+91 0 obj<</Subtype/Link/Rect[126.0 169.2 249.5 182.2]/Border[0 0 0]/Dest[614 0 R/XYZ 0 407 0]>>endobj
+92 0 obj<</Subtype/Link/Rect[126.0 156.0 286.4 169.0]/Border[0 0 0]/Dest[616 0 R/XYZ 0 548 0]>>endobj
+93 0 obj<</Subtype/Link/Rect[126.0 142.8 231.7 155.8]/Border[0 0 0]/Dest[616 0 R/XYZ 0 140 0]>>endobj
+94 0 obj<</Subtype/Link/Rect[126.0 129.6 256.5 142.6]/Border[0 0 0]/Dest[618 0 R/XYZ 0 492 0]>>endobj
+95 0 obj<</Subtype/Link/Rect[126.0 116.4 303.5 129.4]/Border[0 0 0]/Dest[618 0 R/XYZ 0 145 0]>>endobj
+96 0 obj<</Subtype/Link/Rect[126.0 103.2 231.1 116.2]/Border[0 0 0]/Dest[620 0 R/XYZ 0 586 0]>>endobj
+97 0 obj<</Subtype/Link/Rect[126.0 90.0 207.6 103.0]/Border[0 0 0]/Dest[620 0 R/XYZ 0 301 0]>>endobj
+98 0 obj<</Subtype/Link/Rect[126.0 76.8 243.3 89.8]/Border[0 0 0]/Dest[622 0 R/XYZ 0 734 0]>>endobj
+99 0 obj<</Subtype/Link/Rect[126.0 63.6 250.0 76.6]/Border[0 0 0]/Dest[622 0 R/XYZ 0 249 0]>>endobj
100 0 obj[56 0 R
57 0 R
58 0 R
@@ -184,50 +184,50 @@
97 0 R
98 0 R
99 0 R]endobj
-101 0 obj<</Subtype/Link/Rect[72.0 684.0 212.9 697.0]/Border[0 0 0]/Dest[589 0 R/XYZ 0 734 0]>>endobj
-102 0 obj<</Subtype/Link/Rect[108.0 670.8 301.4 683.8]/Border[0 0 0]/Dest[633 0 R/XYZ 0 413 0]>>endobj
-103 0 obj<</Subtype/Link/Rect[126.0 657.6 259.8 670.6]/Border[0 0 0]/Dest[635 0 R/XYZ 0 665 0]>>endobj
-104 0 obj<</Subtype/Link/Rect[126.0 644.4 241.5 657.4]/Border[0 0 0]/Dest[635 0 R/XYZ 0 273 0]>>endobj
-105 0 obj<</Subtype/Link/Rect[126.0 631.2 267.5 644.2]/Border[0 0 0]/Dest[637 0 R/XYZ 0 531 0]>>endobj
-106 0 obj<</Subtype/Link/Rect[126.0 618.0 232.3 631.0]/Border[0 0 0]/Dest[637 0 R/XYZ 0 165 0]>>endobj
-107 0 obj<</Subtype/Link/Rect[126.0 604.8 234.2 617.8]/Border[0 0 0]/Dest[639 0 R/XYZ 0 353 0]>>endobj
-108 0 obj<</Subtype/Link/Rect[108.0 591.6 269.6 604.6]/Border[0 0 0]/Dest[641 0 R/XYZ 0 734 0]>>endobj
-109 0 obj<</Subtype/Link/Rect[126.0 578.4 220.7 591.4]/Border[0 0 0]/Dest[641 0 R/XYZ 0 658 0]>>endobj
-110 0 obj<</Subtype/Link/Rect[126.0 565.2 208.8 578.2]/Border[0 0 0]/Dest[643 0 R/XYZ 0 734 0]>>endobj
-111 0 obj<</Subtype/Link/Rect[108.0 552.0 267.5 565.0]/Border[0 0 0]/Dest[645 0 R/XYZ 0 705 0]>>endobj
-112 0 obj<</Subtype/Link/Rect[126.0 538.8 226.2 551.8]/Border[0 0 0]/Dest[645 0 R/XYZ 0 577 0]>>endobj
-113 0 obj<</Subtype/Link/Rect[126.0 525.6 240.6 538.6]/Border[0 0 0]/Dest[647 0 R/XYZ 0 734 0]>>endobj
-114 0 obj<</Subtype/Link/Rect[108.0 512.4 346.9 525.4]/Border[0 0 0]/Dest[647 0 R/XYZ 0 433 0]>>endobj
-115 0 obj<</Subtype/Link/Rect[126.0 499.2 203.0 512.2]/Border[0 0 0]/Dest[647 0 R/XYZ 0 400 0]>>endobj
-116 0 obj<</Subtype/Link/Rect[126.0 486.0 190.8 499.0]/Border[0 0 0]/Dest[649 0 R/XYZ 0 734 0]>>endobj
-117 0 obj<</Subtype/Link/Rect[126.0 472.8 201.2 485.8]/Border[0 0 0]/Dest[649 0 R/XYZ 0 385 0]>>endobj
-118 0 obj<</Subtype/Link/Rect[108.0 459.6 193.9 472.6]/Border[0 0 0]/Dest[649 0 R/XYZ 0 128 0]>>endobj
-119 0 obj<</Subtype/Link/Rect[126.0 446.4 235.8 459.4]/Border[0 0 0]/Dest[651 0 R/XYZ 0 633 0]>>endobj
-120 0 obj<</Subtype/Link/Rect[126.0 433.2 238.8 446.2]/Border[0 0 0]/Dest[653 0 R/XYZ 0 665 0]>>endobj
-121 0 obj<</Subtype/Link/Rect[72.0 406.8 250.1 419.8]/Border[0 0 0]/Dest[657 0 R/XYZ 0 734 0]>>endobj
-122 0 obj<</Subtype/Link/Rect[108.0 393.6 170.0 406.6]/Border[0 0 0]/Dest[657 0 R/XYZ 0 696 0]>>endobj
-123 0 obj<</Subtype/Link/Rect[108.0 380.4 307.2 393.4]/Border[0 0 0]/Dest[657 0 R/XYZ 0 621 0]>>endobj
-124 0 obj<</Subtype/Link/Rect[108.0 367.2 216.6 380.2]/Border[0 0 0]/Dest[657 0 R/XYZ 0 361 0]>>endobj
-125 0 obj<</Subtype/Link/Rect[108.0 354.0 365.6 367.0]/Border[0 0 0]/Dest[661 0 R/XYZ 0 692 0]>>endobj
-126 0 obj<</Subtype/Link/Rect[108.0 340.8 309.3 353.8]/Border[0 0 0]/Dest[661 0 R/XYZ 0 630 0]>>endobj
-127 0 obj<</Subtype/Link/Rect[72.0 314.4 240.4 327.4]/Border[0 0 0]/Dest[667 0 R/XYZ 0 734 0]>>endobj
-128 0 obj<</Subtype/Link/Rect[108.0 301.2 200.3 314.2]/Border[0 0 0]/Dest[667 0 R/XYZ 0 696 0]>>endobj
-129 0 obj<</Subtype/Link/Rect[72.0 274.8 263.3 287.8]/Border[0 0 0]/Dest[669 0 R/XYZ 0 734 0]>>endobj
-130 0 obj<</Subtype/Link/Rect[108.0 261.6 248.5 274.6]/Border[0 0 0]/Dest[669 0 R/XYZ 0 696 0]>>endobj
-131 0 obj<</Subtype/Link/Rect[108.0 248.4 236.0 261.4]/Border[0 0 0]/Dest[671 0 R/XYZ 0 639 0]>>endobj
-132 0 obj<</Subtype/Link/Rect[108.0 235.2 291.6 248.2]/Border[0 0 0]/Dest[671 0 R/XYZ 0 498 0]>>endobj
-133 0 obj<</Subtype/Link/Rect[108.0 222.0 162.7 235.0]/Border[0 0 0]/Dest[671 0 R/XYZ 0 198 0]>>endobj
-134 0 obj<</Subtype/Link/Rect[126.0 208.8 210.9 221.8]/Border[0 0 0]/Dest[671 0 R/XYZ 0 165 0]>>endobj
-135 0 obj<</Subtype/Link/Rect[126.0 195.6 224.7 208.6]/Border[0 0 0]/Dest[673 0 R/XYZ 0 734 0]>>endobj
-136 0 obj<</Subtype/Link/Rect[126.0 182.4 224.1 195.4]/Border[0 0 0]/Dest[673 0 R/XYZ 0 596 0]>>endobj
-137 0 obj<</Subtype/Link/Rect[108.0 169.2 197.8 182.2]/Border[0 0 0]/Dest[673 0 R/XYZ 0 485 0]>>endobj
-138 0 obj<</Subtype/Link/Rect[126.0 156.0 287.3 169.0]/Border[0 0 0]/Dest[673 0 R/XYZ 0 451 0]>>endobj
-139 0 obj<</Subtype/Link/Rect[126.0 142.8 196.9 155.8]/Border[0 0 0]/Dest[673 0 R/XYZ 0 366 0]>>endobj
-140 0 obj<</Subtype/Link/Rect[108.0 129.6 230.8 142.6]/Border[0 0 0]/Dest[673 0 R/XYZ 0 229 0]>>endobj
-141 0 obj<</Subtype/Link/Rect[108.0 116.4 165.8 129.4]/Border[0 0 0]/Dest[675 0 R/XYZ 0 489 0]>>endobj
-142 0 obj<</Subtype/Link/Rect[72.0 90.0 313.7 103.0]/Border[0 0 0]/Dest[677 0 R/XYZ 0 734 0]>>endobj
-143 0 obj<</Subtype/Link/Rect[108.0 76.8 187.1 89.8]/Border[0 0 0]/Dest[677 0 R/XYZ 0 696 0]>>endobj
-144 0 obj<</Subtype/Link/Rect[108.0 63.6 216.2 76.6]/Border[0 0 0]/Dest[677 0 R/XYZ 0 568 0]>>endobj
+101 0 obj<</Subtype/Link/Rect[72.0 684.0 212.9 697.0]/Border[0 0 0]/Dest[580 0 R/XYZ 0 734 0]>>endobj
+102 0 obj<</Subtype/Link/Rect[108.0 670.8 301.4 683.8]/Border[0 0 0]/Dest[624 0 R/XYZ 0 413 0]>>endobj
+103 0 obj<</Subtype/Link/Rect[126.0 657.6 259.8 670.6]/Border[0 0 0]/Dest[626 0 R/XYZ 0 665 0]>>endobj
+104 0 obj<</Subtype/Link/Rect[126.0 644.4 241.5 657.4]/Border[0 0 0]/Dest[626 0 R/XYZ 0 273 0]>>endobj
+105 0 obj<</Subtype/Link/Rect[126.0 631.2 267.5 644.2]/Border[0 0 0]/Dest[628 0 R/XYZ 0 531 0]>>endobj
+106 0 obj<</Subtype/Link/Rect[126.0 618.0 232.3 631.0]/Border[0 0 0]/Dest[628 0 R/XYZ 0 165 0]>>endobj
+107 0 obj<</Subtype/Link/Rect[126.0 604.8 234.2 617.8]/Border[0 0 0]/Dest[630 0 R/XYZ 0 353 0]>>endobj
+108 0 obj<</Subtype/Link/Rect[108.0 591.6 269.6 604.6]/Border[0 0 0]/Dest[632 0 R/XYZ 0 734 0]>>endobj
+109 0 obj<</Subtype/Link/Rect[126.0 578.4 220.7 591.4]/Border[0 0 0]/Dest[632 0 R/XYZ 0 658 0]>>endobj
+110 0 obj<</Subtype/Link/Rect[126.0 565.2 208.8 578.2]/Border[0 0 0]/Dest[634 0 R/XYZ 0 734 0]>>endobj
+111 0 obj<</Subtype/Link/Rect[108.0 552.0 267.5 565.0]/Border[0 0 0]/Dest[636 0 R/XYZ 0 705 0]>>endobj
+112 0 obj<</Subtype/Link/Rect[126.0 538.8 226.2 551.8]/Border[0 0 0]/Dest[636 0 R/XYZ 0 577 0]>>endobj
+113 0 obj<</Subtype/Link/Rect[126.0 525.6 240.6 538.6]/Border[0 0 0]/Dest[638 0 R/XYZ 0 734 0]>>endobj
+114 0 obj<</Subtype/Link/Rect[108.0 512.4 346.9 525.4]/Border[0 0 0]/Dest[638 0 R/XYZ 0 433 0]>>endobj
+115 0 obj<</Subtype/Link/Rect[126.0 499.2 203.0 512.2]/Border[0 0 0]/Dest[638 0 R/XYZ 0 400 0]>>endobj
+116 0 obj<</Subtype/Link/Rect[126.0 486.0 190.8 499.0]/Border[0 0 0]/Dest[640 0 R/XYZ 0 734 0]>>endobj
+117 0 obj<</Subtype/Link/Rect[126.0 472.8 201.2 485.8]/Border[0 0 0]/Dest[640 0 R/XYZ 0 385 0]>>endobj
+118 0 obj<</Subtype/Link/Rect[108.0 459.6 193.9 472.6]/Border[0 0 0]/Dest[640 0 R/XYZ 0 128 0]>>endobj
+119 0 obj<</Subtype/Link/Rect[126.0 446.4 235.8 459.4]/Border[0 0 0]/Dest[642 0 R/XYZ 0 633 0]>>endobj
+120 0 obj<</Subtype/Link/Rect[126.0 433.2 238.8 446.2]/Border[0 0 0]/Dest[644 0 R/XYZ 0 665 0]>>endobj
+121 0 obj<</Subtype/Link/Rect[72.0 406.8 250.1 419.8]/Border[0 0 0]/Dest[648 0 R/XYZ 0 734 0]>>endobj
+122 0 obj<</Subtype/Link/Rect[108.0 393.6 170.0 406.6]/Border[0 0 0]/Dest[648 0 R/XYZ 0 696 0]>>endobj
+123 0 obj<</Subtype/Link/Rect[108.0 380.4 307.2 393.4]/Border[0 0 0]/Dest[648 0 R/XYZ 0 621 0]>>endobj
+124 0 obj<</Subtype/Link/Rect[108.0 367.2 216.6 380.2]/Border[0 0 0]/Dest[648 0 R/XYZ 0 361 0]>>endobj
+125 0 obj<</Subtype/Link/Rect[108.0 354.0 358.2 367.0]/Border[0 0 0]/Dest[652 0 R/XYZ 0 692 0]>>endobj
+126 0 obj<</Subtype/Link/Rect[108.0 340.8 309.3 353.8]/Border[0 0 0]/Dest[652 0 R/XYZ 0 630 0]>>endobj
+127 0 obj<</Subtype/Link/Rect[72.0 314.4 240.4 327.4]/Border[0 0 0]/Dest[658 0 R/XYZ 0 734 0]>>endobj
+128 0 obj<</Subtype/Link/Rect[108.0 301.2 200.3 314.2]/Border[0 0 0]/Dest[658 0 R/XYZ 0 696 0]>>endobj
+129 0 obj<</Subtype/Link/Rect[72.0 274.8 263.3 287.8]/Border[0 0 0]/Dest[660 0 R/XYZ 0 734 0]>>endobj
+130 0 obj<</Subtype/Link/Rect[108.0 261.6 248.5 274.6]/Border[0 0 0]/Dest[660 0 R/XYZ 0 696 0]>>endobj
+131 0 obj<</Subtype/Link/Rect[108.0 248.4 236.0 261.4]/Border[0 0 0]/Dest[662 0 R/XYZ 0 639 0]>>endobj
+132 0 obj<</Subtype/Link/Rect[108.0 235.2 291.6 248.2]/Border[0 0 0]/Dest[662 0 R/XYZ 0 498 0]>>endobj
+133 0 obj<</Subtype/Link/Rect[108.0 222.0 162.7 235.0]/Border[0 0 0]/Dest[662 0 R/XYZ 0 198 0]>>endobj
+134 0 obj<</Subtype/Link/Rect[126.0 208.8 210.9 221.8]/Border[0 0 0]/Dest[662 0 R/XYZ 0 165 0]>>endobj
+135 0 obj<</Subtype/Link/Rect[126.0 195.6 224.7 208.6]/Border[0 0 0]/Dest[664 0 R/XYZ 0 734 0]>>endobj
+136 0 obj<</Subtype/Link/Rect[126.0 182.4 224.1 195.4]/Border[0 0 0]/Dest[664 0 R/XYZ 0 596 0]>>endobj
+137 0 obj<</Subtype/Link/Rect[108.0 169.2 197.8 182.2]/Border[0 0 0]/Dest[664 0 R/XYZ 0 485 0]>>endobj
+138 0 obj<</Subtype/Link/Rect[126.0 156.0 287.3 169.0]/Border[0 0 0]/Dest[664 0 R/XYZ 0 451 0]>>endobj
+139 0 obj<</Subtype/Link/Rect[126.0 142.8 196.9 155.8]/Border[0 0 0]/Dest[664 0 R/XYZ 0 366 0]>>endobj
+140 0 obj<</Subtype/Link/Rect[108.0 129.6 230.8 142.6]/Border[0 0 0]/Dest[664 0 R/XYZ 0 229 0]>>endobj
+141 0 obj<</Subtype/Link/Rect[108.0 116.4 165.8 129.4]/Border[0 0 0]/Dest[666 0 R/XYZ 0 489 0]>>endobj
+142 0 obj<</Subtype/Link/Rect[72.0 90.0 313.7 103.0]/Border[0 0 0]/Dest[668 0 R/XYZ 0 734 0]>>endobj
+143 0 obj<</Subtype/Link/Rect[108.0 76.8 187.1 89.8]/Border[0 0 0]/Dest[668 0 R/XYZ 0 696 0]>>endobj
+144 0 obj<</Subtype/Link/Rect[108.0 63.6 216.2 76.6]/Border[0 0 0]/Dest[668 0 R/XYZ 0 568 0]>>endobj
145 0 obj[101 0 R
102 0 R
103 0 R
@@ -272,60 +272,57 @@
142 0 R
143 0 R
144 0 R]endobj
-146 0 obj<</Subtype/Link/Rect[72.0 684.0 313.7 697.0]/Border[0 0 0]/Dest[677 0 R/XYZ 0 734 0]>>endobj
-147 0 obj<</Subtype/Link/Rect[108.0 670.8 226.9 683.8]/Border[0 0 0]/Dest[679 0 R/XYZ 0 718 0]>>endobj
-148 0 obj<</Subtype/Link/Rect[72.0 644.4 245.3 657.4]/Border[0 0 0]/Dest[683 0 R/XYZ 0 734 0]>>endobj
-149 0 obj<</Subtype/Link/Rect[108.0 631.2 160.2 644.2]/Border[0 0 0]/Dest[683 0 R/XYZ 0 696 0]>>endobj
-150 0 obj<</Subtype/Link/Rect[108.0 618.0 213.7 631.0]/Border[0 0 0]/Dest[683 0 R/XYZ 0 595 0]>>endobj
-151 0 obj[146 0 R
-147 0 R
-148 0 R
-149 0 R
-150 0 R]endobj
-152 0 obj<</S/URI/URI(http://devel.samba.org/)>>endobj
-153 0 obj<</Subtype/Link/Rect[139.5 617.8 243.7 630.8]/Border[0 0 0]/A 152 0 R>>endobj
-154 0 obj<</S/URI/URI(mailto:jelmer@samba.org)>>endobj
-155 0 obj<</Subtype/Link/Rect[347.9 617.8 434.4 630.8]/Border[0 0 0]/A 154 0 R>>endobj
-156 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
-157 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 156 0 R>>endobj
-158 0 obj<</Subtype/Link/Rect[80.2 525.4 351.6 538.4]/Border[0 0 0]/Dest[541 0 R/XYZ 0 734 0]>>endobj
-159 0 obj<</Subtype/Link/Rect[124.5 512.2 171.2 525.2]/Border[0 0 0]/Dest[541 0 R/XYZ 0 672 0]>>endobj
-160 0 obj<</Subtype/Link/Rect[124.5 499.0 230.8 512.0]/Border[0 0 0]/Dest[541 0 R/XYZ 0 201 0]>>endobj
-161 0 obj<</Subtype/Link/Rect[124.5 485.8 196.0 498.8]/Border[0 0 0]/Dest[543 0 R/XYZ 0 705 0]>>endobj
-162 0 obj<</Subtype/Link/Rect[80.2 472.6 170.7 485.6]/Border[0 0 0]/Dest[545 0 R/XYZ 0 734 0]>>endobj
-163 0 obj<</Subtype/Link/Rect[124.5 459.4 182.2 472.4]/Border[0 0 0]/Dest[545 0 R/XYZ 0 696 0]>>endobj
-164 0 obj<</Subtype/Link/Rect[124.5 446.2 245.8 459.2]/Border[0 0 0]/Dest[545 0 R/XYZ 0 529 0]>>endobj
-165 0 obj<</Subtype/Link/Rect[124.5 433.0 199.1 446.0]/Border[0 0 0]/Dest[545 0 R/XYZ 0 335 0]>>endobj
-166 0 obj<</Subtype/Link/Rect[124.5 419.8 200.3 432.8]/Border[0 0 0]/Dest[547 0 R/XYZ 0 734 0]>>endobj
-167 0 obj<</Subtype/Link/Rect[124.5 406.6 185.6 419.6]/Border[0 0 0]/Dest[547 0 R/XYZ 0 434 0]>>endobj
-168 0 obj<</Subtype/Link/Rect[80.2 393.4 203.1 406.4]/Border[0 0 0]/Dest[549 0 R/XYZ 0 734 0]>>endobj
-169 0 obj<</Subtype/Link/Rect[124.5 380.2 212.2 393.2]/Border[0 0 0]/Dest[549 0 R/XYZ 0 696 0]>>endobj
-170 0 obj<</Subtype/Link/Rect[124.5 367.0 223.2 380.0]/Border[0 0 0]/Dest[551 0 R/XYZ 0 734 0]>>endobj
-171 0 obj<</Subtype/Link/Rect[124.5 353.8 245.8 366.8]/Border[0 0 0]/Dest[553 0 R/XYZ 0 734 0]>>endobj
-172 0 obj<</Subtype/Link/Rect[124.5 340.6 242.1 353.6]/Border[0 0 0]/Dest[553 0 R/XYZ 0 514 0]>>endobj
-173 0 obj<</Subtype/Link/Rect[124.5 327.4 193.6 340.4]/Border[0 0 0]/Dest[555 0 R/XYZ 0 734 0]>>endobj
-174 0 obj<</Subtype/Link/Rect[168.8 314.2 211.2 327.2]/Border[0 0 0]/Dest[555 0 R/XYZ 0 700 0]>>endobj
-175 0 obj<</Subtype/Link/Rect[168.8 301.0 210.6 314.0]/Border[0 0 0]/Dest[555 0 R/XYZ 0 602 0]>>endobj
-176 0 obj<</Subtype/Link/Rect[168.8 287.8 261.9 300.8]/Border[0 0 0]/Dest[555 0 R/XYZ 0 491 0]>>endobj
-177 0 obj<</Subtype/Link/Rect[80.2 274.6 170.7 287.6]/Border[0 0 0]/Dest[557 0 R/XYZ 0 734 0]>>endobj
-178 0 obj<</Subtype/Link/Rect[80.2 261.4 155.4 274.4]/Border[0 0 0]/Dest[561 0 R/XYZ 0 734 0]>>endobj
-179 0 obj<</Subtype/Link/Rect[124.5 248.2 216.8 261.2]/Border[0 0 0]/Dest[561 0 R/XYZ 0 696 0]>>endobj
-180 0 obj<</Subtype/Link/Rect[124.5 235.0 207.3 248.0]/Border[0 0 0]/Dest[561 0 R/XYZ 0 568 0]>>endobj
-181 0 obj<</Subtype/Link/Rect[124.5 221.8 225.9 234.8]/Border[0 0 0]/Dest[563 0 R/XYZ 0 705 0]>>endobj
-182 0 obj<</Subtype/Link/Rect[168.8 208.6 237.8 221.6]/Border[0 0 0]/Dest[563 0 R/XYZ 0 630 0]>>endobj
-183 0 obj<</Subtype/Link/Rect[168.8 195.4 237.2 208.4]/Border[0 0 0]/Dest[563 0 R/XYZ 0 571 0]>>endobj
-184 0 obj<</Subtype/Link/Rect[168.8 182.2 259.5 195.2]/Border[0 0 0]/Dest[563 0 R/XYZ 0 513 0]>>endobj
-185 0 obj<</Subtype/Link/Rect[168.8 169.0 236.0 182.0]/Border[0 0 0]/Dest[563 0 R/XYZ 0 455 0]>>endobj
-186 0 obj<</Subtype/Link/Rect[168.8 155.8 234.1 168.8]/Border[0 0 0]/Dest[563 0 R/XYZ 0 383 0]>>endobj
-187 0 obj<</Subtype/Link/Rect[168.8 142.6 241.5 155.6]/Border[0 0 0]/Dest[563 0 R/XYZ 0 325 0]>>endobj
-188 0 obj<</Subtype/Link/Rect[168.8 129.4 239.6 142.4]/Border[0 0 0]/Dest[563 0 R/XYZ 0 266 0]>>endobj
-189 0 obj<</Subtype/Link/Rect[168.8 116.2 257.7 129.2]/Border[0 0 0]/Dest[563 0 R/XYZ 0 208 0]>>endobj
-190 0 obj<</Subtype/Link/Rect[168.8 103.0 255.8 116.0]/Border[0 0 0]/Dest[563 0 R/XYZ 0 149 0]>>endobj
-191 0 obj<</Subtype/Link/Rect[174.2 89.8 268.7 102.8]/Border[0 0 0]/Dest[565 0 R/XYZ 0 734 0]>>endobj
-192 0 obj<</Subtype/Link/Rect[174.2 76.6 266.8 89.6]/Border[0 0 0]/Dest[565 0 R/XYZ 0 675 0]>>endobj
-193 0 obj<</Subtype/Link/Rect[174.2 63.4 248.2 76.4]/Border[0 0 0]/Dest[565 0 R/XYZ 0 617 0]>>endobj
-194 0 obj[153 0 R
+146 0 obj<</Subtype/Link/Rect[72.0 684.0 313.7 697.0]/Border[0 0 0]/Dest[668 0 R/XYZ 0 734 0]>>endobj
+147 0 obj<</Subtype/Link/Rect[108.0 670.8 220.7 683.8]/Border[0 0 0]/Dest[670 0 R/XYZ 0 718 0]>>endobj
+148 0 obj[146 0 R
+147 0 R]endobj
+149 0 obj<</S/URI/URI(http://devel.samba.org/)>>endobj
+150 0 obj<</Subtype/Link/Rect[139.5 617.8 243.7 630.8]/Border[0 0 0]/A 149 0 R>>endobj
+151 0 obj<</S/URI/URI(mailto:jelmer@samba.org)>>endobj
+152 0 obj<</Subtype/Link/Rect[347.9 617.8 434.4 630.8]/Border[0 0 0]/A 151 0 R>>endobj
+153 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
+154 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 153 0 R>>endobj
+155 0 obj<</Subtype/Link/Rect[80.2 525.4 351.6 538.4]/Border[0 0 0]/Dest[532 0 R/XYZ 0 734 0]>>endobj
+156 0 obj<</Subtype/Link/Rect[124.5 512.2 171.2 525.2]/Border[0 0 0]/Dest[532 0 R/XYZ 0 672 0]>>endobj
+157 0 obj<</Subtype/Link/Rect[124.5 499.0 230.8 512.0]/Border[0 0 0]/Dest[532 0 R/XYZ 0 201 0]>>endobj
+158 0 obj<</Subtype/Link/Rect[124.5 485.8 196.0 498.8]/Border[0 0 0]/Dest[534 0 R/XYZ 0 705 0]>>endobj
+159 0 obj<</Subtype/Link/Rect[80.2 472.6 170.7 485.6]/Border[0 0 0]/Dest[536 0 R/XYZ 0 734 0]>>endobj
+160 0 obj<</Subtype/Link/Rect[124.5 459.4 182.2 472.4]/Border[0 0 0]/Dest[536 0 R/XYZ 0 696 0]>>endobj
+161 0 obj<</Subtype/Link/Rect[124.5 446.2 245.8 459.2]/Border[0 0 0]/Dest[536 0 R/XYZ 0 529 0]>>endobj
+162 0 obj<</Subtype/Link/Rect[124.5 433.0 199.1 446.0]/Border[0 0 0]/Dest[536 0 R/XYZ 0 335 0]>>endobj
+163 0 obj<</Subtype/Link/Rect[124.5 419.8 200.3 432.8]/Border[0 0 0]/Dest[538 0 R/XYZ 0 734 0]>>endobj
+164 0 obj<</Subtype/Link/Rect[124.5 406.6 185.6 419.6]/Border[0 0 0]/Dest[538 0 R/XYZ 0 434 0]>>endobj
+165 0 obj<</Subtype/Link/Rect[80.2 393.4 203.1 406.4]/Border[0 0 0]/Dest[540 0 R/XYZ 0 734 0]>>endobj
+166 0 obj<</Subtype/Link/Rect[124.5 380.2 212.2 393.2]/Border[0 0 0]/Dest[540 0 R/XYZ 0 696 0]>>endobj
+167 0 obj<</Subtype/Link/Rect[124.5 367.0 223.2 380.0]/Border[0 0 0]/Dest[542 0 R/XYZ 0 734 0]>>endobj
+168 0 obj<</Subtype/Link/Rect[124.5 353.8 245.8 366.8]/Border[0 0 0]/Dest[544 0 R/XYZ 0 734 0]>>endobj
+169 0 obj<</Subtype/Link/Rect[124.5 340.6 242.1 353.6]/Border[0 0 0]/Dest[544 0 R/XYZ 0 514 0]>>endobj
+170 0 obj<</Subtype/Link/Rect[124.5 327.4 193.6 340.4]/Border[0 0 0]/Dest[546 0 R/XYZ 0 734 0]>>endobj
+171 0 obj<</Subtype/Link/Rect[168.8 314.2 211.2 327.2]/Border[0 0 0]/Dest[546 0 R/XYZ 0 700 0]>>endobj
+172 0 obj<</Subtype/Link/Rect[168.8 301.0 210.6 314.0]/Border[0 0 0]/Dest[546 0 R/XYZ 0 602 0]>>endobj
+173 0 obj<</Subtype/Link/Rect[168.8 287.8 261.9 300.8]/Border[0 0 0]/Dest[546 0 R/XYZ 0 491 0]>>endobj
+174 0 obj<</Subtype/Link/Rect[80.2 274.6 170.7 287.6]/Border[0 0 0]/Dest[548 0 R/XYZ 0 734 0]>>endobj
+175 0 obj<</Subtype/Link/Rect[80.2 261.4 155.4 274.4]/Border[0 0 0]/Dest[552 0 R/XYZ 0 734 0]>>endobj
+176 0 obj<</Subtype/Link/Rect[124.5 248.2 216.8 261.2]/Border[0 0 0]/Dest[552 0 R/XYZ 0 696 0]>>endobj
+177 0 obj<</Subtype/Link/Rect[124.5 235.0 207.3 248.0]/Border[0 0 0]/Dest[552 0 R/XYZ 0 568 0]>>endobj
+178 0 obj<</Subtype/Link/Rect[124.5 221.8 225.9 234.8]/Border[0 0 0]/Dest[554 0 R/XYZ 0 705 0]>>endobj
+179 0 obj<</Subtype/Link/Rect[168.8 208.6 237.8 221.6]/Border[0 0 0]/Dest[554 0 R/XYZ 0 630 0]>>endobj
+180 0 obj<</Subtype/Link/Rect[168.8 195.4 237.2 208.4]/Border[0 0 0]/Dest[554 0 R/XYZ 0 571 0]>>endobj
+181 0 obj<</Subtype/Link/Rect[168.8 182.2 259.5 195.2]/Border[0 0 0]/Dest[554 0 R/XYZ 0 513 0]>>endobj
+182 0 obj<</Subtype/Link/Rect[168.8 169.0 236.0 182.0]/Border[0 0 0]/Dest[554 0 R/XYZ 0 455 0]>>endobj
+183 0 obj<</Subtype/Link/Rect[168.8 155.8 234.1 168.8]/Border[0 0 0]/Dest[554 0 R/XYZ 0 383 0]>>endobj
+184 0 obj<</Subtype/Link/Rect[168.8 142.6 241.5 155.6]/Border[0 0 0]/Dest[554 0 R/XYZ 0 325 0]>>endobj
+185 0 obj<</Subtype/Link/Rect[168.8 129.4 239.6 142.4]/Border[0 0 0]/Dest[554 0 R/XYZ 0 266 0]>>endobj
+186 0 obj<</Subtype/Link/Rect[168.8 116.2 257.7 129.2]/Border[0 0 0]/Dest[554 0 R/XYZ 0 208 0]>>endobj
+187 0 obj<</Subtype/Link/Rect[168.8 103.0 255.8 116.0]/Border[0 0 0]/Dest[554 0 R/XYZ 0 149 0]>>endobj
+188 0 obj<</Subtype/Link/Rect[174.2 89.8 268.7 102.8]/Border[0 0 0]/Dest[556 0 R/XYZ 0 734 0]>>endobj
+189 0 obj<</Subtype/Link/Rect[174.2 76.6 266.8 89.6]/Border[0 0 0]/Dest[556 0 R/XYZ 0 675 0]>>endobj
+190 0 obj<</Subtype/Link/Rect[174.2 63.4 248.2 76.4]/Border[0 0 0]/Dest[556 0 R/XYZ 0 617 0]>>endobj
+191 0 obj[150 0 R
+152 0 R
+154 0 R
155 0 R
+156 0 R
157 0 R
158 0 R
159 0 R
@@ -359,62 +356,62 @@
187 0 R
188 0 R
189 0 R
-190 0 R
-191 0 R
-192 0 R
-193 0 R]endobj
-195 0 obj<</Subtype/Link/Rect[174.2 721.0 246.4 734.0]/Border[0 0 0]/Dest[565 0 R/XYZ 0 558 0]>>endobj
-196 0 obj<</Subtype/Link/Rect[174.2 707.8 269.9 720.8]/Border[0 0 0]/Dest[565 0 R/XYZ 0 500 0]>>endobj
-197 0 obj<</Subtype/Link/Rect[174.2 694.6 268.0 707.6]/Border[0 0 0]/Dest[565 0 R/XYZ 0 428 0]>>endobj
-198 0 obj<</Subtype/Link/Rect[124.5 681.4 243.0 694.4]/Border[0 0 0]/Dest[565 0 R/XYZ 0 370 0]>>endobj
-199 0 obj<</Subtype/Link/Rect[168.8 668.2 222.8 681.2]/Border[0 0 0]/Dest[565 0 R/XYZ 0 220 0]>>endobj
-200 0 obj<</Subtype/Link/Rect[168.8 655.0 228.0 668.0]/Border[0 0 0]/Dest[567 0 R/XYZ 0 441 0]>>endobj
-201 0 obj<</Subtype/Link/Rect[124.5 641.8 220.7 654.8]/Border[0 0 0]/Dest[569 0 R/XYZ 0 734 0]>>endobj
-202 0 obj<</Subtype/Link/Rect[80.2 628.6 158.5 641.6]/Border[0 0 0]/Dest[571 0 R/XYZ 0 734 0]>>endobj
-203 0 obj<</Subtype/Link/Rect[124.5 615.4 199.7 628.4]/Border[0 0 0]/Dest[571 0 R/XYZ 0 696 0]>>endobj
-204 0 obj<</Subtype/Link/Rect[168.8 602.2 277.8 615.2]/Border[0 0 0]/Dest[571 0 R/XYZ 0 423 0]>>endobj
-205 0 obj<</Subtype/Link/Rect[168.8 589.0 307.5 602.0]/Border[0 0 0]/Dest[571 0 R/XYZ 0 259 0]>>endobj
-206 0 obj<</Subtype/Link/Rect[168.8 575.8 284.6 588.8]/Border[0 0 0]/Dest[573 0 R/XYZ 0 652 0]>>endobj
-207 0 obj<</Subtype/Link/Rect[124.5 562.6 156.6 575.6]/Border[0 0 0]/Dest[573 0 R/XYZ 0 240 0]>>endobj
-208 0 obj<</Subtype/Link/Rect[168.8 549.4 241.2 562.4]/Border[0 0 0]/Dest[575 0 R/XYZ 0 665 0]>>endobj
-209 0 obj<</Subtype/Link/Rect[80.2 536.2 196.0 549.2]/Border[0 0 0]/Dest[577 0 R/XYZ 0 734 0]>>endobj
-210 0 obj<</Subtype/Link/Rect[124.5 523.0 182.2 536.0]/Border[0 0 0]/Dest[577 0 R/XYZ 0 696 0]>>endobj
-211 0 obj<</Subtype/Link/Rect[124.5 509.8 176.7 522.8]/Border[0 0 0]/Dest[577 0 R/XYZ 0 595 0]>>endobj
-212 0 obj<</Subtype/Link/Rect[124.5 496.6 196.0 509.6]/Border[0 0 0]/Dest[577 0 R/XYZ 0 216 0]>>endobj
-213 0 obj<</Subtype/Link/Rect[124.5 483.4 174.9 496.4]/Border[0 0 0]/Dest[579 0 R/XYZ 0 692 0]>>endobj
-214 0 obj<</Subtype/Link/Rect[124.5 470.2 162.7 483.2]/Border[0 0 0]/Dest[579 0 R/XYZ 0 458 0]>>endobj
-215 0 obj<</Subtype/Link/Rect[124.5 457.0 182.5 470.0]/Border[0 0 0]/Dest[581 0 R/XYZ 0 734 0]>>endobj
-216 0 obj<</Subtype/Link/Rect[124.5 443.8 196.0 456.8]/Border[0 0 0]/Dest[581 0 R/XYZ 0 566 0]>>endobj
-217 0 obj<</Subtype/Link/Rect[124.5 430.6 187.4 443.6]/Border[0 0 0]/Dest[581 0 R/XYZ 0 438 0]>>endobj
-218 0 obj<</Subtype/Link/Rect[124.5 417.4 218.6 430.4]/Border[0 0 0]/Dest[581 0 R/XYZ 0 178 0]>>endobj
-219 0 obj<</Subtype/Link/Rect[80.2 404.2 204.9 417.2]/Border[0 0 0]/Dest[585 0 R/XYZ 0 734 0]>>endobj
-220 0 obj<</Subtype/Link/Rect[80.2 391.0 164.8 404.0]/Border[0 0 0]/Dest[589 0 R/XYZ 0 734 0]>>endobj
-221 0 obj<</Subtype/Link/Rect[124.5 377.8 182.2 390.8]/Border[0 0 0]/Dest[589 0 R/XYZ 0 696 0]>>endobj
-222 0 obj<</Subtype/Link/Rect[168.8 364.6 206.3 377.6]/Border[0 0 0]/Dest[591 0 R/XYZ 0 626 0]>>endobj
-223 0 obj<</Subtype/Link/Rect[168.8 351.4 203.9 364.4]/Border[0 0 0]/Dest[591 0 R/XYZ 0 516 0]>>endobj
-224 0 obj<</Subtype/Link/Rect[124.5 338.2 219.5 351.2]/Border[0 0 0]/Dest[591 0 R/XYZ 0 394 0]>>endobj
-225 0 obj<</Subtype/Link/Rect[168.8 325.0 196.6 338.0]/Border[0 0 0]/Dest[591 0 R/XYZ 0 360 0]>>endobj
-226 0 obj<</Subtype/Link/Rect[168.8 311.8 233.2 324.8]/Border[0 0 0]/Dest[593 0 R/XYZ 0 718 0]>>endobj
-227 0 obj<</Subtype/Link/Rect[168.8 298.6 216.7 311.6]/Border[0 0 0]/Dest[593 0 R/XYZ 0 235 0]>>endobj
-228 0 obj<</Subtype/Link/Rect[124.5 285.4 283.7 298.4]/Border[0 0 0]/Dest[613 0 R/XYZ 0 428 0]>>endobj
-229 0 obj<</Subtype/Link/Rect[168.8 272.2 234.1 285.2]/Border[0 0 0]/Dest[613 0 R/XYZ 0 366 0]>>endobj
-230 0 obj<</Subtype/Link/Rect[168.8 259.0 204.5 272.0]/Border[0 0 0]/Dest[615 0 R/XYZ 0 567 0]>>endobj
-231 0 obj<</Subtype/Link/Rect[168.8 245.8 189.2 258.8]/Border[0 0 0]/Dest[623 0 R/XYZ 0 531 0]>>endobj
-232 0 obj<</Subtype/Link/Rect[168.8 232.6 264.4 245.6]/Border[0 0 0]/Dest[623 0 R/XYZ 0 407 0]>>endobj
-233 0 obj<</Subtype/Link/Rect[168.8 219.4 302.0 232.4]/Border[0 0 0]/Dest[625 0 R/XYZ 0 548 0]>>endobj
-234 0 obj<</Subtype/Link/Rect[168.8 206.2 247.3 219.2]/Border[0 0 0]/Dest[625 0 R/XYZ 0 140 0]>>endobj
-235 0 obj<</Subtype/Link/Rect[168.8 193.0 271.4 206.0]/Border[0 0 0]/Dest[627 0 R/XYZ 0 492 0]>>endobj
-236 0 obj<</Subtype/Link/Rect[168.8 179.8 319.7 192.8]/Border[0 0 0]/Dest[627 0 R/XYZ 0 145 0]>>endobj
-237 0 obj<</Subtype/Link/Rect[168.8 166.6 246.7 179.6]/Border[0 0 0]/Dest[629 0 R/XYZ 0 586 0]>>endobj
-238 0 obj<</Subtype/Link/Rect[174.2 153.4 223.1 166.4]/Border[0 0 0]/Dest[629 0 R/XYZ 0 301 0]>>endobj
-239 0 obj<</Subtype/Link/Rect[174.2 140.2 256.4 153.2]/Border[0 0 0]/Dest[631 0 R/XYZ 0 734 0]>>endobj
-240 0 obj<</Subtype/Link/Rect[174.2 127.0 263.8 140.0]/Border[0 0 0]/Dest[631 0 R/XYZ 0 249 0]>>endobj
-241 0 obj<</Subtype/Link/Rect[124.5 113.8 300.8 126.8]/Border[0 0 0]/Dest[633 0 R/XYZ 0 413 0]>>endobj
-242 0 obj<</Subtype/Link/Rect[168.8 100.6 275.4 113.6]/Border[0 0 0]/Dest[635 0 R/XYZ 0 665 0]>>endobj
-243 0 obj<</Subtype/Link/Rect[168.8 87.4 256.4 100.4]/Border[0 0 0]/Dest[635 0 R/XYZ 0 273 0]>>endobj
-244 0 obj<</Subtype/Link/Rect[168.8 74.2 283.6 87.2]/Border[0 0 0]/Dest[637 0 R/XYZ 0 531 0]>>endobj
-245 0 obj<</Subtype/Link/Rect[168.8 61.0 244.8 74.0]/Border[0 0 0]/Dest[637 0 R/XYZ 0 165 0]>>endobj
-246 0 obj[195 0 R
+190 0 R]endobj
+192 0 obj<</Subtype/Link/Rect[174.2 721.0 246.4 734.0]/Border[0 0 0]/Dest[556 0 R/XYZ 0 558 0]>>endobj
+193 0 obj<</Subtype/Link/Rect[174.2 707.8 269.9 720.8]/Border[0 0 0]/Dest[556 0 R/XYZ 0 500 0]>>endobj
+194 0 obj<</Subtype/Link/Rect[174.2 694.6 268.0 707.6]/Border[0 0 0]/Dest[556 0 R/XYZ 0 428 0]>>endobj
+195 0 obj<</Subtype/Link/Rect[124.5 681.4 243.0 694.4]/Border[0 0 0]/Dest[556 0 R/XYZ 0 370 0]>>endobj
+196 0 obj<</Subtype/Link/Rect[168.8 668.2 222.8 681.2]/Border[0 0 0]/Dest[556 0 R/XYZ 0 220 0]>>endobj
+197 0 obj<</Subtype/Link/Rect[168.8 655.0 228.0 668.0]/Border[0 0 0]/Dest[558 0 R/XYZ 0 441 0]>>endobj
+198 0 obj<</Subtype/Link/Rect[124.5 641.8 220.7 654.8]/Border[0 0 0]/Dest[560 0 R/XYZ 0 734 0]>>endobj
+199 0 obj<</Subtype/Link/Rect[80.2 628.6 158.5 641.6]/Border[0 0 0]/Dest[562 0 R/XYZ 0 734 0]>>endobj
+200 0 obj<</Subtype/Link/Rect[124.5 615.4 199.7 628.4]/Border[0 0 0]/Dest[562 0 R/XYZ 0 696 0]>>endobj
+201 0 obj<</Subtype/Link/Rect[168.8 602.2 277.8 615.2]/Border[0 0 0]/Dest[562 0 R/XYZ 0 423 0]>>endobj
+202 0 obj<</Subtype/Link/Rect[168.8 589.0 307.5 602.0]/Border[0 0 0]/Dest[562 0 R/XYZ 0 259 0]>>endobj
+203 0 obj<</Subtype/Link/Rect[168.8 575.8 284.6 588.8]/Border[0 0 0]/Dest[564 0 R/XYZ 0 652 0]>>endobj
+204 0 obj<</Subtype/Link/Rect[124.5 562.6 156.6 575.6]/Border[0 0 0]/Dest[564 0 R/XYZ 0 240 0]>>endobj
+205 0 obj<</Subtype/Link/Rect[168.8 549.4 241.2 562.4]/Border[0 0 0]/Dest[566 0 R/XYZ 0 665 0]>>endobj
+206 0 obj<</Subtype/Link/Rect[80.2 536.2 196.0 549.2]/Border[0 0 0]/Dest[568 0 R/XYZ 0 734 0]>>endobj
+207 0 obj<</Subtype/Link/Rect[124.5 523.0 182.2 536.0]/Border[0 0 0]/Dest[568 0 R/XYZ 0 696 0]>>endobj
+208 0 obj<</Subtype/Link/Rect[124.5 509.8 176.7 522.8]/Border[0 0 0]/Dest[568 0 R/XYZ 0 595 0]>>endobj
+209 0 obj<</Subtype/Link/Rect[124.5 496.6 196.0 509.6]/Border[0 0 0]/Dest[568 0 R/XYZ 0 216 0]>>endobj
+210 0 obj<</Subtype/Link/Rect[124.5 483.4 174.9 496.4]/Border[0 0 0]/Dest[570 0 R/XYZ 0 692 0]>>endobj
+211 0 obj<</Subtype/Link/Rect[124.5 470.2 162.7 483.2]/Border[0 0 0]/Dest[570 0 R/XYZ 0 458 0]>>endobj
+212 0 obj<</Subtype/Link/Rect[124.5 457.0 182.5 470.0]/Border[0 0 0]/Dest[572 0 R/XYZ 0 734 0]>>endobj
+213 0 obj<</Subtype/Link/Rect[124.5 443.8 196.0 456.8]/Border[0 0 0]/Dest[572 0 R/XYZ 0 566 0]>>endobj
+214 0 obj<</Subtype/Link/Rect[124.5 430.6 187.4 443.6]/Border[0 0 0]/Dest[572 0 R/XYZ 0 438 0]>>endobj
+215 0 obj<</Subtype/Link/Rect[124.5 417.4 218.6 430.4]/Border[0 0 0]/Dest[572 0 R/XYZ 0 178 0]>>endobj
+216 0 obj<</Subtype/Link/Rect[80.2 404.2 204.9 417.2]/Border[0 0 0]/Dest[576 0 R/XYZ 0 734 0]>>endobj
+217 0 obj<</Subtype/Link/Rect[80.2 391.0 164.8 404.0]/Border[0 0 0]/Dest[580 0 R/XYZ 0 734 0]>>endobj
+218 0 obj<</Subtype/Link/Rect[124.5 377.8 182.2 390.8]/Border[0 0 0]/Dest[580 0 R/XYZ 0 696 0]>>endobj
+219 0 obj<</Subtype/Link/Rect[168.8 364.6 206.3 377.6]/Border[0 0 0]/Dest[582 0 R/XYZ 0 626 0]>>endobj
+220 0 obj<</Subtype/Link/Rect[168.8 351.4 203.9 364.4]/Border[0 0 0]/Dest[582 0 R/XYZ 0 516 0]>>endobj
+221 0 obj<</Subtype/Link/Rect[124.5 338.2 219.5 351.2]/Border[0 0 0]/Dest[582 0 R/XYZ 0 394 0]>>endobj
+222 0 obj<</Subtype/Link/Rect[168.8 325.0 196.6 338.0]/Border[0 0 0]/Dest[582 0 R/XYZ 0 360 0]>>endobj
+223 0 obj<</Subtype/Link/Rect[168.8 311.8 233.2 324.8]/Border[0 0 0]/Dest[584 0 R/XYZ 0 718 0]>>endobj
+224 0 obj<</Subtype/Link/Rect[168.8 298.6 216.7 311.6]/Border[0 0 0]/Dest[584 0 R/XYZ 0 235 0]>>endobj
+225 0 obj<</Subtype/Link/Rect[124.5 285.4 283.7 298.4]/Border[0 0 0]/Dest[604 0 R/XYZ 0 428 0]>>endobj
+226 0 obj<</Subtype/Link/Rect[168.8 272.2 234.1 285.2]/Border[0 0 0]/Dest[604 0 R/XYZ 0 366 0]>>endobj
+227 0 obj<</Subtype/Link/Rect[168.8 259.0 204.5 272.0]/Border[0 0 0]/Dest[606 0 R/XYZ 0 567 0]>>endobj
+228 0 obj<</Subtype/Link/Rect[168.8 245.8 189.2 258.8]/Border[0 0 0]/Dest[614 0 R/XYZ 0 531 0]>>endobj
+229 0 obj<</Subtype/Link/Rect[168.8 232.6 264.4 245.6]/Border[0 0 0]/Dest[614 0 R/XYZ 0 407 0]>>endobj
+230 0 obj<</Subtype/Link/Rect[168.8 219.4 302.0 232.4]/Border[0 0 0]/Dest[616 0 R/XYZ 0 548 0]>>endobj
+231 0 obj<</Subtype/Link/Rect[168.8 206.2 247.3 219.2]/Border[0 0 0]/Dest[616 0 R/XYZ 0 140 0]>>endobj
+232 0 obj<</Subtype/Link/Rect[168.8 193.0 271.4 206.0]/Border[0 0 0]/Dest[618 0 R/XYZ 0 492 0]>>endobj
+233 0 obj<</Subtype/Link/Rect[168.8 179.8 319.7 192.8]/Border[0 0 0]/Dest[618 0 R/XYZ 0 145 0]>>endobj
+234 0 obj<</Subtype/Link/Rect[168.8 166.6 246.7 179.6]/Border[0 0 0]/Dest[620 0 R/XYZ 0 586 0]>>endobj
+235 0 obj<</Subtype/Link/Rect[174.2 153.4 223.1 166.4]/Border[0 0 0]/Dest[620 0 R/XYZ 0 301 0]>>endobj
+236 0 obj<</Subtype/Link/Rect[174.2 140.2 256.4 153.2]/Border[0 0 0]/Dest[622 0 R/XYZ 0 734 0]>>endobj
+237 0 obj<</Subtype/Link/Rect[174.2 127.0 263.8 140.0]/Border[0 0 0]/Dest[622 0 R/XYZ 0 249 0]>>endobj
+238 0 obj<</Subtype/Link/Rect[124.5 113.8 300.8 126.8]/Border[0 0 0]/Dest[624 0 R/XYZ 0 413 0]>>endobj
+239 0 obj<</Subtype/Link/Rect[168.8 100.6 275.4 113.6]/Border[0 0 0]/Dest[626 0 R/XYZ 0 665 0]>>endobj
+240 0 obj<</Subtype/Link/Rect[168.8 87.4 256.4 100.4]/Border[0 0 0]/Dest[626 0 R/XYZ 0 273 0]>>endobj
+241 0 obj<</Subtype/Link/Rect[168.8 74.2 283.6 87.2]/Border[0 0 0]/Dest[628 0 R/XYZ 0 531 0]>>endobj
+242 0 obj<</Subtype/Link/Rect[168.8 61.0 244.8 74.0]/Border[0 0 0]/Dest[628 0 R/XYZ 0 165 0]>>endobj
+243 0 obj[192 0 R
+193 0 R
+194 0 R
+195 0 R
196 0 R
197 0 R
198 0 R
@@ -461,53 +458,50 @@
239 0 R
240 0 R
241 0 R
-242 0 R
-243 0 R
-244 0 R
-245 0 R]endobj
-247 0 obj<</Subtype/Link/Rect[168.8 721.0 245.5 734.0]/Border[0 0 0]/Dest[639 0 R/XYZ 0 353 0]>>endobj
-248 0 obj<</Subtype/Link/Rect[124.5 707.8 261.7 720.8]/Border[0 0 0]/Dest[641 0 R/XYZ 0 734 0]>>endobj
-249 0 obj<</Subtype/Link/Rect[168.8 694.6 239.3 707.6]/Border[0 0 0]/Dest[641 0 R/XYZ 0 658 0]>>endobj
-250 0 obj<</Subtype/Link/Rect[168.8 681.4 223.8 694.4]/Border[0 0 0]/Dest[643 0 R/XYZ 0 734 0]>>endobj
-251 0 obj<</Subtype/Link/Rect[124.5 668.2 264.4 681.2]/Border[0 0 0]/Dest[645 0 R/XYZ 0 705 0]>>endobj
-252 0 obj<</Subtype/Link/Rect[168.8 655.0 243.6 668.0]/Border[0 0 0]/Dest[645 0 R/XYZ 0 577 0]>>endobj
-253 0 obj<</Subtype/Link/Rect[168.8 641.8 257.3 654.8]/Border[0 0 0]/Dest[647 0 R/XYZ 0 734 0]>>endobj
-254 0 obj<</Subtype/Link/Rect[124.5 628.6 345.7 641.6]/Border[0 0 0]/Dest[647 0 R/XYZ 0 433 0]>>endobj
-255 0 obj<</Subtype/Link/Rect[168.8 615.4 220.4 628.4]/Border[0 0 0]/Dest[647 0 R/XYZ 0 400 0]>>endobj
-256 0 obj<</Subtype/Link/Rect[168.8 602.2 210.0 615.2]/Border[0 0 0]/Dest[649 0 R/XYZ 0 734 0]>>endobj
-257 0 obj<</Subtype/Link/Rect[168.8 589.0 217.9 602.0]/Border[0 0 0]/Dest[649 0 R/XYZ 0 385 0]>>endobj
-258 0 obj<</Subtype/Link/Rect[124.5 575.8 193.2 588.8]/Border[0 0 0]/Dest[649 0 R/XYZ 0 128 0]>>endobj
-259 0 obj<</Subtype/Link/Rect[168.8 562.6 251.9 575.6]/Border[0 0 0]/Dest[651 0 R/XYZ 0 633 0]>>endobj
-260 0 obj<</Subtype/Link/Rect[168.8 549.4 254.4 562.4]/Border[0 0 0]/Dest[653 0 R/XYZ 0 665 0]>>endobj
-261 0 obj<</Subtype/Link/Rect[85.8 536.2 200.3 549.2]/Border[0 0 0]/Dest[657 0 R/XYZ 0 734 0]>>endobj
-262 0 obj<</Subtype/Link/Rect[130.0 523.0 170.0 536.0]/Border[0 0 0]/Dest[657 0 R/XYZ 0 696 0]>>endobj
-263 0 obj<</Subtype/Link/Rect[130.0 509.8 308.4 522.8]/Border[0 0 0]/Dest[657 0 R/XYZ 0 621 0]>>endobj
-264 0 obj<</Subtype/Link/Rect[130.0 496.6 217.0 509.6]/Border[0 0 0]/Dest[657 0 R/XYZ 0 361 0]>>endobj
-265 0 obj<</Subtype/Link/Rect[130.0 483.4 368.6 496.4]/Border[0 0 0]/Dest[661 0 R/XYZ 0 692 0]>>endobj
-266 0 obj<</Subtype/Link/Rect[130.0 470.2 306.3 483.2]/Border[0 0 0]/Dest[661 0 R/XYZ 0 630 0]>>endobj
-267 0 obj<</Subtype/Link/Rect[85.8 457.0 189.3 470.0]/Border[0 0 0]/Dest[667 0 R/XYZ 0 734 0]>>endobj
-268 0 obj<</Subtype/Link/Rect[130.0 443.8 199.0 456.8]/Border[0 0 0]/Dest[667 0 R/XYZ 0 696 0]>>endobj
-269 0 obj<</Subtype/Link/Rect[85.8 430.6 211.0 443.6]/Border[0 0 0]/Dest[669 0 R/XYZ 0 734 0]>>endobj
-270 0 obj<</Subtype/Link/Rect[130.0 417.4 245.6 430.4]/Border[0 0 0]/Dest[669 0 R/XYZ 0 696 0]>>endobj
-271 0 obj<</Subtype/Link/Rect[130.0 404.2 234.2 417.2]/Border[0 0 0]/Dest[671 0 R/XYZ 0 639 0]>>endobj
-272 0 obj<</Subtype/Link/Rect[130.0 391.0 289.8 404.0]/Border[0 0 0]/Dest[671 0 R/XYZ 0 498 0]>>endobj
-273 0 obj<</Subtype/Link/Rect[130.0 377.8 162.7 390.8]/Border[0 0 0]/Dest[671 0 R/XYZ 0 198 0]>>endobj
-274 0 obj<</Subtype/Link/Rect[174.2 364.6 228.3 377.6]/Border[0 0 0]/Dest[671 0 R/XYZ 0 165 0]>>endobj
-275 0 obj<</Subtype/Link/Rect[174.2 351.4 240.8 364.4]/Border[0 0 0]/Dest[673 0 R/XYZ 0 734 0]>>endobj
-276 0 obj<</Subtype/Link/Rect[174.2 338.2 239.0 351.2]/Border[0 0 0]/Dest[673 0 R/XYZ 0 596 0]>>endobj
-277 0 obj<</Subtype/Link/Rect[130.0 325.0 194.8 338.0]/Border[0 0 0]/Dest[673 0 R/XYZ 0 485 0]>>endobj
-278 0 obj<</Subtype/Link/Rect[174.2 311.8 305.9 324.8]/Border[0 0 0]/Dest[673 0 R/XYZ 0 451 0]>>endobj
-279 0 obj<</Subtype/Link/Rect[174.2 298.6 215.5 311.6]/Border[0 0 0]/Dest[673 0 R/XYZ 0 366 0]>>endobj
-280 0 obj<</Subtype/Link/Rect[130.0 285.4 229.6 298.4]/Border[0 0 0]/Dest[673 0 R/XYZ 0 229 0]>>endobj
-281 0 obj<</Subtype/Link/Rect[130.0 272.2 165.1 285.2]/Border[0 0 0]/Dest[675 0 R/XYZ 0 489 0]>>endobj
-282 0 obj<</Subtype/Link/Rect[85.8 259.0 259.0 272.0]/Border[0 0 0]/Dest[677 0 R/XYZ 0 734 0]>>endobj
-283 0 obj<</Subtype/Link/Rect[130.0 245.8 187.8 258.8]/Border[0 0 0]/Dest[677 0 R/XYZ 0 696 0]>>endobj
-284 0 obj<</Subtype/Link/Rect[130.0 232.6 215.6 245.6]/Border[0 0 0]/Dest[677 0 R/XYZ 0 568 0]>>endobj
-285 0 obj<</Subtype/Link/Rect[130.0 219.4 226.3 221.4]/Border[0 0 0]/Dest[679 0 R/XYZ 0 718 0]>>endobj
-286 0 obj<</Subtype/Link/Rect[85.8 206.2 197.9 219.2]/Border[0 0 0]/Dest[683 0 R/XYZ 0 734 0]>>endobj
-287 0 obj<</Subtype/Link/Rect[130.0 193.0 159.0 206.0]/Border[0 0 0]/Dest[683 0 R/XYZ 0 696 0]>>endobj
-288 0 obj<</Subtype/Link/Rect[130.0 179.8 213.7 192.8]/Border[0 0 0]/Dest[683 0 R/XYZ 0 595 0]>>endobj
-289 0 obj[247 0 R
+242 0 R]endobj
+244 0 obj<</Subtype/Link/Rect[168.8 721.0 245.5 734.0]/Border[0 0 0]/Dest[630 0 R/XYZ 0 353 0]>>endobj
+245 0 obj<</Subtype/Link/Rect[124.5 707.8 261.7 720.8]/Border[0 0 0]/Dest[632 0 R/XYZ 0 734 0]>>endobj
+246 0 obj<</Subtype/Link/Rect[168.8 694.6 239.3 707.6]/Border[0 0 0]/Dest[632 0 R/XYZ 0 658 0]>>endobj
+247 0 obj<</Subtype/Link/Rect[168.8 681.4 223.8 694.4]/Border[0 0 0]/Dest[634 0 R/XYZ 0 734 0]>>endobj
+248 0 obj<</Subtype/Link/Rect[124.5 668.2 264.4 681.2]/Border[0 0 0]/Dest[636 0 R/XYZ 0 705 0]>>endobj
+249 0 obj<</Subtype/Link/Rect[168.8 655.0 243.6 668.0]/Border[0 0 0]/Dest[636 0 R/XYZ 0 577 0]>>endobj
+250 0 obj<</Subtype/Link/Rect[168.8 641.8 257.3 654.8]/Border[0 0 0]/Dest[638 0 R/XYZ 0 734 0]>>endobj
+251 0 obj<</Subtype/Link/Rect[124.5 628.6 345.7 641.6]/Border[0 0 0]/Dest[638 0 R/XYZ 0 433 0]>>endobj
+252 0 obj<</Subtype/Link/Rect[168.8 615.4 220.4 628.4]/Border[0 0 0]/Dest[638 0 R/XYZ 0 400 0]>>endobj
+253 0 obj<</Subtype/Link/Rect[168.8 602.2 210.0 615.2]/Border[0 0 0]/Dest[640 0 R/XYZ 0 734 0]>>endobj
+254 0 obj<</Subtype/Link/Rect[168.8 589.0 217.9 602.0]/Border[0 0 0]/Dest[640 0 R/XYZ 0 385 0]>>endobj
+255 0 obj<</Subtype/Link/Rect[124.5 575.8 193.2 588.8]/Border[0 0 0]/Dest[640 0 R/XYZ 0 128 0]>>endobj
+256 0 obj<</Subtype/Link/Rect[168.8 562.6 251.9 575.6]/Border[0 0 0]/Dest[642 0 R/XYZ 0 633 0]>>endobj
+257 0 obj<</Subtype/Link/Rect[168.8 549.4 254.4 562.4]/Border[0 0 0]/Dest[644 0 R/XYZ 0 665 0]>>endobj
+258 0 obj<</Subtype/Link/Rect[85.8 536.2 200.3 549.2]/Border[0 0 0]/Dest[648 0 R/XYZ 0 734 0]>>endobj
+259 0 obj<</Subtype/Link/Rect[130.0 523.0 170.0 536.0]/Border[0 0 0]/Dest[648 0 R/XYZ 0 696 0]>>endobj
+260 0 obj<</Subtype/Link/Rect[130.0 509.8 308.4 522.8]/Border[0 0 0]/Dest[648 0 R/XYZ 0 621 0]>>endobj
+261 0 obj<</Subtype/Link/Rect[130.0 496.6 217.0 509.6]/Border[0 0 0]/Dest[648 0 R/XYZ 0 361 0]>>endobj
+262 0 obj<</Subtype/Link/Rect[130.0 483.4 360.7 496.4]/Border[0 0 0]/Dest[652 0 R/XYZ 0 692 0]>>endobj
+263 0 obj<</Subtype/Link/Rect[130.0 470.2 306.3 483.2]/Border[0 0 0]/Dest[652 0 R/XYZ 0 630 0]>>endobj
+264 0 obj<</Subtype/Link/Rect[85.8 457.0 189.3 470.0]/Border[0 0 0]/Dest[658 0 R/XYZ 0 734 0]>>endobj
+265 0 obj<</Subtype/Link/Rect[130.0 443.8 199.0 456.8]/Border[0 0 0]/Dest[658 0 R/XYZ 0 696 0]>>endobj
+266 0 obj<</Subtype/Link/Rect[85.8 430.6 211.0 443.6]/Border[0 0 0]/Dest[660 0 R/XYZ 0 734 0]>>endobj
+267 0 obj<</Subtype/Link/Rect[130.0 417.4 245.6 430.4]/Border[0 0 0]/Dest[660 0 R/XYZ 0 696 0]>>endobj
+268 0 obj<</Subtype/Link/Rect[130.0 404.2 234.2 417.2]/Border[0 0 0]/Dest[662 0 R/XYZ 0 639 0]>>endobj
+269 0 obj<</Subtype/Link/Rect[130.0 391.0 289.8 404.0]/Border[0 0 0]/Dest[662 0 R/XYZ 0 498 0]>>endobj
+270 0 obj<</Subtype/Link/Rect[130.0 377.8 162.7 390.8]/Border[0 0 0]/Dest[662 0 R/XYZ 0 198 0]>>endobj
+271 0 obj<</Subtype/Link/Rect[174.2 364.6 228.3 377.6]/Border[0 0 0]/Dest[662 0 R/XYZ 0 165 0]>>endobj
+272 0 obj<</Subtype/Link/Rect[174.2 351.4 240.8 364.4]/Border[0 0 0]/Dest[664 0 R/XYZ 0 734 0]>>endobj
+273 0 obj<</Subtype/Link/Rect[174.2 338.2 239.0 351.2]/Border[0 0 0]/Dest[664 0 R/XYZ 0 596 0]>>endobj
+274 0 obj<</Subtype/Link/Rect[130.0 325.0 194.8 338.0]/Border[0 0 0]/Dest[664 0 R/XYZ 0 485 0]>>endobj
+275 0 obj<</Subtype/Link/Rect[174.2 311.8 305.9 324.8]/Border[0 0 0]/Dest[664 0 R/XYZ 0 451 0]>>endobj
+276 0 obj<</Subtype/Link/Rect[174.2 298.6 215.5 311.6]/Border[0 0 0]/Dest[664 0 R/XYZ 0 366 0]>>endobj
+277 0 obj<</Subtype/Link/Rect[130.0 285.4 229.6 298.4]/Border[0 0 0]/Dest[664 0 R/XYZ 0 229 0]>>endobj
+278 0 obj<</Subtype/Link/Rect[130.0 272.2 165.1 285.2]/Border[0 0 0]/Dest[666 0 R/XYZ 0 489 0]>>endobj
+279 0 obj<</Subtype/Link/Rect[85.8 259.0 259.0 272.0]/Border[0 0 0]/Dest[668 0 R/XYZ 0 734 0]>>endobj
+280 0 obj<</Subtype/Link/Rect[130.0 245.8 187.8 258.8]/Border[0 0 0]/Dest[668 0 R/XYZ 0 696 0]>>endobj
+281 0 obj<</Subtype/Link/Rect[130.0 232.6 215.6 245.6]/Border[0 0 0]/Dest[668 0 R/XYZ 0 568 0]>>endobj
+282 0 obj<</Subtype/Link/Rect[130.0 219.4 218.9 221.4]/Border[0 0 0]/Dest[670 0 R/XYZ 0 718 0]>>endobj
+283 0 obj[244 0 R
+245 0 R
+246 0 R
+247 0 R
248 0 R
249 0 R
250 0 R
@@ -542,438 +536,418 @@
279 0 R
280 0 R
281 0 R
-282 0 R
-283 0 R
-284 0 R
-285 0 R
-286 0 R
-287 0 R
-288 0 R]endobj
-290 0 obj<</S/URI/URI(http://lxr.linux.no/source/Documentation/CodingStyle)>>endobj
-291 0 obj<</Subtype/Link/Rect[72.0 499.0 310.3 512.0]/Border[0 0 0]/A 290 0 R>>endobj
-292 0 obj<</S/URI/URI(http://www.fsf.org/prep/standards_toc.html)>>endobj
-293 0 obj<</Subtype/Link/Rect[72.0 472.6 263.0 485.6]/Border[0 0 0]/A 292 0 R>>endobj
-294 0 obj[291 0 R
-293 0 R]endobj
-295 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/cifsntdomain.txt)>>endobj
-296 0 obj<</Subtype/Link/Rect[226.0 637.0 433.6 650.0]/Border[0 0 0]/A 295 0 R>>endobj
-297 0 obj<</S/URI/URI(http://ntbugtraq.rc.on.ca/SCRIPTS/WA.EXE?A2=ind9708;L=ntbugtraq;O=A;P=2935)>>endobj
-298 0 obj<</Subtype/Link/Rect[72.0 386.2 451.3 399.2]/Border[0 0 0]/A 297 0 R>>endobj
-299 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/crypt.html)>>endobj
-300 0 obj<</Subtype/Link/Rect[72.0 359.8 250.6 372.8]/Border[0 0 0]/A 299 0 R>>endobj
-301 0 obj<</S/URI/URI(mailto:linus@incolumitas.se)>>endobj
-302 0 obj<</Subtype/Link/Rect[244.7 333.4 317.4 346.4]/Border[0 0 0]/A 301 0 R>>endobj
-303 0 obj<</S/URI/URI(http://samba.org/cgi-bin/mfs/01/digest/1997/97aug/0391.html)>>endobj
-304 0 obj<</Subtype/Link/Rect[72.0 307.0 346.5 320.0]/Border[0 0 0]/A 303 0 R>>endobj
-305 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/crypt.txt)>>endobj
-306 0 obj<</Subtype/Link/Rect[72.0 280.6 242.0 293.6]/Border[0 0 0]/A 305 0 R>>endobj
-307 0 obj[296 0 R
+282 0 R]endobj
+284 0 obj<</S/URI/URI(http://lxr.linux.no/source/Documentation/CodingStyle)>>endobj
+285 0 obj<</Subtype/Link/Rect[72.0 499.0 310.3 512.0]/Border[0 0 0]/A 284 0 R>>endobj
+286 0 obj<</S/URI/URI(http://www.fsf.org/prep/standards_toc.html)>>endobj
+287 0 obj<</Subtype/Link/Rect[72.0 472.6 263.0 485.6]/Border[0 0 0]/A 286 0 R>>endobj
+288 0 obj[285 0 R
+287 0 R]endobj
+289 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/cifsntdomain.txt)>>endobj
+290 0 obj<</Subtype/Link/Rect[226.0 637.0 433.6 650.0]/Border[0 0 0]/A 289 0 R>>endobj
+291 0 obj<</S/URI/URI(http://ntbugtraq.rc.on.ca/SCRIPTS/WA.EXE?A2=ind9708;L=ntbugtraq;O=A;P=2935)>>endobj
+292 0 obj<</Subtype/Link/Rect[72.0 386.2 451.3 399.2]/Border[0 0 0]/A 291 0 R>>endobj
+293 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/crypt.html)>>endobj
+294 0 obj<</Subtype/Link/Rect[72.0 359.8 250.6 372.8]/Border[0 0 0]/A 293 0 R>>endobj
+295 0 obj<</S/URI/URI(mailto:linus@incolumitas.se)>>endobj
+296 0 obj<</Subtype/Link/Rect[244.7 333.4 317.4 346.4]/Border[0 0 0]/A 295 0 R>>endobj
+297 0 obj<</S/URI/URI(http://samba.org/cgi-bin/mfs/01/digest/1997/97aug/0391.html)>>endobj
+298 0 obj<</Subtype/Link/Rect[72.0 307.0 346.5 320.0]/Border[0 0 0]/A 297 0 R>>endobj
+299 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/crypt.txt)>>endobj
+300 0 obj<</Subtype/Link/Rect[72.0 280.6 242.0 293.6]/Border[0 0 0]/A 299 0 R>>endobj
+301 0 obj[290 0 R
+292 0 R
+294 0 R
+296 0 R
298 0 R
-300 0 R
-302 0 R
-304 0 R
-306 0 R]endobj
-308 0 obj<</Dests 309 0 R>>endobj
-309 0 obj<</Kids[310 0 R]>>endobj
-310 0 obj<</Limits[(aen1008)(wins)]/Names[(aen1008)311 0 R(aen1019)312 0 R(aen103)313 0 R(aen1040)314 0 R(aen1053)315 0 R(aen1100)316 0 R(aen1127)317 0 R(aen1138)318 0 R(aen1177)319 0 R(aen1208)320 0 R(aen128)321 0 R(aen1365)322 0 R(aen1388)323 0 R(aen1399)324 0 R(aen1445)325 0 R(aen151)326 0 R(aen1571)327 0 R(aen1574)328 0 R(aen1588)329 0 R(aen159)330 0 R(aen1649)331 0 R(aen1688)332 0 R(aen1693)333 0 R(aen1704)334 0 R(aen1744)335 0 R(aen1755)336 0 R(aen179)337 0 R(aen1799)338 0 R(aen181)339 0 R(aen1819)340 0 R(aen184)341 0 R(aen1842)342 0 R(aen1854)343 0 R(aen188)344 0 R(aen1898)345 0 R(aen1939)346 0 R(aen1943)347 0 R(aen1962)348 0 R(aen1973)349 0 R(aen1977)350 0 R(aen1988)351 0 R(aen2001)352 0 R(aen2003)353 0 R(aen2006)354 0 R(aen2025)355 0 R(aen2027)356 0 R(aen2030)357 0 R(aen2054)358 0 R(aen2056)359 0 R(aen2063)360 0 R(aen2071)361 0 R(aen2075)362 0 R(aen2102)363 0 R(aen2130)364 0 R(aen2134)365 0 R(aen2165)366 0 R(aen2193)367 0 R(aen2232)368 0 R(aen2240)369 0 R(aen2259)370 0 R(aen2267)371 0 R(aen2275)372 0 R(aen2294)373 0 R(aen2306)374 0 R(aen2316)375 0 R(aen2327)376 0 R(aen2335)377 0 R(aen2339)378 0 R(aen2346)379 0 R(aen2359)380 0 R(aen2363)381 0 R(aen2370)382 0 R(aen2382)383 0 R(aen2386)384 0 R(aen2390)385 0 R(aen24)386 0 R(aen2425)387 0 R(aen2460)388 0 R(aen2468)389 0 R(aen2519)390 0 R(aen2550)391 0 R(aen2562)392 0 R(aen2568)393 0 R(aen2603)394 0 R(aen2623)395 0 R(aen2627)396 0 R(aen2638)397 0 R(aen2654)398 0 R(aen2656)399 0 R(aen2699)400 0 R(aen2709)401 0 R(aen2716)402 0 R(aen2724)403 0 R(aen2726)404 0 R(aen2761)405 0 R(aen2812)406 0 R(aen2815)407 0 R(aen2829)408 0 R(aen284)409 0 R(aen2847)410 0 R(aen288)411 0 R(aen2896)412 0 R(aen2899)413 0 R(aen2925)414 0 R(aen2959)415 0 R(aen2962)416 0 R(aen3033)417 0 R(aen3054)418 0 R(aen3071)419 0 R(aen3075)420 0 R(aen3086)421 0 R(aen3088)422 0 R(aen3091)423 0 R(aen3095)424 0 R(aen3098)425 0 R(aen3100)426 0 R(aen3103)427 0 R(aen3107)428 0 R(aen3121)429 0 R(aen3147)430 0 R(aen3151)431 0 R(aen3162)432 0 R(aen317)433 0 R(aen320)434 0 R(aen3225)435 0 R(aen3228)436 0 R(aen323)437 0 R(aen326)438 0 R(aen329)439 0 R(aen332)440 0 R(aen335)441 0 R(aen338)442 0 R(aen341)443 0 R(aen344)444 0 R(aen347)445 0 R(aen35)446 0 R(aen350)447 0 R(aen353)448 0 R(aen356)449 0 R(aen359)450 0 R(aen362)451 0 R(aen365)452 0 R(aen371)453 0 R(aen39)454 0 R(aen4)455 0 R(aen406)456 0 R(aen420)457 0 R(aen451)458 0 R(aen472)459 0 R(aen484)460 0 R(aen495)461 0 R(aen515)462 0 R(aen530)463 0 R(aen54)464 0 R(aen540)465 0 R(aen544)466 0 R(aen552)467 0 R(aen557)468 0 R(aen563)469 0 R(aen571)470 0 R(aen575)471 0 R(aen579)472 0 R(aen584)473 0 R(aen65)474 0 R(aen652)475 0 R(aen688)476 0 R(aen695)477 0 R(aen70)478 0 R(aen702)479 0 R(aen704)480 0 R(aen717)481 0 R(aen719)482 0 R(aen739)483 0 R(aen775)484 0 R(aen777)485 0 R(aen780)486 0 R(aen783)487 0 R(aen786)488 0 R(aen789)489 0 R(aen8)490 0 R(aen814)491 0 R(aen817)492 0 R(aen832)493 0 R(aen843)494 0 R(aen850)495 0 R(aen86)496 0 R(aen861)497 0 R(aen884)498 0 R(aen911)499 0 R(aen918)500 0 R(aen92)501 0 R(aen941)502 0 R(aen960)503 0 R(aen987)504 0 R(architecture)505 0 R(codingsuggestions)506 0 R(debug)507 0 R(internals)508 0 R(netbios)509 0 R(ntdomain)510 0 R(parsing)511 0 R(printing)512 0 R(pwencrypt)513 0 R(rpc-plugin)514 0 R(sam)515 0 R(samba-developers-guide)516 0 R(samba-developers-guide.html)517 0 R(smbpasswdfileformat)518 0 R(tracing)519 0 R(unix-smb)520 0 R(wins)521 0 R]>>endobj
-311 0 obj<</D[601 0 R/XYZ 0 734 0]>>endobj
-312 0 obj<</D[601 0 R/XYZ 0 639 0]>>endobj
-313 0 obj<</D[549 0 R/XYZ 0 696 0]>>endobj
-314 0 obj<</D[601 0 R/XYZ 0 439 0]>>endobj
-315 0 obj<</D[601 0 R/XYZ 0 292 0]>>endobj
-316 0 obj<</D[603 0 R/XYZ 0 626 0]>>endobj
-317 0 obj<</D[603 0 R/XYZ 0 345 0]>>endobj
-318 0 obj<</D[603 0 R/XYZ 0 251 0]>>endobj
-319 0 obj<</D[605 0 R/XYZ 0 639 0]>>endobj
-320 0 obj<</D[605 0 R/XYZ 0 413 0]>>endobj
-321 0 obj<</D[551 0 R/XYZ 0 734 0]>>endobj
-322 0 obj<</D[609 0 R/XYZ 0 679 0]>>endobj
-323 0 obj<</D[609 0 R/XYZ 0 438 0]>>endobj
-324 0 obj<</D[609 0 R/XYZ 0 344 0]>>endobj
-325 0 obj<</D[611 0 R/XYZ 0 639 0]>>endobj
-326 0 obj<</D[553 0 R/XYZ 0 734 0]>>endobj
-327 0 obj<</D[613 0 R/XYZ 0 428 0]>>endobj
-328 0 obj<</D[613 0 R/XYZ 0 366 0]>>endobj
-329 0 obj<</D[615 0 R/XYZ 0 567 0]>>endobj
-330 0 obj<</D[553 0 R/XYZ 0 514 0]>>endobj
-331 0 obj<</D[619 0 R/XYZ 0 734 0]>>endobj
-332 0 obj<</D[619 0 R/XYZ 0 467 0]>>endobj
-333 0 obj<</D[619 0 R/XYZ 0 378 0]>>endobj
-334 0 obj<</D[619 0 R/XYZ 0 283 0]>>endobj
-335 0 obj<</D[621 0 R/XYZ 0 639 0]>>endobj
-336 0 obj<</D[621 0 R/XYZ 0 545 0]>>endobj
-337 0 obj<</D[555 0 R/XYZ 0 734 0]>>endobj
-338 0 obj<</D[621 0 R/XYZ 0 213 0]>>endobj
-339 0 obj<</D[555 0 R/XYZ 0 700 0]>>endobj
-340 0 obj<</D[623 0 R/XYZ 0 705 0]>>endobj
-341 0 obj<</D[555 0 R/XYZ 0 602 0]>>endobj
-342 0 obj<</D[623 0 R/XYZ 0 531 0]>>endobj
-343 0 obj<</D[623 0 R/XYZ 0 407 0]>>endobj
-344 0 obj<</D[555 0 R/XYZ 0 491 0]>>endobj
-345 0 obj<</D[625 0 R/XYZ 0 548 0]>>endobj
-346 0 obj<</D[625 0 R/XYZ 0 140 0]>>endobj
-347 0 obj<</D[627 0 R/XYZ 0 734 0]>>endobj
-348 0 obj<</D[627 0 R/XYZ 0 586 0]>>endobj
-349 0 obj<</D[627 0 R/XYZ 0 492 0]>>endobj
-350 0 obj<</D[627 0 R/XYZ 0 433 0]>>endobj
-351 0 obj<</D[627 0 R/XYZ 0 339 0]>>endobj
-352 0 obj<</D[627 0 R/XYZ 0 145 0]>>endobj
-353 0 obj<</D[627 0 R/XYZ 0 115 0]>>endobj
-354 0 obj<</D[629 0 R/XYZ 0 734 0]>>endobj
-355 0 obj<</D[629 0 R/XYZ 0 586 0]>>endobj
-356 0 obj<</D[629 0 R/XYZ 0 556 0]>>endobj
-357 0 obj<</D[629 0 R/XYZ 0 501 0]>>endobj
-358 0 obj<</D[629 0 R/XYZ 0 301 0]>>endobj
-359 0 obj<</D[629 0 R/XYZ 0 271 0]>>endobj
-360 0 obj<</D[629 0 R/XYZ 0 203 0]>>endobj
-361 0 obj<</D[631 0 R/XYZ 0 734 0]>>endobj
-362 0 obj<</D[631 0 R/XYZ 0 675 0]>>endobj
-363 0 obj<</D[631 0 R/XYZ 0 475 0]>>endobj
-364 0 obj<</D[631 0 R/XYZ 0 249 0]>>endobj
-365 0 obj<</D[631 0 R/XYZ 0 190 0]>>endobj
-366 0 obj<</D[633 0 R/XYZ 0 639 0]>>endobj
-367 0 obj<</D[633 0 R/XYZ 0 413 0]>>endobj
-368 0 obj<</D[635 0 R/XYZ 0 665 0]>>endobj
-369 0 obj<</D[635 0 R/XYZ 0 515 0]>>endobj
-370 0 obj<</D[635 0 R/XYZ 0 367 0]>>endobj
-371 0 obj<</D[635 0 R/XYZ 0 273 0]>>endobj
-372 0 obj<</D[635 0 R/XYZ 0 135 0]>>endobj
-373 0 obj<</D[637 0 R/XYZ 0 652 0]>>endobj
-374 0 obj<</D[637 0 R/XYZ 0 531 0]>>endobj
-375 0 obj<</D[637 0 R/XYZ 0 354 0]>>endobj
-376 0 obj<</D[637 0 R/XYZ 0 260 0]>>endobj
-377 0 obj<</D[637 0 R/XYZ 0 165 0]>>endobj
-378 0 obj<</D[639 0 R/XYZ 0 734 0]>>endobj
-379 0 obj<</D[639 0 R/XYZ 0 665 0]>>endobj
-380 0 obj<</D[639 0 R/XYZ 0 353 0]>>endobj
-381 0 obj<</D[639 0 R/XYZ 0 281 0]>>endobj
-382 0 obj<</D[639 0 R/XYZ 0 213 0]>>endobj
-383 0 obj<</D[641 0 R/XYZ 0 734 0]>>endobj
-384 0 obj<</D[641 0 R/XYZ 0 658 0]>>endobj
-385 0 obj<</D[641 0 R/XYZ 0 600 0]>>endobj
-386 0 obj<</D[541 0 R/XYZ 0 672 0]>>endobj
-387 0 obj<</D[641 0 R/XYZ 0 347 0]>>endobj
-388 0 obj<</D[643 0 R/XYZ 0 734 0]>>endobj
-389 0 obj<</D[643 0 R/XYZ 0 622 0]>>endobj
-390 0 obj<</D[643 0 R/XYZ 0 264 0]>>endobj
-391 0 obj<</D[645 0 R/XYZ 0 705 0]>>endobj
-392 0 obj<</D[645 0 R/XYZ 0 577 0]>>endobj
-393 0 obj<</D[645 0 R/XYZ 0 492 0]>>endobj
-394 0 obj<</D[645 0 R/XYZ 0 239 0]>>endobj
-395 0 obj<</D[647 0 R/XYZ 0 734 0]>>endobj
-396 0 obj<</D[647 0 R/XYZ 0 675 0]>>endobj
-397 0 obj<</D[647 0 R/XYZ 0 581 0]>>endobj
-398 0 obj<</D[647 0 R/XYZ 0 433 0]>>endobj
-399 0 obj<</D[647 0 R/XYZ 0 400 0]>>endobj
-400 0 obj<</D[649 0 R/XYZ 0 734 0]>>endobj
-401 0 obj<</D[649 0 R/XYZ 0 385 0]>>endobj
-402 0 obj<</D[649 0 R/XYZ 0 128 0]>>endobj
-403 0 obj<</D[651 0 R/XYZ 0 633 0]>>endobj
-404 0 obj<</D[651 0 R/XYZ 0 603 0]>>endobj
-405 0 obj<</D[651 0 R/XYZ 0 351 0]>>endobj
-406 0 obj<</D[653 0 R/XYZ 0 665 0]>>endobj
-407 0 obj<</D[653 0 R/XYZ 0 594 0]>>endobj
-408 0 obj<</D[653 0 R/XYZ 0 407 0]>>endobj
-409 0 obj<</D[561 0 R/XYZ 0 696 0]>>endobj
-410 0 obj<</D[653 0 R/XYZ 0 141 0]>>endobj
-411 0 obj<</D[561 0 R/XYZ 0 568 0]>>endobj
-412 0 obj<</D[657 0 R/XYZ 0 696 0]>>endobj
-413 0 obj<</D[657 0 R/XYZ 0 621 0]>>endobj
-414 0 obj<</D[657 0 R/XYZ 0 361 0]>>endobj
-415 0 obj<</D[661 0 R/XYZ 0 692 0]>>endobj
-416 0 obj<</D[661 0 R/XYZ 0 630 0]>>endobj
-417 0 obj<</D[667 0 R/XYZ 0 696 0]>>endobj
-418 0 obj<</D[669 0 R/XYZ 0 696 0]>>endobj
-419 0 obj<</D[671 0 R/XYZ 0 639 0]>>endobj
-420 0 obj<</D[671 0 R/XYZ 0 498 0]>>endobj
-421 0 obj<</D[671 0 R/XYZ 0 198 0]>>endobj
-422 0 obj<</D[671 0 R/XYZ 0 165 0]>>endobj
-423 0 obj<</D[673 0 R/XYZ 0 734 0]>>endobj
-424 0 obj<</D[673 0 R/XYZ 0 596 0]>>endobj
-425 0 obj<</D[673 0 R/XYZ 0 485 0]>>endobj
-426 0 obj<</D[673 0 R/XYZ 0 451 0]>>endobj
-427 0 obj<</D[673 0 R/XYZ 0 366 0]>>endobj
-428 0 obj<</D[673 0 R/XYZ 0 229 0]>>endobj
-429 0 obj<</D[675 0 R/XYZ 0 489 0]>>endobj
-430 0 obj<</D[677 0 R/XYZ 0 696 0]>>endobj
-431 0 obj<</D[677 0 R/XYZ 0 568 0]>>endobj
-432 0 obj<</D[679 0 R/XYZ 0 718 0]>>endobj
-433 0 obj<</D[563 0 R/XYZ 0 705 0]>>endobj
-434 0 obj<</D[563 0 R/XYZ 0 630 0]>>endobj
-435 0 obj<</D[683 0 R/XYZ 0 696 0]>>endobj
-436 0 obj<</D[683 0 R/XYZ 0 595 0]>>endobj
-437 0 obj<</D[563 0 R/XYZ 0 571 0]>>endobj
-438 0 obj<</D[563 0 R/XYZ 0 513 0]>>endobj
-439 0 obj<</D[563 0 R/XYZ 0 455 0]>>endobj
-440 0 obj<</D[563 0 R/XYZ 0 383 0]>>endobj
-441 0 obj<</D[563 0 R/XYZ 0 325 0]>>endobj
-442 0 obj<</D[563 0 R/XYZ 0 266 0]>>endobj
-443 0 obj<</D[563 0 R/XYZ 0 208 0]>>endobj
-444 0 obj<</D[563 0 R/XYZ 0 149 0]>>endobj
-445 0 obj<</D[565 0 R/XYZ 0 734 0]>>endobj
-446 0 obj<</D[541 0 R/XYZ 0 201 0]>>endobj
-447 0 obj<</D[565 0 R/XYZ 0 675 0]>>endobj
-448 0 obj<</D[565 0 R/XYZ 0 617 0]>>endobj
-449 0 obj<</D[565 0 R/XYZ 0 558 0]>>endobj
-450 0 obj<</D[565 0 R/XYZ 0 500 0]>>endobj
-451 0 obj<</D[565 0 R/XYZ 0 428 0]>>endobj
-452 0 obj<</D[565 0 R/XYZ 0 370 0]>>endobj
-453 0 obj<</D[565 0 R/XYZ 0 220 0]>>endobj
-454 0 obj<</D[543 0 R/XYZ 0 705 0]>>endobj
-455 0 obj<</D[533 0 R/XYZ 0 696 0]>>endobj
-456 0 obj<</D[567 0 R/XYZ 0 441 0]>>endobj
-457 0 obj<</D[569 0 R/XYZ 0 734 0]>>endobj
-458 0 obj<</D[571 0 R/XYZ 0 696 0]>>endobj
-459 0 obj<</D[571 0 R/XYZ 0 423 0]>>endobj
-460 0 obj<</D[571 0 R/XYZ 0 259 0]>>endobj
-461 0 obj<</D[573 0 R/XYZ 0 652 0]>>endobj
-462 0 obj<</D[573 0 R/XYZ 0 240 0]>>endobj
-463 0 obj<</D[575 0 R/XYZ 0 665 0]>>endobj
-464 0 obj<</D[545 0 R/XYZ 0 696 0]>>endobj
-465 0 obj<</D[577 0 R/XYZ 0 696 0]>>endobj
-466 0 obj<</D[577 0 R/XYZ 0 595 0]>>endobj
-467 0 obj<</D[577 0 R/XYZ 0 216 0]>>endobj
-468 0 obj<</D[579 0 R/XYZ 0 692 0]>>endobj
-469 0 obj<</D[579 0 R/XYZ 0 458 0]>>endobj
-470 0 obj<</D[581 0 R/XYZ 0 734 0]>>endobj
-471 0 obj<</D[581 0 R/XYZ 0 566 0]>>endobj
-472 0 obj<</D[581 0 R/XYZ 0 438 0]>>endobj
-473 0 obj<</D[581 0 R/XYZ 0 178 0]>>endobj
-474 0 obj<</D[545 0 R/XYZ 0 529 0]>>endobj
-475 0 obj<</D[589 0 R/XYZ 0 696 0]>>endobj
-476 0 obj<</D[591 0 R/XYZ 0 626 0]>>endobj
-477 0 obj<</D[591 0 R/XYZ 0 516 0]>>endobj
-478 0 obj<</D[545 0 R/XYZ 0 335 0]>>endobj
-479 0 obj<</D[591 0 R/XYZ 0 394 0]>>endobj
-480 0 obj<</D[591 0 R/XYZ 0 360 0]>>endobj
-481 0 obj<</D[593 0 R/XYZ 0 718 0]>>endobj
-482 0 obj<</D[593 0 R/XYZ 0 688 0]>>endobj
-483 0 obj<</D[593 0 R/XYZ 0 515 0]>>endobj
-484 0 obj<</D[593 0 R/XYZ 0 235 0]>>endobj
-485 0 obj<</D[593 0 R/XYZ 0 205 0]>>endobj
-486 0 obj<</D[593 0 R/XYZ 0 151 0]>>endobj
-487 0 obj<</D[595 0 R/XYZ 0 734 0]>>endobj
-488 0 obj<</D[595 0 R/XYZ 0 665 0]>>endobj
-489 0 obj<</D[595 0 R/XYZ 0 611 0]>>endobj
-490 0 obj<</D[535 0 R/XYZ 0 734 0]>>endobj
-491 0 obj<</D[595 0 R/XYZ 0 411 0]>>endobj
-492 0 obj<</D[595 0 R/XYZ 0 356 0]>>endobj
-493 0 obj<</D[595 0 R/XYZ 0 235 0]>>endobj
-494 0 obj<</D[595 0 R/XYZ 0 141 0]>>endobj
-495 0 obj<</D[597 0 R/XYZ 0 734 0]>>endobj
-496 0 obj<</D[547 0 R/XYZ 0 734 0]>>endobj
-497 0 obj<</D[597 0 R/XYZ 0 639 0]>>endobj
-498 0 obj<</D[597 0 R/XYZ 0 465 0]>>endobj
-499 0 obj<</D[597 0 R/XYZ 0 265 0]>>endobj
-500 0 obj<</D[597 0 R/XYZ 0 197 0]>>endobj
-501 0 obj<</D[547 0 R/XYZ 0 434 0]>>endobj
-502 0 obj<</D[599 0 R/XYZ 0 665 0]>>endobj
-503 0 obj<</D[599 0 R/XYZ 0 518 0]>>endobj
-504 0 obj<</D[599 0 R/XYZ 0 279 0]>>endobj
-505 0 obj<</D[545 0 R/XYZ 0 734 0]>>endobj
-506 0 obj<</D[557 0 R/XYZ 0 734 0]>>endobj
-507 0 obj<</D[549 0 R/XYZ 0 734 0]>>endobj
-508 0 obj<</D[561 0 R/XYZ 0 734 0]>>endobj
-509 0 obj<</D[541 0 R/XYZ 0 734 0]>>endobj
-510 0 obj<</D[589 0 R/XYZ 0 734 0]>>endobj
-511 0 obj<</D[571 0 R/XYZ 0 734 0]>>endobj
-512 0 obj<</D[657 0 R/XYZ 0 734 0]>>endobj
-513 0 obj<</D[677 0 R/XYZ 0 734 0]>>endobj
-514 0 obj<</D[683 0 R/XYZ 0 734 0]>>endobj
-515 0 obj<</D[669 0 R/XYZ 0 734 0]>>endobj
-516 0 obj<</D[533 0 R/XYZ 0 734 0]>>endobj
-517 0 obj<</D[533 0 R/XYZ 0 734 0]>>endobj
-518 0 obj<</D[679 0 R/XYZ 0 718 0]>>endobj
-519 0 obj<</D[585 0 R/XYZ 0 734 0]>>endobj
-520 0 obj<</D[577 0 R/XYZ 0 734 0]>>endobj
-521 0 obj<</D[667 0 R/XYZ 0 734 0]>>endobj
-522 0 obj<</Type/Pages/Count 81/Kids[523 0 R
-525 0 R
-527 0 R
-529 0 R
-531 0 R
-533 0 R
-535 0 R
-537 0 R
-539 0 R
-541 0 R
-543 0 R
-545 0 R
-547 0 R
-549 0 R
-551 0 R
-553 0 R
-555 0 R
-557 0 R
-559 0 R
-561 0 R
-563 0 R
-565 0 R
-567 0 R
-569 0 R
-571 0 R
-573 0 R
-575 0 R
-577 0 R
-579 0 R
-581 0 R
-583 0 R
-585 0 R
-587 0 R
-589 0 R
-591 0 R
-593 0 R
-595 0 R
-597 0 R
-599 0 R
-601 0 R
-603 0 R
-605 0 R
-607 0 R
-609 0 R
-611 0 R
-613 0 R
-615 0 R
-617 0 R
-619 0 R
-621 0 R
-623 0 R
-625 0 R
-627 0 R
-629 0 R
-631 0 R
-633 0 R
-635 0 R
-637 0 R
-639 0 R
-641 0 R
-643 0 R
-645 0 R
-647 0 R
-649 0 R
-651 0 R
-653 0 R
-655 0 R
-657 0 R
-659 0 R
-661 0 R
-663 0 R
-665 0 R
-667 0 R
-669 0 R
-671 0 R
-673 0 R
-675 0 R
-677 0 R
-679 0 R
-681 0 R
-683 0 R
+300 0 R]endobj
+302 0 obj<</Dests 303 0 R>>endobj
+303 0 obj<</Kids[304 0 R]>>endobj
+304 0 obj<</Limits[(aen1008)(wins)]/Names[(aen1008)305 0 R(aen1019)306 0 R(aen103)307 0 R(aen1040)308 0 R(aen1053)309 0 R(aen1100)310 0 R(aen1127)311 0 R(aen1138)312 0 R(aen1177)313 0 R(aen1208)314 0 R(aen128)315 0 R(aen1365)316 0 R(aen1388)317 0 R(aen1399)318 0 R(aen1445)319 0 R(aen151)320 0 R(aen1571)321 0 R(aen1574)322 0 R(aen1588)323 0 R(aen159)324 0 R(aen1649)325 0 R(aen1688)326 0 R(aen1693)327 0 R(aen1704)328 0 R(aen1744)329 0 R(aen1755)330 0 R(aen179)331 0 R(aen1799)332 0 R(aen181)333 0 R(aen1819)334 0 R(aen184)335 0 R(aen1842)336 0 R(aen1854)337 0 R(aen188)338 0 R(aen1898)339 0 R(aen1939)340 0 R(aen1943)341 0 R(aen1962)342 0 R(aen1973)343 0 R(aen1977)344 0 R(aen1988)345 0 R(aen2001)346 0 R(aen2003)347 0 R(aen2006)348 0 R(aen2025)349 0 R(aen2027)350 0 R(aen2030)351 0 R(aen2054)352 0 R(aen2056)353 0 R(aen2063)354 0 R(aen2071)355 0 R(aen2075)356 0 R(aen2102)357 0 R(aen2130)358 0 R(aen2134)359 0 R(aen2165)360 0 R(aen2193)361 0 R(aen2232)362 0 R(aen2240)363 0 R(aen2259)364 0 R(aen2267)365 0 R(aen2275)366 0 R(aen2294)367 0 R(aen2306)368 0 R(aen2316)369 0 R(aen2327)370 0 R(aen2335)371 0 R(aen2339)372 0 R(aen2346)373 0 R(aen2359)374 0 R(aen2363)375 0 R(aen2370)376 0 R(aen2382)377 0 R(aen2386)378 0 R(aen2390)379 0 R(aen24)380 0 R(aen2425)381 0 R(aen2460)382 0 R(aen2468)383 0 R(aen2519)384 0 R(aen2550)385 0 R(aen2562)386 0 R(aen2568)387 0 R(aen2603)388 0 R(aen2623)389 0 R(aen2627)390 0 R(aen2638)391 0 R(aen2654)392 0 R(aen2656)393 0 R(aen2699)394 0 R(aen2709)395 0 R(aen2716)396 0 R(aen2724)397 0 R(aen2726)398 0 R(aen2761)399 0 R(aen2812)400 0 R(aen2815)401 0 R(aen2829)402 0 R(aen284)403 0 R(aen2847)404 0 R(aen288)405 0 R(aen2896)406 0 R(aen2899)407 0 R(aen2925)408 0 R(aen2959)409 0 R(aen2962)410 0 R(aen3033)411 0 R(aen3054)412 0 R(aen3071)413 0 R(aen3075)414 0 R(aen3086)415 0 R(aen3088)416 0 R(aen3091)417 0 R(aen3095)418 0 R(aen3098)419 0 R(aen3100)420 0 R(aen3103)421 0 R(aen3107)422 0 R(aen3121)423 0 R(aen3147)424 0 R(aen3151)425 0 R(aen3162)426 0 R(aen317)427 0 R(aen320)428 0 R(aen323)429 0 R(aen326)430 0 R(aen329)431 0 R(aen332)432 0 R(aen335)433 0 R(aen338)434 0 R(aen341)435 0 R(aen344)436 0 R(aen347)437 0 R(aen35)438 0 R(aen350)439 0 R(aen353)440 0 R(aen356)441 0 R(aen359)442 0 R(aen362)443 0 R(aen365)444 0 R(aen371)445 0 R(aen39)446 0 R(aen4)447 0 R(aen406)448 0 R(aen420)449 0 R(aen451)450 0 R(aen472)451 0 R(aen484)452 0 R(aen495)453 0 R(aen515)454 0 R(aen530)455 0 R(aen54)456 0 R(aen540)457 0 R(aen544)458 0 R(aen552)459 0 R(aen557)460 0 R(aen563)461 0 R(aen571)462 0 R(aen575)463 0 R(aen579)464 0 R(aen584)465 0 R(aen65)466 0 R(aen652)467 0 R(aen688)468 0 R(aen695)469 0 R(aen70)470 0 R(aen702)471 0 R(aen704)472 0 R(aen717)473 0 R(aen719)474 0 R(aen739)475 0 R(aen775)476 0 R(aen777)477 0 R(aen780)478 0 R(aen783)479 0 R(aen786)480 0 R(aen789)481 0 R(aen8)482 0 R(aen814)483 0 R(aen817)484 0 R(aen832)485 0 R(aen843)486 0 R(aen850)487 0 R(aen86)488 0 R(aen861)489 0 R(aen884)490 0 R(aen911)491 0 R(aen918)492 0 R(aen92)493 0 R(aen941)494 0 R(aen960)495 0 R(aen987)496 0 R(architecture)497 0 R(codingsuggestions)498 0 R(debug)499 0 R(internals)500 0 R(netbios)501 0 R(ntdomain)502 0 R(parsing)503 0 R(printing)504 0 R(pwencrypt)505 0 R(sam)506 0 R(samba-developers-guide)507 0 R(samba-developers-guide.html)508 0 R(smbpasswdfileformat)509 0 R(tracing)510 0 R(unix-smb)511 0 R(wins)512 0 R]>>endobj
+305 0 obj<</D[592 0 R/XYZ 0 734 0]>>endobj
+306 0 obj<</D[592 0 R/XYZ 0 639 0]>>endobj
+307 0 obj<</D[540 0 R/XYZ 0 696 0]>>endobj
+308 0 obj<</D[592 0 R/XYZ 0 439 0]>>endobj
+309 0 obj<</D[592 0 R/XYZ 0 292 0]>>endobj
+310 0 obj<</D[594 0 R/XYZ 0 626 0]>>endobj
+311 0 obj<</D[594 0 R/XYZ 0 345 0]>>endobj
+312 0 obj<</D[594 0 R/XYZ 0 251 0]>>endobj
+313 0 obj<</D[596 0 R/XYZ 0 639 0]>>endobj
+314 0 obj<</D[596 0 R/XYZ 0 413 0]>>endobj
+315 0 obj<</D[542 0 R/XYZ 0 734 0]>>endobj
+316 0 obj<</D[600 0 R/XYZ 0 679 0]>>endobj
+317 0 obj<</D[600 0 R/XYZ 0 438 0]>>endobj
+318 0 obj<</D[600 0 R/XYZ 0 344 0]>>endobj
+319 0 obj<</D[602 0 R/XYZ 0 639 0]>>endobj
+320 0 obj<</D[544 0 R/XYZ 0 734 0]>>endobj
+321 0 obj<</D[604 0 R/XYZ 0 428 0]>>endobj
+322 0 obj<</D[604 0 R/XYZ 0 366 0]>>endobj
+323 0 obj<</D[606 0 R/XYZ 0 567 0]>>endobj
+324 0 obj<</D[544 0 R/XYZ 0 514 0]>>endobj
+325 0 obj<</D[610 0 R/XYZ 0 734 0]>>endobj
+326 0 obj<</D[610 0 R/XYZ 0 467 0]>>endobj
+327 0 obj<</D[610 0 R/XYZ 0 378 0]>>endobj
+328 0 obj<</D[610 0 R/XYZ 0 283 0]>>endobj
+329 0 obj<</D[612 0 R/XYZ 0 639 0]>>endobj
+330 0 obj<</D[612 0 R/XYZ 0 545 0]>>endobj
+331 0 obj<</D[546 0 R/XYZ 0 734 0]>>endobj
+332 0 obj<</D[612 0 R/XYZ 0 213 0]>>endobj
+333 0 obj<</D[546 0 R/XYZ 0 700 0]>>endobj
+334 0 obj<</D[614 0 R/XYZ 0 705 0]>>endobj
+335 0 obj<</D[546 0 R/XYZ 0 602 0]>>endobj
+336 0 obj<</D[614 0 R/XYZ 0 531 0]>>endobj
+337 0 obj<</D[614 0 R/XYZ 0 407 0]>>endobj
+338 0 obj<</D[546 0 R/XYZ 0 491 0]>>endobj
+339 0 obj<</D[616 0 R/XYZ 0 548 0]>>endobj
+340 0 obj<</D[616 0 R/XYZ 0 140 0]>>endobj
+341 0 obj<</D[618 0 R/XYZ 0 734 0]>>endobj
+342 0 obj<</D[618 0 R/XYZ 0 586 0]>>endobj
+343 0 obj<</D[618 0 R/XYZ 0 492 0]>>endobj
+344 0 obj<</D[618 0 R/XYZ 0 433 0]>>endobj
+345 0 obj<</D[618 0 R/XYZ 0 339 0]>>endobj
+346 0 obj<</D[618 0 R/XYZ 0 145 0]>>endobj
+347 0 obj<</D[618 0 R/XYZ 0 115 0]>>endobj
+348 0 obj<</D[620 0 R/XYZ 0 734 0]>>endobj
+349 0 obj<</D[620 0 R/XYZ 0 586 0]>>endobj
+350 0 obj<</D[620 0 R/XYZ 0 556 0]>>endobj
+351 0 obj<</D[620 0 R/XYZ 0 501 0]>>endobj
+352 0 obj<</D[620 0 R/XYZ 0 301 0]>>endobj
+353 0 obj<</D[620 0 R/XYZ 0 271 0]>>endobj
+354 0 obj<</D[620 0 R/XYZ 0 203 0]>>endobj
+355 0 obj<</D[622 0 R/XYZ 0 734 0]>>endobj
+356 0 obj<</D[622 0 R/XYZ 0 675 0]>>endobj
+357 0 obj<</D[622 0 R/XYZ 0 475 0]>>endobj
+358 0 obj<</D[622 0 R/XYZ 0 249 0]>>endobj
+359 0 obj<</D[622 0 R/XYZ 0 190 0]>>endobj
+360 0 obj<</D[624 0 R/XYZ 0 639 0]>>endobj
+361 0 obj<</D[624 0 R/XYZ 0 413 0]>>endobj
+362 0 obj<</D[626 0 R/XYZ 0 665 0]>>endobj
+363 0 obj<</D[626 0 R/XYZ 0 515 0]>>endobj
+364 0 obj<</D[626 0 R/XYZ 0 367 0]>>endobj
+365 0 obj<</D[626 0 R/XYZ 0 273 0]>>endobj
+366 0 obj<</D[626 0 R/XYZ 0 135 0]>>endobj
+367 0 obj<</D[628 0 R/XYZ 0 652 0]>>endobj
+368 0 obj<</D[628 0 R/XYZ 0 531 0]>>endobj
+369 0 obj<</D[628 0 R/XYZ 0 354 0]>>endobj
+370 0 obj<</D[628 0 R/XYZ 0 260 0]>>endobj
+371 0 obj<</D[628 0 R/XYZ 0 165 0]>>endobj
+372 0 obj<</D[630 0 R/XYZ 0 734 0]>>endobj
+373 0 obj<</D[630 0 R/XYZ 0 665 0]>>endobj
+374 0 obj<</D[630 0 R/XYZ 0 353 0]>>endobj
+375 0 obj<</D[630 0 R/XYZ 0 281 0]>>endobj
+376 0 obj<</D[630 0 R/XYZ 0 213 0]>>endobj
+377 0 obj<</D[632 0 R/XYZ 0 734 0]>>endobj
+378 0 obj<</D[632 0 R/XYZ 0 658 0]>>endobj
+379 0 obj<</D[632 0 R/XYZ 0 600 0]>>endobj
+380 0 obj<</D[532 0 R/XYZ 0 672 0]>>endobj
+381 0 obj<</D[632 0 R/XYZ 0 347 0]>>endobj
+382 0 obj<</D[634 0 R/XYZ 0 734 0]>>endobj
+383 0 obj<</D[634 0 R/XYZ 0 622 0]>>endobj
+384 0 obj<</D[634 0 R/XYZ 0 264 0]>>endobj
+385 0 obj<</D[636 0 R/XYZ 0 705 0]>>endobj
+386 0 obj<</D[636 0 R/XYZ 0 577 0]>>endobj
+387 0 obj<</D[636 0 R/XYZ 0 492 0]>>endobj
+388 0 obj<</D[636 0 R/XYZ 0 239 0]>>endobj
+389 0 obj<</D[638 0 R/XYZ 0 734 0]>>endobj
+390 0 obj<</D[638 0 R/XYZ 0 675 0]>>endobj
+391 0 obj<</D[638 0 R/XYZ 0 581 0]>>endobj
+392 0 obj<</D[638 0 R/XYZ 0 433 0]>>endobj
+393 0 obj<</D[638 0 R/XYZ 0 400 0]>>endobj
+394 0 obj<</D[640 0 R/XYZ 0 734 0]>>endobj
+395 0 obj<</D[640 0 R/XYZ 0 385 0]>>endobj
+396 0 obj<</D[640 0 R/XYZ 0 128 0]>>endobj
+397 0 obj<</D[642 0 R/XYZ 0 633 0]>>endobj
+398 0 obj<</D[642 0 R/XYZ 0 603 0]>>endobj
+399 0 obj<</D[642 0 R/XYZ 0 351 0]>>endobj
+400 0 obj<</D[644 0 R/XYZ 0 665 0]>>endobj
+401 0 obj<</D[644 0 R/XYZ 0 594 0]>>endobj
+402 0 obj<</D[644 0 R/XYZ 0 407 0]>>endobj
+403 0 obj<</D[552 0 R/XYZ 0 696 0]>>endobj
+404 0 obj<</D[644 0 R/XYZ 0 141 0]>>endobj
+405 0 obj<</D[552 0 R/XYZ 0 568 0]>>endobj
+406 0 obj<</D[648 0 R/XYZ 0 696 0]>>endobj
+407 0 obj<</D[648 0 R/XYZ 0 621 0]>>endobj
+408 0 obj<</D[648 0 R/XYZ 0 361 0]>>endobj
+409 0 obj<</D[652 0 R/XYZ 0 692 0]>>endobj
+410 0 obj<</D[652 0 R/XYZ 0 630 0]>>endobj
+411 0 obj<</D[658 0 R/XYZ 0 696 0]>>endobj
+412 0 obj<</D[660 0 R/XYZ 0 696 0]>>endobj
+413 0 obj<</D[662 0 R/XYZ 0 639 0]>>endobj
+414 0 obj<</D[662 0 R/XYZ 0 498 0]>>endobj
+415 0 obj<</D[662 0 R/XYZ 0 198 0]>>endobj
+416 0 obj<</D[662 0 R/XYZ 0 165 0]>>endobj
+417 0 obj<</D[664 0 R/XYZ 0 734 0]>>endobj
+418 0 obj<</D[664 0 R/XYZ 0 596 0]>>endobj
+419 0 obj<</D[664 0 R/XYZ 0 485 0]>>endobj
+420 0 obj<</D[664 0 R/XYZ 0 451 0]>>endobj
+421 0 obj<</D[664 0 R/XYZ 0 366 0]>>endobj
+422 0 obj<</D[664 0 R/XYZ 0 229 0]>>endobj
+423 0 obj<</D[666 0 R/XYZ 0 489 0]>>endobj
+424 0 obj<</D[668 0 R/XYZ 0 696 0]>>endobj
+425 0 obj<</D[668 0 R/XYZ 0 568 0]>>endobj
+426 0 obj<</D[670 0 R/XYZ 0 718 0]>>endobj
+427 0 obj<</D[554 0 R/XYZ 0 705 0]>>endobj
+428 0 obj<</D[554 0 R/XYZ 0 630 0]>>endobj
+429 0 obj<</D[554 0 R/XYZ 0 571 0]>>endobj
+430 0 obj<</D[554 0 R/XYZ 0 513 0]>>endobj
+431 0 obj<</D[554 0 R/XYZ 0 455 0]>>endobj
+432 0 obj<</D[554 0 R/XYZ 0 383 0]>>endobj
+433 0 obj<</D[554 0 R/XYZ 0 325 0]>>endobj
+434 0 obj<</D[554 0 R/XYZ 0 266 0]>>endobj
+435 0 obj<</D[554 0 R/XYZ 0 208 0]>>endobj
+436 0 obj<</D[554 0 R/XYZ 0 149 0]>>endobj
+437 0 obj<</D[556 0 R/XYZ 0 734 0]>>endobj
+438 0 obj<</D[532 0 R/XYZ 0 201 0]>>endobj
+439 0 obj<</D[556 0 R/XYZ 0 675 0]>>endobj
+440 0 obj<</D[556 0 R/XYZ 0 617 0]>>endobj
+441 0 obj<</D[556 0 R/XYZ 0 558 0]>>endobj
+442 0 obj<</D[556 0 R/XYZ 0 500 0]>>endobj
+443 0 obj<</D[556 0 R/XYZ 0 428 0]>>endobj
+444 0 obj<</D[556 0 R/XYZ 0 370 0]>>endobj
+445 0 obj<</D[556 0 R/XYZ 0 220 0]>>endobj
+446 0 obj<</D[534 0 R/XYZ 0 705 0]>>endobj
+447 0 obj<</D[524 0 R/XYZ 0 696 0]>>endobj
+448 0 obj<</D[558 0 R/XYZ 0 441 0]>>endobj
+449 0 obj<</D[560 0 R/XYZ 0 734 0]>>endobj
+450 0 obj<</D[562 0 R/XYZ 0 696 0]>>endobj
+451 0 obj<</D[562 0 R/XYZ 0 423 0]>>endobj
+452 0 obj<</D[562 0 R/XYZ 0 259 0]>>endobj
+453 0 obj<</D[564 0 R/XYZ 0 652 0]>>endobj
+454 0 obj<</D[564 0 R/XYZ 0 240 0]>>endobj
+455 0 obj<</D[566 0 R/XYZ 0 665 0]>>endobj
+456 0 obj<</D[536 0 R/XYZ 0 696 0]>>endobj
+457 0 obj<</D[568 0 R/XYZ 0 696 0]>>endobj
+458 0 obj<</D[568 0 R/XYZ 0 595 0]>>endobj
+459 0 obj<</D[568 0 R/XYZ 0 216 0]>>endobj
+460 0 obj<</D[570 0 R/XYZ 0 692 0]>>endobj
+461 0 obj<</D[570 0 R/XYZ 0 458 0]>>endobj
+462 0 obj<</D[572 0 R/XYZ 0 734 0]>>endobj
+463 0 obj<</D[572 0 R/XYZ 0 566 0]>>endobj
+464 0 obj<</D[572 0 R/XYZ 0 438 0]>>endobj
+465 0 obj<</D[572 0 R/XYZ 0 178 0]>>endobj
+466 0 obj<</D[536 0 R/XYZ 0 529 0]>>endobj
+467 0 obj<</D[580 0 R/XYZ 0 696 0]>>endobj
+468 0 obj<</D[582 0 R/XYZ 0 626 0]>>endobj
+469 0 obj<</D[582 0 R/XYZ 0 516 0]>>endobj
+470 0 obj<</D[536 0 R/XYZ 0 335 0]>>endobj
+471 0 obj<</D[582 0 R/XYZ 0 394 0]>>endobj
+472 0 obj<</D[582 0 R/XYZ 0 360 0]>>endobj
+473 0 obj<</D[584 0 R/XYZ 0 718 0]>>endobj
+474 0 obj<</D[584 0 R/XYZ 0 688 0]>>endobj
+475 0 obj<</D[584 0 R/XYZ 0 515 0]>>endobj
+476 0 obj<</D[584 0 R/XYZ 0 235 0]>>endobj
+477 0 obj<</D[584 0 R/XYZ 0 205 0]>>endobj
+478 0 obj<</D[584 0 R/XYZ 0 151 0]>>endobj
+479 0 obj<</D[586 0 R/XYZ 0 734 0]>>endobj
+480 0 obj<</D[586 0 R/XYZ 0 665 0]>>endobj
+481 0 obj<</D[586 0 R/XYZ 0 611 0]>>endobj
+482 0 obj<</D[526 0 R/XYZ 0 734 0]>>endobj
+483 0 obj<</D[586 0 R/XYZ 0 411 0]>>endobj
+484 0 obj<</D[586 0 R/XYZ 0 356 0]>>endobj
+485 0 obj<</D[586 0 R/XYZ 0 235 0]>>endobj
+486 0 obj<</D[586 0 R/XYZ 0 141 0]>>endobj
+487 0 obj<</D[588 0 R/XYZ 0 734 0]>>endobj
+488 0 obj<</D[538 0 R/XYZ 0 734 0]>>endobj
+489 0 obj<</D[588 0 R/XYZ 0 639 0]>>endobj
+490 0 obj<</D[588 0 R/XYZ 0 465 0]>>endobj
+491 0 obj<</D[588 0 R/XYZ 0 265 0]>>endobj
+492 0 obj<</D[588 0 R/XYZ 0 197 0]>>endobj
+493 0 obj<</D[538 0 R/XYZ 0 434 0]>>endobj
+494 0 obj<</D[590 0 R/XYZ 0 665 0]>>endobj
+495 0 obj<</D[590 0 R/XYZ 0 518 0]>>endobj
+496 0 obj<</D[590 0 R/XYZ 0 279 0]>>endobj
+497 0 obj<</D[536 0 R/XYZ 0 734 0]>>endobj
+498 0 obj<</D[548 0 R/XYZ 0 734 0]>>endobj
+499 0 obj<</D[540 0 R/XYZ 0 734 0]>>endobj
+500 0 obj<</D[552 0 R/XYZ 0 734 0]>>endobj
+501 0 obj<</D[532 0 R/XYZ 0 734 0]>>endobj
+502 0 obj<</D[580 0 R/XYZ 0 734 0]>>endobj
+503 0 obj<</D[562 0 R/XYZ 0 734 0]>>endobj
+504 0 obj<</D[648 0 R/XYZ 0 734 0]>>endobj
+505 0 obj<</D[668 0 R/XYZ 0 734 0]>>endobj
+506 0 obj<</D[660 0 R/XYZ 0 734 0]>>endobj
+507 0 obj<</D[524 0 R/XYZ 0 734 0]>>endobj
+508 0 obj<</D[524 0 R/XYZ 0 734 0]>>endobj
+509 0 obj<</D[670 0 R/XYZ 0 718 0]>>endobj
+510 0 obj<</D[576 0 R/XYZ 0 734 0]>>endobj
+511 0 obj<</D[568 0 R/XYZ 0 734 0]>>endobj
+512 0 obj<</D[658 0 R/XYZ 0 734 0]>>endobj
+513 0 obj<</Type/Pages/Count 80/Kids[514 0 R
+516 0 R
+518 0 R
+520 0 R
+522 0 R
+524 0 R
+526 0 R
+528 0 R
+530 0 R
+532 0 R
+534 0 R
+536 0 R
+538 0 R
+540 0 R
+542 0 R
+544 0 R
+546 0 R
+548 0 R
+550 0 R
+552 0 R
+554 0 R
+556 0 R
+558 0 R
+560 0 R
+562 0 R
+564 0 R
+566 0 R
+568 0 R
+570 0 R
+572 0 R
+574 0 R
+576 0 R
+578 0 R
+580 0 R
+582 0 R
+584 0 R
+586 0 R
+588 0 R
+590 0 R
+592 0 R
+594 0 R
+596 0 R
+598 0 R
+600 0 R
+602 0 R
+604 0 R
+606 0 R
+608 0 R
+610 0 R
+612 0 R
+614 0 R
+616 0 R
+618 0 R
+620 0 R
+622 0 R
+624 0 R
+626 0 R
+628 0 R
+630 0 R
+632 0 R
+634 0 R
+636 0 R
+638 0 R
+640 0 R
+642 0 R
+644 0 R
+646 0 R
+648 0 R
+650 0 R
+652 0 R
+654 0 R
+656 0 R
+658 0 R
+660 0 R
+662 0 R
+664 0 R
+666 0 R
+668 0 R
+670 0 R
+672 0 R
]>>endobj
-523 0 obj<</Type/Page/Parent 522 0 R/Contents 524 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-524 0 obj<</Filter/FlateDecode/Length 93 >>stream
+514 0 obj<</Type/Page/Parent 513 0 R/Contents 515 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+515 0 obj<</Filter/FlateDecode/Length 93 >>stream
x+ä2T0
endobj
-525 0 obj<</Type/Page/Parent 522 0 R/Contents 526 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 55 0 R>>endobj
-526 0 obj<</Filter/FlateDecode/Length 2528 >>stream
-xÕ[moGþî_±S Úììû~ôK’ Ð$=K×O
-ÙZÛ:XRN–zÍ¿ïCrfÈ]%HÃyÝHõèYÎÉ™Uþsæ’ ÿ¹¤É“¢Nn7gYšá›ø×õ;ú&©Ëo’¢K“ù™›¤+ÓÒpn—WigÈ¢¦A‹*m1hS¥ÎÔ@f9 ò“D²2Y‡™6I™Å PU[=]"Àëà&©2L§œ°¡ÃÊUœƒºJZ ¶j ”a ‹‘²o’<ÏÒÂÈZ V–5+’ƒy-[4ƒ‘ÙïUMÊÀ9Ë€œd ùÝa¥•ÁªNë(È@=çrG.Œ¤Å¶®0‚²2lI&}è°žkK’‹œ4oÉÈHRŒT®1À@Ás²ò‘3p“´UšûAHÎ@ÌW6db#°êTj„çbVD’Ë.S§
-ˆ‚#'‰’ClÃβƒmrŒ¯²2iCÑê]^2ÐI=ç2Š;%-&§“ƒ••aën Ã2Ða=燉¤Å4,­eY¶r¼˜¡%Ös-m!å Ä ŽÔR’¤Ì)¢8£9hL¸.@˜A™Bäù"i9’!Î@Ì—•ä¹HZ ¶¬á{à šc1£¬8
-1(ç4%-‹Uk¨L‰]FE†—¹` SzN¦ŒœdG‰õRA‹Á¢®Ô†•)±nq× tJÏÉ‘3¦¤4©‚Ó”\£¬LYµºß :¥çxñ”3ƒæ9 ª‚%œV”HÓ’[ðŠ($Aöy$+,h4„3?É@=GK‡)")‚N:d ‚ž£ÔS%E$i˜¼£`óûN
-ÄÜIÀñ$€&4 ÃO²6,ˆ2#8g ‚žsXR¨IŽ`‡Ø¡tÃSˆ‚£Ü"'Ó“qFù2ò*ÈT¥åI¬¥ÔËŒ TÐsÔ\`ÆHŠªø’ò¿2PAÏ9´\%¢‡žÔ )È"È@=燢€žTA$ uôœloJ+Ö9éTe ‚žs URI¶çÊ èìr:JÔ¬‹"¸TAT³•ºÈ &F ÑnŠÏTKeãÇøsòŒ« è)ª¤6±ŽBž‘%‹ a+“/Xˆ?G!Ï8äôôQ,„(:‚?G!ϸ–ÎD‘ºXœ½~ œ%‹;ÄÒr•ÔM™,V|ŽÃ×·¯Ë›Ç>ÙÝ%—»í¡ßž~XüRZ#’šy±YNb¯æç.Îé ä„&§#"¾L®úßûÇÝç~ÏÂPµnõî¸^õ$cŸw­¤Sÿqb$6…Ù¶0”*òÈDçjoâ¢_nØŒ:mÛò…˜ÜèÍÑ5Ëòd†$ÊKv~ótØ/o¼jmÚT/Lù`Äèÿ9é;+XáhËåÃòó¡ß³)hÇ΀.¥¯°˜!ïÖÛõa½ÛÒ׸ h3yty2í\áŸþØ.Þšó£UZåÿþçýî°»Ý=26„Âr»¢¯Ðú”mÆXn8ÊQöQKý—×ýÓîñÔ@ikë0ƇݪçÍ‚Ö©(ÿ‡mQ‘*¯ßÆHÎQO±Ä1š]ê}S£>Šw>¾YD{ëlÒ ‰6Ø‘Ë«ןί.Ïç rî*Šè]»¢EZL·_ŇÜ7´¥Ûòñâ# Â!k›°P&0ó¥G¾m”g‡µ„œfd
-¹p¾µIý†M:_nn–4nð\‚ó|û°>ô·‡ãž7ºÉ3V3ÚcÎeºÁ°0ãÅ|¿=ìw«ãmÜù/+å²93œZÍöÂQolŇããa}xØ÷ËÕz{Ï{L«Gâ“ CGRør˜èŠâð6ãs‡§XG=«MƒÈ²cûÖ4ôÆ]ÈÍO›Ið8úTþÜFŒç£p8´©üË6m_žM-…ÔìĦjlÓöf#ËÓC,ãWýÓú~ËÙ—/Ãc·M‚Ù.Û@£ÑønnôÑrãâAzfœŸb5xŠù%Mñæâ_ïÈtR{.yúòtè¹_EA‰ôYÝÑ‘R¦1q%Üzl¢ÆËü±ÿ/IäEZ¹Ð¬}:>¥qµ6Ï¿lË?xñÑÞà<Ã}ͳZ7œŒmÉ]®±ñ$¥úeÅ­W[…‚wE øë«_àE4ièÃòv¿ F¶S–—‘3çÐÛ5üJJå°=µïüê*˜ˆºÓ´!ÕFÑ!ÕÉÖñÙ ‹Ö mûJjý†m?ýòS°šÐ2TCk[Vù=Œ›ÿ7ŠÆ ‹!¶Ø_Ù}o[naøœ‚»á¼x!iÖÉÙ°n]5Y%YoHBϘ¬nîý‡°BxŸ1åN2 þm#$mŒŒxXíƒ tõòBŒHƒôVËd¾Ê·[Öˆ»Ý~³<ü¶êoŽ÷¿Ù5™¦z‹æ¶Nãê‘Ú«ïc|f¥úrÚcÜŽwñB`~¼¿ïŸèÀÛ7°“Ÿß\!ioÃé4ú=;}Žvjsok8êôûíòQr.h_B`ºñ¥^j˜ð iÂéUŽ¬tE&7KHuUÎàÿÀAçÑŸ<ÊnêC¸7n6Ç)ýkÍÆÖ7Yè+›Pƒïi§ÂzŠ:l2#>z#»N“JH)fÕ¸Âräá
-¡‰×nk>àµvÉ7_ýn¿ê÷éí¼,êª)Òñʬ4dái»üåýÅÍñîÇÏ»'éúanª‡>{.tö¤üiáúù4³¶`Í®ÿñ÷壸¯ &©¿Þñíõ ›áí(ïýîÇK±Ê¿?U^z½ £囫'š•ØçPÌ×_uý|¼céä4™ö!pè%÷(ršõÉù'êã­ü„úGߟ¤ËöDýùÜÙ´“œ]‚çQ´¨µ ×8ݩꃸWÕ[~{0EôDõË¡î.cåée—‹„ý®q£Ús{få¿ÆÇnG[@ûx ú0äê“$ú¨ü(`œ”W«ùõ Ø}s€Ÿ0LµWƒêY;®Pˆü±Û¯áî•Ÿ0OFåÑKŽ]/vèúï5hèG«Ï¾
-endobj
-527 0 obj<</Type/Page/Parent 522 0 R/Contents 528 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 100 0 R>>endobj
-528 0 obj<</Filter/FlateDecode/Length 3031 >>stream
-xÍ[Ms9½ûWôm³)Ýìï£ãLf\å8N¤ÔžeY™h#©½úÈLþý>
-(–`ØHŠ`Úb® È@=—eéI‹i؆ˆ,/PÙVXR¿@âÊ•‰rbP—õH‹Á%–OE)ʪe—°ÓÐŒúPŽc ÈÕVÎ@Ì—UX
-Ç·
-Œ ¬ [™š1Ða='¡¥¤"©D‡Q†)ôâêDNäÐÅ&‹š4gä<—¥±¬¤Å°ÞÄâEQ‹ÁæŽ&UÖ`°h3{²ƒÅÑ¥4²¢0ôØ‚Qwž…=G»ÞŽ¤Å4)u†5,²[fYƒ)¨UYQ ;Hc®½çüšEÒbLêRXYƒIa:´)Ë“r§èã?Ç)=#3DÊ@Œ/”‰r
-i6*ˆÊ)×P9V"ŽŠxFfŽ”4™ƒiÊ)¤É¨&*§~È©.EŽA!‰‘ÌŸ£"ž‘™#e &ãWN!)ÉÇ{ž†äÉJi°t’òA¨BìÌH§x´ùAŒD»J1ÄCðgšJQ0R2 —’\¢§–À¡%Ê“Èñd°Ž*8ÏŸãdž‘Ñ#e áÑ•Sù••†§!ßL/^¿CUJ“é^Æ·u‘Lø._Ï_Mg÷«EÒ}I®ºÍ~±Ùïþ>ý'¤°ñ3’ÑêCläHìÕÕ×Ùã~±¥ß Ôe 0Èë¤ÓW8™­ïgü£rŒC»ÿöl7³•ŸY¦À-ŽÃ ¨kŽC{'£Uˆ1ïæò–Fså8/Ãwïg›Ùï¢
-­nQÍúØ:ÿíåÝ5kØ`„V¾Ÿô¿¬¦ùG” ë±›‹#±÷n¶­X-^*´o9©ÊÃɼ u ¿ô¼åŽ ø´Ø¶Ž
-7ÍývÀÅKZ†ÜÓ¦b;12b›½jg>åç¬%Mì–†®´á¸sø›ºb·ÆM=ýLJ›Úên}?žw›/4NTÎ…µù²” KƒÜÿú”Fçr©,BL:tz5>GK,ÖªÏo.ç³É¡`Ô¹OÉ%RØÝ’·&î@Ë°@Ã)O‹ÅÀî+l(“YÇéå·ÙæaµÜüÎ^C»³dÇŽDÃÝf¹÷ð?¾.÷‹ÝãlÎÎGƒÐ´'Žgo]·=vœxþÓn–‰h\¬G{© .7‡Ù~ÙqþBwZ4¾Šü\;qκ0çØ´â¿Ò#¹48òãa¹ý&A‹'OU?פ0ºË(ÔÐKô‹¶àpÓM~lö³?yÏyÅÃ/âoo·¿±’Ç›ìò¾;ìÙx!öG*ì»ñœ¿Ç±âÄ[©¿†Î‘½ÂÐpè=WjñZÈõ·‹ý›ë 5 t!Q.yQ6Aó( 7…èäÃz|Þ,ÙÙÔÙUUH9ÝvõÀ+„ƒ¯óßöUÿÉÈå²2±Zd¸V6Õ¢>®hn·ÝÃaóÆY];X±g„£Hψ£Ý÷yG úzÁimùK²a<öV NâÖÃ#¤ay:\öÅúðÇÍô×å#)–ž6ÿ Üa · ×ö¶¶¡æ ͺ›ívtÛq çѳv•Æþè
-ZÚQÕ/ÒØ5CCnºù7ß{P÷${~8Ú±7çLe¾Öæðíbóƒ Fª,ë¸Þã”ÀþA}À#¯—cš+Ù9x
-×2ŸÈÕ¬évöøÐu|ÀÇ)¡jBŽÿ|ý–-C¢N«³ CÂ[u´wšaÈÝu[®Ät#.›ÃúÞ°q•Q„ðxš“¼UÛlŒÚvûnÞñùfÒXv¯ºõã
-g—=(î‹pb=¹%2¡ØÓë3Ÿk2¼C
-ÉîÇn¿XSÐãê»ÌüMC‚ãœÜ>Q$œ~:T·Ï›ïýÌ¿’1x¢¡~~Û­gÒbõÜÿéîêo’„Ð=ýèíüåƒvRx0oR+.‡ý²;)¶g„]50âø
-}’-öô$…˜ƒû³^,âagÈg¬¹éºo¾«ÆË™úÂÁäúíDrÍÏ µ§M*åè8|ƒ…»+éGžsÒ_˜E $o#~¬v’NÑZ(v½~‡·Aù}$ü€ÿ‚‹ßkÆÛ“Ë÷o.“·‹ï‹U÷ˆ Ãä×ÃR^Éñ>
-©Q¶ôâÒrIÎùezññâßûˆ)endstream
-endobj
-529 0 obj<</Type/Page/Parent 522 0 R/Contents 530 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 145 0 R>>endobj
-530 0 obj<</Filter/FlateDecode/Length 3471 >>stream
-xÍ[ÛrÇ}×Wì›Â{¿ä%E‘²Ì
-EËlçÁU©Jˆ,‚Véïsú2=½ )±ƒ’\%áà`fú6==½ëÿ>Ë’ÿeI“'EÌ×ÏÒIŠoì¯7/雤.;ü½NŠn’)X%Óg®“*q®“ºq®“,m'¹›Ôc°e:é[Ô$NQMZˆSå“J‰ã f­É¿$Òc°EFÓFÖa°Íxb×Iž6£™=›w“ÒÍ\•$pžOjÜ´[
-jÆ`N \–ñ¢üK"=Æ´8lŠ$õlE™Ê±›HqfQeÊSŠ¢8Öcäó¦Äެط&£ëî.Dû*GGLšDRB.:H9-” â@åTo#e`A> d*—áèŒËóF –g@y;”ÊÁgœƒØ*©oœƒ°kN§h$EÒ,‹¹¤d%UŽœÛé1¹‹öAdyÚ›ÔL.À¦ œLIiZòsd©°)šŒÍÊ•Œ
-5(7ÎAZ¯‘ƒE$BTê1Ø.#YäZeRüä ¢”ãj"rbR\ø ­ ô˜Äe"ë0X’~QÁBñÊÍ,â"péÁ#Dq•£Z¶F®¢_é1¦Å AY‡Á⼇HÆÊ¢©Ô¶œPrqQå1«qbRÜ^yFz 9lÄ: ¡á'ö,+8<Îì0X$ (Y‡±;‘f`&cYUº{RIê
-0U‡=×ð%5eóòN•4Å|K©Q
-C^Ì"Ýç~u:¬û冾FÛ,~ýæõÉ7º$vŠ,‰ÖîXšîù˜ÛD¦§£Ex1;ÿñå4Ú0u^(±½žóÒ8»F¿›mûÍM?ßéâñÇýzqIßbkWY«?½¼^Зضe¡âOõ§Êh©£ W\Ùkœ±Î8z› ôùô˜å*&•™õÍâ¿·‹V ‰:ërUŽZ­›w¬I k4‡ÖdÏBU.Šá Î÷4Ë¥Ùñíî=âq9ïw¬’MW«v<7”ª5àöÖ>4 ºeåØeÅ£›.¶èB„•^÷77†-‡#vq—…ˆž.Ø»JœNCôÐúÉüU¡D­¸çAÙŸ‹Íéñ+ŽWlÛ6ìÅóáÝ°¡oÑOlÛRüù4úøU‚nH¬ûºUsâº]]}Ê•â¸wÚ‘ãDµ,¦ÑßðçÕñÙùôüÇÙo¿]¼ ¿bbÍJAo¹ƒ}®*‘‡èžÐw3áO·‹íG54®Fš®>˜P8Um«ÓúçrÍ£ÓàÓ«~ÈÐ.Í£÷r'Ü>¹mÐ_¬q6ò)øéõÊV5;«ë¼25«âÂkúæ—é/l´—*ÝìÉŸ<ŽQêáYËSj^5‘8XÇû¨žÜ É MӨˊ éô}¿•R÷+G^lnדõM£§Th/$T?tF½•;1y¯v÷žc/ï±ÃÙæj`ñ
-eO–CêU_Ž¶_³±'Û×»áݶ¿~¿äB’:M湛奸3”M¨uÎøè£Ç#[Ë_\Bíåï¨LsEÎRÎÅ'ꊿvƒ«ö9ïŒ\§èw\}º¸Zn–;ˆÃu9^"@ðÿµâüg«
- =]v Mîhðz;ì†ù°"ã–òUˆO*WÇ šU{*Ü­O†õ:\ÆÊ'­úò
-Om¤‘ôíþšžràøê°ßp]‹ð‹ÉñMøúµ×-þTß!ªö”¼»O~]¬VG¿o†ò*Yy¸@šÐËÔº÷©°uêTò½{šÜÝ/kMi´‚¿PÞžÔ|Aö dHòdúdKíFÝ—#ýúmOßá‘WV†[õëí·ÌÍ;"¨b19C?d»éWÍxoÂB׌üê‚äúî{kŽÐ[H>8¡¦Æf¸ú¿½ÙmµÝÃækHÞÞP¢Ñ6Œ Lh¡q´ðnyîÃì–«~. 8¬ÌŽ‹ œÄE¶â/ýv9ܲÑÿ‹×‚çýüw2,:»E"a±¹ä_â²ÐÀć<óÔnôv˜ÁzŒlÀb–.`qù¹eåñvƒµf§Ï¥F„ÛÞìOù9h‡ô^¨jã (ˆ.ZTg§¼÷šØß¹ï¼8Y-q"²5œŠÉI?¯»g},¸î)Ë8¤´ó‚ž¡õʨ<Ý®{*yhú
-i»ûË®Xµ\ks4”ýÁ gk£!Øâ×åærø ÉÆ÷.fßåÿ$¹ÐI‹%æCºˆEùç¸^Xh_ »åU¸1·ÍAO%ÑØeìípÒý³[Ùg3ö¯gSÖ0Ÿ¤ÖXgk$ø/tK®ù¢ává®HN{ÙÚ”A?ÌÜõ}¿\ ¡IˆG>Ýa³Ñ#sCP->€GåXÉíα³÷r‘“1óàÏ×óa­[™Þ¼²whˆà¶b{vúñf·àk4s›ã‘Šü¿?«¹÷>Fs#æq<¾àÒ#”LÉt1¿Ý.w²ÿ|’’"£ MoŠmØ**ûÍfñ¾DC/­Bg Vù†¿ÄáØ~>¸áèN=‚7‡ö´ß!÷«aÊÁ³VH%WÛAZ!8߬kòóÅÙ¿T±{çÇðÃÐhýŒ÷e
-Þ¤+÷t[-¤À@›ÈZ÷`oP´HGjö¸é‘1B
-˃§°õ½r‡/U~¼+?ª)r<(•ÍçåQâÃŒ‹h¼¢ñ…NKQ¨‘‡ ãF$ÞZ,u·}N›WÃå­nBÜŽ¾
-]è…€qhí•{÷yÅéákÙàõ/ô¯z§IGG*,΄#ß\/æË^únà-£‹^§¤>zøÓ¯ÿ}çž—o‰B…\­LƒU#zûhoÿ„ç1^+’²—›á×ÓMTZÄf|8½Z¬yNFÛ"º£ßôïÔ_d³ã]ÈÐózƒ/òl^Ò™·
-j†wÂ-/R_Ù‘Òð î΃ UK9á*ãó~óªßðVÁÖõÐz"Ç“‡6ÜïyËfô.Ôö”âÅfN6☃¸º)HW £}3J‡Å~‰Œi‹,>7 ¿øk†eŽpiŽ%>^joµ©Ð}!{9h¹‡¹íAÐ’7^© {.Á[¿ÿƒì…ÖÍ%@Óí·à9¼ïÈ/cávU–øß4ùp¼‹…cëùqrºøc±®Qä%/oõ¡XwR;Šù&íè­­årIJ½˜=ûéÙÿ
-endobj
-531 0 obj<</Type/Page/Parent 522 0 R/Contents 532 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 151 0 R>>endobj
-532 0 obj<</Filter/FlateDecode/Length 598 >>stream
-xÅTË’Ú0¼û+t$´²–uIKv¹„„ìú ˆ]R~^[ùûÌŒmY¤*¹UP=­ñL÷Œü+I™€oʬd*c›:\@$ü¼,0Â2íà·fÊñ´{M"X3cxq¬™s\E\k–¦Žçc`•½e# lnnÙ×Lê”ÛèÉ*C)
-S Ý<
-VìÀ7X0°ÑjVliÿ ¼™åºò¬Ý±yÛœ}s>}*~B–¥Á¬iŸ6•˜6™¿—‡³?âÜLx<d;“8ÆÒ ÕE¾–Ͳl0¨·Bõá²ÙbL
-®sÙǾ” Û"]Z•§ÓG{¤³Úrgña¡§fsü}8ï[zôó}Âý±úU`=œ„ÿ®'9”ù\¼{ª ;j†B§z}ÀZTÉ(®C¥Ý¾¢ã  ®.UçwøX=ß DsiØTf°òÿ‰þ{$/«9é7\™aL«êòö†+€ X(ä–íöRyZ-¸Éí=<°Y§~³ÒÜ‚ú0fxÎ0æÙº½œ1 ïm/ósûgÉNÒÔHšb¤CÞêXøÆËŠ”Àû/&öýê×½ÿ Á«PÝ[ã0£¼¿Š*ç©s,óa=_gËÇû⯾jþxb‹Ë~KÛ¦„€E„+k…Óû+Jz*’Ét†Ÿendstream
-endobj
-533 0 obj<</Type/Page/Parent 522 0 R/Contents 534 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-534 0 obj<</Filter/FlateDecode/Length 155 >>stream
+516 0 obj<</Type/Page/Parent 513 0 R/Contents 517 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 55 0 R>>endobj
+517 0 obj<</Filter/FlateDecode/Length 2523 >>stream
+xÕ[moGþî_±S Rvö}?ú%Éh’ž¥ë§…l­m,)'¯zÍ¿ïCrfÈ]%HÃyÝHõèYÎÉ™Uþsæ’ÿ¹¤Î’¼Jn·gé<Å7ñ¯ëwôMR-þÞ&y;¯=xLgn“¶˜†3p›¸¬œ·†Ì+4/ç ­Ë¹ó€5‚iF‚ü$‘¬LÚb¦mR¤D1TÙäAO—ðz¸MÊÓ)g lh1¤rBç ®’ƒ-k(eXƒÁb¤¬ÁÛ$ËÒynd- KËŒIóÁ¼ƒÍëÁÈì÷²"eàˆŒÆe@N2üî°ÒJŠ`YÍ«(È@=ç2G.Œ¤Å¶*1‚²2lA&}è°žk
+’‹œ4kÈÈHRŒ”®6À@Ás²ò‘3p›4% 9À,ŽéŠšLŒ¤uP§2P#<ç«°"’,X´©:U@ 91K”´öc¶–5la|••IkŠVïò‚Nê9—RÜ)i19¬¬ [Ð3 Ë@‡õœ&’‡µ,"+ÖŽ“#´` Ãz®¡-¤œÔ‘ZJR€Eg4ç ×3(Sȃ<ŸB$-^„81_Zç"i1Ø¢‚ï k0XhŽÅŒ²â
+µäHZL
+q„D–§ÌÛF—R@œ2pˆ¬%d(Ä œÓ”´,V­1¢2%v^æœNé9™2r’ÖK-‹ºRV¦ÄºÅ]›3Ð)='sDÎ@š’Ò¤
+ZLSæp²2eÙè~Ï蔞ãÅSÎ@ še4¨
+pZ^” uCneÀ+¢Ùç‘,Y0§ÑÎü$ô-¦ˆ¤:éD
+zŽRO™ä‘¤a²–‚Íï;$Çû.p¼ï”3‰¹Æ+g ­Fó•äùªŠ ” è|ž“ "g /YäyY"óå)ÍI^߬”„£X
+õcœf tPÏq`*g &¤
+«œd»4*f¦Ôg tBÏ5´ñ•3©ÒphwÄ„ð,ÔA)3'M
+zÎaI¡j$9‚b‡Ò O!
+ŽvpƒœLOÆåË ÈO¨ CR•f”'U°’R/32PAÏQs#)ªâKÊÿ"È@=çÐrˆzRgÌ¥ ‹ ôœC¶ˆzR‘,Ô9 TÐs²½)­X礤P•
+zÎÕTI]$ÙFœ(/ ³Ëè(Q±.ŠàRQÍFê"3ü™E$D»)R<S%•ãÏQÈ3®Ê¡_¤X¨”ÚÄBü9
+yF–,R,„­L¾`!þ…<ãOÐ ÐcD±ºÙèþ…<ã:Eêbyöú-pš,ïwHËeRÕE²\ó9_ß¾Z®n»d—\îw}·ëŸ~XþR%Z#’šy±YFb¯ç.Îé ä„:£#"¾L®ºß»ÇýçîÀÂPµjõî¸Yw$aŸ·̧þãÄHl
+1²i`(U䑉ÎUÞÄe·Ú²Õ¼iŠbFp£7G×,Í’’(/ÙùÍSXÝö¼jͼ._˜òÁˆÑÿ3Òw–³ÂіˇÕç¾;°)hÇ΀nN_a1C<Þmv›~³ßÑ׸ hRytyrÞºÜ?ý±ë/ÞZð£å¼ÌZÿýχ}¿¿Ý?26„Âj·¦¯ÐúMÆXm9ÊQöQKý—×ÝÓþñÔ@ikª0ƇýºãÍ‚Ö)/þ‡mQ’*¯ßÆHÎPO±Ä1šÝÜû¦B}ï||³ŒöV/0ؤm6°#“5V;.®?_]ž/–äÜUäÑ»vEóy>Ý~SrßЖ|lËÇ‹€‡´©ÃB™ÀÌæ(=òýh£<;¬$ä4Û ÓPÈ…„ó­Mê0lÒÅj{³¢¡pƒçŠœç‡Û‡MßÝöÇo(t;“g¬z´ÇœKuƒaaÆ‹ù~×öëãmÜù/+å²93œZÍöÂQolŇãc¿éÝj½ÙÝóÓê‘ø$èБä¾&º¢8ü„ÍøÜá)ÖQÏjÓ ²ìؾ¥5 ½qróÓöF<Ž‡>•?·ãùÄ(\m*þ²M»—gSC!5;±©Û´»ÙÊràôËøU÷´¹ßqöÀ¥AëËðØm“`¶Ë6Ðh4¾›}t†Ü¸|žç§X žb¾DISG¼¹ø×;òžKž¾<õ÷«((qƒ>«;ZRÊ4&®€BCÔx™?vÿ%‰,Ÿ—.4kŸŽýç£4®ÖæÅ—]¿úƒí Î3Ü×<«uÃÉØÖ™ÜåORª_VÜz5e(xW´€¿¾úõ^D“†>¬nû`d3e q)©1sݱ]ï¤TÛSûί®‚‰¨;uRm´R^N‘lŸ°hõж¯¤ÖoØöÓ/?Û¨ -B5´¶¥¥ßÙøù£hÜ°b‹ý•Ý÷ö¸ã†Ï)¸Îò’fœ «zÐU“U’Uð†$ôŒÉúæ¾ïþèÃ
+á}Æ”;É,ø·´12âa}6ÐÕË 1b¬ ·Z&óá)G˜5ânØ®úßÖÝÍñþ7»&ÓToÑÜÖi\=R{õ½cŒÏ ¡T_îC{ŒÛñ6^,Ž÷÷Ý
+…È»ýzî^ù ódT½äØõR`‡®ø^ƒ†~´úì t‡†cÕ¥¼Ux^UŸn«¾~‹6ÉO1ð9\–U5ý?üÃüÀ$‰?(ÉSüÜÎê´¥'7`o–gÿ<ûá¿ñ'endstream
+endobj
+518 0 obj<</Type/Page/Parent 513 0 R/Contents 519 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 100 0 R>>endobj
+519 0 obj<</Filter/FlateDecode/Length 3034 >>stream
+xÍ[MsG½ëWÌm½ÑÓ=ßGYŽUɶlʵgš¢c®EŽ–Nüï÷èn`†Êjw«L*©Jøøˆn Ð=£¹,Ç¿.k|VÔÙ|u–Or|“þóñWú&«Ëÿ]eE7qÜgÓ3WY•8WY[M
+#èÓ˜®È'­!‹š&,*|‰Aý¤
+€&4p•5ͤ3œ«Ì¹nÒÒb°§´¬Á`?¸*I!ï'5jZR–)d a †M¤æ¾Œ‚ T0pÎ9L¤Å4lK
+$–¨êj¬aX i"åªL91¨wÒb°e…åSQŠªîØ%ìt4£!”ãˆrƒÂʈù\PÒbZ€3++ PÕ쉊.@àÚ–¦Lœ´
+Y¶ÌÊÄm<íC%ePÎ’qP:hà$ËD²`ÑQ‚’`ä:
+WåDÑ–Ö­` rk¨"*g ¬€­!eP$¾å4pœÛ•3–ÆÓ IP­Z]¦ÀO”34¥`WRE ÊÅqR0ÐA×Q}VÎ@ Z64h¤]U .§FB
+Îa.D@"ym\+¥•ý& ­Mä8)g yŠ¶ª’ƒ…re ÛRYƒ© ‚®,Ûé'È•¼²’‘sŽ‚YI‹Éa%FPV†­MÍv tØÀIh))‚H*Éa”aÊL‡x:‰9´D©É¢&͹À¹Ü#–•´vÀ›X¼$j1ØÂÓ¤Ê mæ@Ö`°8ºTFVFƒžZ0êÎs£pàh×ÂÛ‰´˜&¥.ðƒEvs–5˜bÚX••°ƒ4èÚ.¬Y"-Ƥ¾%…•5˜¦C›²<)wŠ!þøsš202C¢ ĈðB•)§f£‚¨œBp-µQ‰cEP!Ràñç¤H`dæDH“y˜¦œBšŒj¢r
+ᇂêRâX’Éü9)™9Qb2^qå’’|¼§áiHž¬’ëA'©„Š ÄÎL”àpŠG›Åx@´«C<¦©Å%)É%Êqj‰Z¢"KO먂óðü9M=QB]9…àQYixòÕíÙË7¨Jyvû…—1Ç­ESf·w|—‚¯ç/ngŸïYÿ%»ì×»Åz·ýûí?!…ïHêœVbçžÄ^\~=ìú JAî^dÕ„¾‚ˆÀélõyÆ?ª&8´‡o¯0Áf=»S`#˸Åñ˜uÍÓ`hïd´1&ã]_¼£Ñ<îkªøÝÛÙzö»¨B«[–s£>v>|{qsŶ¡“ï&GýÇ54ÿ9åÂfd¬csqä
+z ;=ÿºZéÙbœ¡ÒÕÇÐâêèÝHåzÎ[å ù”­± ‘Ç\ø‹‰\#xäT8<¶N/ Èù‹‹^Mú¹E.Zˆ·²Æ{QΊOYøh¤NóÍB.GN©r°rãHu9§XŠÀØž<¶ /ïû­<ÌÃòħÐGÙbORŠ9¸?Ä"†p†|šë¾ÿ¶ç»j¼œ©/L¯^O%×üÜP{ܤJŽŽã7X¸»’~ä)'ý…YÔ@ò6âÇjGé­…b×Ë7x”ßGÂ
+endobj
+520 0 obj<</Type/Page/Parent 513 0 R/Contents 521 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 145 0 R>>endobj
+521 0 obj<</Filter/FlateDecode/Length 3464 >>stream
+xÍ[ÛrI}÷WôÓÂ>Xôý²/ÆƱÆ0Hó@ÄF#·±Ií‘å!øû=™Y••-Ùà˜E¶™ÐéÓuÉKeeeõü¹—D1þK¢*²2š.öâQŒ'ú×»Wô$*ó/¢¬%Ì£ñž‹¨ˆœ‹¨¬œ‹(‰ëQj:µlÃf%M'+F5¦S¤£ÂšŽh˜4&¿I¤Å`³„º ¬Á`«aÇ/¢4®=[ 6mF¹é¹ÈiÂi:*1áªÆ¼Ðœ Ä q:Ê i1Xè²r?,ŽÁ`ëjб ÓLü   Žsƒ(i1º-2M` &¶¡))˃M‰&nP:¨çd@ZŒn³lTE†5,t6` Û˜Rh+Sª3v^ÖvÁ LÉqn
+JZŒnÓÞšZ ¶Œa¸ÀÊ P¹¨ Ê ê87ˆ’ë •Iø¶e
+=Êòº(Š’ÝŒ‚
+œ´Ë Y^ÜŽAhç8Þ˜3å ¤©Z Ù_…¦ƒ­K8a ÆòI(« ¬Å`‘€!óÔI‰0ÐYZ¤f„q\’ò”3J2Ò»’“0´QV†L$¿•!„!— LÀ(JZLƒÒ2¬Á4(ë(´5,46hk0Xv|Ó³Á¤AÊk1Xôýê¸",öTΞÙæ ‚°Ž£TÝ*i1¦„~àö5,’’²cJhe{¶˜Äa5jÏ´FÓJòX^”h¾º58^£¾/ÊÀˆ¹"¡®ÝÔ©Å$Ieš²úR„uOª>ÏÕ”/Î@²†µÉ"B2‰ÈÄ ˆè8‘I9±+”HŠSå ¤ñªi1XWLU›Z ¶Ih®ÊŠR—e’ÿ¤ ‚ÇÙDà D§8ða¶ÚÐbš.O(°ƒE"iµ,/LÏ2]„N=¸%ƒ0]ÇQ.["VÑ›DZŒnq“Ö`°Øï1%eeÐXr[()ƒ0¨ãÑ«r¢Sœ^áyJZ 1lÀ ®a;¶,6+<ôl0؆ÎJ†5«jÒ¶,*=)¥aQ¨¨žÃš«ø³zyC§Lš|¾¦TJ
+Uë»îÏëîŠEC NšÔ CÍçÝò3K‚T·ªv-Ɇ†ŠTÃFnH–ÞI²ƒëõüq6m×,‚MS:é¸oU:‡Û{×ÐË–äC“ewlÜ­þrKæEzÛ^]}íWìŽXÅMâ=zܱu¤8sÑ]Ë'ý™³ rÅ Êzü‘oŽ^³¿bÙÖ~-žôŸû%=Å¡©®s±çýÈcGñ²!°nÊVÜ͈·Èv~þ„ËÅp)ªøÉhI£ñçõÁñÉøäÍäãÇÓôW¬Iî|Ðjng¿‹BfMtcÒÛ‘ð·ënõÍ)G#Î{Þ˜8•.«£Czc¹‹£;“àû;ù¡M˜GíeËݾ»lP_,±7ò.øýñvÊ%«i¬0%‹bÜküîýø=ëå¥Â-öèonÇHõp×rŸ’•x$ÝF \²m»ä© ÓÈË2/éø¢]I*ó¿¦#/–× öI”œ’{hÃ%œ|¨ lH·í“7Jwã>öê=/Ï{–¨©ËP6æ²kXÔΖƒåWmzìáêÛåºÿ¼j//fœHR¥I-w5;sÆ£¼ò¹nÏuô°e»ô‡PÝÅCú;HÓL’3“}±ÄŽ„¼âç.p'}Šë©q‹¾~ŽºóÙr¶Æt8/ÇGpþŸ;¿cl'BE·Ë&€âždK‚·«~ÝOû9Y§”G1}¹hØQ¬Úa;o<ì Ëï5ë»Í6nòTF̾Þ\Bãã#v›¶KÎká~!8¾óï¡ÎQºíú¶Áïë¹·¼jCÈíuò¡›Ï÷¿,û¯K²*
+Y©?@ªPËtyï}  ã”±Ä;z7$Ù^/·K©”‚(nJ> Û‚"$YsúnIåFšºMGÚŧ–žáÊ+Éý©úíj†Sæò3TÀñ¾£²Z¶söf|7¡®«J¾‡eFózöR‹#ô’uNˆé|Óý>]­W®ÜÍæ1o«(‘h Æ8&¤p~饰fiìÏÃl–óv*• ,óÌš“ ìÄYì—âûv5ë¯Ù‚¨ÿ…cÁóvú…‹ÊnVxOè–gü& T¼Ë=Ï)‹a3ƒÜF0ÐO37‹ÃÏ5 ¯´|09z.u4: x߶j¿Ïß^:Ô 7\Õ¼€¨R¡Du|Äk¯
+õЃ!ç3쇬 #`tØN/ÜÚÅNÒ­’2v(WwAÅP+e”œ®-%<Ô=}•ñS¥œkSÜI Þ¼.>Ì–gýW 6¶þs:y–þ›f†JZH1o“F4ʯãx¡®}Ú¯gçþÄ\W;Ý•D`±S”Ã)iøaÄ–@öÈýáøț£X KÃh
+Ùæ$(i©àÆ’I0p¥¦×MwôïXZÜô Ÿ"ÜË!×+»C¥llë'í·n%:ádõaLx»qGNºÑßD–.}íìÓƒËË9ÝBù×oä”*‘›?¾•·‡qÄþiçï½Ä^à “h|¢ñ@»¥HTÉ%è°ÉÒÈjû‘4¯û³k·q:z²ÐC×ÚH÷n²Š‘Ãf³jö‡ùá¬SŃ-Ö¶§]vÓY+u7ðÑE®QP\þ_µ‹ÿ\âÞóìQøä"Ëvš™zý9‰èë£õãïc¬ÇÑ,[9>žj¢¡¶çGœj†›ÓënÑË=-‹`ŽvÙ~ÈjÇ·¾æátÿz[¤ÉÀ½¤2¯9Äß8øs_Ù>²-¥â/Ì™@Ý)3–
+endobj
+522 0 obj<</Type/Page/Parent 513 0 R/Contents 523 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 148 0 R>>endobj
+523 0 obj<</Filter/FlateDecode/Length 385 >>stream
+xÅSËr‚@¼ós4Ç}²ìQz‰©$ò¨Xš0bLåï3³"µ~A 
+ª»çÙ,_‰A·§@§°©‚˜þñ±`RãéYö(;p„UÁ
+¬Å4Ò"X÷¨#-‚Hé1‹Ä“ªÝ£aR3û¨F¸e$º¨²NyÍ)4nÖ^%‚8‡¾ d-‚<ä]BcLªÉ¸e¯Nòd4÷ ä;–\´:ù6˜Lôfëc ͦM})ëKû”R–%g8kØ¥ § ¦ûât)ÏÃöS=*²Ð\ÈœLñμõ²¨™4Ð]`Qo™SM¦:î5¹d‰òõV´íOs±†üp|T¸Ñ¬ÞœO—CJ榟“‰ó4¯FÅ‘ô¾Í¤îmò}úз÷)Ûj}âV¡‘ÕhúF»Ãñn- Ýñ.gxîÑ<ëvÕ
+Sï鯹mº/'cx.¯å±9•ç߇m˜] Ú’)NxöäpåB³<yOþ
+endobj
+524 0 obj<</Type/Page/Parent 513 0 R/Contents 525 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+525 0 obj<</Filter/FlateDecode/Length 155 >>stream
x}Ž»Â0 E÷|Åa ØiHÃØŠÇÄ€ð 6•Š¨€"ø~\Ú‰Y–,ßã#? ƒ´¹CPu†,!d+ëác®³Óîš1pdÝoPŠYîÖpiÔò©¡ÒM5;‡²À&½ÓõvOýûW[§¹\¾WìÇ«EÆj–zÂ%»‰`žàƒÜ”>’ÑëŠñ`ØŠ9šÒ°7~endstream
endobj
-535 0 obj<</Type/Page/Parent 522 0 R/Contents 536 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F7 9 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 194 0 R>>endobj
-536 0 obj<</Filter/FlateDecode/Length 1735 >>stream
-xWÛnÛF}÷WÌ[ ¦ER¼ÈOõ%q ØŽk)y
-PÒJbJrUriÇß3³¹’Ò¤0`ûèÌœ¹ììúçħ~|J
-cZ”'#o„Oú_Ï·'qâE¥—RI~â{I‡
-šžIäMz6Œoì°Ð¡(äßðŒ|/ì{¦^@ãÉö%E‘w€)–Ç` ™s 4G)²HsDŽì°OÃ:ì$Aëà’‚1÷d`] 6™ì—°q’ à’&®[€”*\<¶-òNX“¾ƒ¹)¶g#qEM|.8ŸÆØÓp XÞ!9ƒ0AŽ%GÜ]ìç@¤šr zÎƃŸ˜ïXEÐP‡ïK~೪ ©ÃÁpûœëÀ:lò‘ö¬D ‘ŠÌЈ]-asÉk]Ó±\k*ÈqݱAŠa{ÖºbÖ¹G8΄Bìé@îC›ä©qPÜ#¤u€ýˆ‰Ÿ  kÈœeD\³ƒˆJ$‚8ò„ãHúžp©H¢„#®
-Z'–Lº,‰÷¬­? ¤ë¨²Dv€\ÿ„e{ÒÅ`qç!Û³VÖç9F[EGÀ Ûq<#èyOº²2#keG¼Dv²ÙŽóCž£°']̲#®¥gE6˜ðJƒ,7Ó‘ 1ß±CNb¶Åœð…÷Cþk{ZkL ÁSÐ@"°ìÚt‚kb’g+€šÜÛYYÀÔx€Ý½8q b©Bîw @Üøö[ˆ"=g«ÇxK£æ,ÄŽ¾ƒQâXºÑ³Ö&\¢s €=ˆL.©çÈ}‹p%RDý”[‹\S$n‹:ŽÐ ÒÅ`£pÏUŽƒŠ»êÇä-b]KÆö!Å$t $žÒ ”/»/h Ãn¯ËÎö d`7·g¦b4#»žù!YA=9éV0Ì1 è©´[Ài„ë# §ân…â˜SÀ”?â#ˆøüP>êÅÃÁÀá&Jkˆ÷2ÀÀakÊà ‰!"€¹«ÙÉùÌÕˆf+¼\ÄIJ³¥¼Sà“Åéå¼1u¶0ïfß`c…X»3°<½ÏCŸ¶ËÌ(k3îlNé‚tESµÅ5ÅQ^áEÒõÍŒ%`ëÉCg¶Éšký7áoF ]jarè-õ¢-Ue2›ÌP™¯7†æŠÚF­Ú‚Vº¦­ÒÛBÑR½¨BoójMMVÎ3e6ºQ”WFÕª1j‰»àr |©ÅA{tg~k¨ÒfÔºV±úIB¯unŒªhþÖì2P5ʘëÖ@  ^eEƒjb¿du®Û†¶YúP¬Í;«–â9}¸¢m­FGºô“ŠXè%åÑ !Jƒ¨Õm¢DïZ‡Jš¾¡¨ ]\éÁÐ×1Û‹ós©À“4<]¯Ï=z*T†6
-v­œ5NBÓ7U”ªþ£·ô~t¦»³Ëä09™#•Ï[> V|@Šn?Ñ­ªTôÔ΋|A÷9ŠAØ/§·O÷_ÞõU]b@¶oÜ-øTWqC(ô¨h—ˆóš›m§ E£ÛzaÙe‚^õš{MÑÕY‘W
-Í9ÒµêõõÕ[5+iS·9_o Ï|ï®Lâ\^ë<êÙ“ŠÜ¯5fSÍÚ{—k7—¾G7j•Wùî"<*su÷qJOÝDÉcV*zV.Z±{ÐK%šø’p6HAìñýŒÝjÁòèêùãåÍõåtF]Œ#£þWS—?s#@d*ݽ¬›Üàö¶µœÍ¾Ò¸«L­—­\os†=°ËΣ‡¶08±ZeK¾‡\¤HäxÈiÖ›5å|yd1v-ªYDUór‰N7ùZ6Ã^Y³/¥Ý¼¿útKÍÖHÉ¡ÜÒB;¬^éck¶¸÷Ó·ÊdßÂÚ^WQúrŠ±~ȵ>2ëŠÙåÍÍO,¥BEbyÿùþ'–¨”óûÐVÒú£ ½ˆkXÎ×F}7,t”žªb°YÖ;Þ==V@æXÈef¾.Õ¼]uµÎðÕµ?j$~­å€§ízÕŒk(99〔íPafTÍô°í’òõ&ã§vÉŸ\ÙõAæ’7¯É
- X¹ Ø †Üå8xu`¥¥k,(osTNûúó%ú=oW¿ousÔ-nºõôK#DîIýþ’?”C˦Çrî pP4íîØê ÐØJMò?ÔJ¬Ö¯ÌR¨íeöŸ%L`¹—Ý`y_[­ê}0>(ßA­îÿ±Å©<ïek›}þï“ò‚#sLì¾vßÆ)^ýÒ1Þ”°Èåæýì䯓…˜V¸endstream
-endobj
-537 0 obj<</Type/Page/Parent 522 0 R/Contents 538 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 8 0 R/F8 10 0 R>>/XObject<<>>>>/Annots 246 0 R>>endobj
-538 0 obj<</Filter/FlateDecode/Length 2009 >>stream
-xuXÛrÓH}ÏWÌÛBÝ/&\6U¹Íò‹"+‰6¶ä•e ¿çôXš¶Š*¨Ãé{÷ôŒüßY`|ü Lš(5ÕúÌ÷|üÏô××Ïgz¡IóÔóÍÚYìÅ{´2ó‘ÍB/'[d^aRAŠM
-/–6RAd“ÐKL§0¸6YB»È)³A>IŠY…Á&œT5fÀNl‘"Ò4Š BUB4lÉù“ †$H¼*LUIfbm2>­#‰W€$ã ÍÆ h"5ç^¦Øq&E$õ 3TÁZUpmÒjŽSpmÐ:­'‘&¹/eÏ3˜¶€6d¤Š$I©N’f¶tqàÆ"’¬NóŠUxmB?A™k '¬ + †)Ã#k 9Vaèb:±c†Û(a!&Öº9P
-æ#HÜ*LÃ[±
-Ãp²Š“.b‚TSŸÇä¸"<E0J!‰S…Á¢‹èþÄÊ,øöµÁà"ZTT³°ö§à8'Ž“±ÙÛĘ¡+§ #ew))Æyn[øÊ"‰†ùǨ½ÖgO,r$‚bq²bä]:ÒºÄùÊa+&䬢Á,NáÓ£
-"C^Ž³ÙÇû»D†*$ésµFØÁr•D1óäÈÀ^%A0RA$­Yß®|l3(
- § ¡qÇ)È‚sû*’ᄘ4{Uð[4…fö20Þ¡±È‘©ÝéAÌÓ
-šb qœe
-Í* çÁ‹Ö˜Û,8t+™FûµÂð QU†ÑÝ@±²aCY 1@‰±HÒ»è²]¿´
-šH>'¤Û¸e#y\¤Fœ* »1†•Va²lªf‹hVa°˜ÏX±’N€….S† ‰[…­áP³0<b”ØÏèvÒÕlÄ©r¬u‹wŒ<Y‚ŒÙ
-·
-3[§X…TÂ']k8—¸¤ ,6-"v¬Â0œr*Va°8HjÒµnÙØxä#H¹Y*4«0ËÈ}ït5‹›)ÖºE—d¤lÙ)·#kËæX…YFžYn™ý8Ê ™T™‹0b‘‰e…¡‹Ç*êèX«+‰€µ²‚”îÈâå ]Ç* ]™&ÅŠeL°]P J€³;rbÆqÂh K'›7¨m\ˆ*°œ Ô0Áø¨  p‚Ãׯ8mC DZŸ{.¤¹É¦t3µ7l Í`Cá$\"ÎAº‹Ð²IOL"E题àLŽ;ÞeÎÁ± '&#>ã@‰IÎäÈaKáZ¢ pBï¾FÎAd€]+käÄ]¸ÿRwœ»‘íŠËƒ‚ÖÝmp9ŒÜûÅÙ»OX YÜó31Í3³XÊ'¢oÕ+lW‘ùzñÏìòÇ«»Ýý›M·ýñúõâß³·¾y .„‚•‹!7ŸkÁ7?ËÕ„
-XUÂøZU¦a÷rvm®Ê¶|¨{3/×w¥™Ý^0ˆcÉÀ3·e_®ë¡î·82öB¸­‡]ß„¶«%Cì¼[Ö¦z„
-fÌPÞ­N%SÏ,k³]ßyU×Þ›ûÆ
-ik©‡x.ëßMU®Ì¬-WÏÛF¢:‚Øße»\5íƒéîÍ÷Çf¨·›²·*D
-Zö²ikDÜM»+‡¦k²¦
-:x"f¾ìšþI¢y{ÌŸÛ¡ü}\` &4»ëvƒÙ°Ì[¯’bt¦†ež¹®‡÷7sÓ´¦4ßÚæ·ùÞõ«å±=\“ž¹h‡¾[îªBÇ£Á3߶uߢ¡ÇÝÄS×3ŸPtsó«E³›ÍQæxÒs¶Û_]¿<UG£/»ê %?ÑCo?Ôí³¹Â œ*"ÁE_n–]×›oNr¸íúÁ´»õÝéâGð}7tU·BçÖ›&dx–BêNÀ üTœ‰­Ìüöy;ÔkƒaZ;…Éë…ùЭKÔüëíù_" ­áv9-ö±
-endobj
-539 0 obj<</Type/Page/Parent 522 0 R/Contents 540 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 8 0 R/F8 10 0 R>>/XObject<<>>>>/Annots 289 0 R>>endobj
-540 0 obj<</Filter/FlateDecode/Length 1946 >>stream
-x}X]SÛF}÷¯Ø·¤(ú–܇vøH(S0;I2Ó¶ j,É•í0üûžs×Ö^a¦É p8÷ûÞ½»æßQ`|üLš(5ózä{>~Ó¹¿S/7ižz¾©Md=Z™éHc°q)++¬Â`³ÈK›„„Yƒ ó±—íU­×dì¥$ÃŒv‰]…­×T³ðzÀ`ÓÌ‹k Ç©‹aß›T5ì0T“€Éö¬ 8Š¼ªãˆœ
-BQn»¸'1w¹‰ÐŽrö÷€Š
-Â(§Í
-ŠQaÔOP
-cvå…ætm:xɦô©)@ÊäKêáþ•èŽ Å"KûTâ÷H°¡Ãˆ ×+JìXkÙ·o¥ÀÊ
-Rº'µèY‰8Ûú`IPSA8ÅYʈÓw's "6Ë"qª0Øì«0@„ƒ¬t­åtÿjÁ»*1¡ Z¶'ö} 
- § œ¢Ë©q¤UD\œat™
-°á27l8t/n
-ÌlÉOviž™ÙB>Õùf6?öb/ñÌõôÔLOoÌuûØ.—¿Ìþà3à ŠBRùŽ7§W×ÓëÛÙ÷ï“ü2»¾½¼Pþµxà™Ï»²{1˶3wçbÓš ½Þió†Ïôý×é×s3ëŠfSÌ·fRÔåÂÜUëòØgêÁç¤ÜšéSÜ?6»úØ)Þú{¡²ûYvæòWͲ}Ã}æ™óîe½m»býTÍͦZ”¦]šÉÌ\´uQ5æt·}*›m5/¶U+) Ë€KÌ3å²j*
-lèePwÏÜuí¶·«7Ø1´u ¢ûª)9
-tu±1E³0÷ø†àöÌ·rµ:ùѴψ¹É„‚©)…N0/ýà€›iQ?·BÊÍ#ê¶-»¦Xù…,Üž>l¶š&¦TÖ`%imeYÌK³mÍ×¢«ÚÝÆœó¦l6ë¡2j"!p¾v¥™]œ½±¡TŒÊ=Ícyu!õ9_U¨¢9/æOŒm#¶¿«ûÍ`î¿UÍ¢}Þ íÂ?{-kÜLÚmµ|‘uåäo«õíj2ýŸJá ”ùTT«#yl Õš=•æËzÞÖŒuú²Ù–2ß·¸!Ḝïºjûb0¡˜Oó®)Ÿ©ôŽ¦uz¸ñ!½Åø«¶ÁºèÚÚ|™\ýuÔ²ÐCÕÿ€àªÜ¶98ØÛ?6&\/ew<!øÌ(3²^¯ÔéKxHV#ò–Æ‚Ü´‹‚“È_•=|%q$Àª­ËyU¬ö†~5›¢þ{]l6‹‡c¯X÷žû }e›ë¦¬[l¿›¢)Kàc+X0³rãt5²º.hËðbãÜ!”ç¶[`¯Í¹•ÞØ7ØÖÈÅêP‹ùAB×ëmlŸÍ¢e÷¶üþ:2ܼ÷ÞüƹÛÔ¬ÃóÂ,«•´`°†ðÕÜß›»Õîñ±xX•ºƒºØŽ?´»£ZH§/˦ìЀ[‚ŸUùÌ>|Â(wÿž˜Žñ<µäNBKÏN±\–«v3—;ìg©då"{’ùc^_zÅøÛMžÇøK'ˆ˜âg£Ï£ÿ
-endobj
-541 0 obj<</Type/Page/Parent 522 0 R/Contents 542 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-542 0 obj<</Filter/FlateDecode/Length 1571 >>stream
+526 0 obj<</Type/Page/Parent 513 0 R/Contents 527 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F7 9 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 191 0 R>>endobj
+527 0 obj<</Filter/FlateDecode/Length 1731 >>stream
+xWÛRÛH}ç+úmIU–d]ÌÓrIØTa±“§T¥d{l++i¼ÒÂßïéYÛ¹lQŸîÓ—éiÉÿžø4ÂOI@aL‹òdäðIÿëéö$N¼ˆ¢4ðR*ÉO|/éPAÓ“ ‰¼Iφqà:…üž‘ï…bÏÔ h<Á¾¤(òâ0åÀ’â¬!s„æ(EVébŽÈ‘ÖÁ`ã òqXƒ$¨Óa\R0æž ¬‹Á&“ýr6N\ÒD¢
+R…‹Ç¶E~ bÒw0—#Åöl$®¨‰ÏÇãÓX
+r\wlbžµ®˜uîŽ3¡P
+ &÷6DV05`woNÜ‚Xªû7¾ýb…ˆFÏÙê1ÞRÄh„9 ±£ï`”8–nô¬u… —(Ç`O"Ó€Kê9rß"\ÉQ?åÖ"׉[À¢„#ô‡t1Ø(Üs•ãàâ®úqy‹X×’±}H1 ]A‰'4(åËî È°Ûë²³}AØÍíã™éc„ äÈ®g~HAVPONºŒsLz*ípáú詸[¡8æ”0åø">?”zñpg0p¸‰Òâ½ 0pØšò0Hbˆ`îjvrþs5¢Ù
+/q’Òl)ïødqz9oL-Ì›Ù7ØÅX!Öî ,Oï²ÆЧí23ÊÚŒ;›Sº {]ÑTmqMq”Ax…t}3ãA ØzDg2ÂЙmò†æZÿCø›ÑB…Z˜zEK½hKU™†Ì&3Tæ롹¢¶Q«¶ •®i«ô¶P´TϪÐÛ¼ZS“•óŒ@™nå•QµjŒZâß.¸\_jqÐ}04Ti³áJ]+ŽXý"¡—:7FU4ív¨eÌuk Я²¢A5±Ÿ³:×mCÛ¬F}(ÖæUKñœÞ_ѶÖF£#]zÉ‹E,t‰’òh†¥ÆAÔj6Ñ3¢w­C%Mß¿ƒÐ T†.®t‹`èëƘíÅù¹TàIž®×ç=*C »VÎ'¡é›*JUÿÙ[z?:ÓÝÙer˜œLŽ‘Êç-Ÿ+> E·ŸèVUªÎ
+zlçE¾ »Å ì—ÓÛÇ»/oúª.1 ÛWî|ª‚«¸!zT´KÄyÉÍƶS†¢Ñm½À°ì2A¯zͽ¦èê¬È+…æéZõòòâ­š•´©‹Ûœ¯·…g¾wW&q® ¯uõlŽIEî×3‰©fí½Ëµ›KߣµÊ«|w”¹úðqJÝDÉCV*zR.Z±»×K%šø’p6HAìáÝŒÝjÁòèêéãåÍõåtF]Œ#£þWS—?s#@d*ݽ¬›Üàö¶µœÍ¾ÒøP™Z/[¹Þæ {`—'6œG÷mapbµÊ–|¹H‘>È)ðÓ¬7kÊùòÈbìZT?²ˆ<ªæånòµl†½²$f_J»ywõé–šW¬‘’C¹¥…wX½ÐÇÖlq璘•É¾$„'´½®¢ôåc}Ÿ-j}dÖ…³Ë››_XJ…ŠÄòîóÝ/,Q)ç÷¾­¤õG3z×°œ¯únXè(-<UÅ`³¬Â#qìã23_—jÞ®¿ºRgøæÚŸ4ò¾Ör¾Óv½ÆfÆ-””œi@Æv¦02ªæzØuÉøz“ñC
+«ä/Ì
+nìú qI›·d…úWný{Á»œolt£týämŽƒÊa_¾D»çíêíV7GÍÂ7ëñ·Fˆ:Ý“zûœ?”C˦Çrîõá hÚ‡c«ƒBc+5=ÈÿP+±Z¿3K¡¶—ÙOK˜Àr/»Áò06¾µZÕ!ú`|P¾‚ZÝÿc‹SyÚËÖ6ûü=^'åýFæ4˜Øuí¾S¼ù¥c¼(aË+Ì»ÙÉß'ÿ…%VŒendstream
+endobj
+528 0 obj<</Type/Page/Parent 513 0 R/Contents 529 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 8 0 R/F8 10 0 R>>/XObject<<>>>>/Annots 243 0 R>>endobj
+529 0 obj<</Filter/FlateDecode/Length 2012 >>stream
+xuXÛrÓH}ÏWÌÛBº_ØTåØ,/¼(²B´Ø’W–üýžÓciÚv(ª §ïÝÓ3ògññ'0Yh¢ÔTë3ßóñ?Ó_Ÿ?œ~è…&ÍSÏ7kd±ïÑÊÌG6 ½œl‘y…I)6)¼TXÚH‘MB/1iœÂàÚd í
+ § Ìù$)f› pRÕ˜t:±EŠHÓ(‚
+Uý Ñ°%CäO2,’ ñª0U%™‰µÉø´Žd$^’Œƒ43 ‰Ôlœ{™bsÄ™‘Ô/ÌP hUÁµI ¨9NÁµAë´žDšä¾”=Ï`ÚÚT‘f4*’$¥:IšÙÒÅ‹H
+³:!Ì+Váµ ýer¬5œ°.¬€¤ ¬5äX…¡‹éDÄŽUn£„…˜Xë6æ@5(˜ q«0 lÅ* ÃAÈ*Nºˆ ~P=N}“àŠðÁl(…$N‹.¢û+³àsØ׃‹hPQAÌBÀÚOœ‚ãœ8NÆfoc†®Lœ‚Œ”Ýq¤¤ç¹mYà#(‹$æ£öRXŸ=±È‘ŠÅÉ"ˆSptéHëçC*‡­T˜X³Š³8…O†«ÍX€xäÑ´‘Ljœ¢ŸKXm±‰Sp
+u"%Ô¨HlŽ¬ƒâÑAzäÚs¤UÌyxû B -U$g#’yY›˜CeõDÁ3/Rœ‚°ésá9EÁF¬¸cÅ£,A€u‹У‚˜8ž Ç)ˆ ym8ÎfïïªH¤ÏÕaËUÅÌC#{•QÀH‘´f}»ò±Í (€œ‚‡Æ§ Îí«H†bÒìUÁCnÑN˜ÙË Àx‡Æ"G¦v§1OG(hŠ5Äq–à[ Š"ž€GÇ‘ƒÅ’+4«0Xœ[/^hXcn³àЭdí×>
+ÂDUaFwÅʆ eu€Ä
+ÃpÊ5ªX…Áâ !¨I׺Edcã‘ åvda¨Ð¬Â,#÷½ÓÕ,Nl¦Xë]’‘²e¤ÜŽ¬-›cfyf¹eöã(/d>Re.ˆE$–†.«¨£c­®$ÖÊ
+Rº#‹—3t«0teš+–1ÁvA1(ÎîȉÇ9£E€.MœlRÜ ¶q!ª Àp‚PÃ㣂‚Â9_¾â´ -Ç~î!¸æ&›ÒÍÔÞ°4S€ …“<r‰|XPP8é.BË&=1‰¥‹bR€39rXìx—QP8Ç.Lœ˜ŒøŒ%&8“#‡-…k‰‚Â9=¼#øF9‘v5®¬‘wáþKMÜ pîF·*.
+Zw´ýÁå0r‹³·ï±@³xägbšgf±”ODß,ªWØ(®"óùúŸÙÍ·W»Ç7›nûíõëÅ¿gç¾9BÁÊÅ›Ïµà›Ÿåê …¬*a|­*Ó°{3»3·e[~¯{3/×¥™}¼fÇ’g>–}¹®‡ºßRà ÈØ á¶v}kÚ®–<m °ËnY›ê v*˜1Cù°:•L=³xªÍvýàU]ûh+¤­¥⹩7U¹2³¶\=o‰êXb—írÕ´ßM÷h¾>5C½Ý”•¸U)Ð Rв7M[#âvhÚ]94]{”5UÐÁ1ói×ô?$šóÃpà`þÜåïãã`0¡ÙC·̆eÞz•”£35,óÌ]=\\ßÏMÓšÒ|i›ßækׯ–ÇöpMzæºún¹«^Ï|ÙÖ}‹†wO]ϼGÑÍý¯Í~j6G™ãIÏiØnuýòT¾éª(ù‰z{U·Ïæƒpªˆ}¹Yv]o¾\_
+äpÛõƒiwë‡Ó1Ä(àûnèªn…έ7+LÈð,…Ô€ø©8[™ùíóv¨×ô:v
+“w sÕ­KÔüóÇË¿D@[ÃírZìcˆÌ»]_dMm4㲯—Í ¶†+
+tZƒ16ó¡GCw½5sèDFHDÊN°òU«{™äÓ$C6ýÐúQàoç(€é~âè¢~í§ØÜa‚–æc³‘uVܨDS¯Xr8su¹¬û“˜qó¢Me³záBD$ JòÖþ3«~HŸÕ™ÆÝàaï7óÙŸÖ»–òPJßoꣶj*;=GV1¨”ú´«ûgœ³ÇNɉbÖ(:¿F ; Ûr?R/Õ#7Å0¯«¾^(žü"u¹ê¶ÇËŒ‰à†þ¦ë~ì6f~}5É
+êO_{)6S":ê=ê}÷nqsÿáþÎô›êOÅ<ì~ÌîÓøçú¿]½ÌåÎWÝ~? W®ŠÎvÃS[•Cm“€ñõjMÎëžS8î 3·5:ì&Þô{éÙ-2ün7øÛ÷x7˵àÇÄ´À¯¹\µóÙíÅ ëég½ê6Ø.æîYJ¬çÞO”<Ïü‚·òìa;ðc€1¾…ó<ÆïÁ "þÏ»ÅÙ§³ÿþó§endstream
+endobj
+530 0 obj<</Type/Page/Parent 513 0 R/Contents 531 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 8 0 R/F8 10 0 R>>/XObject<<>>>>/Annots 283 0 R>>endobj
+531 0 obj<</Filter/FlateDecode/Length 1845 >>stream
+x}XMoÛF½ëWÌ©iføMª—±“Ô¨í¤‘šô `$Êf#’*%×ð¿ï{³wdM
+†.UœL¥Ä¤x2c-Ó’?Q¨è¸‚§\`Rä dG˜¤'-‹™‰-k0Xø.-k0¦$â:ó–-›pÃxÖœó¢
+ 9ZáE…Ó‘´,fEYgVG$¦:—TíZLÃ+áYƒi¸`6ž5lÉ2¬Á`Ñœ#˳šÞhÙb°¨ia,»„°?õ8aP"I¹„<†[Ý †5,! {]ƒá6LX‹rŠI4ºï4æå¶o“Ž÷à ¢*HÎ@„zÃèHºLCŽ&B§E „¢ÞvéHbîJI°8JÈ9Ü*£œ6'¨F=„Ñ0C<i1XœkVcMôÐã¸qÅ8@³Òl‰ŽyÒbfºÖ`°¹#]ƒÁb)#n]H¸:uP¢¿E$#ƒ¡Šª bÏ 6tá̽wt—$
+4Wn¡å,áHZ 'õˆ5lÆÑ5,rE:Þ²Á`qyY6³«/4¯ëÒÁ“H7eHMZ¦PS÷¯,øCwYº§'Š”=FL¸^QbÏ:Ë¡{+ENV‘Ñ=°8™¨ÅÈjÄñÔ½xÐïH ¦pŠ³T2R§1îNæ%l–CêÔ`°Å3Ö`.€Ùè:ËùþÕ‚wU&±"Zvgî} + g œ¢Ë¹xÒ)".Î0ºˆL¸p™wNÆv@zˆ—7€ç Äàñðœ¬OÆú¨çÐc°ØðÖ¬ ÇJKñ]+Òxx9GHU/·Åq€–ÐÂ*ÖnjH‹Áb³%–5,ªžV#ŠJ÷\A÷ ©€Nã=„b¢²ž´˜fs´Ú³»‹×+ðPËjòf>yýD2_ñóR^2_êg¥P拧Ad\ÏÎev~#×ý]¿Zý4ÿ{r†OVgH%†8¤ ónί®g×æ_¿Þ¾åùõ‡÷n)ÿ\<
+ä÷‡zx’U?ÈÇË Ê„Çã`ôÙ½à2ýéóìó…̇ªÛV‹ÜVm½”ͦ>u™py[ïdv_!õ·ÝC{âïç½L=ü[òâWݪÁ{ÈÅð´ÙõwCµ¹o²m–µô+¹ËeßVM'ç»ûºÛ5‹j×ôšÁqp1rY¯š®¡Àö$ô;C¿ëýú6A }Û‡ê>kI‰ú\]n¥ê–ò ÿ ã
+Áu½6´k{p°·j=¸®žêát>ð)L'd³Y›³s\ªá!Y3ÈK rÓ/œFþ¬$èá3‰VmS/šj½7ô³l«ö¯MµÝ.¿zÅ#?PÊÍçÑ©Œð%N 7uÛcóÝT]uWóøžZÁz™×[¤Ó¨‘ÕuÕA[6öÍG„òØK,µwÒ Û›y Xj±8HØšb•£ý£,{vo'°øý—ç‘á. ø?êØmÛo,ÃãRVÍZ;ðú]¹¿LøµY>åGqÞp¸$Pç7çØwÿÖë~ƒ¾Ëû¬LM/*J•=+Â)EírHñEY¦øBDJñ·óÉï“ÿ
+endobj
+532 0 obj<</Type/Page/Parent 513 0 R/Contents 533 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+533 0 obj<</Filter/FlateDecode/Length 1571 >>stream
x•WÛRÛH}ç+ú¤Ê–-c°!O@`ËU,8±©¤*Ù‡±4²'Hef„ãýú==º ´Ùl¥r[ӷӧϴ¾…4ÆŸf:9£(;ø8›šÎgø}‚FRrtµ>ÝžÓdLë&g³9­cÂñ1¾‰Þ\ïDᤡ0 ÷2Q¹rJ示—îjñ°¢¥ÑNG:%‘Ço×ߎÆ4œLáâͽÈ$}”V§¥·ùSÇÒò ΪpÓ)RÂé0@„û›5û¬M) ëC“Ypæ]Ö1M™[ÒÏHËíPƒNS½Wù–œy¡³´¾^ŽËw>Í›ÇgG‹åçÑjù9 •È6‚tž¨´Ò¶µ°Ëº†ð¤Ê«òЭ6K'TŠÈ¹[=jWÒZÆf%ͳŠdûý{áÄÖˆ¬y0ð¹Ôðõ¢1fv@VJ2IŽÇaà~8oP}žðç ¶šœÒ€…kT–±oC'+©h:¤²"•™Ìð q;×ŒÝ q¬%§i#‘IîH—®—g‹ýñ^yL2ÛÈ8–1í•Û©œîî®É·hêKv¹v Ý÷68º“9àç¾5\òn+X{›P!©×Z™H#6)°~XsÂ*·½„Løh$r.E<k…ûàÕ¤ðà¥VÓoäXuòÿ’E{Å4!™®–ùJež‚=tÐ% Le
à@1|’@^:O;|8P*…uƒ##¡¯Ü
†œ%PùCðl hõç
@@ -984,16 +958,16 @@ x•WÛRÛH}ç+ú¤Ê–-c°!O@`ËU,8±©¤*Ù‡±4²'Hef„ãýú==º ´Ùl¥r[ӷӧϴ¾…4ÆŸf:9£(;ø
Iˆ„פæ‰!jXHcÔ½­Xq]nw ,þíe
t2•£KÀs g^˜F·óÎëʼz]ù­w'òý³÷¥é|ÌçS¼œá=é”K½Y}8ú3llendstream
endobj
-543 0 obj<</Type/Page/Parent 522 0 R/Contents 544 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-544 0 obj<</Filter/FlateDecode/Length 1468 >>stream
+534 0 obj<</Type/Page/Parent 513 0 R/Contents 535 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+535 0 obj<</Filter/FlateDecode/Length 1468 >>stream
x…V]oÛ6}ϯ¸{J8²åx¶³ ’nݬndhŠŠ¸H¢FRvýïw.)9ŽÚa(âÔ‘x?Î9÷\þs–ÒÿRZLézN²:›$š/æÉ”fËþ?ÅU”‡ÓÉ÷ø:xp·9˜QšÒ&G¬ùrA›Œg2¡¼p{á åÈä´µFdR8OÞŠ<×ò»¿’ËÍß8~C)Nññ«ëY2C€‹4¹Nhu·ZÓJù»ûOëøæk¢«é"™ó›6—éd’&þ‹§L9iõV¹‰ÊÔÏÈeÞ’/4¾ð[‘®šRUªöÂkS“¨3jB…8Dç]:Z‰JÑZÙ–ê<Ô‰êÒk ƒœ«Íøv¹²ŽÎt™½£ûÚ+[+ÿö,í - ÒŽò¶,ÔÕ;ž’4¨D‹ÚhÛz*„ÃOFÞ/Š>Ié%5@#!CÙ{í ’Êz¡ë#ªQ´#üÁØŒ»6T!iÏ"}B¹±¤¾aÄO2%JG!ÐdµêY;ÐR‚ßRù¨w]>Q–œ3ÓŒp¥½8¸„î¡´¤Ñp·Jd`¥À_?ji3¹§‡ûU ÷¤[ ü¦Ê†r]¢).›D½h¹t—=)Óy”ÌA#‘à‘c’‹Qdë!ÀRŸ¨Lí}éÕ2ôì3(Ø™²åÖÑLäçk„š–YN ªãþnðUïq„W¹v‹¬Ä<+¼b8äp®TG4 È £ƒi-ý~»©vnW#–ŽŠÑ]ÎÜ¡°yÿy|ÿù¤ŽFȤ÷P¨š³@};DzƒëóâYjpÌŠAŸ[¼¿Ezt! &
Hp§èãQ
yuO¯%„µ·(̳7Â÷Ý„BÐ$K¡«èÓ0”èÄVS^x°ë×Vµk%švqO…“h9ì”Q”ŠÒC :šÜÕÀäúT+Þ,r¸ÝQ*Gl/¯`ñ"Èž-ðT3t‰Ü7 dWE‚}2Îìó8_¥iìøýý‡õ˜Ïóöá;À¡ËõÇ»°7Æ…ÅB÷¿c|Âus~õñ’ôÂÂAóCyDÇ%x, M„UÆÄš›>줽°Ypü#˜Œà²”[SQçÁ<±ŽÒëÅËPbz}ÓÏA­ø#\+ÇbD…Ù£M‹-{Îp1àIáb©öYuk=›WA0ÈP!¶LØmx;Ü2”çqÇe¬jT6˜ƒíáÈ ¤'£ïãD}ûâvÒ:
¢#VºÖ•†–y:jÅ*‚ òÈqdíî€=½vÃPöF°N«'2Ž¸rž³Ç‚Ž·Š“¿1-|-ëó×{ÑWL³ÂãÕ0ÎÛ9ü"^:¡G4“ x¤7‰¯†'Pá |.üíî
´òÉ ÿ¿5An_MˆÎÆ–Ý;],“ùÍ Ínº«éúöãÝ-ýçƒEúk WåCWý»W‹ÉÍÞ±gËI²\ÎpÇ=wÎç~Ùœýqö/M5øþendstream
endobj
-545 0 obj<</Type/Page/Parent 522 0 R/Contents 546 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-546 0 obj<</Filter/FlateDecode/Length 1660 >>stream
+536 0 obj<</Type/Page/Parent 513 0 R/Contents 537 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+537 0 obj<</Filter/FlateDecode/Length 1660 >>stream
x…W]oÛ8|ϯطK€Duçë^Š¶¸yhÑC|ÈK€‚–(‹‰TIʪï×ß %ÙŽÓáHaÅ"wwfvvóãäRføw)·s¹º‘¼9™e3YÜßgw²¸»Åç9~¼–2}q5»þõ×÷<öúÀÇåÉ»Ï÷2ŸÉ²DŒ›Û;Y‚ûgøM~ú©RmÔäQ5+%|^™¨óØy}¶ü;¾¼_\-²9ŽŸÎ³ËLlô®èòhœÞ\Èååøæü6»á›ËÊ)\Þ5ÚFY›¢d­­öª·Ñ~ct/®”Êõc
½ó/AŒE^VÕõ6“e¥Çï–Z5R© Ñ]Ht’»&%:“‹Ë«!½®•ÞÄ
WèZúÊä• ‘ˆ{V:Di]fUkžn½kLà±×ÚŠ®õZÙ\Ÿã-ÕÊÔ&nÏ%è¼óø$Ê"nu3w6D¯5Rop?²[mSD¹•F‡°•Ç/ÓùOŸ£Ë]=¤?¿ÉÄì!ŠªƒK%"g‡¡G•)VQzý£¤5ò /ˆ…§@&‚„Ūð;o…šö׆ÃT‰*(ÖwÖ»gå/k~¾OPÿÜþ#m­bé|ó^ž*…„V®‹)²wøy0Y›5Ø4!tú=ƒ]€}ˆª8…8øŒÇ%ß¼ñ@Ž8±ˆ¦«#8òZŒo¬l”7® Ò* ñJä«‹¡Òã‹Ÿª­XdT©áA㸊šàæ€\PƒX༮îѹ<=|}<O鬼ëx]ÀÕ‡3hÿb~-Tâgž!/¯ógi»|ß}þE'|Ó®…àHb4PˆMˆ@öè¬!äàtíE†Ä’øA2º?éÈš\-ˆÀx²„Ç.â ?:t.:ècU ,@Q!¡Y™XüÏ–P
@@ -1001,8 +975,8 @@ x…W]oÛ8|ϯطK€Duçë^Š¶¸yhÑC|ÈK€‚–(‹‰TIʪï×ß %ÙŽÓáHaÅ"wwfvvóãäRføw)·s¹º‘¼9™e
cË[vÿ8ûŽJê 죓àÁš„µl (2°¾ bÖu^º& «Úåì•L¾:{1= æ¼Ù¨ s“W ‡yh0›£ÄÈ®Ú(“Z‚¦øê_zå C+a÷'P;v?7ÚJ‘9b0%j9,ƒIಣx½JÞŠ•°Qk&FBBÅÀôïO¾bé)ar#̃ˆ¤”îU!ž•Þ "ìY°Ë1Wà “í0§ddÀ¶Õ0`
—ºòˆïQ o»~›Ø‚ÓW:`”û$fzGMêzlÔ?aR¥”9ÖÜçS¨5)i,ñ<yØdx»TÒþy3­owã$i}»áŸS ýÿäYÜͲ»»Å°ËÞ²ö?–'žü )l(endstream
endobj
-547 0 obj<</Type/Page/Parent 522 0 R/Contents 548 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-548 0 obj<</Filter/FlateDecode/Length 1662 >>stream
+538 0 obj<</Type/Page/Parent 513 0 R/Contents 539 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+539 0 obj<</Filter/FlateDecode/Length 1662 >>stream
xuWÛnÛF}÷W ú°XÉql¹/…’ôâ"MRXAú` X’#i#r—Ù]ZÑß÷Ì,©D‹ ²MîÎåÌ™3£¯g šãß‚n¯èå UíÙ¼˜Óõü•|.oñy…ÿi£/ËëâfúâõúìÇ_ïhqKë lÝ,´® væsZWçWÅuAë]`S[·%×–õÅú ®\Ó'åÊìêf×õùzg#|ßÔT2ÙšMsIeŸhË)RìÝžÊ#u>$SÚƦ#BûÚÛÀ-» ±+ÖnŠk±¶ruà¥`¹¦äélb2”8&JQ¤Æ–Á„#m|ÐØðÂ$ê#®x×ɸhgo¨ò.¦ÐWãñ¼’Iäô¥íp@óßÅËâJü6Þmñæñ¢ OvSïLbØŠ¾eúðÀ‘jÞ0Ü$ÉDl•Äìp[®LÓÈ#S#‘qOƒ3¨GÜá?pr}ã€Ã)¦ª Œw‘Œ>ŽÉT{¤`ºf\BT«û¿©öjÜF Z«Ðš=¬ÐãL†¼aØBž`›x·mçc´eÃ=xI!öÜ%DK¾§°ºÆ$@Ó¢Ü<T|gž`Yûšs)JŸvt°ø
íæ8
q_nKS‚©¦ûGRzBg2ØŽS|•™úxŽçê~t&þüx¡%+Ò’©äªGðòýv—sƒY}¼¸)lu/$¤
@@ -1011,21 +985,21 @@ q_nKS‚©¦ûGRzBg2ØŽS|•™úxŽçê~t&þüx¡%+Ò’©äªGðòýv—sƒY}¼¸)lu/$¤
ôü­G<âk6žÝÎïdiÿŸ¯)×Ëy±\^ãK
Î,åæ/볿Îþ­lQendstream
endobj
-549 0 obj<</Type/Page/Parent 522 0 R/Contents 550 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-550 0 obj<</Filter/FlateDecode/Length 1191 >>stream
-xVmoã6 þž_ÁoNÄ÷ 7àÚKoz9 ç4E!ÛJ¢Í–<KišößGJvÞÚ Ãú†F¦’’þ³@¿†Ð@’7:~º?‚Þhˆÿ†ø[rX6n£ÆõýÂDK¼1Ž J­;x’4ïÖ¬0¼„®ÑšƒfyÌàÓôöûgÐ;mx~ýn‚¡hw{~ˆÍ®ø0ç[øº1ÅÆÀ·4ìÕ™÷ *ópèÈÜ¢[PK`òx³Z ¹‚L­`)2BcÈEÉ5—†§ÀôÄ¡u`\ƒõüüdïÓµ˜|ø
-•%¤}V2‰O:¾tWçÀ–M¦bX^œ›Xv+×’å¼öi•³,UÛµHÖÖ—ÕÆ>š-Ó°â’— Uõ¶*‘D),721BIøÿ¶ÜœåSnò‰¨HrÁaŽØ\(tôÊÌ!>DÅãy¬·L‹„eÙ®…¹â%{?c¦LjÌÀö ŽƒvXìã…6ËYÊaSPH'\ië²Í‹Ã!mbƒ“ðc;躮Ÿ2äøä1w„Ç`ͽ&S e»ÁR¢­æêÜRL¤“Ä;`ä­[{«¹ª>Õ©FˆS9‰9Î [aœöš²1¹àßÕ-—I¦4F†š±GþàFÛð«>¨Ý“æHƒ­½\Zú¸ÚXŸƒ ëÆ8‘",U–©­ã§†D6Ïœa£æBZˆ"HT¦¤ów"XÛ$»{2A¾Qhk®ñ©‹)Q8««Æ¤ ßðnëÃ'^piçæÀž °Då¦_¶ì§}»Xï9ÛAŒc@hM3eцԱo>ª1bœ%øü\ÏËçgTRR*Ò7õ2Þ•ÊÀFŠœV¤|y‘Ù¾ái Rœ)ÂTã„TÛqÚÝ´î`¿}ê"Xµ!ô‘hðR*!W¸3‰ÝNJ?%“Õ#r/HÛ&=§ÆvØ?tÞϼäŠ]á¤â¯8Ïp¿)»(ÿe©<ãñ躃?]ÂI¿? û-ž@æqê'“EsÐ/®j;.]°_snb¡2T¦æ%RD ³ÀûÁ¸»•eÅš–+†ap‚s§Š])VkeZâ‚J‘®8Î ®×Æ?Ãwü¿y÷ ×;KQ¹~8è^ˆ~&…,?H9«LÅ,#áb.´©Èáõý›õ6W§ÍÂJÌ,V/ÂI¯'
-ÅEˆ&Me_nR¨D] ª<µ#3Xº˜'l£ þ\°u=³ÓžF@Ü}ß>Ï`&SÔv
-btR·¤ŠkéЛ¢P% rÇ]PÓ[Í\ÛVr×÷£Ã›U/to7ÿé®7Âzn®ÉÁ4jüÒøgæ"Òendstream
+540 0 obj<</Type/Page/Parent 513 0 R/Contents 541 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+541 0 obj<</Filter/FlateDecode/Length 1191 >>stream
+xVmoÛ6þî_qßä
+ÀÝ ïº~Îã³;ÄÜ ƒ-Gô˜L”íK}ˆ¶š¨?jpK1‘Nfï‘·.6nã­Vä!ªæ<<Ö¤!Ní$æ8W4ì„qr8hÊÆä‚U·\&™Òj6Æùƒmïû qOš# vréXèÓjc}Ž‚lãLŠ°VY¦vŽŸÙ¼p†š i #Š Q™’Îß™`mSìÎìÉùF¡m¹Æ§.¦Dᬮ“‚¾péëÃG^piÇCU`KV¢ò³/;öÓ¡[¬óœí!Æ) ´¦‘²j Câ8ô•1.œ==5ãòé …””ŠäM­Œw¥2PIñŒÃŠ„"/2Û6<í@Š#E˜zšh‡!î?»šº–OS+6„>Ñìw^*P%ä
+W&ñ¡;ÀIèç\²fBôh»dàÄØ ‡ÇÆû™—ÜC­+TüÇ®7e÷ä¿ì4€‡`:\÷ð§A8gá°Á#È<Nýd¶j†ÓÕUÃ`Ï¥ ökÉM,R†ÂÔ¼DÊ€h£YøS?˜vqµ²¬ØÒ.`åÉ, Îp>¨b_ŠÍÖÀ{™–¸ß£R¤ŽcƒtñÏøÿ¯GÞÄíÎR`n£úoD¿Â–‰ï¤œM¦b–‘n1ZTäðúî‡í¶T‡ÂZË,VÏGÂI¯g
+Å=ˆ&MeßmR¨E]Ï ª<u#3Xº˜'¬Ò)ئžÎÙyK# ®¾¯Ÿ°)Îi;1 :iZRŵô èª(TIsœÃi4ôÖ#×ö„•ÜõÝäøb5ÝËÍzƒL°Æ“ëSr0Z¿´þÄÍ"¥endstream
endobj
-551 0 obj<</Type/Page/Parent 522 0 R/Contents 552 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-552 0 obj<</Filter/FlateDecode/Length 1137 >>stream
+542 0 obj<</Type/Page/Parent 513 0 R/Contents 543 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+543 0 obj<</Filter/FlateDecode/Length 1137 >>stream
x¥V]oã6|÷¯X(âEr¤O .¹½´(êë=Ô} $ÊæYu"Ÿÿ}g)Ég'uCóØ"¹;;;;â×^D!~#š érLIÑ ƒF“`D£é‡ø¯%e½Ûyïâ~FÑ„æNŒ§ÍSÂî0¤y2¸ †ÍW’ÞßÝ~ú°,NéQ$µ>Á¹EØÎç·“`Œ“ƒOF’ÎÈ)ø)C®LV¢\Ê4Ø hÅZ²M•¨E!­¬M“4Sµ±|ŽÃÒ±””Ë'™Ÿñ#Ô@rj#]¦ÝöX§[F"(CV«tI‰Ès²º'c·Œ|AÝzÐÆŽAâÍWžBÐÌU.Ÿ¯ÿ"k‰uQ’ü&Š*—´Y©dE…ØÒJæRÇÊôÑV;Úh—§´©•õÀ/îCšu䚌U­J›-ÔŸ¯P5þýdºÊƒÅ¢ìŸQ?eè}Zœþü² ¾(ÑH0Á¬ig+g¹jcS|ñÄ•oÔvÂ3z3ªÆ0}M”©\tƒ.µ*u]ˆœ:^ ¾ŒŸX‹v4‰¨ œ®×Ï{ó›¶õ ¨§ô<ˆX?É]£8¥¯­ã¶Q3n¤g+ 豚`ÛåD¾[Ó
©N0‹'ý¾›®Cs¯+Á½@¦Z»%ŸÙ“nì² (¿ÀÞ,wf…Í°¶zû,»U…lŠËU)9²,íJØ$û(Ü…s·±ê‘•Ý"¼,÷|k\©L½¨<[ªdsÀ‚Q0°ç™EU¡ä—z
‚ fOiüôCóôÅÁªýš»t‰!~°´ ×Tå"F™‡÷ÃŽgZaK,A•nì‘ßVa¸`Ó©¹³ÎvÌÆ”º"†5t.Üj|­Ð.ÿ™ýpR9. êwöUu·߃ÃK$Ê«¥uu ¤ì¾ÏñhOÖŠý›wûwËå·ñ½­ö絓ý£ñdnv/º½4Ô±ØĸØv<ÈA>ÿùžï?&í3DŠ¼°Õ¶új”ƒ%îëb
endobj
-553 0 obj<</Type/Page/Parent 522 0 R/Contents 554 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-554 0 obj<</Filter/FlateDecode/Length 1174 >>stream
+544 0 obj<</Type/Page/Parent 513 0 R/Contents 545 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+545 0 obj<</Filter/FlateDecode/Length 1174 >>stream
x•VkãFý?Ÿb8`+’åøG
I“9ÚR÷ ÔŬ¤•¬FÚõ­¤8¦ô»÷Íʲåœîì&ØزôföÍ{3óåÂ#ÿM†ä)Ì/\Ç¥ÑôÆá}‚ÏC¼Œ¤Øþp3uÆo¯ßÏ/®š‘7¡y ¨ñÔ£yD€q]š‡=ßñš¯$=<ÞÿþáîáaÑ[\Ñ'}5ÿŽÈÃüè`8ü<ê}T$¢(-S­¨ÔTâé笊¹¥BgUûz`ô³T”¥JÒÚè “9E²MȈD _dŸp„´ Aa&…Ú£ØÌ8 ÷|gÈÁòÌ9ORòEJ¤’F”’aVRDÒ8ô±¤Mše$Ök©"ܸ¡R¾–MÖaeŒT%2
ª„rY"‘4Eiü&.Ÿ2Ö&%U# –ùºÜÖü[UŠWÒ±å£#KÜÎ…È% þ ¤öÝLü›˜öxN]—fMF¨>˜ üÙ8‹¹}Zô.ç+ÙʼnSS”–xg±P—„ª.®~h¸Îô¾¥¡q\?†i(W©9üÒp,+™_ŒŽªPß;ËŸÞl6½v'×>?¾uÝÛ¯Oî_§™tÂÛ¸R!kkÑ»ñ†®ZG!(¹“ŽcßÛ>çÉ›['¯Ïs°×À·¥ñQËUOŸŸÎpÕÏ°ÈN;§o¹:èÉ‚Ô’ß4
@@ -1033,108 +1007,96 @@ x•VkãFý?Ÿb8`+’åøG
B)ª@!Y|á6Ú<'FWk\`åö;ëÁâ' ا$Ó‡Ü2fŸáŒ ïkØe}‘Qïù}iÁW;7tˆ•+qÜÈv¢ÒdñLà4ÒEU‘ª¤ñ J `•¶óûlôXg™Þ§)$ŸML'Yl[k¸7À!tÕEø%.êð†¶oõ‡¯1
°ºÏë,¸•@»X-¼ŽrÝQ‘æi&Lš7I%‚lK* ¡v´~£E¸²}Q£dò`¨Æ˜uŸ­›Gí/#Ëʨ‚æ¦Âd²=½‘án5Ó"øÈ<Ãøà®®"–_*‘5c¦Ög­Œ§ÇÏOô"²Š•ª¿£Š4†,ý6Mòkš4öU'ú§ãZ$<éÎÕS×`hAü/À:O?'@ÎÖMοÌW‡½9ôþØ0t3rì¬]g=6¢@ÂÐÎ~ Çõ<ÆÃXc¿(Ʀ!¢ á®Ì[4R„+™K[t¬sƒÖ“hÜ׸e- —#ŒV±æþËù°†ac‹zžCü_÷;Ѻ¢Âè4!V èˤð
endobj
-555 0 obj<</Type/Page/Parent 522 0 R/Contents 556 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-556 0 obj<</Filter/FlateDecode/Length 836 >>stream
+546 0 obj<</Type/Page/Parent 513 0 R/Contents 547 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+547 0 obj<</Filter/FlateDecode/Length 836 >>stream
x…UËnÛ0¼û+ö˜
Šuh…HKö Pç]rbƒ,}¤¸ûœŽˆëÃnKé=¢!Vªè>t¿§VÐMM;×@ÓÅåù·ëÛï·1G~¸5Mƒ„\‰Âvä©*Ú‘«ãýžø”ï EyÒ;¸MzO¢Þ+ÕþOnÄZî ň´mMˆ¼¥¥bí>Æ_hk[¸ 
þ
Í^ˆ‡aEå.Ù!zÝÍqvq-ûO1§â}¯¥Cï·1”äƒ ¦z×ØÔ´¢Š©ù€¢“þ‰·ÔÞLs÷ž á¹…l0 ™0 VÛÊu6è–3°zÛ«ýàÞá¨ýªV²•¶±Ö5N¨£„?d>õfÜô6
–sŲԠB/µ<1ЖZV+˜ÁGÇ c™¾„/aÒÖw‰í>fOù‹BeŒÊ˜™fÍcu»2
endobj
-557 0 obj<</Type/Page/Parent 522 0 R/Contents 558 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 294 0 R>>endobj
-558 0 obj<</Filter/FlateDecode/Length 1887 >>stream
-x…W]oã6|ϯX´õ‰'i>îí.MÚ<´¹ÆnÑZ¢,6©#)ûÜ_ßYR’m¥hq¸Àú wwvf–ú|4£Sü›ÑÕ_R^f§¸3üyúïÐÅåþÖtv~wWšæéÙùUv‰g³›¿¯øÙÇÅÑôþ†ÎNiQ"ÆåÕ5-Š¸5îä“ÛJ4A:ºÈèÖʬhÞ®VÒe·ø ‹/h6K‹Oή³3,ŸÌ-mmKaK¢((·…äßsQ/eYÆ‹Oéäì2»à%F’-)T’
-ÑšÀ¡‚ð¯žJ‘ó… ÆÙ•utD²nÒK–6N™"”Öu!”§ÖÒù LL[w1gç)͵pʶžWr„ÜšµDdTF­—-·ÈÇzIµõDÔZ’21I$ó—ÌCF‹JâýµéÒ½l §¤!äD•Ô ¢¨{ac©¡K›[ÄRi¶Ç„ÒOBmˆã•Çù¶‡‹‘å4Ppaó¶F ´QZbwq†×•rÓïS[¤d86¶è@i׈r¤ jô+A‘ZºÈ(ô›­"É/ ðCýH(¯„YIòZ­ª QÙš@ˆã”D[øµ•³íàL=i)œÁbiÛ@véóÖ{Ëéð‹à"ö˜m,Ò
-¡y?ê/.ÓÊ´_2c{|ß)-6dz dÎ
-¥Ò‹sMÒóƒŽÁÞ×ÑO*wÖCµ°·þ¥p»—Ÿ>6 ãÒÚ×a0¡esÿÚó»Qd` ÛÒÛ±~ìŠü· j=‘¥8… 'ÖAñnšP¢ð QD&¤;|")”/à‰ò × à¼ïI±„!ƒ öŠ))øä„ñÉÉ5Fc+V½±ôÊá­¸¢L©þÞ,‹³ w’›¸¿{¹º»ÛÏ®tR©Àk[
-¶}¦s|ÃP¦á“’ÁVÏæ÷&Åñ÷†zœ|ó
-²Äœè"æê’ôu!KO]±MªÚçàå.ÿ~ªÄ!Ñ''h-^4,—=;
-¼@Î}e8}‹/nˆÀÒƒã
-ô’ûÉžðÛ‡—ÛÇO<OÐÊÈœQö=¾Ñk1¿?>ÇY¢´9faÒu‹tPš28mÖ¿;;ìaÝLÁ 0¿ûá7Rå((ìD D/a8úÚ¯vpœßà òä8LBÒ±(V{…¬1úÜ÷¸6á° “…ZǧÆøQ"×»P‡ôÜã2¹n1ûxVWˆ |K¥áãàÌm÷ó$=í®ºaщkãgQ7¤Ðz…eGûºH>«†²âØNß.¼hŸ57»Ü{ä’¥ìåÃÃÑ{hˆ4ˆMð<ƒ‰®¤á£=z‡ï¶¯jñÊ'IìWÈ ÅßYµs€Qâo²»Ì¾Û9ëiJpzÝ}œÌnðüäâ,5õ¿“/®.²«Ëëä ³s~·8úåèñ4ëendstream
-endobj
-559 0 obj<</Type/Page/Parent 522 0 R/Contents 560 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-560 0 obj<</Filter/FlateDecode/Length 1703 >>stream
-xmWasÚ8ýž_±ß.MÁJ ¹o„¤Î5moBç¾d&#luÈ’O’!¾_oelÇt2MŒ¬Ý}ûÞÛ埋! ðoHÓ}šPZ\ ’ƃdBãÛ)ÿŽ'iuq¿¸¸þ<¦á+>;¹Ò"#œ h‘^V^’4™†¼XI*D꬧]. U¦éF™5=?Ý{z¹ôRÒ²ÒºLº$'a2R&Hg„öIfÓ—ˆ*¼5¿“±áÃâï‹õ‡Ÿ’b^Ê­tµ5’ÓÓW¼§ùD8In¨=4&ÄOãÃþh’ŒùÕï6HúeTj3Iª(µJEPÖx²+Jsá¼ ”#ÍÙ6‰ž$–Ð3²/+­_¯bâeåóæד<SkixõÁñm«Ê¤1VÒÕƹ£f~*´ú7þr¦”ѹR¬ù-ð¾*$=šµV>'ktÝÝÎyŠ¥ÝÊÕhUv ˆŽ i[¸š‚%±µ*²œ±2׶
-T
-'
-‰L¹u]r+TÎP&‚@¯UŠPóΩ€Ö(S¾{ýåà Bmç`M*˜B>ˆ¥Ò*ÔT:»Ô²ð‡äÛL‡ããüÛÖ>_©©-k§Öy`â¨YˆøÔ9™†e je ®Ò©l-ódPiëÊ%e*c„c- }]Qm«“üq„Ã4g
-׳òúܱ;ØQªLŽC¶ Xpy"Û
-ö!C¶l‚ñµKFj…3-Y:JBH“Ö§‘¦ç"íIž¢¾iöô:›Ïüú¾
-¨(fT*Í.˜Ù¨z&WH…3Z?{(£¥à–Ö ±ýG¥Î~~í$ÓÀÙQÜ“|+5èÁ¾ùaшÖ<×áÇ Ë ©a>= ‰¨Ž% t–
-&ÙR– Ûy„sv—Ђ/*¤ÀX‡¿›½×[á”@žÇ€ˆ
-oWú ŽÂsâÉüŽlåâ¸ðXi˜ßZWAf =
-̾Âf•†ó7þ“‹-$CšÆœ6U±DpX¾5«fõVuú8¯sóºŒÏÁòn”·°°Ú+b4ا¥ ãµ1v§%/Í|•FOK%yb"ÅfAòV TÇÍá} „Ë
-ËQÜÌã
-·8Ïȃ?¨}8Ò£%X„H@³ñzvÔBÔ”K]2{̪´µNÖ+sJb'1Œ7,|8¿!#w{884(•2ã°gåèÇØ9 
-endobj
-561 0 obj<</Type/Page/Parent 522 0 R/Contents 562 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-562 0 obj<</Filter/FlateDecode/Length 1908 >>stream
-x}X]OÜ8}çW\ñD+&00t߶´h‘º­vVBBNâL¼$v; óï÷Üë$3 lUª’Äö½÷œs?ÜŸGS:ÇŸ)-g4¿¤¬>:OÎébþ)YÐâj‰ßgøÛj*Ž>¯ŽÎn>ÑìœV¶\.¯h•–ŸãMvr]ª&è–.ºSuªèÖâѪÊXý+;§Ë¸s2_$3ì=¹H¦ a_«2Þù‡²yeì:®_ÐtÚ¯Ÿ-“K^¿*'¯³`œ¥\û¬5©ö”'x¨ìO!c£#§¤<™º©t­áR>~ 9BÃjR©{Ölõœ&³KD[·–B©©Q>ôñ”*§gÝnIå“ÒeÿcÑg* 
-eëºuéº ge.×´Á²]­ñ ®«*âËÓyDeSš¬¤ÌYcwÕ“u•jɇøx
-î¬h]M_~Üaa®µÖ>¡;ܺ‘
-¥Ã0¸ÖáŸ-¹‚‚®g2Eô`ZícX?ò9
-WUnÃ*„b(Ýè·0ײϺ
-Bóhr2»ØU˨_—÷Sº_ÝL®XÌœ'¨û¨íµƒ„ö2Nyƒ
-†œ ýë”àó#=øöª×âKÔÛà: ë B„3‡V›Î—c1îû•¬ ´ìÝE/]NIt(8‰€<œìH}øR¬M‚ù^¬+¸ÿÚ²—çiÐܹÅÞÎÈF!>æ;â.f‘K&lÕ\šbÐ,¹Cc#%`²³¹n¹– `K6E·E­²µƒÛ¹—Š2Ù‹f‡TPèNŠRÎòÆ–AMÚ•wœEì&L¶ z?îþüŒFŸ=aZf„QnÜî…&ï]»’¢Y©³'9¬¨&’Âh˜”ò ‡Ó.8h‹«J@®c½FÉžô ±óÂ…’½gW1µ2Dĵ1«Å6ÖŠ¬t¨•„$Â;”/@ŒÇag)7ð!<+9`Øõ„þqÝA¬5Æ$Ì­Ž#‹
-HÇc{8yøÀÞÈh¶À¤Êa±«/Ó‹«x Y!YS³ÆpÏ™*ºs¸ŒÕZ"<¤¤>wꇞ9Q £™Üã@Ê,2ðCsÚÕÎwP‰½™‘æ¼ÔÊza.S–Û¡òjéAºAl¡ªÂÃã2)³- ý(z„ä u`O`]HU)Õs?4ÈågŒƒ³šUÆe3Eá"µæ’‹×¢žrÖçóüz8ñZc$\W[Bî}‡6•ŠÙÙžÅS².åœX0ô¾zä&
-endobj
-563 0 obj<</Type/Page/Parent 522 0 R/Contents 564 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-564 0 obj<</Filter/FlateDecode/Length 662 >>stream
+548 0 obj<</Type/Page/Parent 513 0 R/Contents 549 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 288 0 R>>endobj
+549 0 obj<</Filter/FlateDecode/Length 1893 >>stream
+x…WÛnä6}÷W²ë lµÛv|™·¯õCâYwo, l‰j1¦H IuOçësŠÕ Æh]È:uêÔ)êëÑ”ÎðoJ×çtqEe{tVœáÎøçùG¾C—W—øÛÒùÅMq1\iš¥g×ÅžMo§üf¼âgŸçG“‡[:?£yW×74¯âÖ¸Sß5¢ ÒÑeAw¶RfI³~¹”>(kü‡ùïX|IÓiZ|z~SœcùñÌÒÆö´&P°$ªŠJ[Iþ=íBPQ¼øŒNϯŠK^òd$ÙšB#©½ *ÿæ©%_êœ]:Ѷ€#Bm—^²´v*È¡¶n¡<õ¦’Îa"pl=Äœ^$˜+á”í=¯ä¥5+‰ÈÈŒz/+Zl€ÇzI­õDÔJ’2$Àü.ËPм‘xcwíZº´Doö†¡i˜¨‘ºCÕb/l,º´¹uA,”VasBH ý$ä†8^yìPn2]Ì,Ã@•-û)ÐZi}{ Œk0¾&¨–ë¼Ok`86¶Héç]Ê‚r¤ ZÔ+Q‘JºKÈAèw[ D’ß:ð‡ü¨l„YJòZ-› ‘ÙŠ‰@ˆ“H”DYøµ¥³kå`¤ž´Î`±°} »ðeïkÓø‹äA"Öœ­-`€N®~&Å£Ÿ< ß¢¬=+vâmïJ9QÝ`„öÞO/fý3ÖýµÐwÖÚÞ.• $[àý«X
+ý‚ÆQŒUhÈÒn#òÃÖI[èÌ9©“úµO=ÊÅè÷a£#m wC:#nÌJŒ%Í€ TÛX(>uS$NúØñ;I…zðý‚;áT–²‹ ïwž=R# m”FºךoJ®2ל¥Å… O^Ê–-$ú\ÖÒ9¼Ž^KâJìçÄ3§u´VS¬ RN‹ÐHØ«Såaú'Ps[‡Ó¯½å—sÒž°ËÇA·Ù“šº“‰þæ
+­Lÿ­06ëà_C§Å‚Lî¢Ì˜à¿Þb½^µ¯ ë–¤×M¢+ Wù×`Ë¢ mn×û3 ¦l¿„™ö/”ªê£³rÒ­0ªT þØ £Á1=­›Š.N-z¤Ÿ ÍA¬ÖvÝœz‹ßï™È·ol¯+¶HlÊ^•¢ ¬8·._Ѓ‚ýƆx%»è@O® nÊv]O„Cú¿l]»€j´»‡‰E2 ¨{¯²®áy…‘¨¶{Ãûm'F]Ãg 01W‚eÕ&8y ]‡åÈôîña6™ýô™ÝQ± £ƒÀ±Ñ¦ø¯mð¬¶ýÇ
+‹äÂ%ù.z¥+<6à4òVŠžFþâ¹*…Ö±õH«…ã¼s~ikNMªÌʾ%ÙçT†¨\Œ‚>iÄÜ*‰gLBÌZ9ˆýµçAºÕržpòTj…¬÷r‚† =t¬ï;6Ù“dÀ Ö*ª£œ€VÒìçÇO‘ǃˆsY6F!Uzæ¦Ç\“ôrŒAÇ‹`ïˆëè'U:ëѵ°·üÒ¶q‡—<uãÂÚ·q0¡d3ÿh´—‘a€5lKo›àß™ ¨Ë„!ÇñÐUŠSØxrá>¨^¡MjT$ª¨„t‡O$•òÐ<Q~ãœ÷#I#0d(ÁžÂC1…Bƒœ0>9¹ÆhìÅ2KîÞŠ3:Å”Ê÷¦Eœ]¸³nöéáþõáùþ~]í¤¡Àk{¨Ýh'¦G);5ú>G™°:>߆ɑ+kþ¢²H—4ŽÎö²@þÿ»~zÍŸÿ{7n°sýžÅÕ±°¦¿<ÍÍÙŘÿ/¦®ì6qgüÔPÁË1WÅ‹Z¾~O²^ ÜþåLJÚÊ*̤ݬ={g<€¸>pǼqfLLïû¼—'¼jk–'‘ˆ—cÇÂŽaäêïœKöýá}œ”´*Œ`Ñý¼ÐªFwD[é„k©Þ³Ã³S°í³œãs†2Ÿ” ¶z9f}¯aR1þÎT‚`^¡/1(†¥@{IúG%k]k±Imµ+«my¬Ä)‘Ñ Z‰W Ïe“ÆŽÂ0h„Á/ ã·øàê@ Ü{°\brAÙ~ùôz÷ôå·—cÔ2J‡áï ÏG³Å
+ÒPaÙÂQ¾!’/š1­8·ÓÇKÔhÊ@o·Ø3sÉSv°Ãñpö âA â£)x ÁE—ÒðٵÇÛw­x㣤 ö;` ø»h¶p
+endobj
+550 0 obj<</Type/Page/Parent 513 0 R/Contents 551 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+551 0 obj<</Filter/FlateDecode/Length 1709 >>stream
+xmWasÚ8ýž_±ßš¦à
+y<ì$þóøÅgQ,}ýõ]fñ’äLÝ7çꞃ¾
+:BÓÄZòu³ÅìõþûOhmeiiÖèK™ª•Âõ,½>·ìÈÄöcÔš+“nȦ .Od[aÂ!dÈ–u0¾v)ÐH­p¦aKËIhÂiÒýi¤é¹H–§è£¯aš=½ÎæóŸ¿,ÀW¥à·Š»«÷=>³'ŸÛJ£N$ßDÍ[%¨Ì–¯k’$y¹„Ã@æ'íäp€æ@“½?ƒSM:SJƒÐð¶[MCѺš4—é†Ä»ƒ¶Ù“X e@ æš-{$ôNì={]|_~m^uDƒZ‰TFÊtØÙ¨K[ˆú-¨ÔÕz}Øÿ6é»sIŒ¾„•…9«ËÚß 3(jÕüãG_J뽂Š±"«Fƒn &üoD0ÖBÓè…4ÁÓ5]ÁH@‘1·çŸ>u>»®ir…Ít@ß×µ´:çX…8"ʳ±µò›ßݱ÷˜L¸¬GÞ¬fUmaQ̨Tš]0³QôÌ­2
+g¤::;~PFGÁ-)¬
+bûBýúÖ*¦†³e¸'ùVj°ƒ}9ÒâwÔ¦ÃÁ•NÃ{Žr@Q7JÈ„hƒÉ™:ŒA©úJàù$܆c¡-ѱR®ÐÌ>prM4 x;ÜáÞÕ@d‚D6ï£ÿA¥J7PcU„èÁ¾í×Ò !ž8Œž¬
+49mªb‰0à°|«WÌê­:ꣃ^ë<êµ)ŸÃåÝ,opa%5W Çh°OKlcìNK >Þê *¦–JòÄDŽõ†ä­(»Ã —>'ÈÔC5âöæÞ]Ç·5É`ËÁdG" ¼$jÄ]Ñ“¶Ð;NÇ0žú5}x–ÆÙrtåÄdéÅ}ï, €Ÿ˜;vmùÒ«µãQ€g§Œ`Gðb.@üf—*-n'aˆGÉÒmfjú¾ÀSC‹^ã5ë`1!Š Ž…s¼_uÜ´rôn×¹%·L|0Ül )'WXD÷‡FîXmÐûNiÍ×# b;ãþIÍ%cÉ˲ø· a¹aQgè/VÉßïPr׌TlÉðù3·¶WÁ3°'tÛO
+øR§¸ÆñG‡…¦?¼ÃêÞoj^ÀÈ<¶£¸›Ç%6®qž¡P(Lúx¤GKБ
+endobj
+552 0 obj<</Type/Page/Parent 513 0 R/Contents 553 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+553 0 obj<</Filter/FlateDecode/Length 1910 >>stream
+x}XÛNÜH}ç+J<‘ˆ1Ì™ìÛ†-R6h—áa%$Ô¶Ûã^ìnÇm3Ìßï©jÛc†l¢`»»«êœS—Γ)]âÏ”V3š_QRž\F—´œŠ´X¯ðû kMÙÉçÍÉÅÍ'š]Ò&Ö«Õš6)aù%Þ$g×¹ª]Ó2¢{UÆŠn-­*ü‡Í¿²sº
+;'óE4ÃÞ³e4ûj•ðÎ?”M c·aý‚¦Ónýl]ñúMn<y4ÆYJµOjkOÉp‚× åÝ)dlp䜔'SV….5\J‡4GhXM*v/š­^Òdv…ÈaëÖR“kª”oºxr•Ò‹®÷¤ÒIî’ÿ1‹èÕ jòÚµÛܵœ•¸TÓ_ȶ¥Æ'¸®Š€,Oç•]n’œgaŒÝ­Tݘ¤-TM¾©§Æ]dµ+éËÝ=¦ºR[í#ڰõ‹)©&Wbw€À:ü³'—Q£ Æ™LÖÝ›Vcc ëG>@¦¾v†ÈÕÔZó:¼`ÃXVpÄŽY³Í›RÁ,lIÐÁ“Ú„‰«à‘iò#ë£@åA,¯aðzJŒ[mu­
+`çu´ò‰ÆÚþ–Ñ,
+«.ÚðjÈ/94Ö´šÄ†O.+lGΈÜèºç䜼ëxaó¾Q¶é¾qà[×Ø EÄÇA2ǸȆ>,2ÒEš0ËúGk^T·ýÁýÎk;²-¼#3~Oæ.Ç®½k©­
+œ»5Øi:r€m¬Æ*»EA‚®6[ [t[Þ¡›ü]ň"ÎÄÕ5*v±§Ü(µ]âHÅïJž…aG®›;Bñ2’¬`!4 &'³å¡ZÞ @ýª¸¼ŸÓÃæf²f1sž î£¶—eœòز^²2laU?\ßÏàw wY{ÕɨB‹¸3‚» HEBtZµ-jûµé:â†y†²Ôçàt.mp`-¤Š£ŠSk ÊJQÛ, ôt AÁÐHCh…¬¥©1À`úå Ñ ¤„¾Qo
+%-zÄžbjeˆkCV#Š}¨IîP+ 9„w(_€ýNRnà}x VRÀ°ëýãÚ£XKŒI˜[çE&
+©-—\ü¸õ”³>u˜×à×ã™×#á¶Ø3rï;¶©üsÈÎnpð,žœ…)ç„‚¡Çê‘›
+6/nÖÝM]æ2Ñóõ/ÿ;`±ZD««uë¦Köýëæ䯓ÿ
+endobj
+554 0 obj<</Type/Page/Parent 513 0 R/Contents 555 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+555 0 obj<</Filter/FlateDecode/Length 662 >>stream
xµUMsÚ0½ó+vr)™‰Ë6þ8’¦i;ÓL?p{â"ì5V 2•dþ}WÐ qHHé0ÆöH»ûÞÛ'ïïŸ~’
­¡]xkQ¹ÄÙÊE¸<#1Ÿ€Êòt¤²ES"Û2!ðñóBþ—gðöÇðÓ¸?i«³EcƧ\*¶ÕN\*僰ÐT•A 7ÒÖN‹¶ªP»BQŒœ:^E-´(,©´OÀàËÁx–bÖ"¡Ù¥…0ö®Á«…sÄŠT§Ï¡(sFUžT‡d8@²Ü2ýï—#"¯—ÃõjËÚÔ YÜç1L¤ŸÂLZ;CU)©QQžk+ƒávïŽÙHò
endobj
-565 0 obj<</Type/Page/Parent 522 0 R/Contents 566 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-566 0 obj<</Filter/FlateDecode/Length 968 >>stream
-xµVÛr›H}×WtåIvƒä}’“Í®«âÄkió¤ªÔ
-¡uÁ.3Á$ ©ù’+bšª<Çf‚zz%$Á_Ž5ü#]Y£ðÜp¯ۺß`w
-³ÐfÚŽæ_Ž14ŒîPúm%û¿qjÊw·t=rü
-)äÒ¶W‹6­28‘H:n;#ò…²*mJ.µõâÒ6ØÉJÃáž»´BÓf6óØ#/1*
-Á’‚wÉ÷hÒkkG¤‰è#[‹ÅÂIk•J}a4”²Íe¹õ¸ìž÷¾= KÝ']1Eçk¦XyAíMÆ4ë¯ÏÕÎÒ¹2‹‹³ß“¶IYŸBú2ž[B!åi!¥›ZZš™„øÏn¯I+&kÖ¦`D&/+ ¶×â¹>]èüAÏ5Wõ!,;‘æH—þD ó}–WEQ=ÔWff·3ŠÚRµä]Ù˦LP«ÐØäQ1.¶ì$|‰¸j•±á`bhfC@2÷¸}êp›„“6 ©(ãÖ0ö­µùmÍ•ì³(›’ž‡ú°éª/Æ„ƒ]3Gx¶ƒÂ~ài ø3žl
+556 0 obj<</Type/Page/Parent 513 0 R/Contents 557 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+557 0 obj<</Filter/FlateDecode/Length 968 >>stream
+xµVÛrÛ6}×WìäIöX )Ò¤ä>ÉmÓz&N]KÍ“f2 JhI@Á8þû€¤uµs­<’I‚Ø={v÷,þäã/ dLaLY5ð=Ÿâ(öÆM\ñÕœ
+·p‰G““ ã©Zˆ’
+§Ïì£gvÓàØÇõbðúÍ”‚ˆ‰'¸È Aø>-²á¥zïÑ|þ~öv¾¦Mq±QõÅGV.ÏÎcsDAÐnlÖÜÔdÖœêµÒ†–à ¦T˜åÕb%yN¥0¦ä#.sÁ$ iøŠkb†TQ`3Á=³’à¯Àþ‘QÎ(<7œðëµî·ØG¡
+·Œy„B¹ÊšŠKã¼xtc¬6eNR8<p—)4mî2=Bóò£¢,-y—|Ÿ¦½¶vDÚˆ>°X!œ´Ñ™4VC)ß^V;«îyïÛÇ
endobj
-567 0 obj<</Type/Page/Parent 522 0 R/Contents 568 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-568 0 obj<</Filter/FlateDecode/Length 1561 >>stream
+558 0 obj<</Type/Page/Parent 513 0 R/Contents 559 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+559 0 obj<</Filter/FlateDecode/Length 1562 >>stream
x•W]oÛF|÷¯Xø¥6`1’,KrÞ”¶) $AZ -Z0ŽäѺ„¼Sy¤Uå×wö>(ŠVŒJºÝÙ™Ùåßgãß„SºžSV“1Í&ÓdJ³åÏSüÕ’
÷ÃÍøå÷ïÖgoÞÏh2¡uÁgÌ— Zç„sÆcZgu.ñ–mÒ¬©1½»Ê6´SeI©$+þÙ­ä‡f#qyÓÖZæÄç$´ÆW™(Kd
÷ô(¶êáâáòrýålL£É5b\çUkÊ%–šL4g)K•¬L½Oxéǵ˄ÜWÓ]ß&sÞ‹¬$Ü9Š­¨E%¾%òÞ´dÚ§ ØJ_‘Òn©©sö©šÄv+±Yg2.è΢±}}ËW¸ÑtžÌø敦V[õÄIO攪;ù„SWŸïH·U*ë„þDvcÚ2÷¸q~Ï¢l%àl6tÿûêã’Ð冴iè«6»L»ô)"Y²uIçÒfµJeþ¬‰ ðõ#^Ýÿxw÷Ù¦Vú ¸»Ýü8@/T•)Z5Êh
-Åù ?¬>ÑG¡rÄ››¬­¤nïôt(TRw¨^…
-¾ÛÊúÈi”%²dªJ5H L§/žRaq»Ý=¸’Oyo€'F\ ÝŠòÊÁ̘­‡@DÖà×r(-®é0%Ÿ0ü ^ÅÔ]€ð[
-zVvŒ„˜¢pºË ÇüâúpSdÿJs\~{ÚÆìºR±ô®^/c5@ð¨hØ^8
-¦mQ€8;Öì©…@@ÞZfûx'9ê9Nú©Åž9®‘Mès-m[‰Lp~ô‹jñel«¼Îtê%Ý- ËŽ9» êŒ8Ü ù/ܲmÚ±*š]wûTtW€ët¼¤)÷W.µaœÞX}“µ¡Rê§fó¢síh`Å”™Ü•(+ÔŸd$ÊØ[×üÿ±x<›owpO CÍJØ0d"á7ˆ\zQøBù‚ß9ƒu½ ×òoÞßÒF] qŽ®'Þ³o’Yÿæš•·a¿6vF¬rcä¾Ò¡Øc4=\ø™3ËÒ=ÕN’—±¯ •t¥×SРþOñÌÏ TiOþ¾µý`ClïÓ Ä
-‘sr}î{ÆŽã~íõ×Ó-Cä_УÙ̃{5²,}L¢2-¾ >à0;ØèGÔ¼Â|D‘ü‘Ñ݇A¤ä ꉑÓ;a›œ£1˜C²'ØFÔM4ˆã N²'g#¼cô
-†!nAïAÝÑêÙ ašÂ&7ÄݦMF‚•Em*^‹né8Á‰öŒ™” ì\%kk˜G]°[`”81X·ëä¢×˜n¦ÉÒ'à'ؤø“,%³+Rgƒ=?‰˜a(qº¥åyÏZ•–l‚ó”ÔÄ~”5˜¿Tny¸ØÛvwô}¡åYÊŒ0×¹s ¿Ý^áù!l€uh”ýáC¹–j±“³Í—M2å2ÈY8ò[Ý€ÁñÀQ3)A‡#ñAXÏÂó|=÷Ã÷ˆ«ñÃ幫›L"Ùf¬„ÐóƒÉP…¶ÏAŸ9>eʧIJÄÁ3Æ«PéÚà¹ó…B“ÄÔ4Hl ™X–¾ÇÒ·;+‰ù9màÂ(Èàù‰Í…rh<h¿N!™ñlŽ0¸;•…Á0„ŧð8Ê‘v”=^z pBŸŒ{™
-Fg6TÍ“`ñ†×…6äÓë6A
-Róg/»üÚd‡—ân¦è7ï—áÝs²X&óÛ[šÏœMݯ>¾[ÑO<9š-¿·ýÒªÜÏlqåh1¾eGûNóž-fÉb¾D›ÇšÉ’ƒøy}öëÙ¿U^æjendstream
-endobj
-569 0 obj<</Type/Page/Parent 522 0 R/Contents 570 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-570 0 obj<</Filter/FlateDecode/Length 550 >>stream
+Åù ?¬>ÑG¡rv…éÕ57Y[IÝÞêùP¨µî`½
+%|¹•õ3 Ó¨jdÉT•j¨„O!`<¥Â"€v»5z€Ÿò2à€O ¹ºå•Ã™70]ˆ¬Á¯åQZ\Ók>=€ ¼
+ª»
+ó]EòGFsç0z1”äòâ‰Ó;a[œc1Ÿ—C±#ØFÔM´‡ãN’'èf#¼_ôêf!nAçAÙÑéÙášÂ&p7ÄݦM6‚•Em*^‹fé(1È™”ëëL%kkXG]°Y`’81W¯ëÔ¢×–n¦ÉÒM' ×&˜¤Ÿø“,%ײ«Qç‚=;‰˜a&q²¥åqÏZ•–ìã”›ÓÄ~”5¿Twfy¸Ø›vwô|¡á9ÊŒ0×¹3 ¿Ý^Ýùd€uh“ýÑC¹†þ€j±‘³Ë—MÐ2åþ1ÈY8ò[ÝxÁñÀP3)A‡#íAXϺó|=÷³·ˆ«ñÃ幫{L˜!Ùe¬„ÎóƒÇP…®ÏA›9>eʧIJĹ3Æ‹PéÚà¹ó…B‹ÄÌ4Hl ™X–¾ÅÒ·;'‰ù9màÂ$ÈàùyÍ…rè;h¾N!™ñl†0¸;•…Á(„ŧð8Ê‘v”=^z pBŸŒ{—
+>G6T̓`ñ~×….äÓë6A
+Ró
+endobj
+560 0 obj<</Type/Page/Parent 513 0 R/Contents 561 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+561 0 obj<</Filter/FlateDecode/Length 550 >>stream
x•TMoÛ0 ½ûWð˜¬ÚŽã]‚$]‡Y¡véE¶éXƒ#e’ܬýõ£œ ­klXaÄò½Gò1¿¼zBH#˜'Pí½€g1‹èÒ9¢Fh¼uá]ßæ¦P4”’d!5Px@QÍlÁ`£j„ªåšW5X^vxUü¤ÄBŠw‰~”²„RgÔ– 5·ŒÕ}e{8ÑÕh*-J¬¡|†=ri@5°zØÜݽ¸X!w*%
sC0êõ‡%ͧXkÂ*{œ…mA¬P’wgøû@S0T"7`5kðÐz¨ÅNXóx5’O)^FrUÓ´`}{ÿ}»òÆ^Hn‰ã4Ëùè}»¿àI%ýô† ç¬4ÂJ¦X%Ð_% î;wâ4¨7 ’h8(çÚEëCÆvž¸Ê¾iP/—Ë‘ÐlŠ±…åŽD;âæ5¬Àÿ`åS¬d¿/I¹ð‚%d£ôž»é¢A»u½KØâìêà„w}›—8\ä,ÌsˆÂa_V_×+¸Á'ìÔµ/½¨‡¥óÃ4c Eúi» ùç¿DœÆ,M²3kîúó¹ð¾y
endobj
-571 0 obj<</Type/Page/Parent 522 0 R/Contents 572 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-572 0 obj<</Filter/FlateDecode/Length 1256 >>stream
-xVËnã6Ýç+.Ð…m RüªL1‹™ AÈ¢E Ì¢ÚÐ2m³‘HH%ñ|}Ͻ”,?’™&ÈÃyçžsÈoW#â{Dó1Mf”—WÃtH“»i:¦éíÿñSiZË‹ñdxùâóâêæáŽÆCZ¬k6¿¥ÅŠgˆ'yÿ~«vAW4Ki±ÕäËeš;»¦µ)ô`ñ¯ìÍãÞd‰«þ,¥ô¨_M®
-údU±÷ÆÇÕSšÕãy:ãÕŸ•ç…ÅþšRpd2žv•Ëµ÷zEÎ’¢ÂXMË}ó[¼T„æ7èêŠÂ~§=¹µ¬ñ¦‚¼¬tî6Ö|G(@.eHÉhË-šJWúÍfýªTéÓ<|àÅ
-@âøóÎÕvEÞl,ŠîýÖ㧽_zÙà4ïø2ïß:a¶Z­šáõÔös–^!ÛN[òßj{Y©üIÎøÏEªÉeª?LÍ,úI–=9é3ßbGŽ )r,À‰•^«ºˆ ɘÓlpì4fMÆ¿vƒâkSù@áÅ ¶Ê®
-°@¿æEíͳƨ"#èœ×<Ã|K@ÖU@u•Q…
-ÇNFÖ.èˆU>WÖ"ÙÚUüæ˜B µè[
-endobj
-573 0 obj<</Type/Page/Parent 522 0 R/Contents 574 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-574 0 obj<</Filter/FlateDecode/Length 1000 >>stream
+562 0 obj<</Type/Page/Parent 513 0 R/Contents 563 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+563 0 obj<</Filter/FlateDecode/Length 1254 >>stream
+xVËnã6Ýç+.Ð…m VüªL1‹™ AÈ¢E Ì¢ÚÐm³‘HH%ñ|}Ͻ”,?’™&ÈÃyçžsÈoWcá{L‹ M甕W£dDÓ»Y2¡ÙíÿOðSiZË‹ÉttùâóòêæáŽ&#Z®k¾¸¥eNˆ3“¬¿U» +š'´Üjòå*Éœ]ÓÚz°üWöŽqïpʉ—yžŒzÔ¯&S}²ªØ{ããêÇÍêÉ"™óêÏÊóÂbM)82O»ÊeÚ{“³¤¨0VÓjßüÅ/¡9Å ºº¢°ßiOn-k<‚© /+¹5ß
+ƒKÑp<åM¥Š+ýŽfÓþNUªôI–>ðb€;œÌ“™”[(ûÔ¤Ò#ÊòH‚2ÖØ Š-öô²5AûÊtÂÛ‡èhæ}ÀŸññüÞ•¥¶á,àJoŒ•x/&lIãêRäui†™+
+'#ë€ tÄ*Ÿ)k‘lí*~sL¡!µè[
+À2UUFm4øêÊž×Þ:œS¯0õka¶Fça§­téžu~ÑÑɶ=<ÂÇ™úŒ|¨”‰²›hQmq&:9ä jü´›˜Å±Ü
+Ϊ
+endobj
+564 0 obj<</Type/Page/Parent 513 0 R/Contents 565 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+565 0 obj<</Filter/FlateDecode/Length 1000 >>stream
xµV]oâF}çWÜ7“¼ØPC¶›H¤MV•²Y­–Vª–< ö
i¤*›çZÕŽ´åVJÕ“PðœããÍþè ¨ ýPº©²¡K½¡,U²G›¬2öÖRW!C,eÒdp¶i¹ö¨ö42ÖÎÎ>Í»¿KÓ£_¼œb]í¥*NQ¦Zùó³BH@¸ƒ+ÌÙº²&¯E!âRÆ2’®”.dBZÑ"êÑ&Ã#¤uÌ‘Ä¥^"Hž#ñi¶–ÏÖ÷\«ìùüEÑ(J¯Tú 1¹T‚*œ¹Aò\"»Ëã³ó›Û
€–›ØxäþÐ'‹ÿ§}üŸª´x4Îo×ü~ÈÍozŽF·Í•_E¾Éä[ç1 ‹:Q8r‰¨þXd¤€Ž.ióId:oç‚æó¦Ø?á|ìûÝ›\º-ñ€üºÜ}؇£”§I’Iç“:Wº<gD
4d¯=ÁXTFRZL—iaJ΋R+QÖÌÌží¦ÚTûœ"ã5$4„ý÷ “ ÀeJ—ºhfê`þ‡1âÛd§û%›Ó}z¯siNÔk9Ü!b|–Íð*jõ´–"©…Գ͎3mx›, ðGYbcxÞüŒ)Çt˜Ö<Lùå)…mÛuгúäUˆ))Yñ|Í«§™ùf«ª—†*699P\¾´¨ÉiìV¢Xˆ•ü¾~‰Îz´*tC{$Þ먀JNµÃ
ï‹G÷Ó7„Q;öyÖù8ûK~›ÞýzC÷wÇZ¯…Ic‘eÏ<Þ`+—Bñù)JvÀkC¿9æDËhMPµaÆ¿ÉB¶LŽ®? |´!X#(bãL1ƒPÌVÒ£’[›e~fAox£HºOœ_Û#~Úæ{¹TêÚì’
endobj
-575 0 obj<</Type/Page/Parent 522 0 R/Contents 576 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-576 0 obj<</Filter/FlateDecode/Length 527 >>stream
+566 0 obj<</Type/Page/Parent 513 0 R/Contents 567 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+567 0 obj<</Filter/FlateDecode/Length 527 >>stream
x}SÁŽÚ0¼ós[X7 !CAe{Ù]©jº§\Œã€Û`³±CËß÷Ùí–JU)ØïÍ›™7¼bDôÄÈÌ3ˆÃ(b²yÆ2¤Ëœ¾z;‰&\,²ý¼¹X—£‡ÇqŒ²ñ Ù2GYƒ€¢¥°R8e4ö’ײƒ²PµÔN5JÖØžÁ5ÌQj¥wØv\ü”ŽŽj8Ù”æn(r{ Ñû¡Š¡ÜËIùcaÏYBcÇRû"jy)ž7ïs,|ÿ…ó=3"|mš3ø#:™%K=N#ïøA ´JKϺV'"^CigÀ‡ ž(Çkñô}èà¾Qu÷o=oaÕŽÄé0=ÀXéq´7¼=½@¹éÌ!”À ŸžÁß–phù+ Š=
ϵ¿<áîªJßU“”¦ƒÒ‡ÇbÒÙàfiJû&ÑKXÌPlMïý– Oô}Áduâ÷;&ë}I؇icat£vhTìâØ*‡^÷Ö;¡œMNaêý~ÈÂVþžâÌ…˜R¥5z
éÃÚ¸½¿S‚Ú¸æíÙª[»ª±\ûÈT“–+”]cºÃ›°F’ÁðÊÛ^ÚÀ 5”Ä'ÅACÚ-…ŽÌ%FtN *d//¹Žó%ËVdÚü’³oÅóºÀgy’-e·³øÒS6|ÓìZ;Ë£Õ]Mó”åÙ’þ€äg’øæM9ú:úqendstream
endobj
-577 0 obj<</Type/Page/Parent 522 0 R/Contents 578 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-578 0 obj<</Filter/FlateDecode/Length 1712 >>stream
+568 0 obj<</Type/Page/Parent 513 0 R/Contents 569 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+569 0 obj<</Filter/FlateDecode/Length 1712 >>stream
xW]oÛ6}ϯ¸00Ì\%vÒ8¶kÑ
fœÚ˜Ú„CÆùÂÙâ6»á,í|8‚n)ØÁ´í9n\ó”¤Câ€:…W)¾OÈ·Õ€t—¼0ƒçø‹¿e¶Èè£×®Uöÿ¾Ô:gƒÍmM‚´m}@TÈÓkê£ ö›ë.dô^9¼g¬Ó-Oë©ïóŠpùÝãßï¿6?þðûǧõ+¸ØijíW–PU×p°BZ­X|''ymÀ+â+B ›.€Î\K–gü®§rÁä}-wN8:;X˜sæ 4ÎÚ©ÚÐ “{
Ì°æ€ÃN»1¯R
@@ -1145,8 +1107,8 @@ z§ë ^Åü®ž¡¢ùj¡KÕ×a”Ÿc±ð UƒåI «êoX”=Äq ÒºÅŠ¢5pQÄŠà_Ùà@T2ï¡ÿ‘wq;¤4oƒ
6ÞQµÂf c‡Ã.hÃÆ
"3æP<ì â Nµ9KÅkžXòÜkî|c=}KØ°ô×Â=ç¡Óèõ[ZÎ``Ÿ‚YE„áXR§.$
endobj
-579 0 obj<</Type/Page/Parent 522 0 R/Contents 580 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-580 0 obj<</Filter/FlateDecode/Length 1643 >>stream
+570 0 obj<</Type/Page/Parent 513 0 R/Contents 571 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+571 0 obj<</Filter/FlateDecode/Length 1643 >>stream
x}WÛnÛ8}ÏW ò²i‘(¶ãµ“Ç^ÒE€&éÖîòBI”Å–"U’²ë¿ïRr¼Ú`8H$r.gÎœÿ<™Ò?SZÎèjAEs2É&´X\á÷üz‰ß3|œ¤*¾˜Ïn²ùK/n&ÙlüüíúäòÃœ¦SZWð±¸^Òº$ØŸLh]œ­k »/·Ò M­õ^å¬î‚²ÆS°jå©u/šsR¦Ð]©Ì†:/¤F´-œ“0%UÖüVoe¡*U¼Z?™ÐÅô
®Ë³Ã5œ¤V¸ ŠN G¾F(>ãÓ—nhŠ`9ê‹«92ƽe6Ïè“ð~g]éÓ±çä.fËlÁÇî…ÙÓêþ-ZI<um+]!¼„³þ2åÎ9o3 µl2º£Zl%Kª”‚võ©Ë=• 0ˆù€ôô~”Õ×ê+\·úÙY£÷¤ªø l¤®3&!pƒ-¬¦“>pPz÷øùöÓÇ/«s”cäÍæ[e;ÏVL™?}ï|ˆJ!s·'gQE#9b¥QÎ\£ff€;[$p¿õë&E„ yÔVf´.U,:0šú%ËtêØßV†܃3cW+Ñä÷ø
·O˜52Զ䖜ÎQ«dô`ƒÄE…os•Â`d”Ö‘Iû^Îz[22 Cpé´e”Á:Ì×Ç|<mµ`ªÈ_äÏNP÷4£5S¡‘‚%ñŒ|GÖÓën?{Mªá„…AÐÄ÷èwÈ!‘Â7y ò¤ o…5n{v)Ã|sÏŽ¼¢9KÁòØgm`šC²O ­(º¤ŠÞ>¼ûüíÓúîñ! H¯aÝ)%ÜëÿÕº?3úh F‘ƒ8–ñƒÒ­ Å ml§Y6ƒLÄ?HL
@@ -1156,8 +1118,8 @@ Rê ´#KDêXo2Šš<xïyÒ ÈQÞE|G$MVÎi£¶Ìï8zàfÝ,ƒŠ¡3¨6tåñãíìyZ"10Ø6Þ@Æ^jé±D+Q@F
ø°«>èCèÁ_lri†ò6 P Ìü6®%\Ë^X÷°û¨Š´Ãe[Ê{ÌÜK°¦ïEçdŒK½>˜N+Kœ½¢^~¸î¿·L—×Ùâ憓k^ïWoîß¾¡÷¼bmtžþê°­s<ÃÉ‹åäæå/ óå<[.®ñ­–fs¾u»>ùûä7BP…endstream
endobj
-581 0 obj<</Type/Page/Parent 522 0 R/Contents 582 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-582 0 obj<</Filter/FlateDecode/Length 1775 >>stream
+572 0 obj<</Type/Page/Parent 513 0 R/Contents 573 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+573 0 obj<</Filter/FlateDecode/Length 1775 >>stream
x}W]O;}çWŒòR*AJ MàåJ|^U*ЖTèJ•®œ]oÖe×ÞÚ^Bþý=3Þ„°ÀUÕ*õÚž™3gÎŒÿìŒè

ç±Ô(MÖVÊÓ ç»kÜ= èh®©©T¦sr–b‰pzH³R-»ÄØ Ùî¯Ý‹Ë›þ½¹½¹Ü#ùùãòô¢ûyÿãËl½|úõk·zu~FÊæi÷Åíݯ™bEËREqˀʢq$”®­rvPU•[ÂÃù
@@ -1169,8 +1131,8 @@ x}W]O;}çWŒòR*AJ MàåJ|^U*ЖTèJ•®œ]oÖe×ÞÚ^Bþý=3Þ„°ÀUÕ*õÚž™3gÎŒÿìŒè
.ž^²‡— —fÝ­A ÆeiÐZ`nËáD¹¤$À™µÀ•0&tyÑÌ—ª÷ÐÍHû JÐ]o+¸à)Ó<u±—1ÛÞÎ\/k|þùáÀ»è2Wѹ¨Í“‰«tàÁä| aÍ'T¹;[áU¬ùÂâ·þ†Ø9¦Í`£Á™|ÁÓ%­•™ZU°KL9•çÒQ{Q+º6™wÁ¢à˜™Qid’ ©M'ÆÖøº6 \æê‡v¼ðºã
ÏG=“›}€x Ÿ@ 7?N`ƒoÊT£æ®sõv§×ã4+æf˜MH0cj
endobj
-583 0 obj<</Type/Page/Parent 522 0 R/Contents 584 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-584 0 obj<</Filter/FlateDecode/Length 1041 >>stream
+574 0 obj<</Type/Page/Parent 513 0 R/Contents 575 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+575 0 obj<</Filter/FlateDecode/Length 1041 >>stream
xmUÁnã6½û+¾4lÅvÛ9&»I`½íÂÚC.”4ŠØH¤JR6¼_ß7”ìÍj‹ ‰M9oÞ¼yüw4§~æ´^Ð튲z4Kf´œ/’-7k|^à×1£ÇýèæyIó9í YmÖ´Ï á³í³«ªSE¡T|[ì<ÎÖXÑžgÓŠë ÙP²#Ïî ¾ÍJRžþÒæëžrk~“ÃMc] FĉÊi´5d‹~)SUu½ÿg4£éü0÷ù•29é@%®RUm} Œ]PÚT'J™ )*Yå*+Qˆu´ÝQŽû+ÛŠ`/IŽêRæ’o·}$Ɇ)K9æ=(])T–ô‹U²@{TÉr€TjÛ@«;ÛP%YÇ$ycUž´ÁåS¤`3[ÑëH3ož*ý·À“ DG§¿^'´³5å
ÄͳŸ#'ŠÏÖÿé´ ßòeö+‡{«ŸL[ ¼‡ª’¬À (Ôᥣ
‹M‡ rš)CY©ÌGŽê$ÿOt´î=¡­2ø.‡sûõ—r‹¤h
@@ -1180,8 +1142,8 @@ IagèZ½iaaØt欷EÀ,dt  Uó°áRJ8 ‡>½<ï ïO¶®aÔ/&0&)гÆ\îN>0 !"-Õ¢jÓJûÍC#;f
}át¿Ä9Qø ft–†÷2¶OÏVn³VzêÏ4ööëƒÆüÂû}dí]Ü´`Í —J¯À
xdWpN¸·¼(£8”ÐÈl¨ŽƒJ¦HJÅÄ' ±ìH.BTÑÍó¦NçëM²º¿§Åf%ÏÇîaûø@Ÿ<Q¿·è·à™ž#§ëÙ½„®“U‚H´|ksŽ˜—ëe²^mðFc±’cOûѷѤќÕendstream
endobj
-585 0 obj<</Type/Page/Parent 522 0 R/Contents 586 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-586 0 obj<</Filter/FlateDecode/Length 1533 >>stream
+576 0 obj<</Type/Page/Parent 513 0 R/Contents 577 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+577 0 obj<</Filter/FlateDecode/Length 1533 >>stream
xWkoÛ6ýž_qç 8®íºNZ`Öu M·xø %Q6‰ÔH*ŽÿýÎ%)?”ÖHä}sϽúçbJüÒõŒ^/(¯/>¬.^}zK³ ­J¼Y\ßЪ Éx2Á“|øëV4^ZºÓÊŠ\é 9Qg‚ÜÞyYS.ªÊ½\}‡‘9M§ÑÈÕìf<ƒ™áj«•ª’TH—[•IG[³#o¨0tf„<ÌK2šî‚}Ù{O¦õ´Û
OÊ;\â
d8±$©+!bâþ‘ª,¥•`kˆ é“gñr
@@ -1190,15 +1152,15 @@ EºÏZž¸k ¾ÄÞPŠ#PØ8,“îÒÊð
‰´1.!Öϰડ¯Ëç 9Ðh-†Œ†HnAã^T uHÊ+ÛíMÎc¼ÙŽI¡êI肃¸€²cLcb¡k¨Î5÷ÂåeÔSôœçn
º Œ·QɺÉû~Â~ÐóI¾¿benŽ,oÒËþÜ™_ÏÇ׋|1Aaf×lð·ÕÅïÿ¥­\Œendstream
endobj
-587 0 obj<</Type/Page/Parent 522 0 R/Contents 588 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-588 0 obj<</Filter/FlateDecode/Length 815 >>stream
+578 0 obj<</Type/Page/Parent 513 0 R/Contents 579 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+579 0 obj<</Filter/FlateDecode/Length 815 >>stream
xTÑnÛ8|÷W,òä
Ï9¾ž©¯GÓ«Íç´®²,V´®×g3Z—ã[2í\G
·UŒªÜp•^Ä [*•¥ÊÑv£"?³'Ir–pJ¥Ñl#Uz[ª.hûH­w†›@ÊöH[mÌñú¿ÑŒ&ó7YŽüãRµ±“ŒÆ$¨° ‘¤3&ô€¡y¨¨QO²}l¾Ì{çhã¶BKxkÙ·ž…£äЙþ¤÷lÙmG×XùrƒsïºGùer]l»Hµó¢ë}Ökz²ÀƤÚÄ·¢Š 쫤\³!£+`ñÿªi Ÿ®‘W58}I¢ë `ã†ZöA;›„TTk]ÓÖu¦¸‚ØA⤲\ dUè;Ñ
ìßBþ¡ Æ>_J†u?6%‡ŒçwƒÚ‡ØÛf¨ûWr{VÕ$É,F·|üwÖì2:‡Á“ºðŠØªaeÃϸ¯6Ñ‹zýaSŽái°´¥óžËøzj“…§WÅÞóU‘-OO)Ï‹ý~:ûx~Fï°/ &óò¾ƒI~2ܬfhl5¾ÀöÀú¢TaB‘#Hûéõ>”ÈÅj‘­–8¢òB^]®GŸGßýQçœendstream
endobj
-589 0 obj<</Type/Page/Parent 522 0 R/Contents 590 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 307 0 R>>endobj
-590 0 obj<</Filter/FlateDecode/Length 1651 >>stream
+580 0 obj<</Type/Page/Parent 513 0 R/Contents 581 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>/Annots 301 0 R>>endobj
+581 0 obj<</Filter/FlateDecode/Length 1651 >>stream
xWmOGþίåK@Âw>l„*B€¢âbWi*KÕÞÝÚÞr·{ÙÝ3øK{ŸÙ;;`Ò´ ^öm^ž™yfüu/¡.¾ö¨? ¬ÜëF]ìlÝ_ï%ÇGQ—Ý~—¸•DƒvUЄïSÿ8‰z|6Eývµ=ëE'8K†'x×+>K†½hH½ÑIt„Ó^··+>}¾ÆéÑ1n5w7r{xÏöô†Gü2¬¶g¸?:Ù:~= >{?Ý‹¯FPFÓ9¼ Ohšg±“í_,E奥QDwSú`J¡4Ý/Þºƒé_áe2l^vúGpxšï¢$¢í­ÉëÌ+£››G”$íÍÞÊqsºTŽr“Õ¥Ôž2£=¤;Rznl)ø)yC•5+•KšMx4öÁùæðQù%f“œ´+•IwH¼ijO~)IK™„á-Ñ¥NÒoŒ„$~"-Lõ3øº[”aϱf3§¥÷Õ»8†ÏÅÒ8eie¦Œÿ.²"ÎÔÜiŸH"ÿäƒÖ”¦kº­dÔªí ,x ]Ö¸ ©2Ω´ì¤“…Ì< À ^Šœ­Áç…5uE³}øʦ¾Dâ­£éÅ8¾CŽ÷J/Üì
«Å€6ˆÚdÙn@¦
O¨‰l „dn )9dˆÇÕlP)Ö;Js™TPHœËéí§ëOw‡T8a«, çìÊ­2šZ¡@Vª’.¢—õɵú¤à¤©:s,“¥ ‘¬!T®2:ÏË«…¢-@¥½xyã*°Z:vš
@@ -1209,36 +1171,38 @@ lIUû´^ ¢_#›E(ˆLÄ“‹û›ñt>.¿üé¼w¦t>vONo϶×O?ŸŽÏz£þñ÷ÿ[3ôÑÒ—ÅÎ3ØÝ Õ±o@ä×ô
xÿo¯®‘±‹8[¨Nªt\Î]ÜMâê8†ñh(êEÜí’ïÙûM)¸‰n´ë%§4èåõ­£æ1@÷dæþÖrÛ¾XJõûZ¡Y=ç£-¸¡f©‘‡,† ¥U¼i´ÏuÐ]K>m:s®dK%™WÑ0ÛÞ*`Ž6jYæýåõŸ“?Ц
5¼¦¹fºOÉ<|…üŠ¯0°mÇ‹¶ÙþüËíÇÙlòe2½Äß‹Cû LèÑéqÔ ³¨ ÌèÙl,,Z¨¼p¯åÞè¶û @¸ ‘äÞSÛêÝšÊ$Lê±KvV‡v?Gí24·ÀЃ öÆuµ‘½ãËä|•€¨XÒ›[%RU Ìß½!‘šU3ÄWÏg¯œ÷RXî%j ˆ£»H˜·¡Z<µT{ç6=j)ÀÌçÆ*ž¸xTÐt>¾ÝE㌕È"Œ LhôøiiØ›wÐWB®-ÏlRc´¡îšvžË9â© †± €Ø°ð†Z‘2²pò‘UíRÑ«¾…äÒ†J‰ö–bÇ Âc!Hîð8 ¬è£Â@†8‚,›ÉÑ(ê¥(Ù t$øT*îJÞ„ÔÃG„ΆÛ>Šª‚
endobj
-591 0 obj<</Type/Page/Parent 522 0 R/Contents 592 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-592 0 obj<</Filter/FlateDecode/Length 1751 >>stream
-xWMsÛF½ëWtù²r•
-tþÜ·­É•¡%BuÍe!¹½&%¿p‰:ªrïÄІî—ÿ~ü‰uÃðíNèåzµý[m.©çIP½@,ALèZ\Ã]ýÏ,ýG›¢~u=w-Ô ÔÀ@žUÕ ¬‡¤ƒõ±¤“cIQЇڋf‚…KoÛŠ» ¶ |Žú,ÒLš%Ü9§
-åÁ ªêwØâªÑ@-7$@¿ QСª”F&C•î–iùñþ‚wõSª×`Oe¬52äeW‚E~ü
-§bwÈêÜKw óN½Hÿ¢•1ŠÂ{0vß+¡_¨ÏEÐc:•®çR K›Ö?Œ;¡ ˜„zŸ2çû¼é;>º¿p…¡ç¶Ôé2Žx™T–!
-©—ʶÀ^µÎlj?Á’'“û°(Ïû߃ÃÉ(.4ÍFéhΠ>}¤ÛnÓIý¥ÅïI*Îæát2,âÆx¾Ygãt6÷?rëçÕÕ¯Wëö¹Ûendstream
-endobj
-593 0 obj<</Type/Page/Parent 522 0 R/Contents 594 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-594 0 obj<</Filter/FlateDecode/Length 537 >>stream
+582 0 obj<</Type/Page/Parent 513 0 R/Contents 583 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+583 0 obj<</Filter/FlateDecode/Length 1753 >>stream
+xWMsÛ8½ûWtå²N•Éè[ÖÌ)O¦Re;Þ•¦ö°ÞD¶$ŒI€ €v4¿~_ƒ„¾’Ö+Rèîׯ_7ÿs5¤þ†4ÑxFE}5È4]Ìñ9¹•Ïþ9¦M| KÓ=Ï&ùâòÁ§ÕÕ‡Ïiµ‘Ûg·sZ• ƒ­ŠëÕŽ‰¿©"PÍÊh³ýPòF´5d7ôªœ¶­§ZmuA…5>(<YGlÚš’>¿úã*ƒ\Z^s’ßø™ ÇùH–ÄŽã¦Ú;‡Ã…-™”)©õ,vÂN…ÓGo;6¤èͺXŒÞ¬¹°5{¬Ö\¯ÙÉ1E¥­•6Ñüàhîù:XZ3•ì §×\R¥»ç÷9}Vºj&68­3°­ý™m]Uø{àõ© ˆÀºÐ9«i/vO̪ʱ*÷g.Ê“F³|" LŽ8ùL–dwáöM°[§š0÷HE„˜9¸%»WvOÊ{xV.9
+¢‹|ˆ?ZÚÖv,ˆa>°ý6~csñ<WNa'mœ­ñÚ¢@Ùçk^LOªxA½ŠËjm_ùù}Šp–fS±ÚVôÑï0‘]÷-ÈtÏz++Cõ ÍŽÞ=®è.Ò÷Rtq ›·|^Ê”™ék £Boü,ßÂw&ÿÇfÐh”öŸ@Ô‡>å·€ Çi”Ó/ŽKAnÿ œžž>ÀŸ¨²ªDL›˜.zÓa'°ÑC‡ÛÏÔš’èF }‰ùEàª&è¢+n¿÷ëŸQ’vl
+Náõú¡ë¦â#©V}i‘o›Xš
+eh WýFsUJloYů\!ªÚ{¹hCË<ýBOºáNùÎ’v¯ óÅ ‘ÚþD³e[HèEe/KºZ'ßðòÿOmJûæ{ò:È<±à@UÝe ´‡¨ƒö)§ÓcN‘ÑGD5AÃepmÉKeêîþ,ò‘TK<sÎ4l$Íãú‹H&Óòá“”ŠñÒ=Áâ†<šÞí¼»9‘`pžoH5 +'b}ždë=ÔDUzk 0‘;¸û"ùbiae‡ã"¬P.äô«4/ä´Ëú©i2Œ+ãÕ>2g,u\hÏ8ñbìzœ»0–8“‚.–ôÀÈfékI¯{,~¿{¢ÇÕý×ß¾>ÒŒ¯lø?àÁqáX§‹<µt¿hí;dä´täÔÁ„ä|Š§Z~¹‹"]S†u5@^fŽ_µ¨z†v¿¥d‡™|Žò<—ïÇœ8ßFK']p™ ³i6³Ét–Íoéÿy40EÃ’…ô+Ôíú`è ìÉå“9"¹¬Ì^ô¤EäwÝn è6Ú aPi}« ÿ“%Ý…åƒôÛѼ£Òxá!¦š€â²™£3¢È¥ˆòÀ2@óªª6vÀ=ù]
+ôjM¤TNƒo˜®0Ó #´F®£•ÒÆèášG׳ÐP颅roGñä*Ó>ÀE¿ßߧÕ>^JÇ`"»ˆ4
+VD¢b³ »ˆò‰á/>ç8
+ÄÜøl0È‚oE¦‚L'¶:E‘-GDåô×5-Î ü|Ý•ÙiÀÊ[ìæù½Ø‰ŠRª
+endobj
+584 0 obj<</Type/Page/Parent 513 0 R/Contents 585 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+585 0 obj<</Filter/FlateDecode/Length 537 >>stream
x”ooÓ0Æß÷SÜK˜;Áqx×n+L¢c´·(sÜÖ¬ù3ÇAƒOÏ%nYË"wŠ*Uò=?ßÝs¾Ç …?
ƒˆƒ,'! ‹”Ä‹ÿ3üëá ï‰;`!'|ì€2:®à=ü¿+fÙäÝ<C¶Æ¬8¨Í
ÀœÂ2ù&% ?¸®ºR™Üêºjßf?ˆ:QÀ”ì#)Åjyw ŸT^(öw£œ úOÀ±X”Ⱥ,óª
endobj
-595 0 obj<</Type/Page/Parent 522 0 R/Contents 596 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-596 0 obj<</Filter/FlateDecode/Length 701 >>stream
+586 0 obj<</Type/Page/Parent 513 0 R/Contents 587 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+587 0 obj<</Filter/FlateDecode/Length 701 >>stream
x­UÁr›0½û+ö˜t‚Š
6>|\I>²‰ Ìe„øøîà¯äÕ ã€’ oÁ\pL’žTŽÍˆÓ·@é@ Ï}_û<}þ¥eȃ>D) Û†(9
‰C\|à:š^^Gí½F[#ÆÕ« ¸,…V' d*’X yZä¿Añ¤©%dÂÁ¦±¤¡oH‹¤Ê¹Ô<5a‰È#úIÃÍnÑ¢à’1lâ{~Rÿ6XÔEþXܵoŽImKÄr‚ZÃÀ#0‹öRh– æÕþü ’1ÉÕåÝ|:A~i‘ÇHÙ|(]V‰®J~sÜpa=2Og‘ëtOM÷ª„¬r(2PÕÒŠ+½*J¡WFÔm¡nrkwû5¦†³”%Êœ–ZòòãÉþÔ»FË`ù¬‘|V”;ìÁ‚iŠV™à%œ½ˆôübŸVòwªP¶w(«QUí)º•ùí!ô(Õ6ϬÐüôŠïâDî´_+þ{ÅK~ÈçŒÀ<úa:G—Ø{­—zZ¶f|C²ŠËÅ-œâ«¬ÖkKó226Ùä3îŠU"D' Aòqx̦ß&U%ER¤¼Í¶âqÊËd«>¶v+q$eǼæò^¯ ªnæµÛiq(e?ÁÓîkMWÉ푾Q­v\wd­nÎp°YW
–U–¡—7…À ºWÌú†ÅìJÍáìQòçÕtòi_º-Û7 ›Mí°îáÖÜ‹va4ËbO{›º-b: cëàe
SÏ!, ½æ^™Ÿ]žŸÁ„?òu±Á6€¯•H¹afQ?¨c-ßÍÕ\A0o'¼2QžïŸxçš+¬êÑèûèÓW>?endstream
endobj
-597 0 obj<</Type/Page/Parent 522 0 R/Contents 598 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-598 0 obj<</Filter/FlateDecode/Length 683 >>stream
+588 0 obj<</Type/Page/Parent 513 0 R/Contents 589 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+589 0 obj<</Filter/FlateDecode/Length 683 >>stream
x­VÛrÚ0}ç+ö‘tjÕ·Ú憴¡ ÅN_’NÆ‘(c,"Ëiøû®°I€“K‡a±òÙݳgw}×rÀÆ¡ ^
ûh¸§¥zŒT‰¥RýǸáïJlktƒ]\pu/(?.8ÀÏñùõÙ¨Ç]XÊLÐÌÓœe|?s¤i3‰ª/]»alî Ä'ЯãAßÌE&)JOf)”T—Š6ÇÏRáÄDk½6¢<V÷¯XwãC¯–5Yïuo™I£ÁYҰ¶2ß]‹õH®˜|9ÌõZ9Ü“¡«G¢z¡:¾K‚N‚0 ‘ÙªqwØëBŸßóL.qÉÁ÷R°5_–âû
í‡> ƒ_ ð†ç™¿N“Ö¯Ö?+CO-endstream
endobj
-599 0 obj<</Type/Page/Parent 522 0 R/Contents 600 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-600 0 obj<</Filter/FlateDecode/Length 765 >>stream
+590 0 obj<</Type/Page/Parent 513 0 R/Contents 591 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+591 0 obj<</Filter/FlateDecode/Length 765 >>stream
xÕV]OÛ0}ﯸ“€‰„& I»=ñ1P¥R´6ã©2ÎMã-µKì4ðïw„Ò"¨˜x@ªH{ÝsÏ=çØî}ǃ.ýyùÐ /:]· a/tCú=ûô*ÒºônðZÁnÿµBºþËÏOãÎÑEžqJÍÃ~qÔ¸Û…˜ï•Áo`2¤¶B®dš nàM…(m J)¸J´)„œC†,Á˜L^«
£1Oi0
ªLðÌ>”éßAü»ÓÇëÑ8Ù2œ™5pŽrn2—P‰K%ò$"5QĆ„Ñ*_aⶠ~HòÈz˜ÏÁ<.i’WBª
@@ -1249,14 +1213,14 @@ c3l(ý•‚½ÙlxÆ
~äÂÙhßN'7ÁßÈ’þÜÔÿOûL®­c»bÐo//ðÝp0€Ð¯¯ÜéÉÕé œã
sEg†ËR$h“ãxQ¿^éDݽX›[ ¦O·W}°QàFaŸ~JЊ^`¿ø#îüìüm‡×endstream
endobj
-601 0 obj<</Type/Page/Parent 522 0 R/Contents 602 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-602 0 obj<</Filter/FlateDecode/Length 762 >>stream
+592 0 obj<</Type/Page/Parent 513 0 R/Contents 593 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+593 0 obj<</Filter/FlateDecode/Length 762 >>stream
xÝVQoÚ0~çWÜc»Aš„,„½Líh;¤[I»‡vB®cÀk§¶SÄ¿ß9 ª&¨/Ó4P$ˆÏßÝw÷ÝÙO-lü:Ðs¡ëMZ¶eƒïØ– ^ÐÃß.>’Á¼Xðê\¿‹v¯vœ…­“‹>8„stâ=#@¶ !=ê[®ÕµœÀ‚¯×çƒ)ÜQÉ"–jNbAó„Ò$ÉîÃ߈å¿`u\ßòíˆ.‰¼ ~•ë^µŽL:N)ƒ-æ>Hg×ê&ŽÎëA¶¡”6R†”¡T|úÈçjΆ㋉‹¤“ÏL¶Æ¹!!™SKöòf'¢c¡ÙgX-YÊô’«-,cD*à),×SΔnÃZääJƒ& ¨ÈÖ æ¸™Uát(‰iÍ"؉ð´·9”Œ2þÌ¢6<0JrÅ ÂV<Žñ þŒc•?(ãIn¡€.}TVá3“LåIa­ME
ÈB HO5>@ÒW®IŽ®Ð”!VÌN'©‰C[Õž&ŠôO¯oËZ½)Š²$ ,¤$aªÜ°QÙ¾@†ã0¸kÐÙü@F¢ˆ§‹6Ì…¯ó°Ö˜ö˜/ÒÄdeÅõ¦£3X21Y„½õž»ÛÉpð¡>þL`¾Œ
ÄFVÛŒ«&Ü¢ÓêqKÖˆ[²Ò°i‡¤¡\{§vú€P*òÕùß6üsq5¹,æQ}åc±Àn¬jƒÝ<¥í›Íð7UäX0ÁÏT7£f.¶£¯ fD@ŒS1§a€j)-g<šð™ÓÀýf<ü6¸®Od$Ì0+æ ä)§"bU¿7âtéºõ ‘$Áñj)â8¾WSVy8h‚8Àµ-ßËî
endobj
-603 0 obj<</Type/Page/Parent 522 0 R/Contents 604 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-604 0 obj<</Filter/FlateDecode/Length 766 >>stream
+594 0 obj<</Type/Page/Parent 513 0 R/Contents 595 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+595 0 obj<</Filter/FlateDecode/Length 766 >>stream
x­VßoÚ0~篸·µÓHó«I覶” i…­M·—JÈ$xKlf'íдÿ}g'ÙÊ
"ßÝçï>ßùÖsÀÆ·¡ ^
@@ -1269,8 +1233,8 @@ T
É Ž-‡Ë)Ì×zdz–„§ø}ì´\Û ëÃÙœ¾Ãéåìêb„`Íœ”4£’ò„šÖhQZÂZ§fBìiŠ§"©
l5M¯ÊšvÙWÂ]:òªÀ)ÔPL¡&­ÞtÈúžïŠçãì¹Ø¾ùH~Ž2ˆ Pɨ꠽¯ |Ä|ºx[¾þÛm KJR*kÊQs 9¾kƒa ÛoŸ³Sê#VT*x[áøÕ!}'ŒŒg?´qX´W\·w‘ÑÂ}+ "üïž™dqïcïß~LIendstream
endobj
-605 0 obj<</Type/Page/Parent 522 0 R/Contents 606 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-606 0 obj<</Filter/FlateDecode/Length 686 >>stream
+596 0 obj<</Type/Page/Parent 513 0 R/Contents 597 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+597 0 obj<</Filter/FlateDecode/Length 686 >>stream
xÅVMoÚ@½ó+æVÕ®mÛô%"i9@Ô`z U´ñ®a‹½Kw×Aù÷$Á-ª*d Éã÷Þ̼ÙÙ_ü¹zÐ É;Ží@à:¶~âÅ ­^ô¢žm¿¸Ž;Ÿnp]ˆSÄ
¢b
ˆã8'Ýéxøupï=ˆ"T,}¤2×–ûã,þ‰ŸùÍgÈm¹=$iƒ˜b"a0–p…à‰¤ ´Q\ÌaÁeJׯÄÖ&rNâûý ® 9Û?
@@ -1278,14 +1242,14 @@ O ðœÀ‘°r ë1Õ|¸T^®5Óš#ö’½
'¢,y²”§Ã¬ˆÖk©(dDÐ8ý'êzLˆ€dAÄÛrZÁÞ ó5‡Y¯žý, ±cq°U;í0ð4W‘eðOjêDñ•ÙÚ`§«_)™òŒáFÀ“¸}*œ¾¸s)W,1R½‚š%éúžôû„^>pQN®F×W0(—¡\áE
‚õ²7qç[ç7 y*endstream
endobj
-607 0 obj<</Type/Page/Parent 522 0 R/Contents 608 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-608 0 obj<</Filter/FlateDecode/Length 551 >>stream
+598 0 obj<</Type/Page/Parent 513 0 R/Contents 599 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+599 0 obj<</Filter/FlateDecode/Length 551 >>stream
x­–ßoÚ0Çßù+îmÝ$²Pž¦VÙX¤–j%쥚PˆðìÌ?Øøïw&©ÖVÅxŠ8üõÝ×çûÝ ÀÇ_
üÖ;å*`G;ªOÒäÑ:¾éØŽ[¸
cb0bÛ…Ÿ³Þ·Þ?áFglendstream
endobj
-609 0 obj<</Type/Page/Parent 522 0 R/Contents 610 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-610 0 obj<</Filter/FlateDecode/Length 694 >>stream
+600 0 obj<</Type/Page/Parent 513 0 R/Contents 601 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+601 0 obj<</Filter/FlateDecode/Length 694 >>stream
x­UßS›@~Ï_±Ú)W>´£FÛ<˜h‚}ÑN†Âa®Ê…ÃjÿúîИ¤Ž“aÈp»ßî~ûÝîï< lâl`\' >8¾‡ÿ-|
i}à˜¡«lêïùÁa8øtâ
Î+V±—ŽÖÇ!»ãñ
@@ -1293,8 +1257,8 @@ x­UßS›@~Ï_±Ú)W>´£FÛ<˜h‚}ÑN†Âa®Ê…ÃjÿúîИ¤Ž“aÈp»ßî~ûÝîï< lâl`\' >
ë[{µÛ+wÁ“„éclCKÛ“Z^ðö}2~èsÛUTM¨`JDÚvënãGÐ_ûíÉñb4mkxÝ-ê—LÛ¬ñšP‰DÆUÆP`Éó:º9nSBÁ²¨¸éWËLƒ·Ðë„ïw…?«…ÿ&±_ŒG轉‘%Ý•à±LX{
§ýnw.z3b)Î1=¸Z`›±gå~_F¿M"ÒJ9n@¦,Jú8ÿ%GtX¥)+4Híú8¥V&ÿù=ÒŸÔ…Æ_VÈ^¯,‰M„n—Qo\v|Ö윆E†Ízxœ$åš~-Cà¥yCˆvù4üv¯QÇ"n€ëí‘Àª·Ûìàôð
endobj
-611 0 obj<</Type/Page/Parent 522 0 R/Contents 612 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-612 0 obj<</Filter/FlateDecode/Length 888 >>stream
+602 0 obj<</Type/Page/Parent 513 0 R/Contents 603 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+603 0 obj<</Filter/FlateDecode/Length 888 >>stream
x¥V[¢H~÷WœÇÙdd‰â¾âÆ´€ ÕmO6‚P¶µƒ”Sc÷¿ŸÃ­íNf×Ú]D±8_}—:UßFèø6`fÂd
Ùi¤k:L ]3Á²gøÝÄ p¹dôëj
†ä€Líp¸®É>=¬bÿñç/ä/fõðäؘ`-’:§yÎÊgž©„ºdÏ)TR4w­ñþURH ö\Ò.Lñ¯THàG
@@ -1307,8 +1271,8 @@ $;ÑŠ×ÃÝͲ6È×æôÓt8«ím<KçŒKV /[Á%ÏxÑÛ¦• |ô6
7¬«œá~Q!ø§}aèO^°~RE´ñ‰–ì¥7Ia-ä–1è zOÔKîV»[5щ7+mv¬Ìù7WéÉíé£&: µ‘F‰[Ór¡Îf/ h|âFáaopkäzã&©„,-›nÐîN{±Ñª·×YÜ=lÁ]ßšÝ{,¥Õä;1Á]_'¦¡üw`ÿjh -â E¯­¡tßé¨Äm.ÐÂÍ:&Il¾tv
2f¶6ÏñˆØžƒbÇwXRlwüLE¿×,oûÃx9žéóë‘ b)êLÖ‚¶-ךYÚljã™U–Þ`ydt?úÌRçendstream
endobj
-613 0 obj<</Type/Page/Parent 522 0 R/Contents 614 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-614 0 obj<</Filter/FlateDecode/Length 1261 >>stream
+604 0 obj<</Type/Page/Parent 513 0 R/Contents 605 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+605 0 obj<</Filter/FlateDecode/Length 1261 >>stream
x­VÛRÛH}ç+ºò[X‘lÇ—G°qU ›Ô¦Ö[ÔXÁ$òŒ¢دßÓ3òu¹U톊 ¤q÷éÓ}Nϯ½„bü$ÔoS§Gé|/Žbê ‡øìúølã%)/:ühçÅñdïýY—’„&9é ú4Éâ˜&é~üÐÅoüNu=—•p’Œ.IjW)ii.ªŸ2£w…IEñî`ò{MÀ"¶’NÔFÌýñ·›É÷ËÓ›“/çG£‹›Ó‹ëópz#ýêpü0i7󞘹PÚF4¹“TڿDzZÈŠ„Îø¯ð–JQ‰¹t²´Ú:šIº¸þü9zY»uÙõèbÒi?æªoQY—›j~£²'b-«üöetòÛó¡J£4°‘3¤ó…@¯‚¤¹øa*Výbu9–ÒÿK,÷XJš®ºEÍ”£\É"›¼
aa¶Þ(÷§ÓËÑåétºm?¢ï¦¶“«
æcf¨V“ ¤Ç*à〴ìh®
@@ -1317,24 +1281,24 @@ Iw°¯BÒì5kß@ÁxL)õw§dP~^Ÿb«…]¤;€†EòAÌËBp)ªE<ïPJY±·ÁK×\zgõ&šŠªz$S»æ@ZË{
ËÖ¡ µ’‡y'kmjµ¹¾Ínñtð3.@ðÃ
U€Í…üWÓpî„YDJ‡uãG è.Gô†Ì[BiJœî³CpÜéŠõY¶ÚNÐ!§æcŸ¼ëîT‘›¢0÷€e,O2€Pø¡€Oì¢çY iC ÓÇ^Ù\4ümg!ŠšÙ–¡nàÁü¯r1\8>º]âÂø\I[mqabeøQ—³ð”xºÀ“U~ KQek%®ÎAÞ¸™÷iîÂ;Ï÷%üÉÆ» nä»­m‰®‚kw' Dßj–EÖ¢ -ùÈÁØ:*¤€Ãµ·×Êt¿¬ÌLÌpA gzÀýBå­yƒiLq(³¬°?|ƒÇÎÞ,QX¯ +ÌXªÍ¦23¿Ÿ³&EØi|#`œXkŒsµí V`c©p¥Ó¢{_ÛÜ’µº{îúšñðEïë‡Ü?Ïíû³A³$’þ ê ‡ÔûÐo.ÀGçÇGt"²€¹ã~ú{v3¸Öòl«y]½qËvûݨß`#â;Ý„CNö¾îý©,—»endstream
endobj
-615 0 obj<</Type/Page/Parent 522 0 R/Contents 616 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-616 0 obj<</Filter/FlateDecode/Length 944 >>stream
+606 0 obj<</Type/Page/Parent 513 0 R/Contents 607 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+607 0 obj<</Filter/FlateDecode/Length 944 >>stream
xÅVÛŽÛ6}÷WLƒ>8@¤ÕÍ·ÍÓîfØ8n­ê>еfV&’¶×ŸC]Ò…³N
AmX–EÎÌ™3g†þÜ )À;¤QDñ²m/ðÄc?¢d<Â}„æTô®ÓÞÅ4¡0¤´€Ép<¢4'lJ³þThc_“´|m3%ÿ$\$ϬP’„¡-Ë9YEvÃi¶¸ù•Ì†iîSŠßOvnwÆÒš7ÛwFÈ{â2ÓÇÊòüeú©Æ@—æýŠsP:7¯H*KYÉ™ö,´µSÙQ˜À8•¨šØn-¹¥9ÛòœxNï˜ÌKNKË,?‰ÙÁ3\ºl Ë56"Û|õê"iÎò£K–e¯,]-fÈq»…_ãÓ3¶<:x¹#++•áÎÊùôÛxÑÐO\Ž©rdhnT¹çùåÉjù•A(Õ~2r
‰LsZ­³ÅíjE\P¡à»~_Ü4tPñ‘•;¸3œK2Š
DEA©ÆùZóRj¼Ó€&h¼(iÒ¢ö%$°hhʤùg8µ—݆:úú(xŒ†T1Ͷ¦c# ü±ãª³y±Â«Édµ* ÓUö¢[ûç;xàm¿ÆòÇ%p·Iâž^wÙ~ϹÑ{³Þù(v‡µÇ[ܵóÁ‹×Î/¦
Qd×M^Œ¶ÊûÒöéäõð´ã¼Èu\ÿ/ÓöTSbÍZXË¡ãB•àÜuŒæÐ* ò€ÂÓ›Ì\sZ&M!x™ÿ}¢¥™„@½³G;ñKÕ¶ <{@QsfœWØ­²ºµÙ…˜˜SŒ$V–”xNnµÈ£æÖõjÇjÛÂxµ‹ùÛ–ˆÁ´ÚÉü—t)„h,ÓuNœ¡ß›Sç<½[^ÕQæ·é݇·æµzóZ²2¼ÒÐAØM+ÆÁ×æuM¦ŠI¶ë݈ë#Ÿ¦ÏX|dZ°5f„=VüÃ?fótüc[Çæ7¶òjÍoÙ'ôßžkƒÞ=ëëòð¬ÅÏC7È…üÈ£ÿyÔ"‡¬+%1Œk¹Û³HαŸµøy¬ÇÀ¾jNß©f÷´Ö;ä€8Õק[Y½<‹î\>ÉY‹çÿ‹B>Û
endobj
-617 0 obj<</Type/Page/Parent 522 0 R/Contents 618 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-618 0 obj<</Filter/FlateDecode/Length 506 >>stream
+608 0 obj<</Type/Page/Parent 513 0 R/Contents 609 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+609 0 obj<</Filter/FlateDecode/Length 506 >>stream
xµUËŽœ0¼ó-åÂƆðØœf7ÏC¢<HN#E^hG`Ïb³ÊæëÓfÈCZ,ffHà.QEu—o½:CH#X'Pv^ÀHrºÅYJ÷ˆ®¡ö®
ïé«g†PÔ„H²Š
¨: (}U×ÍåEñÊâ©Ì‡ ;¼ù \E ‹ êå½à7-‚¹ßãà—·ï‹0YWÜðàºç»¥åÎ4°[ZüDØú7÷õö„,¡A^a\V`¸h™óƒ.}'â?ê HLCEÉPrRê$ã¢íD,Ó_GËàY{JÞ¶ *˾Ø3è¸)ÔFd–u~ª­AªrŸ>\žlO,St¶ßÙúHžšliuá|û‘²A?ºÃø
Ï0Û€û5Yxh¿RIƒ?Ì?®:i9Zñ.N«ŽH™ÙN´:J.Kl¡Tƒ4'“Nˆåù9—´”ÈûV ¾¤ ^уÆþ«ç40ôp; 6´¤örèhY#“
k!QŸ>@Gœu…Çòß™µEÞ›
endobj
-619 0 obj<</Type/Page/Parent 522 0 R/Contents 620 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-620 0 obj<</Filter/FlateDecode/Length 985 >>stream
+610 0 obj<</Type/Page/Parent 513 0 R/Contents 611 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+611 0 obj<</Filter/FlateDecode/Length 985 >>stream
xVMoã6½ûW öÒ¤ˆUR¢õq*ìÄisH±M¼è¡)
Z¢lmôá%'î¯ï )fãfm§‹À
Ì¿w¶z'S
@@ -1344,64 +1308,64 @@ Z¢lmôá%'î¯ï )fãfm§‹À
âå0ôZeîƦÉ7¶GMí®Û­Þ¦6‰Uª±/ìíåRc¡ÓÎH˜¾¸¾Œ ÙùUÀÈÑZD“isŸÖq<çá|vml 9Y`KCEg^Ljc¸“#¸$0ñ4Ž'WLÐ Î/~9Ÿ §ãyœO!1g¾ûN~}Wp‡:!g¼[Ä+«7ñ»?l‚5r¹ëÔŸ<üë0+Äd¤‰¶ û.ߨ"²zPÞÃN÷J¼çÖeõ . ›ê )¸Üœvý‡A‡˜,s¤£¡ðZI"z‘d†'$—q]XŽ»1ÖòÂÙéuÓ—8’Œ.Sy‡aBg§éã>>¯®E=pVò¹ÓÅ?GT-Šª¯¬ÖT…¦1fdŒ¦ÐYà ï@t‡“ðD@lýT[ø(—ßË.µnÒÕ193…ì°+WmÓoPL&§Ó@÷È>UšÁdj³,M‰°ÎÞÂå:ÇuÃêbqÒ•ç¹;–ÄëÙåì_´mhîÓ ÅtM½Ãø¬Þ³Ç|ÖHVY>ÉF"¢òŸÎIV¸Ë2ž;\ø^˜$ø
hz?½MáJmUÙlð¿ô8aˆµcáûmÇCĔ—üj:…,D$¼(ŒñQ‡»BЧùbôûè_Q#ÜFendstream
endobj
-621 0 obj<</Type/Page/Parent 522 0 R/Contents 622 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-622 0 obj<</Filter/FlateDecode/Length 804 >>stream
+612 0 obj<</Type/Page/Parent 513 0 R/Contents 613 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+613 0 obj<</Filter/FlateDecode/Length 804 >>stream
x½VÁNÛ@½ç+戸vHçÐiiËDÁ¨‡RU{¸µ½fwƒ¾¾ob’‚ BÊÎΛy3ófï{¹øx4ЉOQÞs—|Ïu4 Æø€?-)ÙŒ¼‘¼và'/¦aïß< ~0¦0&
endobj
-623 0 obj<</Type/Page/Parent 522 0 R/Contents 624 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-624 0 obj<</Filter/FlateDecode/Length 1020 >>stream
+614 0 obj<</Type/Page/Parent 513 0 R/Contents 615 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+615 0 obj<</Filter/FlateDecode/Length 1020 >>stream
xµVÛrÛ6}×Wì¸/r§b¨K))}èØ­›x&Q\›™ö3ˆ-ÔI d÷ë{ ÑvT硺Œ(r±—³gpßRˆ÷¦#G”nzaR4‚MfS\ðÕ’r÷àÇpD/=OgÏWœÇ½7¿Mh8¤8gïÑlJqFˆ†§}A•H拉LV²Èda©,È®$Uª’Tˆ¤¤_ér)–ëG÷@Vê\¤29%Qdî^YQQo–R'§§ñß9oBs0šDíσq0
f]_ýò×µ4‹Roèú¿"jV„°¼ýçËE<‘X¯Ët…°Þð šÁÙówdÔ?’ÊÜecl½¤LXAª å£•¦Â%Õ.å È*-MZ¢´‡£aØ «
Ü-nO¡Ÿò¤/ƒ[J’«Ë«‹$Y¡«ÃÍ0‘ «EarôÎ<‚ù'Lré²FØéKVC×)Šƒ> ¬$µ®Jý*5e%·+eŸº¸+Ê]tq<èÅ¢´ò­sÒH†Cáæã9Åœ”Hm;gìŽ'Ógmw%ÕP ¶ÐX­1—.ãsÊ•6–×`ŠÂQôgpP g$æ;cþ—«µ¤ô?¾w2ÃÀ¸gȧ„zþy˜”©ÊÂHWÙÖ³‘,†6âÁ²ŽýÀWÚ) ¬kÛ­ÂEÓR'16Î óí"±ä¸¬Qæ“bZ÷Í
ä=#é±8„ÖÛRÛrßñƒ#q›­r¿Ü·}®M0ôF;)…BøÜ®¾îVÂõˆE·Þ
Ô[Jl~GBQŽÜ¾Ä¨*&Þ^©32%åB£4§=R…²J¬ißÕFÉÅxiû9D°-ò‰ÀtÄá$ÁËO[’½5Ûô„KêlÕûÑêXƦ±~qS阣eúµ®1øæõž½Lü?¾wwæ õ·@Òî ¯Mý‰ý¬9§ '8‡Íç8Q¹ÈÍÙÇó3úUnåZ€a~WƒlÜÔÁ3¶LÃù—c½—"[L¦“`Ípľ6‰øÖEÜû½÷/áfêRendstream
endobj
-625 0 obj<</Type/Page/Parent 522 0 R/Contents 626 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-626 0 obj<</Filter/FlateDecode/Length 812 >>stream
+616 0 obj<</Type/Page/Parent 513 0 R/Contents 617 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+617 0 obj<</Filter/FlateDecode/Length 812 >>stream
xUïoÚ0ýÎ_qªö¡•ŠIBH ß -[¥µ£%“ö¡Òd’ d;µü÷;ÂÒ‚4röó»»wÏ/ z»zÐ ^4æ@Çí±øÝ~{ô)Rp]—¹: ß?DÖ0
ÆRhž‰‹èOæÛf}n0Öè2µˆ´!£ìˆ$\óK:.Ϋ$SÞa6Cž`É bkèo²jzó öšÖ•Yà2¿íAÓ Y—¾Mp“¡ 7 ¥€9A§ŽÑf“Š nFUH¡ð¡U ÝöÀ%²)¿bØöj†=ÖfÑ÷q¢’ Åc | Œ²ó6Ý<7íS¦!"F šÒ¦Œ¸‚æs U1SP
K~$ó,^ÒZåï’[GVÈi_\[~{+× Í–K¸©„ýcÔ% ŽÙ‡¤:Ôë\ªÊe¿këŠõêo0Í*He¹ÍgbF6]Öe§ŠýZ[»~³™Ìwe´c´ar½?8o^¼zm[ÍÝð‡å:
ç„'ànEµÀÒè!*É·HÈ7rAÆ¥ŽÃZ§Ø&{ÀÒªfŒq‰ú(Pšžà÷]ÊyUÀøîæ8£tmŸÖm d¦áҩܬ†Žfå8«¬6ngšØ&…Ç2F°÷³µ_²ÏÚÛöŽ*V#¸òˆIæ²4±$£»b)+ȳùJñ­aw}=¸a—½~‡u\{Œû÷ƒ>Üà_Ìe¥‚¯IÚ߬W7C§W3=eÉ~è³0èÒõJ©ùVm·Qã±ñŽ 4žendstream
endobj
-627 0 obj<</Type/Page/Parent 522 0 R/Contents 628 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-628 0 obj<</Filter/FlateDecode/Length 703 >>stream
+618 0 obj<</Type/Page/Parent 513 0 R/Contents 619 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+619 0 obj<</Filter/FlateDecode/Length 703 >>stream
x­T[oÚ0~çWœ·ÒixqœÐ—‰Švcj¡wOH•IÌH µ^4í¿ï8÷uÒ@(Æçä\¾ó}ç±AÁÃ/…ȇ€A2oxăv;"!„q„gJ¤2„,À¿» ^HØ.C@=âï2PÊvºû”7>w€Rà,—Åð°TÏž4;$ ŒP7ò±”Úóôgoþ-ŸaLž6¿û½ÎÖVìºE,Íãr2‘
E–©Ö£´Vïý[~ã拉zÂH¹˜KhA™gI‘JÐFeù|eìá93S0ÏFGú@¾áé·û.ç7ûã™SŒK#E»ëxp xŠ%§RgJ¦ ’Dê:Ør
£æŸW*8^\‰±%P"´„àÄbµyÛÞ¼ý¹áÕ^Þ÷çCH‹¹Àšlš0“Or¦!
ÉséUåm,|Õ¯$dUo|¹š­[½¸óä‹QRa„#W\/pÅ„u:Às°Þv/O»Ð³P ©4|)³´Ú%­¥o+òpd®tæJ.d¾¢÷0
IÄbÝÂئ<ãëÆo>“âendstream
endobj
-629 0 obj<</Type/Page/Parent 522 0 R/Contents 630 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-630 0 obj<</Filter/FlateDecode/Length 527 >>stream
+620 0 obj<</Type/Page/Parent 513 0 R/Contents 621 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+621 0 obj<</Filter/FlateDecode/Length 527 >>stream
xåTMoÛ0 ½çW=¥«’íÚò1mº k»Å»4IA=8R*ÙC¶_?Ú²·´u³Ým¡øH¾÷ÈûŠy Ir3£„ÂéiNRHyŽ¿cü: ë>æ1ɦñs–§Óœ’ø1ÒY9;yS
Èï¶rµøp¶€¥þ®k»ÕÎÃÛ¶
;/£œãó ÇÅp+5”ÝaÂÓ± §£«•â‰Ï3ŽñÓ¢û뢜}œý8-Ëendstream
endobj
-631 0 obj<</Type/Page/Parent 522 0 R/Contents 632 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-632 0 obj<</Filter/FlateDecode/Length 588 >>stream
+622 0 obj<</Type/Page/Parent 513 0 R/Contents 623 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+623 0 obj<</Filter/FlateDecode/Length 588 >>stream
xÕ•Ýn›@…ïýséT…²kº@ï9i-9vÓÞ$‘…a¬ÐKXˆä·ï`Ö?$&­Õ´ReYBÚÝÃ93³=ý8´g™[˜lסgNÿaµY°»8óL÷Ø &˜i?]8÷{ï.=`6ø+z»pé!z³eö=s`2fÂd>„‰”?ªæãÑüÌÿNÇ0Ö3¸CÇúSYâȪtYYĨ ÎȱÊe¦ÒJ•°DPAŠ¨çû*T¥Ùh“¥¶K¶I]{!7׸ÙúÜ…hv~žMŸ¦£fÝÖJTSƒ ¨˜$UÇÉe‡k¸²(Á¶”q¸÷ëxêx·ÖAÜT¾ÍÆ£7Ý"UÉ°J©lA$Ó€
G…†eµZaA^cZ)^W?«ûpÚ nÂÞA—iíVA)ë~'Ä ¥ªrÝÚc Í®”·­¿¯C—Ô–ÀVÃÂû ¸aâ®»Ú¡LóKLÖí LÀr]¢zÂàF·)ä5… Øí®X`paêúâ²Û‡X õ³wßJ[²•îᶟĪ&*XÊG¼={Aö>›™¿äUÃÂ[´ü²Ê„—¢Š¬
™nÈ[h×G÷ý(Uš¥H“Q`YÍ[ƒ&d‡Aª
CTª ²ÉÆ ÛÛùGÜÌâ)}ÂúÀÖtÍß¿ÆÜü?‡ñ ½|¥Of?ÊŽN\WßQÌæ¦ð<} ÷çëó!Œð™c¡àcG›»Ê`Ž»Ùi8–·ƒãøEm;¶é—h#ˆÞ[u¢ ¿÷¥÷ŽçNendstream
endobj
-633 0 obj<</Type/Page/Parent 522 0 R/Contents 634 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-634 0 obj<</Filter/FlateDecode/Length 903 >>stream
+624 0 obj<</Type/Page/Parent 513 0 R/Contents 625 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+625 0 obj<</Filter/FlateDecode/Length 903 >>stream
xµ–ooÚHÆßó)FU_$§xëµMßœÐj \pÛ“šª2ö8¸5»Î®–o³‹IpKH«ÓE <ûÛÙgž™å¶ç€M/B¼
jK„Rˆ¯´eS±#ìt•ÈG€ì—›šèäI©°Ü@-®ÊDl1ªe“ÖÄ?·ö[5Ìa܈ùZŽ>ó˜ã2—ÁªJp…Ýìl°Ü`:ºœ~¾¿~ü´­šIGä)R!;b¾›ÌbÏ}œ¹§3\Ÿ”…Ò§K–â¯O»™v°¿c‚_.üÿ”«Ñu2úEKµ"S ’K±¦ÊÝ6¨ê3èÊsÌgÿõ([µÆH.ãÔŠ<+Rr Õ¤)*µ­YšTw«åù;ãù fãøâòÍå d•B¬í›¤5̨k2˜UëÅ]k/†,жWJ[ÛLä@Ë
2/ÔÉWä 8Ô«BAEH$¾ÒY8Ì÷\Cˆèu²$ÁV@*8GCнZ{2>E͈$òbz^SÈ?ק …@›ÊM¥X%J}2SFkÊÏ ˜¼ÔtJ#áp5šƒÀ·¢^²™5Ï®éo>™õûN„g µ uyQ"¬ž•ø3»à7?‘œ:¸/ üe4 ¨(úpöwß³mƒ´ºùê€aYÐPƒá*)Kä7HiêÅb°3Yç™ÉvòŽææÃ-v]¦žJÄRŠªoqÓ‚I!Í4$Ž»‡h…Ðßï­ÉݬËôÅ{”E¾¹O]"Uã!í…¼ƒù­
ƒaò¾ËÚ„Èø)ì`
â†óöwÓm¹yþ·#° Sv]»-ðO–a^pjÎ\HZÐvÈUDÜùŠúJntãhaöïÚû»à #L›¾uíï¶ß…uƵƵ™·-¥Kv<ÜÕè8¦½|^õ&¯û’çxÛt¢ö–u|—ý>!]±‘§GÂb0=Àï°JoR^/³œ02ÑVh÷uh{-›î¸ Me¦¢§~è³0ˆh˜RàKG¯ǽ¿{ÿí\¨kendstream
endobj
-635 0 obj<</Type/Page/Parent 522 0 R/Contents 636 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-636 0 obj<</Filter/FlateDecode/Length 933 >>stream
+626 0 obj<</Type/Page/Parent 513 0 R/Contents 627 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+627 0 obj<</Filter/FlateDecode/Length 933 >>stream
x¥VßÚ8~ç¯éÊž MBB߶ímµ»{W¸¾”SåuâÛ`ÓØÙ”ÿþf‡Â6ÝV:!Áóã›™o>óeAˆ¯æ1ÌRà»Q„ÎÒ …$›ã÷ßµ€Â$Ù« :˜Í²a8I‚xÈ#
r¼Y^^¥E°.VšÍaB
CXóñru —-!~}±þMoŠÐ§Ñ ­óqø5,ºÓ>Ðôô˜b,õV+x«•­uõ|(Ñ…Z@”&jøADPÄâK#Œ…·%«*¡¶Þ­GÂ4¦RÆ·ÚŠ×P¹üFÔ¢ÅvŒeµ5ÐJ,ζ^l6/€—¬fÜŠÚ
›vXNóJ
eÉÞ–vŒ—R‰ (mÝ &v's©¤•¬‚%S7L±-æÛ3cZ]çP2SN€m™TXk[JŽhÑvUSNiL#òÉ“ô®L¹Ÿ”´FTlÆ•n}Y›‹€""áZYUp/8Fîc¢%õzÕõíÏÕJØÍ…Gã¼N
endobj
-637 0 obj<</Type/Page/Parent 522 0 R/Contents 638 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-638 0 obj<</Filter/FlateDecode/Length 920 >>stream
+628 0 obj<</Type/Page/Parent 513 0 R/Contents 629 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+629 0 obj<</Filter/FlateDecode/Length 920 >>stream
x­VÛrâF}ç+úW,Y, y·ÔVÙN²(Oë”k<j‚˜ÑÎÂߧg$n68û¢¨1ÝÓçôéÓ|ïÅÑ+†ai|ً²$ 0 ésBo…Pú®£$ÌNý&ק#’4¦'RÅiv:Õp&ïnòÞÕÃ
… 8«¹­™Á¸Â‚U¬ÖùßuÑ…qJwäEÿÏ/ÏùèÛ_퉃ü» +ŠJÌÀHoƒÀêj&`]™9hÔYÂôéæÈ
Tá\–&çï8{-k6Ó
@@ -1410,33 +1374,33 @@ Tá\–&çï8{-k6Ó
"«íî%ì†Àçi'ã°g—þ<Ÿ#_¸K`3V mÜ—n܎ǧc/}3'Ä’ŽxF]p”4
W•´ºÞPU«•G? ‡e¼\œÆç2|0ê('ùe=»¥’Ë€gFßCu»ûME:û âw85Rêât=iai=láÚÉe³q3¿Ïzîîø9*¼¤®qF¹À ùG];yЃ‚Dü¾û¦ø…fé<ù‰Ü©§a|FûR¯¶ïDr0îi»q÷ÓóQÀÝ´ß>>ç¯_ž~kOœ2¿Ž´ÊiÙ•põ®¢J”òø’#‡õ¦ò‰§ÍO
endobj
-639 0 obj<</Type/Page/Parent 522 0 R/Contents 640 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-640 0 obj<</Filter/FlateDecode/Length 758 >>stream
+630 0 obj<</Type/Page/Parent 513 0 R/Contents 631 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+631 0 obj<</Filter/FlateDecode/Length 758 >>stream
xÝUMo›@½ûWÌѩ–/cÜ*ç«”:jŒ{Š„,ÉVx×YÀMZõ¿w†…[D=U•jd ¼ÃÌ›·oÞ>Ž°ñr`ê‚@ºÙ̆À X
s¶”Q/i€í¢¨(Ô½’&Wzh”l_qÔ<öFõ¨Ï¥;+ÎëêAiQaô–ã0¼G…Z°@`´þa ‹æ(-IY(²mŸ—PÖiÊËò
<cºDËi÷-lO&g²`6Ãs×7þŠš:™ÃßòBm8÷ÇZdÍÁcu±ÖÔFß6ö÷,I=þÔgÓ D¥cÐħ¿Î£Ñ—ÑoE'-Nendstream
endobj
-641 0 obj<</Type/Page/Parent 522 0 R/Contents 642 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-642 0 obj<</Filter/FlateDecode/Length 659 >>stream
+632 0 obj<</Type/Page/Parent 513 0 R/Contents 633 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+633 0 obj<</Filter/FlateDecode/Length 659 >>stream
xÕUQoÚ0~çWÜc+A›„iš+« ¬Å<iJÙBLcC׿³CR²¶À´ía "“³ï¾ûî»ó}ƒ€_…¶ Ѻa[6¸´k9àø®)þr cèxÿ¾`hߢ/ÜÎsO}Öxó± ĶÀà®O€Å€mXtѵ:Ìñ3î GÓÑ„ÍçÁ@?Øhr= .Ù7<îÁSúx‹z–‹.¡ø[X‡I*S¡$<$i
‘ÈT˜dbr#2É«MPVI´µâOv¹Û4†;’gÊ2FæK® àª?œL5 LÚ˜3ÎÂ5‡DÂíàf6˜²¯Ao<xGí÷MôΑ»Ã÷zŸŽfΈ…Y¯Ãh•dס21ÍÛœßo¹TV‘/Òåìóm¤Ãjžˆ7[ž?ÂBäðéêà ä<Q°Ïe"²&ŒÆSâ;7Kj›% MI!âÖ8¥Î-Ô˜R·Lv<Óû
Â~XÄ?ˆo‹Tžƒs‹³aÀˆ[˜}aQÁö”†­c¹¶LÙíëÞJºu êÎ÷QñTÊíˆ#ÿùËë€6a'ÙRË‘¶îž&Ë ¬V Qz
P)e¤½ ʨažÿ‘ºFܦ¯®„t"ëc5­øG>öÒ-|` JhM„T‹°èÿz<=?~G…=T¡ñ„Ý€õ:Ò|µÂœ]˜_`{m7žG¡äóË:ÜšÓÿPX'ô Tyf†ã‰¼Ï’'’YίœG‡W\ 93¸Nr{–|ÿiŒr2Ÿ•‡¿—?q¨åv»à¶©åëé?íû=¸â;ž
Ô•„ëm›Ñ×"žoö¶<»[Þ)'î^Çs,ÏõñæE׎®Ó€5n?„X8bendstream
endobj
-643 0 obj<</Type/Page/Parent 522 0 R/Contents 644 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-644 0 obj<</Filter/FlateDecode/Length 608 >>stream
+634 0 obj<</Type/Page/Parent 513 0 R/Contents 635 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+635 0 obj<</Filter/FlateDecode/Length 608 >>stream
xÅUïo›0ýž¿â¾µ“
Cø±/Q«nS¤6Òö©&œ„•Ø)6Ͷ¿~g 4Þ˜TiKé*_Þ½{çw~¹ààŸ !/€t3rlƱgûàG!Æ¿%ƒe}@¼1þûÛÁU2zû!ׇd‰XA„Aˆã8¤ç±=¶‰ ‹Ë[¸+Áß$ß0?
endobj
-645 0 obj<</Type/Page/Parent 522 0 R/Contents 646 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-646 0 obj<</Filter/FlateDecode/Length 755 >>stream
+636 0 obj<</Type/Page/Parent 513 0 R/Contents 637 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+637 0 obj<</Filter/FlateDecode/Length 755 >>stream
xÕUMsÚ0½ó+öH:ŵc›\:ù.3 iÁÉ¥t2Š½µXr%9 ýõ]ÙÐØBÒca` +=í¾÷võ£çKo"†!¤EÏu\£Ðñ!ˆ#zöé£ò:pÄ»A8t‚];|ÏuÂ]¡ÿ눓¤÷î"
˜È@ÿä&]Â[U\Ô\(Ô¥-PÒ¯ª`÷«uÓÄ80MÏ’üÙ@ôiãØLÛ„Õ'¦<׊•¾c ÌûSÃ¥€Ãùl ÷2‡/¸!)™Ö\&R„%*¬kCÔÖ±Øq»rª}ŠõÙ]Â[IÜ^ÏÞ<Op)¹0$żo$èFA5¾Ÿt!;ÞLƳdê?ÛBÚ3ž$ñ—¯ÏÔ,Ëj‡JXW*ÁS™!h£ì¿Áà~mH_⎔\6¦ŒeÕ{vuBT² Ն̭1ºQ&Ã}õ<Ùæ…zö¢´Ì¶æ•’‘`³ÇÓó»ñäâúλ;M¦{@w/ÝŒvÿ6-©/J] Q¡8ê=è7/ðG]”£R¤RÁyQ°B± ½æ4.rzýÚzŽz½ö{-Q×ñ¾u|ÓžÝtZ–)™Ö èbü›%þ71ç})hŠQK‘ <ߌÂZçÒ( «AH1ø…J6:4ìo†¿BS)AWꀆ^ÆSfèNÑUš¢Þø"ÞˆæE±ŽF†^sÌŽ¯NŽáÌŽ\Y¢ÒpYÑíc™l×"wôÊK.ˆ'
cÊ„fúadaΓÞçÞo1ž!endstream
endobj
-647 0 obj<</Type/Page/Parent 522 0 R/Contents 648 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-648 0 obj<</Filter/FlateDecode/Length 914 >>stream
+638 0 obj<</Type/Page/Parent 513 0 R/Contents 639 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+639 0 obj<</Filter/FlateDecode/Length 914 >>stream
x•VQ›8~ϯ˜‡>¸@X •úÀ&Ù*ÚmÚ&´÷PV+×8nÁ¦²ÊýúÉ]Ú,«S‰àñ7Ÿ¿ùfœŸ#lü8¸0ñ#›Øà{>qÁ |vñ[qض WW /-x¶Gü‹ áïï¯ãÑÛ›)8Ä[Lî‡ø&¶mˆ™1%˜ÀŠ×°áÕžWð—b+Çñ_¸ÓÇévZn€;•¬ù;Èùžç)¨w-8ìiÞp 
2Ѿ¬øφ«št0HàM¡ÏìXw‘¿çó»À¯«å&^»Ýº×¡~–3AáIuÄÒ8±þõu¹Š'C(ÏYÍvÝÉÎI·0îm”lÍU)…ú%¥ –{äý¿Å>ãýíÓrþǡ/e&j,[-a³X[¬–«›OŽí hq1r@Ú ý
ëo^Éd¬“wºõjT¼n*´Ð!iÆhͨ†1®ÔInt˜6©5ñŽ ̪CYËÇŠ–»ŒÊRr «沠趨AŠZCfRœ°zÃ[›¢õ[@Ðms¾ÍD¦#û´GÑuåZ‡Giš‘cFnwŒ·7—”Y¢ê9ü8ÔȦJy…š 2-°¦ÇdUµI3ñ^øŒ‘mƒÐª¢‘T¤õ®<29+ÿ"1nÍù“ùb‹Ù5pÁ´Rx2M ìR¦´¦0‡FiA÷î‰àvÀy!Ÿ·‰1”óŽ
@@ -1446,8 +1410,8 @@ Eê%FAÙ.ü¡¤Ji‰“1¼íR®hÚ%¼éce¬[.ŸõÂió|›­3hžÚ]q3`§M#2&S~ÚžŒõg@‰h=C¦·æÝ“
ìé¿×îK¾x$ðCœÁˆzj„E<ú2úra¡endstream
endobj
-649 0 obj<</Type/Page/Parent 522 0 R/Contents 650 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-650 0 obj<</Filter/FlateDecode/Length 1362 >>stream
+640 0 obj<</Type/Page/Parent 513 0 R/Contents 641 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+641 0 obj<</Filter/FlateDecode/Length 1362 >>stream
x•VÛrÛ6|÷Wœ§FN(V²e]<ÓÌ(LÒz_*Ñ“‡(0™ŒIBÀ¨úûîE™fÜN;u98—Ý= > i€×&'t:&Y ž…SM'x‚?£hí˜ÍÂQ÷ûwñѯg4Q¼FªñoBšÁ€bÙ›…“ð$¤£–:?Ž¿#|DÃaÞ?™ ¼õß.i¡£TäA$iÙQd9z@ý“1ÊrýBK’ºØTN‘UÖfº¤µ£O–~£«ÞÍ—¯³0ž} êƒ0 æI²êE2ˆìê˜_Ý´ç´8…¸O ¬ŽÉ·4¯\ªJ—IáT€ %B¹ÔS(R$¬UÆ­zœ¦ý#ò “Ç¢ó}ááixÂóŽ!eû˜o³ÓäuIßuVfå=¡%Jt!²Ò¿•y†i›å9é$"Ïw$œSÅÆ‘Ó$SQÞ+Êœ¥ jnµIH”I;‘Ô¥3:Ï•¡Bì:}µ®¬âLÕ&ÈD‰Ú¨2áv@Q÷™ufNœÃw6¤8ÍlÝ“È­&-eeh«Ô·¶vÊl…IlØ™2:‡f€oœjÕchòUï…|ØY*óC™›ýHKå@Ñ« –A§a䈉ý
9L‚!‘z»^õ P€šö ¸ ß•ƒ¯ùfÈLž·¨F_-Òö¡åNñ˜õÒÌS èùDÕÙYô ‹ X+O•l§Rs nÈë§:HÞB‘çt
\úÄú >ÛTYæ2×÷¬ Ý–Áª—•2K '‘¨d+™¢‚h¬,/¯Z€Yu‘AuÉKö?h½Rî³¾×åRþÃêmÚŸyŽƒÒyjoÀÄpì—ó'öµ@õŸ˜í Ûlo#‹Íq
@@ -1455,26 +1419,26 @@ x•VÛrÛ6|÷Wœ§FN(V²e]<ÓÌ(LÒz_*Ñ“‡(0™ŒIBÀ¨úûîE™fÜN;u98—Ý= > i€×&'t:&Y Â
èºY2LÜ|Óõ¢óæÔðÎ/ýÞÔðäÉO¬ýÓQcjÓ°«jUqo_ Çüäæ%×DùöÞ’hY±!r•[µ…¾Ô¾ÞtÿÈ;œLÃñlFãñ
'ã)ÆÀïg3>ö!>úóèo×Ü«:endstream
endobj
-651 0 obj<</Type/Page/Parent 522 0 R/Contents 652 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-652 0 obj<</Filter/FlateDecode/Length 659 >>stream
+642 0 obj<</Type/Page/Parent 513 0 R/Contents 643 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+643 0 obj<</Filter/FlateDecode/Length 659 >>stream
x•moÚ0Çßó)î%•f7NBöÆZUjÓ­dê&!M^0#«±['òíwNš–nÈ%àóïþ÷àËÓ€‡ƒØ‡ ‚|3ð¨‘Ò„IŒÏ>~€U³øŒÆÿ.L³ÁùEŒA¶BV”Ä-9žY>œÀüjE \AšÁ\äµ)ª=àŸ‹a)Ìno~Z“²2u^ÕF,Î(dk±ŽŽõ
ª5ú×fóñ,û3`4 | ~L¼gË¡Û¢,´"iJæõ¯I]­Y÷àw¥Ôî&Q/½Ûê=§Ÿn“óŸ
ÊUÉý‡F®§fcgMD€úˆ¨1…À”`€Jïðî„äU±˜™Ss‡7Ì„U}~1¶é%ú¶âÇ4¡ˆ½R’–NËWó—j`¢ÞŒÑü›B¦ävÇ6F¯e$~ÔúIk)m [rWglÂÚT`Nñˆ×trhq¯\ºˆp
endobj
-653 0 obj<</Type/Page/Parent 522 0 R/Contents 654 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-654 0 obj<</Filter/FlateDecode/Length 553 >>stream
+644 0 obj<</Type/Page/Parent 513 0 R/Contents 645 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+645 0 obj<</Filter/FlateDecode/Length 553 >>stream
x½UÛnÚ@}ç+æÑ‘X×ëËÚô¥22 K\Zl”$Ë…%qklâµÓôï;kLJb ­‚BÂÌΙ3s³
¾)Ø: VÛŽ¦jÀ ¦20¿ëø)8lê€Å,|<0lGÕO(ÕÛ~Øù4d@)„¬ÎÂ5`eMƒp¥,•iYž‘*K*¾'–77áL2›$äJ¨ÈáZ %Ñž¨ETUÝŸ;€“ãƒK¥_%iI’ Öù6N²K¨¢AÕµ=b¨)éÖˆUña­ôTl[…[ž¦äg–ÿÊ`î{ÁKª]ö§¸2‰€DõÄUyŸIùã´â]ˆì⢄|<)ïyßëB^
¬Ñà,‚Á<ò§ÃYD¡.îÆù]ž¡øb—g‚7“Å94²Ý9ž}=¨/Ä~ÖQÛgÕ=dñ–~9/EváúÓ¨&‰=F®7ñ§gq¾à«¡=¡—åNÔFÔv
šg‹ü;ÙÑb„gq®HÖÚ9«GË—p']óAFóÙâkô¬Hãóã½Z—ú ß”ä/]é¤aKÏ
ÿlk}]ý ­¿tœ&¸‚Þá!wì»ÁU<ä4+…âÕÃz=`ÌnîwÒwÁã<Íw¸`T%k.[%‡³ÄÖz—÷·i›ªÍ¼ps³Z×AØùÖù[ÞË_endstream
endobj
-655 0 obj<</Type/Page/Parent 522 0 R/Contents 656 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-656 0 obj<</Filter/FlateDecode/Length 324 >>stream
+646 0 obj<</Type/Page/Parent 513 0 R/Contents 647 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F5 7 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+647 0 obj<</Filter/FlateDecode/Length 324 >>stream
x½•_KÃ0Åßû)îã|hL³4I}‘¬«£¸­µI>Ù2P÷ÏÉÔïu›ø0ú „6B8çÞròD@qE ôÌ×%8#¸’¸eøï,ƒ ®ïbˆ"°Kt%Á.
endobj
-657 0 obj<</Type/Page/Parent 522 0 R/Contents 658 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
-658 0 obj<</Filter/FlateDecode/Length 1454 >>stream
+648 0 obj<</Type/Page/Parent 513 0 R/Contents 649 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
+649 0 obj<</Filter/FlateDecode/Length 1454 >>stream
x­WMsÛ6½ûWìä%Ó’¬Zv{Šó1õ!‰Ó(mžÑ€ ("! 
‚1îÈÑ«Jt^YšŒ3ú$š\Ð¥Õ­×íŠ.Z´¢vÏ_ƒÉ<Ú8<ž!€E1ÂK“Œ^æÎ[!}|lF“Izl:ÏNø±E¥¨ëmgœ"S’¯´£ÂȾQ­'üö†:knt¡È™F‘n^U8jq‚zêðD
«ì[éµA`ÚoH´!D#ìL‡“ã\¡œ´:Wð»ªÈJ:@*ë…n©TÂ÷V…{é¶0kG²ÖÕà-{,÷YÊ}šíU
@@ -1487,8 +1451,8 @@ d)öÍ
°~Ä.„¡Á0Ì]Ø|…~ …- :©5À°PcÐR8l÷½{ùeyùÇÅûÅòõù§å‡Ë7ïYJ—*ÁNÏ"ØY𬊘¸«A² @$¸º­0éÂn&À&q#tZ>ìÚ¸ýtÞXö"¶Û79l\!Ö â©têV*U`Ï@²ÄZƒ8þEL¸„ïзwøô9
±0¶[ÿQP¨Q¾2ˆuPDU‰´1Å Øv§å7dÖw”oÐ]Jö løžð%±ÓÙ°‰Ïâ&vô¡Èº/`%,!Û¨èùÑý8ão„QÜã
endobj
-659 0 obj<</Type/Page/Parent 522 0 R/Contents 660 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-660 0 obj<</Filter/FlateDecode/Length 1640 >>stream
+650 0 obj<</Type/Page/Parent 513 0 R/Contents 651 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 6 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+651 0 obj<</Filter/FlateDecode/Length 1640 >>stream
xWÛnÛF}÷W òÙ°dIQ$')ZøZ¨õ%•&„¹²Ø»
—´âù÷ž™Ý•d9¶¡½$Ïœ9så×­µñÓ¡A—^õ))¶G[{§mzC£)nô÷ñKJíV»Ý¦QÒ ð¯Ê
=®ÈUª¬ø÷w´·C‹™6TÍ4ýc'þ–NÉÍ­Í3sC;{Û£¶ÚÔì´[û
@@ -1501,31 +1465,36 @@ I†8{ééP|ù]Ì1‘h'3fé«&¶¥öP«Ò¾††;BóÃsÄÏU¶DÑ ,÷½kœ]ý)3oï´<nˆºs›ÜðªEÃ)Ì.§¶A
µÅ£3œ‡ ÏØRÍBh²«ò”6j)¸¹²ÆÎ,ëqðfM&_ÇkE®n°±ÜØ÷
­Öñ°'#Ï΄ûCË\ÚÜOqÇ×%VM,ôü…ÀKýƒðj|‡'$r’/{§ûa¢wû­þ›7Ô ü®}up~xÀrëÜb+rô{¥â}3>Û´ù«ºq4SsþÁ1]©b¢HÀBùëĨܱl½A¯5èïûÙïñÑÉh믭ÿ‚¸¯endstream
endobj
-661 0 obj<</Type/Page/Parent 522 0 R/Contents 662 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
-662 0 obj<</Filter/FlateDecode/Length 1508 >>stream
-x¥WïoGýî¿b¾™¤æ ˜
-»z' <ù"³’¶KÒdZIdVÎUÒ‘ ²üÝÎg -7RÓ›7Ô™½
-s'¯ß“09 Cà¡È–ÊÜ‘]Ð ××fa‹•(•5!à‡ÍN?éqÀ¿SKs°¯´F D ¼úÏ
-‰™²E¹´wÖí)‚ÀPæ:‡@
-WÆa‚4¯¾Ñ¬AÓÑèf8¦Ù p>Ê¢¿4ûÉ€= ³1ëôúžÖ“ãî\à!ÕX~ûQ¦ñs3q9Cm|¢Ô2>7ÁT®õýd-MLðRië3BYÌÙT.
-é–Oül›AÒ¾|PÌ¢ÇÌ)6Jh ³ 6BiÁÞƒI'›Îaôù©wA¤ó{?¨µ‹¹µµÏø¬¡×\þ#}†¢@R,iÖø9 Âç²kS­ÂøkÍCSÞˆQâˆÝè÷|M™LW¹</ÖÙgÖ¹dÉ(÷†².fœ>ò\?– c®þ¢®$6°ðöˆ¾öûõ{—Ý3YöM^»6“tS׫µwÊaq´`ŽO >Ü<Gk¸OukuŸOùc¶ž¸sÙÀÁÞîž„n&ôVëƒô²(øMk‚|sƒb_–Z­”ýåqA·è2îçNÜÏÃ×äMü]€w=JÈóÂè÷£‰ŸÔé[É€='¼NQn´QÂCw%"‰"§½½úÆÊÁþѺöTœ>Êm„1•h0ª÷kVÐFh•ï
-†\·¾.‚º„[¿Pk›Œ—IˆàãÊšå= #¥D<‰ ,ÌÈ£ß/´¸‹ý
-;:¬å#ÑÀåÊ…“îŒÉœ5æˆ$èfz=N¯¦ŸÇ“ôzô×çÉMz=ßâô+ª¬¬Â–àkà€fô™w=k‹ò™1 O¸›X¶1]B^·ÛpúAW?/[Ëw©®Mv¿Ïødñ õ,Ž__âê°žª.F)Ù"ù]>ùhH‡7ె“ ˆŠŸ5Êeåü9©xŽ …râÀÖ÷Âà–^@7<?_[©5³ %ñ™µ;­Èt¸E¼@ké<‚xX}­:®>×gñºZ½õÕCÅ×ÓÃñÅä)ÓŸ†¡µŒiîĹƒ÷êéa,0¹ÆçÈU™w­XK¼!öÏv6уIâ8Q6T $Z–oZŒ‡t:âká
-endobj
-663 0 obj<</Type/Page/Parent 522 0 R/Contents 664 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
-664 0 obj<</Filter/FlateDecode/Length 1692 >>stream
-x¥X]O9}çWømƒT†$¥Iè„Í© ,DZU›UäÌ8‰Û{j{ é¯ßsmOfÈJ…ö2“ûqî½çÜË÷£ëâ ûìý€¥ÅÑåôètÒeçlºÄƒÁ?d¬›t»]6M;™ÿ7] f…y†QæRXö$ÝšqŸ1|Ãîno?Ïon§×“/óë›Éíüêbzq<ýzÔe'½n2‚ÙN°Å˜u¦J]e`eÖIµr\*‘1 cÏ 5oÏŽ“h°ßKdpû^2‡Ó5W+Á”vr)Sî¤V e¹`Ò2¢Ï·p¶ØÐW˜"CåØ£äˆh2¾ß íï•°îw¡°BeoÜ’Í8×VÜ©œ0³Îìø€éh‡-xú9âî–ÒX—0öI?ùXyí”iÊOÚ&',ÙÒè¢m)ë¥
-Œù(ЈÔ`T,ä_T¹“%^Y[Lµi>Œ£hƒµ&…SùWÖí¥JA¶õ
-PãN¬´!2Ú
-_#È^Ç¥”z(Ä<×Oì‘çUìw/®~T Ü%7^P(²œC\î'7íì÷Ö‡·Åól¬±
-~q¤(ÙIEeñËÚ¯øÜ×€‹¨7Xn½¨vž…¬×zÔ©#²éÁ~yA¿žŽˆc—9_a¥€”±ƒ¦3±ô++=¶k/2DU³P‰·–2î¢Gâ<€¥ªbA-´d˜/?º˜*zð,O¿y‡µü-€Na;|ÿ0¤Û%¿Yf:Ûøâô<ƒ— »MIœO â’Øç{¤{#pvÆfŠ¿Ðõ+éíîC(h„—j …¶Ð³š|¯wBÕñ,´™ûU·R$p5©„ªŠ0°Ò/ÄôîPÝEåüiòzB*ï€L¶­ü¹õ³½Á‚ºÄž2§ž®T½ãã“×#0ëp,äZf^–hBºÞcSÓPj Ó|Ž6àÅóï“9ŸL’0bYª-P tnÆM¥±G¯ãÒ|Ù¸']Sâ͈‘‹ºåp:‰Ð 0{œ8Ü­%ö"¼âebÏk”´È®èm§nÜx<ÆÔRhKUÂâBî
-endobj
-665 0 obj<</Type/Page/Parent 522 0 R/Contents 666 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
-666 0 obj<</Filter/FlateDecode/Length 304 >>stream
-x5K‚0…÷üŠ³ÄDk‹ØâRQ'.æ•avlŠt‚Å)ÕÄùõsñ‘¦7M{î×sÏo Ài ¨3‰òpÆ!åŒjœ(ªm§Q«,˜nc¬´2QÈ*žsde˜5½ùÓ0=´ñvÈÃ"Žè½3ö€VÛƒo`,¾ßvéûzƒºsÇ~LúýSYì¯^÷èê;D—ggüu”ý1c9+Ý—Îœ|çÆ Z–á7rUø—¢=ëž ]Ómù`¢X"ðDä‘T¸ ’‡@Ì9›ó¢Û_Ë×Õk}ÑmwÒ®ÇËÙTz蘕0¹X`¢HMvg1CÚö wk¶BÚm=Ò¢l†hœŠÃSB;K o:;Àb3%rO ©†«M|ÿðwEendstream
-endobj
-667 0 obj<</Type/Page/Parent 522 0 R/Contents 668 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-668 0 obj<</Filter/FlateDecode/Length 1223 >>stream
+652 0 obj<</Type/Page/Parent 513 0 R/Contents 653 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
+653 0 obj<</Filter/FlateDecode/Length 1508 >>stream
+x¥WïoGýî¿b>Õ$5gÀpÔTJˆ‰Ü*àâ“¢ªTÑr·˜M–[²{gìþõ}³»‡11‘"ç—"Î7óæÍ›7÷£6µð»Mýõ([µ’õzgø·;èãßþZI‹ð ÕþþÁ»ôètÔ¥v›Òbõ}JsBœV‹Ò¬1)ô=¦hær!*]Ò{y«2IM.I ´+•9mT¹¤µUEI_ÌÜ‘*¨\ÊøÉ·JV’Ò÷ïšàS»QNžøç!Ú‹ôËQ‹ší³¤ƒä [92óR¨ÁÖ¬ÂI‹'_dVÒf)CšL+‰ÌʹJ:ôA–˜ù¬¡å­Ôôæ uf/Àp¸2ál§£sj£R.¹yÖMºœ·ÝJº —¢¸‘—ï醰C‘-UqCfAW\!
+IàDY‰‰2¶\šSí)‚ÀPæ:‡@
+¾¦ŠLW¹<µëì³ë\²d”;CY3Ny®K1Wÿ ‹¨+ ‡€ ,¼ý²¡¯ývýÞewL–}“—®É¤Ãþ\ÄÔõbµòF9ì ŽÌñ©Á‡›çh ÷É¡n­±ŽBàãá1ÌÖ7.8ø ãëí“ÐÍ„Þj½—^ZËoš"èÁÁ7oaPìËR«•*`y\Ï-:Û¹·óð5ù_à]ò¼°ú½Åhâ'uúV2`Ï ¯S”Ý*á¡»‘„ÍigD/îX9Ø?ZמŠãÀG¹Ž0¦ Fõ~Í
+ºZå; ‚!×­o‡‹ .áÚ/ÔÚ&ã]"ø¸±°fyOÄè@)‘Aâ ³†
+^Œ ãÍß,àÆÜØ([™µsÈòOœŽñj÷Iïüß²b×o?¾{Ëß©¤†ü¬£•ÊýÝÕ¬¶ÙoÁ
+Ÿóí¤Ûï&ýÞ \^½W é"=úëè{¦_êendstream
+endobj
+654 0 obj<</Type/Page/Parent 513 0 R/Contents 655 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
+655 0 obj<</Filter/FlateDecode/Length 1693 >>stream
+x¥X]oÛ6}ϯàÓæ
+Ëž¤[3®7†oØÃÝííçùÍíôzòe~}3¹_]L/Ž§_ºì¤×MF0Û ¶³ÎT©« ¬Ì:©VŽK%2&a칡æíÙq ö{É€ Žcx×Kæaºæj%˜ÒN.eÊÔŠá£,LZ&Bô¹àÎúÊ
+nìšç9`Lµ1"uù&»ä@¤Ú
+è$aT–XŽ=Øš¢Ã…3\ÙB:ª Ç<‚/ª-ѯ¥Ñ)zïumZÐDRíQK ²Ê5Ϩ¦W—{~+3µ.ºÕåÐ,Ô¦0ùèdDz
+m·ò®Eщs­K®Kt7’ö…ÅK§¡²Iꂬ.+•ƒnù¡nÌHÓ+D›þ¼°+â<ÿeo²®.MÔ<Æeý+-ÍEøf"•–øù>­04,4”Ldv$†˜µO?B<臈Ès(²´ §LÔtdPLˆ lÊt½‡"‡Å6±ÈO{ÚàŽ@íOÈGОD¹b¢€ tÒ/EÊ+‹Z9Vjk%ÆR!‘ŒŠ…ü‹*w²Ä !k‹©6͇qmP¢vÀ¤pÊ!ÿʺ½T 2ȶ£^j܉•6¤âAC
+x–M,±,;c@¥Ùóî…Ý";ät7f<…ld”-‚!ØcNµXëEÜ‚
+LXŒè•Ð’˜<ϬÔÐ*ôa»¥=[ákÙ블R…˜çú‰=ò¼ŠýîÅÕ
+„»äÆ
+E–sˆËýä¦ýÞúð¶xž­ƒ5–@Á/ŽE ;©¨,~YûŸûpõË­Õγ‚õZ:uDö#=Ø//è×Óqì2ç+ ¡"vÐt&–~e¥ÇvíE†¨
+c*ñÖrBÆ]ôHœ°TU,¨…– óåGSEžåé7ï°–¿Ð)l‡ï†t»ä7ËLg_œžgð’a·)‰ó D\û|”coîÃÎØìOñÚ£~&½ÝýƒbðR¡ÀzVÓƒâõN¨:ž…6s¿êVŠ®&•PUVú…˜¾Àª»¨œ?M^OB¥óɶ•ÿnýlo° .q£§Ì©§+UïøøäõÌ:K¹–™—%š®÷ØÔ4”È4…£xñüûdÅ'“$ŒX–j (›qSiìÑë¸4_¶îI×”x3bä¢n9œNâ4Ì'wk‰½¯x™Øó%-²+z[EÁ©7ñ0¥ÚR•°¸Ð‡;
+°°ï¯+£C1ÊŒ?
+Œàߘ r}TP›(+€@ˆ…Îp3#Gh#®3 ù<iAƒ§ƒ°Q¾xÖìÞúáöo£HѽÝäC÷œ âþï\^°+”3×kË~¯0’Þwo8JçØù‡ø. \‰g #Ž•¸¾b¿°q¸¡Ç<Ô<·v½+0gód8…Ce0 ë¿Mþ<úMšbendstream
+endobj
+656 0 obj<</Type/Page/Parent 513 0 R/Contents 657 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
+657 0 obj<</Filter/FlateDecode/Length 304 >>stream
+x5ËnÂ0E÷ùŠ»ª@"Æi– bÑ—šî² ‰C\‡Ú‰~}'<dydÙgŽgæ7à´d„Y‚êpÆ‘$3Šq*)F´­B,ó`º‰!òf`“T"¯A<çÈ«QÞ*8ý§ ”ö­²(Fe1á¼ÕfN™½o¡ ¾ß¶Ùûj¦·÷G7!~÷à¯"ƒÝÅ+‡¾¹ITu²Ú_ÆùOÀŠ‹¨‚Q­\eõÑ÷v²£Š$üj®K_â\v'åØ5ÝT÷BÉR‡¢ˆ‰ÞñÌÙ3Ÿ#ºþñµx].°RgÕõGe^NºVCF(dÊ’ù¡$šÊœÅ Y[š½Ú®ð„¬ÓÊxdeÕ3 f>hžæ³5Ôþ¡ôº7ƒ*–1“IJµ“&‘ÃÕ:>ƒv8endstream
+endobj
+658 0 obj<</Type/Page/Parent 513 0 R/Contents 659 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+659 0 obj<</Filter/FlateDecode/Length 1223 >>stream
xVmOë6þί8â˸7´¥kË•øPv/S¥ 6èÝ>À„ÜÄi½%v°¤ýø=ÇNhZÆ„Æ‹š¸¶Ï9Ï˱úÔÃoŸÆ:QZô¼~?JF4œŒñ<À¿•”\ÌN.ÏhУyŽ%£ñ„æaz#éÑ+Qyi©ßOèV” A¿Ï®ni¦1¨Eá>Ìÿ ëûã¸þãé0`‡#,À’0ùR¨Â¬¥s‡Ø«™;#̯$¥µµRû&Hj2¹NReœ“üGž'‰J,T¡ü3yC5¾_ZSWŽLC9iˆ' On%P¢ Ô”¥Ñ½Gû§1?-Jé*‘céJú‹Ùõ-ñ(pY*ç­ðÊh:À3Eͯ q®XQŠ‚*a1ÑqÏÚ‹'R =:k+&C®šÆãáöËÍo_n~™ÞLnÆÏ)Òø‹ùõM3ôðÓìvN´é÷&èn”v9|cu´Íîå󜦟?ßÜ}šO|+0Ox™ßy8'U=ˆ,³ô7åÙ ì{ycç΢íã9y¥—o&Ü‚³]ÂOçd˜÷÷î»7ÜžÝåïÿ䲫ܠÛ)9UV…$ù$Â'd(h-
•Q}à=jú}Ü- ³Å[`w7;§þÙ é&ð× ó|ÊUÿK’3¬#×ì®à mˆáWŽ2™+-3R:¸@´*Ä;Û­€ ŽÉ•‹Œ„sj = ^#ê‡-Pïá·‡ Mù­E½1¶‡A36j0i#ÅàU½™íø.ºÑ›¥Dl›Ð×
ös^X_WǤ9‹*
@@ -1536,20 +1505,14 @@ L‘Iq
Œl˜u•LU®Òný¬1¾¤ÄüâÕ¡ÓÃJaÿýH/3èÂPecÏk ib‚o²“OÛýbxG9Eãy‘z™%tÍ0Å{UsD)²ã†ÙÐrC›Ùz¶à}v
à[Ô«ÛÓÉVú…{O›Ò* å{Ñû=*•®½tMÿšl¯‹ýÑ86å÷\J‡ãa2Mp¥Åmi4á0_æ¿ü[ueendstream
endobj
-669 0 obj<</Type/Page/Parent 522 0 R/Contents 670 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-670 0 obj<</Filter/FlateDecode/Length 1630 >>stream
-xWßO"I~÷¯¨·Aƒèê˜Ûœ‡¹³÷`Bš™zé»{`ùïï«îAÉìær1A`ºëÇW_}U¼Œhˆ¿ÝŒéòšòêä·ùÉÅÃi¾Â“ë›Ï4/h8ñMÞ»Û¨:°£Ñx@ó ÓsÛJ›5Ínÿ¤ÙÞ®Nçߣ‰ÑM2q~y5ÃHwFšqÞ8ö¤ XÈ ïäv–î]ÑhÔÞß ®åÞ“a²«xx©×köjg—%Wžv:l¨VÞKÒžtÈðRÕxÆ&¨ ­‘«™ofºÍsöžrk‚³¥\ÂE™rL{ÛHC:]¦˜µTˆÎ++F3Z*¯}Ÿ”)à6Ê“±b/ç:ˆ·éœnï½
-8wOÓùäŸ9 çøGè Y|8ä7H‹õ
-uì+›>5Ú„Ëqÿ¢E¬µŠ(Gg…­”6ýŽÕE:!qõcD·wwOÏpøûíôþqBgâM¢9Mù7alÁ9*ÛFX à¤éóã#½ôbxj< ^—¥ÝI=¬ üCþI%<‡ hj µ-oÈ3a‘4ã!ƒ¶—´ôºjÊ  GŠ§0AÊC;Hx 0Ä
-’¬*½SŠÖ¥]ª²`æ£ì¡USy»ä:
-®-œp,®¡£ ºˆZ $ÚVòÜæäC³ZýÊlªù…Ä+Å%Ñ0´½)”C¾“-@ÛA ¬AÚµ•wL-U蕹Žþ¤ïØx(Ù@îp¥°& jwÓmÌ[£Êˆi&u®=¨€Vàƒ2K~0"juåè;Þû—Ón>ßú
-Üc¡d
-ú¼Ûè|Óɪu}hënpG5Œ‚,¨Á#0âƒÐˆðU¶hJN“ѱò ¦H<œ©¥Ýr³@O³[©<Ê02K Õ -Ë7à4ÕçÈWª‘®¢&‘ ¯Àø0-4ª‘vi–‰”XkÕ0ŒQuBŠñˆ^È„xk˜ÂÁ˜™|î`à&ÜÄ$)
-½Z±´vg7…¡“l¥€u„FǃÕ¼½ŸõeK”0„_êBi>kÎg³Gƒá#IÒ’qXrÈSárÚv'tN—PsÇo †¢ìžÎ¥“ '-Yº8ŽéÚ–:ß‹¦¶µOô‹‹cÐ(›Qh©(zÒý·ï’IÙ†KtO&í›s…@”}mmq˜Œ"–¤¶VÂ
- ›cWøiŒÄe&)ÀNÃ?ˆ5úXšÕ¨ò}m\•ÐºÈde€¢¤Ù—üdŸ,.>X=ñî AarÐÉ"ÃHžÌf‹ûÉôëä>v¥YÖÇV!íÂ8…½·m+r-]Ä=-æ×ò«]¥½m”ôwþtܦé˜&âû¾ž‹Pì[A}ò(ÝùqÖ®UQ 
-endobj
-671 0 obj<</Type/Page/Parent 522 0 R/Contents 672 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
-672 0 obj<</Filter/FlateDecode/Length 1678 >>stream
+660 0 obj<</Type/Page/Parent 513 0 R/Contents 661 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+661 0 obj<</Filter/FlateDecode/Length 1633 >>stream
+xW]O*I}÷WÔÛ¨AtõÞd_\Åìͺ˜]0wLH3S@_gºÇº%ãÍfc‚Àt×Ç©S§Š×£! ð7¤ë]\Q^ý6;:¿ÿJ£Í–xruý…f úƒ¾Éoתìh8êÓlÍôTç¶ÒfEÓ›?iºó«“ÙhbxLœ]\öG0rŒ;Ã>M9oœ;Ò†,d†·r;K÷.i8lï®ûWrïÑ0Ùe<¼Ð«û@µ³‹’+O[ÖT+ï‹iO:dx©j<cTÐÖÈÕÌ·N³>Ýä9{O¹5ÁÙR.ጢL9¦m$Š /RÌÎÚ@*Dç•£-”×¾GÊðGkåÉX±—sÄÛdF7·^
+ÒÔ4Új[*ÞgÂ*iÎ}mG.,hêuÕ”AŽ”Oa‚¤ûöð`ˆ€ÑiÕøp*aúšs½Aú4±®‚Äì é¸mb#C¨:~.Ïz©5$YUz+¦­J»Pe'ÀÌGDë¦òvÉv\[8á<X]CWA|´()º&H´­å¹Íɇf¹ü™ÙTós‰WŠK¢iS(‡|Ç 6„6Xƒ´×j#ï˜ZªÐ sýI²ñP ²†üáJaMÔî¦Û˜×F•ÓLê]{P­À{¥–ü`DÔ/êÌÁ%š~»óÏ'Ý|¾3ô"ÅyJ>[«×FD0"†8cÁ¦ªZ¨-P>d`¨„Àƒsý¼#ˆ¸ÇB7Èôz»Öùº“UëzßÖÝàjZPƒG`Ä{á!¬lÑ”œ&¥cå&L•x8S »á,fžf·Ty”ed–*@ªZ–¯Áiª-ΑoT#]E%L"^‚9ðaZhT#íÒ,)°Ö,ªa£#ê0„ã½ ñV0…ƒ13ùÜ À4ÀM¸‰ÉR
+ ›cwø4Fâr“”
+endobj
+662 0 obj<</Type/Page/Parent 513 0 R/Contents 663 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R/Fc 12 0 R>>/XObject<<>>>>>>endobj
+663 0 obj<</Filter/FlateDecode/Length 1678 >>stream
xVÑnÛ8|ÏWì›’ÀVlÇ°“¾¥Ms íÝÕ>ô”DÙ¬)RGRqü÷7KÊNêÅ¡-Ú†Ôrwvfvÿ=Ó¿Æ4ŸÐåŒÊæd”h6åš^Íñï þ8Iu<˜Î®ñß7Æ8˜¾u0›þéýòäânJã1-k<>»šÓ²"<<Ѳ<ý¶–†v¶£ÌË‘0d‹ï² ôpZ
­•Y‘Íc×V"ÈGQ–¶3ááŒÂZ’2A:#4U2¥= ä.VB꼬rú(Ê5•kaVˆp¶ü~2¢áøi.«ÓµðTH¼ßˆ
l Ú?8«µX­d5 o ÷qK<YU‘¥¤ÒšJeG¾ÏšÆVªV²ÂQÓZ#MðÈV˜êèíCœ'eµ\§0;’ÏÁ ºùð mø·SN6š eè¸\ù`QíéV.NÒ§Û›?ÉK÷$ÝÃYÞ?7™¡S(õN'½ÐVÒZ<IZI#*ñwxô²|¬¤/NSªˆrôCg;¤(SùZÛ-'š°ç\aTÛqÖì_Þƒ¼\K/©²¤­Ýt-è W´¸¿—/î®i V0=†—Ó”ðx’OrZ '4p¤ÚÙ†þþrÿWöšQÃÉ<Ÿqà–­#­Sp;
@@ -1564,8 +1527,8 @@ RdQž{L¼s¾×ð‚ª ‘÷ŽÊš É¥%Í=†ò.:¾B"^‚(< î3vWBwm‰ÊS÷»§G,+îÃRç%ˇWdÀò3ÔÁ
ï«‚g$—Ìd¼À®«ë‡³]» „uT€ö¸§J•:h½È*ivX6ÑRÞàz\¸_)ÜmmË KÁáš«üÑ@øý¾ó
’ýZ3œ\åãkNûE»Í4§Ob½'ðpkZZ€Fi›‰—Æð·¶…"ãjõ#ÐX–&¼KŸÆž³ë‚K`VSð²*ˆ‹ê˜³<Çâdù ˆ§Œ»%7 v7›¶*$öYò*@˜K¶B¶ìÈtàaL„—Y‘æ Ö<^¤Ø·3ßÂa{c·Ø$V2c׉B²…ä-A›(¸‹»«ž^ãùU>»¾¦Ùe\\ñÈûºEþš5áé·ãˆ3îoç£kÆá×+ãt>Íç³+옸:q„Ë“¿Nþëç-endstream
endobj
-673 0 obj<</Type/Page/Parent 522 0 R/Contents 674 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-674 0 obj<</Filter/FlateDecode/Length 1820 >>stream
+664 0 obj<</Type/Page/Parent 513 0 R/Contents 665 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+665 0 obj<</Filter/FlateDecode/Length 1820 >>stream
x}W]oÛ8|ϯØ7'…­ú+vronÓ;hp=Ô@_ ´DÙ¬%RGRv|¿þfIú£jîдIj‘»;;;;úûfDCüÑ|L“åõÍ0ÒýlŽ§üï­¤2|0½¿ÏÞú`2™gÓ·>=>þzâÃòæýï4šÒ²DôÙ~(‘‡CZæ·£q6ÍÆ}]¼Ð³öÒ–"—wË84¥Ñ(Œç8t»Ü*G•ÜËŠzæ ]üVÒ^XeZG[¡‹J’ó¶Í}k¥ë‡7Ò¿wÒ“5­WZ:2ÿoÜõ“„£ÔX³WàK›v]©œóÒ`4ÉÆ_òËh‰gDÓàán¬ÄQZªÅ‘”V^‰Jýƒ¨—œyõÈÔÐ×
çdÁ¿ˆªÂ£©Þsr}’2TÈR´•ïw2p²*§Né ¥
½9'¬ì tªŒ(€J–ÎŽg *÷M'Σ1Ωuu$Q´øø™ò­ÌwŒ£@- 0iÁthoTA…r¹•Ð9¯4©º©d-µOɆˆ×<LF1v ø$ü%
@@ -1575,8 +1538,8 @@ x}W]oÛ8|ϯØ7'…­ú+vronÓ;hp=Ô@_ ´DÙ¬%RGRv|¿þfIú£jîдIj‘»;;;;úûfDCüÑ|L“åõÍ0Ò
#MCìp|(åMÖÎyuuB¢“!HXVø‘V§Ú0QExÞK ž A“ñE:1.zɆ-hF _¢bM‡ƒ=ÁÍ]ÑI3biî‡õÚ‰¥¿Ïtr¡'DÃFä%UcÂzL…ÃõÅéB?4ˆ”À…˜®SÍÝH,¼4œÓGÚ •
ÕÄ÷&–S]|û 7vP@8¨ /@ªË/@Ы/ôî]Rž‡ôÒ7š?d³ÇGšÍãËd䞢Ž°²ÿÑb´9×ÁéÙÁ|ø˜ìÑÛï”Óù4›Ï`º`¢æ#>üiyó×Í¿Ãœî¬endstream
endobj
-675 0 obj<</Type/Page/Parent 522 0 R/Contents 676 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-676 0 obj<</Filter/FlateDecode/Length 1196 >>stream
+666 0 obj<</Type/Page/Parent 513 0 R/Contents 667 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+667 0 obj<</Filter/FlateDecode/Length 1196 >>stream
xVÑNëF}ç+æ¡RB”˜$ä&‡JBË-µ1Ò}ˆmì1l±½éî:¿ïÛbÚ
!ÐÊ»;söÌ93üu4 >~4Ò阢ì¨ôi4îCM'Xñk™’rcr*»¿_„G'×# (Lj<PÂôûFíkc‰_U¶Mùü8ügûtVí GÁ‡Û‹p·%9•­Scž‹íÚéxÕŽLî<-gwëËûE8ÿRŸ<¿ú.U{‹pý°œÿ±ï›/$~Ÿzƒ~0•°EìÜÚ›gλÎnoï/×—áêdœ­#ÿzˆru·^Þ\QYñíIYêtr•q·²Ð¹?RÇï·¼:®ÞóþöÞp,yCõÌŽ” ¨ä ©45‘òLþ‰©%‘[d€éåI•—Gök<ȹ_oö_ä§ÿ[Ôà§~[MZÌN[6ÊÔ 5âITÒ&eš]^Þ? ˯³ÅÕí$Öþ“«YMŒðõ¤ò8eÂ_rÞXp(lÕÔi“¿Š¥R¾¾Ô †ãJM7ØÔùsuD"$I^tþø5r^d¦Ý4Øàä9þ@&ub“)—ì ûƒ1/eÚ´©¼Zx5Ÿë’öniçóÅÃÝ;ãî@ù àH±fï´tÛ`L
ÙyP"àÿißÞpT"®öI;Úi¯RÒ9*³§­æˆÉ$äLâ_”ånY°¥Ê6JGl=Þ”î)70~Ä[Òt““Hê1GR)£œ_Ô¢ÝÀ8®Ø¸½óœÁŒêîàx …G±ç®ÀJ{ÉÄÊi¤ñ
@@ -1587,8 +1550,8 @@ kA jªe\dXKa…& qµ"TŠ§Ç¢5;À~§Ô ÚW ¼üºe<^ÍL\H‡)ü“±Ž^4À$Ž(
þüÖßTìÎÓXmÏONgÃ`0žƒàl\]ü4nVíÒNR颰Õ!P8+»qùyvµ¬)€ÿQ_)\Æ¥€P¥à­rJ¡|˜NIùE` ÄvÇöÐPþ y=´e°FÅìfAjBS.…û±Ã”ýeÕ¶ ¿äF]7ÅrÁ‘Í.y
Ø ‹f—·´QP­!²’º ÝRQÒ-ꮓ=úäµÑÞ*»¯oWªJŒmh%7/¢äu0Ù‹ZâŒÚ0%Æ“ëi]ÖÁdŒÏÎh<üV50@¼˜Ñï8C;ú¥@’½ÃÙÞ¤âö§.<šŒ‚ÉxŠ>ÝÉP.ÍãßþÅÖþ endstream
endobj
-677 0 obj<</Type/Page/Parent 522 0 R/Contents 678 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-678 0 obj<</Filter/FlateDecode/Length 1654 >>stream
+668 0 obj<</Type/Page/Parent 513 0 R/Contents 669 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+669 0 obj<</Filter/FlateDecode/Length 1654 >>stream
x•W]o7|÷¯Xø% Ë–¿ä<͇Û
’y¡î(ã;òBò¬øßwvÉ;Ig·@aO$wvvv–÷ã`F§ø™ÑüŒÎ¯¨hN§§tyþjzA×s|>ß״:x½88¹yEg§´XaËÕüš%aù)žGo*ÕFíiv>¥?”ý ,)[Òí‚>©6ΗôÎþ±ÆÙ—‹ïrØlž;>¿˜žá¸#ìžMé½Þ•]±]zA³Y^z6Ÿ^ñÒ/&V+M¥~еkm#¹U®ÖÀÂ
ðàõGú¡êF•²&4(Š³Á¡å.$déÃÛ Ñ9ħÏÖ®w| @õ,“ÝÊg¿ÊePupÔŠGŠ
@@ -1600,994 +1563,971 @@ x•W]o7|÷¯Xø% Ë–¿ä<͇Û
=”GãæÖ̆4®Ú{ Œa‘½E¢ô7mQ|òÑ,é{«Ó¹pޣɆûRš:L×~µ2gÇœåèвÖá2²Ä«Æ&³ǪƒNk<ãkPQ ýÁÝ
S71Q–”Fî"ðß’¿O%£C-Gѹ‰´5ÛÓó÷½Ý2¨aäí Û²ÃK0¹ä‰dS]ŠZãVÎ÷ÈiÆcúÞaøîð4‚•Ípzžèe*"¿!üÊ÷ák€¶Ù_µØõž«‚4> úQÔˆÉù‚Œ‰’LÓjÜ=ý=ñhE1 ^è´’fí+'b:¹¹Þy‡¼JïsoþïKëÅüb:¿ºÆû/ÞÏæçŒïÝâàσ
endobj
-679 0 obj<</Type/Page/Parent 522 0 R/Contents 680 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-680 0 obj<</Filter/FlateDecode/Length 1550 >>stream
-xµWÛnÛF}÷W ‚–‰ºX–l£ 4uaÀIÚZi\ÄyX“+ik’«ì.­èÇ÷Ì.II´ 'uÀæ^æÌ™3—ýz0¤þ i:¢ã ÅÙÁ Ðäô,ÓøtŠßGøo$-ÞÌúg4œÒ|#“ÉItJó„p`0 yÜGÇÑÑüŸƒ½ž¯$Ùìn-¬Ý$´P©ä…þ؆Ãp¾7šFœï\æ¤M" -´¡k‘Ý ršÖÂ8«µp’TN÷‰;ý im´Ó±NI9Ê
-ëèŽWRɇR­ï©XûÝà ݕ8¼v%zi!-ƒPHGlz©dN‚
- ó¹ÈdDsÀpE»iÙ%aýeß_Þ
-ô²èô¥‹ûþ¾d_0yâµN4*kïg0LIáTª\Ù ë'µ%Ê‘]µNw9¼ÚƒJ §yy‡Á¥Ì¥§Œï©œFg0úƒ¾1VŸ:°1š ÷ N0ߘáx?e¨Ô…¡
-
-í7þ„ËëÊÐó·7,\.N’@ 2Eî5‹Üí¥u2ƒ#@
-ÓwJe·4"c.tÕWõ/ÔF‹Ç’edì´)#zSR"¢H]È«†X_w—‹c5n}>â?µ±À_ÒäG]Âö#Òyöê}t¶.’]é"M¸Ò[é¸Ð­ál]ÖÒ >Y]‹ZÌ×ì¤*
-ð£ãƒt¬ÛN0Ø„%^e:!^zb áíQ;g¯Ô½Ü T>ˆÜ¢šøÜ«ràI™;øZz'Ÿññ‰ ¶)Lž÷‘—•¼èM1C’TM©9[+ dò®T¡¢%!Rè«#Ök¸²’𲉆[+7N™;SBN«vü|‰Û7ÝÐ:«‡‰q(šÜ.¹‘Ÿ*9¿yáçå l†µ4ð£N‡ªŸÏ³8FfBŠåZ~9¿úeÞû9Öõâ•È—²çT&_Ÿ_iÔV³Ï0î;ž„ûf©CØ–èàyZî4·Qݤjwöoèt«š¿Ý§ÚíòÑzŒ›G6>‡/‘]§[›¿ðß;IÇ™Ù:Mm‚ZW µýÜ„©
-µÞªe®* ™/ão<ÝANá^AŒuò¨wBlaêê_Lj.é¯Ëùìêêï¶]žÆŒcC¾™8–+§ßñˆo !5"vÒ°ªÝ†…-~î9<ß[®Pç­/½1|t+fö,TuvcUšÒB¨”K†1•ð$'òÒ'‰B“óM¹vÈ3ÌŒ
-{?©<Ñ´ßyËâCEnWÈO«ŠÀ½¡‘oŒ„»ˆ/H`ÝÛàa³ s
-ôŸÀDK!ñ9nˆˆ°±R-Û+ùM$2V™HQõ—ÊYÔÌAï¬K³Þ GƒëÔûðìZ|Ä°îUñ­§uŽ
-C;ÖàÃöc£æ¯Œ—ÜL+7Üë)ß™æo;,3ŒeŽ9˜Ÿ2ACeW³$Ï*ôbàMf“°ÌÃT¿U^‹‘úQ9ë=¼¥ÑŒ²¯Þ ßg×ן>üùöUX«ÇÄèÃäﳯ…vÒVý¸qZåüpzMÎÎðžõõõìÝ›½Å[+Õh8–~C—ðÕ¹WïìMh)IxË>÷ŒOÇÑtrFàé˜ý:?øãà?5Ä»Kendstream
-endobj
-681 0 obj<</Type/Page/Parent 522 0 R/Contents 682 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
-682 0 obj<</Filter/FlateDecode/Length 839 >>stream
-xm•ÝnÛH …ïýç®
-`+²ãÈŽH¶í¢@Óv7.vº#‰²´Íd5’U½}É‘R72 š yøñù4EÄŸ)3\ÅH«QF˜_ÇaŒùrÁ¿gü­ ùèn=º|?ÇtŠuÎ/XgàëQ„u¼·5自ž4ÑX¤šT¦ <)ç:[gÈùJë¨Fb“1ŠÒÁU‰?å³RÈ4uζ:ƒ¶öº|$¬.Öÿqê7CæÉlÎ9w€ýÃáVÓ(Z}úŒ/·ÿ|þûí¿/=«—^>·úöõø¾úøÇzÂÕùgug“Wy«5ŒªhuÉY »ÿá
-Òzy"4¹ŠÃ¥èü£·-cTZÛ®4[ÏÁ 'â)P¤¶ª”ÉäÐQ#‡e Û™#H7öñ*Ŭ”áÛrG’?ÂdzÎ$«vxÆ¥)›’ôpVÂöÈ,ŒmP¨‹°ÂŸ»£ðTÓ®´­;fDWAZ(³ñ|uPe¨;Ëzlö&È5I5d2Ê6!>°8‡XA˜p$„ã±8è
-endobj
-683 0 obj<</Type/Page/Parent 522 0 R/Contents 684 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
-684 0 obj<</Filter/FlateDecode/Length 926 >>stream
-x•Uao"7üίxßJN°B€´§“®Q¯ªÔS¯µ_"!¯×˺ñÚ[ÛJ}Çön`s¹S›„àyÞ¼™ñÛ¿FsšáNëݬˆ×£Y6£ÛÕm¶¡åfÏ ¼¬ rôýntýáŽ3Ú•8²ZohWÊgø†ï+Öxai¾Ìè·O÷ôIµ‡Ë• ¦h•pW»?#À|
-ÃÛZhO…pÜÊ\8ªÌ‘¼¡š=
-j _ Òâø:*ó­Å1SÒ–Õ9£›l–Q
-j~¹y'¢¾$
-endobj
-685 0 obj<</Count 17/First 686 0 R/Last 816 0 R>>endobj
-686 0 obj<</Parent 685 0 R/Title(Table of Contents)/Dest[525 0 R/XYZ 0 756 0]/Next 687 0 R>>endobj
-687 0 obj<</Parent 685 0 R/Count -1/First 688 0 R/Last 688 0 R/Title(SAMBA Developers Guide)/Dest[533 0 R/XYZ 0 786 0]/Prev 686 0 R/Next 689 0 R>>endobj
-688 0 obj<</Parent 687 0 R/Title(SAMBA Team)/Dest[533 0 R/XYZ 0 762 0]>>endobj
-689 0 obj<</Parent 685 0 R/Title(Abstract)/Dest[535 0 R/XYZ 0 786 0]/Prev 687 0 R/Next 690 0 R>>endobj
-690 0 obj<</Parent 685 0 R/Count -3/First 691 0 R/Last 693 0 R/Title(Chapter 1. Definition of NetBIOS Protocol and Name Resolution Modes)/Dest[541 0 R/XYZ 0 786 0]/Prev 689 0 R/Next 694 0 R>>endobj
-691 0 obj<</Parent 690 0 R/Title(1.1. NETBIOS)/Dest[541 0 R/XYZ 0 738 0]/Next 692 0 R>>endobj
-692 0 obj<</Parent 690 0 R/Title(1.2. BROADCAST NetBIOS)/Dest[541 0 R/XYZ 0 254 0]/Prev 691 0 R/Next 693 0 R>>endobj
-693 0 obj<</Parent 690 0 R/Title(1.3. NBNS NetBIOS)/Dest[543 0 R/XYZ 0 758 0]/Prev 692 0 R>>endobj
-694 0 obj<</Parent 685 0 R/Count -5/First 695 0 R/Last 699 0 R/Title(Chapter 2. Samba Architecture)/Dest[545 0 R/XYZ 0 786 0]/Prev 690 0 R/Next 700 0 R>>endobj
-695 0 obj<</Parent 694 0 R/Title(2.1. Introduction)/Dest[545 0 R/XYZ 0 762 0]/Next 696 0 R>>endobj
-696 0 obj<</Parent 694 0 R/Title(2.2. Multithreading and Samba)/Dest[545 0 R/XYZ 0 581 0]/Prev 695 0 R/Next 697 0 R>>endobj
-697 0 obj<</Parent 694 0 R/Title(2.3. Threading smbd)/Dest[545 0 R/XYZ 0 387 0]/Prev 696 0 R/Next 698 0 R>>endobj
-698 0 obj<</Parent 694 0 R/Title(2.4. Threading nmbd)/Dest[547 0 R/XYZ 0 786 0]/Prev 697 0 R/Next 699 0 R>>endobj
-699 0 obj<</Parent 694 0 R/Title(2.5. nbmd Design)/Dest[547 0 R/XYZ 0 487 0]/Prev 698 0 R>>endobj
-700 0 obj<</Parent 685 0 R/Count -5/First 701 0 R/Last 705 0 R/Title(Chapter 3. The samba DEBUG system)/Dest[549 0 R/XYZ 0 786 0]/Prev 694 0 R/Next 709 0 R>>endobj
-701 0 obj<</Parent 700 0 R/Title(3.1. New Output Syntax)/Dest[549 0 R/XYZ 0 762 0]/Next 702 0 R>>endobj
-702 0 obj<</Parent 700 0 R/Title(3.2. The DEBUG\(\) Macro)/Dest[551 0 R/XYZ 0 786 0]/Prev 701 0 R/Next 703 0 R>>endobj
-703 0 obj<</Parent 700 0 R/Title(3.3. The DEBUGADD\(\) Macro)/Dest[553 0 R/XYZ 0 786 0]/Prev 702 0 R/Next 704 0 R>>endobj
-704 0 obj<</Parent 700 0 R/Title(3.4. The DEBUGLVL\(\) Macro)/Dest[553 0 R/XYZ 0 567 0]/Prev 703 0 R/Next 705 0 R>>endobj
-705 0 obj<</Parent 700 0 R/Count -3/First 706 0 R/Last 708 0 R/Title(3.5. New Functions)/Dest[555 0 R/XYZ 0 786 0]/Prev 704 0 R>>endobj
-706 0 obj<</Parent 705 0 R/Title(3.5.1. dbgtext\(\))/Dest[555 0 R/XYZ 0 766 0]/Next 707 0 R>>endobj
-707 0 obj<</Parent 705 0 R/Title(3.5.2. dbghdr\(\))/Dest[555 0 R/XYZ 0 655 0]/Prev 706 0 R/Next 708 0 R>>endobj
-708 0 obj<</Parent 705 0 R/Title(3.5.3. format_debug_text\(\))/Dest[555 0 R/XYZ 0 543 0]/Prev 707 0 R>>endobj
-709 0 obj<</Parent 685 0 R/Title(Chapter 4. Coding Suggestions)/Dest[557 0 R/XYZ 0 786 0]/Prev 700 0 R/Next 710 0 R>>endobj
-710 0 obj<</Parent 685 0 R/Count -5/First 711 0 R/Last 732 0 R/Title(Chapter 5. Samba Internals)/Dest[561 0 R/XYZ 0 786 0]/Prev 709 0 R/Next 733 0 R>>endobj
-711 0 obj<</Parent 710 0 R/Title(5.1. Character Handling)/Dest[561 0 R/XYZ 0 762 0]/Next 712 0 R>>endobj
-712 0 obj<</Parent 710 0 R/Title(5.2. The new functions)/Dest[561 0 R/XYZ 0 621 0]/Prev 711 0 R/Next 713 0 R>>endobj
-713 0 obj<</Parent 710 0 R/Count -15/First 714 0 R/Last 728 0 R/Title(5.3. Macros in byteorder.h)/Dest[563 0 R/XYZ 0 758 0]/Prev 712 0 R/Next 729 0 R>>endobj
-714 0 obj<</Parent 713 0 R/Title(5.3.1. CVAL\(buf,pos\))/Dest[563 0 R/XYZ 0 683 0]/Next 715 0 R>>endobj
-715 0 obj<</Parent 713 0 R/Title(5.3.2. PVAL\(buf,pos\))/Dest[563 0 R/XYZ 0 624 0]/Prev 714 0 R/Next 716 0 R>>endobj
-716 0 obj<</Parent 713 0 R/Title(5.3.3. SCVAL\(buf,pos,val\))/Dest[563 0 R/XYZ 0 566 0]/Prev 715 0 R/Next 717 0 R>>endobj
-717 0 obj<</Parent 713 0 R/Title(5.3.4. SVAL\(buf,pos\))/Dest[563 0 R/XYZ 0 507 0]/Prev 716 0 R/Next 718 0 R>>endobj
-718 0 obj<</Parent 713 0 R/Title(5.3.5. IVAL\(buf,pos\))/Dest[563 0 R/XYZ 0 436 0]/Prev 717 0 R/Next 719 0 R>>endobj
-719 0 obj<</Parent 713 0 R/Title(5.3.6. SVALS\(buf,pos\))/Dest[563 0 R/XYZ 0 377 0]/Prev 718 0 R/Next 720 0 R>>endobj
-720 0 obj<</Parent 713 0 R/Title(5.3.7. IVALS\(buf,pos\))/Dest[563 0 R/XYZ 0 319 0]/Prev 719 0 R/Next 721 0 R>>endobj
-721 0 obj<</Parent 713 0 R/Title(5.3.8. SSVAL\(buf,pos,val\))/Dest[563 0 R/XYZ 0 261 0]/Prev 720 0 R/Next 722 0 R>>endobj
-722 0 obj<</Parent 713 0 R/Title(5.3.9. SIVAL\(buf,pos,val\))/Dest[563 0 R/XYZ 0 202 0]/Prev 721 0 R/Next 723 0 R>>endobj
-723 0 obj<</Parent 713 0 R/Title(5.3.10. SSVALS\(buf,pos,val\))/Dest[565 0 R/XYZ 0 786 0]/Prev 722 0 R/Next 724 0 R>>endobj
-724 0 obj<</Parent 713 0 R/Title(5.3.11. SIVALS\(buf,pos,val\))/Dest[565 0 R/XYZ 0 728 0]/Prev 723 0 R/Next 725 0 R>>endobj
-725 0 obj<</Parent 713 0 R/Title(5.3.12. RSVAL\(buf,pos\))/Dest[565 0 R/XYZ 0 669 0]/Prev 724 0 R/Next 726 0 R>>endobj
-726 0 obj<</Parent 713 0 R/Title(5.3.13. RIVAL\(buf,pos\))/Dest[565 0 R/XYZ 0 611 0]/Prev 725 0 R/Next 727 0 R>>endobj
-727 0 obj<</Parent 713 0 R/Title(5.3.14. RSSVAL\(buf,pos,val\))/Dest[565 0 R/XYZ 0 553 0]/Prev 726 0 R/Next 728 0 R>>endobj
-728 0 obj<</Parent 713 0 R/Title(5.3.15. RSIVAL\(buf,pos,val\))/Dest[565 0 R/XYZ 0 481 0]/Prev 727 0 R>>endobj
-729 0 obj<</Parent 710 0 R/Count -2/First 730 0 R/Last 731 0 R/Title(5.4. LAN Manager Samba API)/Dest[565 0 R/XYZ 0 423 0]/Prev 713 0 R/Next 732 0 R>>endobj
-730 0 obj<</Parent 729 0 R/Title(5.4.1. Parameters)/Dest[565 0 R/XYZ 0 273 0]/Next 731 0 R>>endobj
-731 0 obj<</Parent 729 0 R/Title(5.4.2. Return value)/Dest[567 0 R/XYZ 0 494 0]/Prev 730 0 R>>endobj
-732 0 obj<</Parent 710 0 R/Title(5.5. Code character table)/Dest[569 0 R/XYZ 0 786 0]/Prev 729 0 R>>endobj
-733 0 obj<</Parent 685 0 R/Count -2/First 734 0 R/Last 738 0 R/Title(Chapter 6. The smb.conf file)/Dest[571 0 R/XYZ 0 786 0]/Prev 710 0 R/Next 740 0 R>>endobj
-734 0 obj<</Parent 733 0 R/Count -3/First 735 0 R/Last 737 0 R/Title(6.1. Lexical Analysis)/Dest[571 0 R/XYZ 0 762 0]/Next 738 0 R>>endobj
-735 0 obj<</Parent 734 0 R/Title(6.1.1. Handling of Whitespace)/Dest[571 0 R/XYZ 0 476 0]/Next 736 0 R>>endobj
-736 0 obj<</Parent 734 0 R/Title(6.1.2. Handling of Line Continuation)/Dest[571 0 R/XYZ 0 312 0]/Prev 735 0 R/Next 737 0 R>>endobj
-737 0 obj<</Parent 734 0 R/Title(6.1.3. Line Continuation Quirks)/Dest[573 0 R/XYZ 0 705 0]/Prev 736 0 R>>endobj
-738 0 obj<</Parent 733 0 R/Count -1/First 739 0 R/Last 739 0 R/Title(6.2. Syntax)/Dest[573 0 R/XYZ 0 293 0]/Prev 734 0 R>>endobj
-739 0 obj<</Parent 738 0 R/Title(6.2.1. About params.c)/Dest[575 0 R/XYZ 0 718 0]>>endobj
-740 0 obj<</Parent 685 0 R/Count -9/First 741 0 R/Last 749 0 R/Title(Chapter 7. NetBIOS in a Unix World)/Dest[577 0 R/XYZ 0 786 0]/Prev 733 0 R/Next 750 0 R>>endobj
-741 0 obj<</Parent 740 0 R/Title(7.1. Introduction)/Dest[577 0 R/XYZ 0 762 0]/Next 742 0 R>>endobj
-742 0 obj<</Parent 740 0 R/Title(7.2. Usernames)/Dest[577 0 R/XYZ 0 647 0]/Prev 741 0 R/Next 743 0 R>>endobj
-743 0 obj<</Parent 740 0 R/Title(7.3. File Ownership)/Dest[577 0 R/XYZ 0 269 0]/Prev 742 0 R/Next 744 0 R>>endobj
-744 0 obj<</Parent 740 0 R/Title(7.4. Passwords)/Dest[579 0 R/XYZ 0 745 0]/Prev 743 0 R/Next 745 0 R>>endobj
-745 0 obj<</Parent 740 0 R/Title(7.5. Locking)/Dest[579 0 R/XYZ 0 511 0]/Prev 744 0 R/Next 746 0 R>>endobj
-746 0 obj<</Parent 740 0 R/Title(7.6. Deny Modes)/Dest[581 0 R/XYZ 0 786 0]/Prev 745 0 R/Next 747 0 R>>endobj
-747 0 obj<</Parent 740 0 R/Title(7.7. Trapdoor UIDs)/Dest[581 0 R/XYZ 0 619 0]/Prev 746 0 R/Next 748 0 R>>endobj
-748 0 obj<</Parent 740 0 R/Title(7.8. Port numbers)/Dest[581 0 R/XYZ 0 491 0]/Prev 747 0 R/Next 749 0 R>>endobj
-749 0 obj<</Parent 740 0 R/Title(7.9. Protocol Complexity)/Dest[581 0 R/XYZ 0 231 0]/Prev 748 0 R>>endobj
-750 0 obj<</Parent 685 0 R/Title(Chapter 8. Tracing samba system calls)/Dest[585 0 R/XYZ 0 786 0]/Prev 740 0 R/Next 751 0 R>>endobj
-751 0 obj<</Parent 685 0 R/Count -8/First 752 0 R/Last 788 0 R/Title(Chapter 9. NT Domain RPC's)/Dest[589 0 R/XYZ 0 786 0]/Prev 750 0 R/Next 791 0 R>>endobj
-752 0 obj<</Parent 751 0 R/Count -2/First 753 0 R/Last 754 0 R/Title(9.1. Introduction)/Dest[589 0 R/XYZ 0 762 0]/Next 755 0 R>>endobj
-753 0 obj<</Parent 752 0 R/Title(9.1.1. Sources)/Dest[591 0 R/XYZ 0 679 0]/Next 754 0 R>>endobj
-754 0 obj<</Parent 752 0 R/Title(9.1.2. Credits)/Dest[591 0 R/XYZ 0 569 0]/Prev 753 0 R>>endobj
-755 0 obj<</Parent 751 0 R/Count -3/First 756 0 R/Last 758 0 R/Title(9.2. Notes and Structures)/Dest[591 0 R/XYZ 0 447 0]/Prev 752 0 R/Next 759 0 R>>endobj
-756 0 obj<</Parent 755 0 R/Title(9.2.1. Notes)/Dest[591 0 R/XYZ 0 426 0]/Next 757 0 R>>endobj
-757 0 obj<</Parent 755 0 R/Title(9.2.2. Enumerations)/Dest[593 0 R/XYZ 0 771 0]/Prev 756 0 R/Next 758 0 R>>endobj
-758 0 obj<</Parent 755 0 R/Title(9.2.3. Structures)/Dest[593 0 R/XYZ 0 288 0]/Prev 757 0 R>>endobj
-759 0 obj<</Parent 751 0 R/Count -12/First 760 0 R/Last 771 0 R/Title(9.3. MSRPC over Transact Named Pipe)/Dest[613 0 R/XYZ 0 481 0]/Prev 755 0 R/Next 772 0 R>>endobj
-760 0 obj<</Parent 759 0 R/Title(9.3.1. MSRPC Pipes)/Dest[613 0 R/XYZ 0 419 0]/Next 761 0 R>>endobj
-761 0 obj<</Parent 759 0 R/Title(9.3.2. Header)/Dest[615 0 R/XYZ 0 620 0]/Prev 760 0 R/Next 762 0 R>>endobj
-762 0 obj<</Parent 759 0 R/Title(9.3.3. Tail)/Dest[623 0 R/XYZ 0 584 0]/Prev 761 0 R/Next 763 0 R>>endobj
-763 0 obj<</Parent 759 0 R/Title(9.3.4. RPC Bind / Bind Ack)/Dest[623 0 R/XYZ 0 460 0]/Prev 762 0 R/Next 764 0 R>>endobj
-764 0 obj<</Parent 759 0 R/Title(9.3.5. NTLSA Transact Named Pipe)/Dest[625 0 R/XYZ 0 601 0]/Prev 763 0 R/Next 765 0 R>>endobj
-765 0 obj<</Parent 759 0 R/Title(9.3.6. LSA Open Policy)/Dest[625 0 R/XYZ 0 193 0]/Prev 764 0 R/Next 766 0 R>>endobj
-766 0 obj<</Parent 759 0 R/Title(9.3.7. LSA Query Info Policy)/Dest[627 0 R/XYZ 0 545 0]/Prev 765 0 R/Next 767 0 R>>endobj
-767 0 obj<</Parent 759 0 R/Title(9.3.8. LSA Enumerate Trusted Domains)/Dest[627 0 R/XYZ 0 198 0]/Prev 766 0 R/Next 768 0 R>>endobj
-768 0 obj<</Parent 759 0 R/Title(9.3.9. LSA Open Secret)/Dest[629 0 R/XYZ 0 639 0]/Prev 767 0 R/Next 769 0 R>>endobj
-769 0 obj<</Parent 759 0 R/Title(9.3.10. LSA Close)/Dest[629 0 R/XYZ 0 354 0]/Prev 768 0 R/Next 770 0 R>>endobj
-770 0 obj<</Parent 759 0 R/Title(9.3.11. LSA Lookup SIDS)/Dest[631 0 R/XYZ 0 786 0]/Prev 769 0 R/Next 771 0 R>>endobj
-771 0 obj<</Parent 759 0 R/Title(9.3.12. LSA Lookup Names)/Dest[631 0 R/XYZ 0 301 0]/Prev 770 0 R>>endobj
-772 0 obj<</Parent 751 0 R/Count -5/First 773 0 R/Last 777 0 R/Title(9.4. NETLOGON rpc Transact Named Pipe)/Dest[633 0 R/XYZ 0 465 0]/Prev 759 0 R/Next 778 0 R>>endobj
-773 0 obj<</Parent 772 0 R/Title(9.4.1. LSA Request Challenge)/Dest[635 0 R/XYZ 0 718 0]/Next 774 0 R>>endobj
-774 0 obj<</Parent 772 0 R/Title(9.4.2. LSA Authenticate 2)/Dest[635 0 R/XYZ 0 326 0]/Prev 773 0 R/Next 775 0 R>>endobj
-775 0 obj<</Parent 772 0 R/Title(9.4.3. LSA Server Password Set)/Dest[637 0 R/XYZ 0 584 0]/Prev 774 0 R/Next 776 0 R>>endobj
-776 0 obj<</Parent 772 0 R/Title(9.4.4. LSA SAM Logon)/Dest[637 0 R/XYZ 0 218 0]/Prev 775 0 R/Next 777 0 R>>endobj
-777 0 obj<</Parent 772 0 R/Title(9.4.5. LSA SAM Logoff)/Dest[639 0 R/XYZ 0 406 0]/Prev 776 0 R>>endobj
-778 0 obj<</Parent 751 0 R/Count -2/First 779 0 R/Last 780 0 R/Title(9.5. \\\\MAILSLOT\\NET\\NTLOGON)/Dest[641 0 R/XYZ 0 786 0]/Prev 772 0 R/Next 781 0 R>>endobj
-779 0 obj<</Parent 778 0 R/Title(9.5.1. Query for PDC)/Dest[641 0 R/XYZ 0 711 0]/Next 780 0 R>>endobj
-780 0 obj<</Parent 778 0 R/Title(9.5.2. SAM Logon)/Dest[643 0 R/XYZ 0 786 0]/Prev 779 0 R>>endobj
-781 0 obj<</Parent 751 0 R/Count -2/First 782 0 R/Last 783 0 R/Title(9.6. SRVSVC Transact Named Pipe)/Dest[645 0 R/XYZ 0 758 0]/Prev 778 0 R/Next 784 0 R>>endobj
-782 0 obj<</Parent 781 0 R/Title(9.6.1. Net Share Enum)/Dest[645 0 R/XYZ 0 630 0]/Next 783 0 R>>endobj
-783 0 obj<</Parent 781 0 R/Title(9.6.2. Net Server Get Info)/Dest[647 0 R/XYZ 0 786 0]/Prev 782 0 R>>endobj
-784 0 obj<</Parent 751 0 R/Count -3/First 785 0 R/Last 787 0 R/Title(9.7. Cryptographic side of NT Domain Authentication)/Dest[647 0 R/XYZ 0 486 0]/Prev 781 0 R/Next 788 0 R>>endobj
-785 0 obj<</Parent 784 0 R/Title(9.7.1. Definitions)/Dest[647 0 R/XYZ 0 466 0]/Next 786 0 R>>endobj
-786 0 obj<</Parent 784 0 R/Title(9.7.2. Protocol)/Dest[649 0 R/XYZ 0 786 0]/Prev 785 0 R/Next 787 0 R>>endobj
-787 0 obj<</Parent 784 0 R/Title(9.7.3. Comments)/Dest[649 0 R/XYZ 0 437 0]/Prev 786 0 R>>endobj
-788 0 obj<</Parent 751 0 R/Count -2/First 789 0 R/Last 790 0 R/Title(9.8. SIDs and RIDs)/Dest[649 0 R/XYZ 0 181 0]/Prev 784 0 R>>endobj
-789 0 obj<</Parent 788 0 R/Title(9.8.1. Well-known SIDs)/Dest[651 0 R/XYZ 0 686 0]/Next 790 0 R>>endobj
-790 0 obj<</Parent 788 0 R/Title(9.8.2. Well-known RIDS)/Dest[653 0 R/XYZ 0 718 0]/Prev 789 0 R>>endobj
-791 0 obj<</Parent 685 0 R/Count -5/First 792 0 R/Last 796 0 R/Title(Chapter 10. Samba Printing Internals)/Dest[657 0 R/XYZ 0 786 0]/Prev 751 0 R/Next 797 0 R>>endobj
-792 0 obj<</Parent 791 0 R/Title(10.1. Abstract)/Dest[657 0 R/XYZ 0 762 0]/Next 793 0 R>>endobj
-793 0 obj<</Parent 791 0 R/Title(10.2. Printing Interface to Various Back ends)/Dest[657 0 R/XYZ 0 674 0]/Prev 792 0 R/Next 794 0 R>>endobj
-794 0 obj<</Parent 791 0 R/Title(10.3. Print Queue TDB's)/Dest[657 0 R/XYZ 0 414 0]/Prev 793 0 R/Next 795 0 R>>endobj
-795 0 obj<</Parent 791 0 R/Title(10.4. ChangeID and Client Caching of Printer Information)/Dest[661 0 R/XYZ 0 745 0]/Prev 794 0 R/Next 796 0 R>>endobj
-796 0 obj<</Parent 791 0 R/Title(10.5. Windows NT/2K Printer Change Notify)/Dest[661 0 R/XYZ 0 683 0]/Prev 795 0 R>>endobj
-797 0 obj<</Parent 685 0 R/Count -1/First 798 0 R/Last 798 0 R/Title(Chapter 11. Samba WINS Internals)/Dest[667 0 R/XYZ 0 786 0]/Prev 791 0 R/Next 799 0 R>>endobj
-798 0 obj<</Parent 797 0 R/Title(11.1. WINS Failover)/Dest[667 0 R/XYZ 0 762 0]>>endobj
-799 0 obj<</Parent 685 0 R/Count -7/First 800 0 R/Last 811 0 R/Title(Chapter 12. The Upcoming SAM System)/Dest[669 0 R/XYZ 0 786 0]/Prev 797 0 R/Next 812 0 R>>endobj
-800 0 obj<</Parent 799 0 R/Title(12.1. Security in the 'new SAM')/Dest[669 0 R/XYZ 0 762 0]/Next 801 0 R>>endobj
-801 0 obj<</Parent 799 0 R/Title(12.2. Standalone from UNIX)/Dest[671 0 R/XYZ 0 692 0]/Prev 800 0 R/Next 802 0 R>>endobj
-802 0 obj<</Parent 799 0 R/Title(12.3. Handles and Races in the new SAM)/Dest[671 0 R/XYZ 0 551 0]/Prev 801 0 R/Next 803 0 R>>endobj
-803 0 obj<</Parent 799 0 R/Count -3/First 804 0 R/Last 806 0 R/Title(12.4. Layers)/Dest[671 0 R/XYZ 0 251 0]/Prev 802 0 R/Next 807 0 R>>endobj
-804 0 obj<</Parent 803 0 R/Title(12.4.1. Application)/Dest[671 0 R/XYZ 0 231 0]/Next 805 0 R>>endobj
-805 0 obj<</Parent 803 0 R/Title(12.4.2. SAM Interface)/Dest[673 0 R/XYZ 0 786 0]/Prev 804 0 R/Next 806 0 R>>endobj
-806 0 obj<</Parent 803 0 R/Title(12.4.3. SAM Modules)/Dest[673 0 R/XYZ 0 649 0]/Prev 805 0 R>>endobj
-807 0 obj<</Parent 799 0 R/Count -2/First 808 0 R/Last 809 0 R/Title(12.5. SAM Modules)/Dest[673 0 R/XYZ 0 537 0]/Prev 803 0 R/Next 810 0 R>>endobj
-808 0 obj<</Parent 807 0 R/Title(12.5.1. Special Module: sam_passdb)/Dest[673 0 R/XYZ 0 517 0]/Next 809 0 R>>endobj
-809 0 obj<</Parent 807 0 R/Title(12.5.2. sam_ads)/Dest[673 0 R/XYZ 0 419 0]/Prev 808 0 R>>endobj
-810 0 obj<</Parent 799 0 R/Title(12.6. Memory Management)/Dest[673 0 R/XYZ 0 281 0]/Prev 807 0 R/Next 811 0 R>>endobj
-811 0 obj<</Parent 799 0 R/Title(12.7. Testing)/Dest[675 0 R/XYZ 0 542 0]/Prev 810 0 R>>endobj
-812 0 obj<</Parent 685 0 R/Count -3/First 813 0 R/Last 815 0 R/Title(Chapter 13. LanMan and NT Password Encryption)/Dest[677 0 R/XYZ 0 786 0]/Prev 799 0 R/Next 816 0 R>>endobj
-813 0 obj<</Parent 812 0 R/Title(13.1. Introduction)/Dest[677 0 R/XYZ 0 762 0]/Next 814 0 R>>endobj
-814 0 obj<</Parent 812 0 R/Title(13.2. How does it work?)/Dest[677 0 R/XYZ 0 621 0]/Prev 813 0 R/Next 815 0 R>>endobj
-815 0 obj<</Parent 812 0 R/Title(13.3. >The smbpasswd file)/Dest[679 0 R/XYZ 0 771 0]/Prev 814 0 R>>endobj
-816 0 obj<</Parent 685 0 R/Count -2/First 817 0 R/Last 818 0 R/Title(Chapter 14. RPC Pluggable Modules)/Dest[683 0 R/XYZ 0 786 0]/Prev 812 0 R>>endobj
-817 0 obj<</Parent 816 0 R/Title(14.1. About)/Dest[683 0 R/XYZ 0 762 0]/Next 818 0 R>>endobj
-818 0 obj<</Parent 816 0 R/Title(14.2. General Overview)/Dest[683 0 R/XYZ 0 647 0]/Prev 817 0 R>>endobj
-819 0 obj<</Type/Catalog/Pages 522 0 R/PageLayout/SinglePage/Outlines 685 0 R/OpenAction[533 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>5<</S/D/St 1/P()>>6<</S/D/St 2/P()>>9<</S/D/St 5/P()>>11<</S/D/St 7/P()>>13<</S/D/St 9/P()>>17<</S/D/St 13/P()>>19<</S/D/St 15/P()>>24<</S/D/St 20/P()>>27<</S/D/St 23/P()>>31<</S/D/St 27/P()>>33<</S/D/St 29/P()>>67<</S/D/St 63/P()>>72<</S/D/St 68/P()>>73<</S/D/St 69/P()>>77<</S/D/St 73/P()>>80<</S/D/St 76/P()>>]>>>>endobj
+670 0 obj<</Type/Page/Parent 513 0 R/Contents 671 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R/F9 11 0 R>>/XObject<<>>>>>>endobj
+671 0 obj<</Filter/FlateDecode/Length 1549 >>stream
+xµWÛnÛF}÷W ‚–‰ºX–l£ 4uaÀIÚZi\ÄyX“+ik’«ì.­èÇ÷Ì.II´ 'uÀæ^æÌ™3—ýz0¤þ i:¢ã ÅÙÁ Ðäô,ÓøtŠßGøo$-ÞÌúg4œÒ|#“ÉItJó„p`0 yÜGÇÑÑüŸƒÍW’lv·ÖnZ¨Tò÷þ؆Ãp¼7šFï\æ¤M" -´¡k‘Ý ršÖÂ8«µp’TN÷‰;ý im´Ó±NI9Ê
+ëèŽWRɇR­ï©XûÝà ݕ8¼v%zi!-ƒP@Glz©dN‚
+ ó¹ÈdDsÀpE»iÙ%aýeß_Þ
++ʼ³èø
+—×¥¡çooh¸\¼$dŠÜ‹ÉÞKëdO€
+`(Ž1%%ÊÈØiSFô¦¤D.D‘ºX ±¾ð>®?Ç jÜú|Ä4j;b¿¤7Hº†íG¤óìÕû:èl]$»ÒEšp©·Òq¥7ZÃÙº$¬¥A²¨ºŘ¯ÙÉUTàGÇ'èX·`° K¼ÊtB¼ôÄÂÛ£vÒ^©{¹A­|:¹E9ñÉWåÀ“.2wðµôN>ããAmS4˜<ï#/5*yÑ)(ºb†$©ºRs¶VÈä]©B+DOB¤ÐX7F¬×pe% :áeþ* ÷Vîœ2w¦$„0œVíøù·o0º=
+ tVOãP5¹_r'?/Tr~óÂÏËØ kiàGU?ŸgqŒÌ„˵ür~õ˼÷s*¬ëÅ+‘/eÏ©L¾>¿Ò(® fŸaÜw< ÷ÍR‡°-ÑÂó´Üén£ºKÕîìßÐéVE»Oµûå£-ô7l|_#»N·6á¿w’Ž3³ušÚµ®@jûÁ cj½UË\-T,@2_Æßx¼ƒœ ý‚ëäQó„ØÂØÕ¿˜Ô\Ò_—óÙÕÕßm»<Ždž|3q,WN¿ãÞBjDì¤aU» [üàsx¾·\¡Ï[_z-bøèVÌìY¨êìæª4¥…P)—8Lc*áQNä¥O…&ç&šrígò €
+&3Ö9¨÷7àÙµ6øˆiÝ¿(ªâ[ëЦv¬À‡í×FÍ_;˜/¹™Vn¸×S¾3ÎßvXf30ʃ0¿1d‚†Ê*®†I TèÅÀ›
+Ì&a™†±~«¼#õ+¢rÖ¿zxKÿ¢™e_½ÿ@¿Ï®¯?}øóí«°V‰Ї—Ih_ í¤­úqÿâ´Êùáô4šœá=ëGêëÙ»73z‹ÇVªÑp,ý†.á«s¯ÞÙ›ÐR’ð–}æ;žŽ£éä4LÀÓ1ãúu~ðÇÁt…ºïendstream
+endobj
+672 0 obj<</Type/Page/Parent 513 0 R/Contents 673 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 6 0 R/F5 7 0 R/F6 8 0 R/F8 10 0 R>>/XObject<<>>>>>>endobj
+673 0 obj<</Filter/FlateDecode/Length 816 >>stream
+xm•[oÛH …ßý+ÎÛ*€­ÈŽk;úô²(°½ìÆ‹-P÷a$Ñ–šÑ0«‘ìêß/9ò%õF~14òðã!õï`ŒD~cÌ'¸™!«÷«Áõû)Æc¬6r2[̱ʑÄI’`•Eï¹ý4Õ“¥!FfÉÔh
+“ñ~ÏuŽ\i=ÕH9¢(=|•†S9+-\SwØsksXæGØò‘°¼ZýÔ nûÌ£É4žJî‡GÂ-ÇI²üô_îþùü×Û¯/=Ë—^>·üö÷1&ð}ùÇ›ÕHª ÏòžÓß<6­µp¦¢åµd-øðÇdm/óLht3‹ªó÷05ÁXËûÒm¯œH tF‘qU—롧F˼w'~âUFX'7ÛrGš?Áh|O4«’öxÆ¥+›Rtð¬a;ä Ç
+³¬ü¥;O5íJný)#ö9d…q[/W{UŽöYOÍ^G¹&­†\Nùú*Æ1‚äP+(‰H<±ƒí!¾:Ø,:;äWº‘hämm*T­o
+ÙT $á2vŽ²æBV¯ø…àùeÜÜPÅFÕ˜¦÷ë¾l
+uÂãëó©ê´ƒÉóÀEÜnKw²ì± éÊdÖ{Ö©Ž<^£#ÿ«„g—{Õø¶µœû]ì5¥ˆã¢R6±”»é‡g†"h_táܤ,}õ9S— 9y¡%_jÚP-Õtà fÚ˜Ì4¤ê׋7rÚ˜Ö6§”yJb (¥¡ZKû?gyI!¢øsGuÜW?;-–ªO,¹Ãœª+E¶…/¢ދAC9$`‡L&Mµ‹qç:–~„š,#f.€
+12ã°ŽÂ19n·ÅƒGÇ{Kù–ŽÌ5glýú
+[#UŸ£†¢>ÞK›Ba"•z¥¢¸)dœ*–àÉy™C8™'!긮LØϧו?Ñ£‘-vntMMvÝïËþäLE‹9\®ç‹xv{‹ÉtÏt!<Ü}¼¿Ã[Ú‘å'Ý ¿·ent¼;š'²dóHvÈMôŸ×’¦Ð´Óù4žÏò ‹óWúêÝjðçà?}˜ò£endstream
+endobj
+674 0 obj<</Count 16/First 675 0 R/Last 801 0 R>>endobj
+675 0 obj<</Parent 674 0 R/Title(Table of Contents)/Dest[516 0 R/XYZ 0 756 0]/Next 676 0 R>>endobj
+676 0 obj<</Parent 674 0 R/Count -1/First 677 0 R/Last 677 0 R/Title(SAMBA Developers Guide)/Dest[524 0 R/XYZ 0 786 0]/Prev 675 0 R/Next 678 0 R>>endobj
+677 0 obj<</Parent 676 0 R/Title(SAMBA Team)/Dest[524 0 R/XYZ 0 762 0]>>endobj
+678 0 obj<</Parent 674 0 R/Title(Abstract)/Dest[526 0 R/XYZ 0 786 0]/Prev 676 0 R/Next 679 0 R>>endobj
+679 0 obj<</Parent 674 0 R/Count -3/First 680 0 R/Last 682 0 R/Title(Chapter 1. Definition of NetBIOS Protocol and Name Resolution Modes)/Dest[532 0 R/XYZ 0 786 0]/Prev 678 0 R/Next 683 0 R>>endobj
+680 0 obj<</Parent 679 0 R/Title(1.1. NETBIOS)/Dest[532 0 R/XYZ 0 738 0]/Next 681 0 R>>endobj
+681 0 obj<</Parent 679 0 R/Title(1.2. BROADCAST NetBIOS)/Dest[532 0 R/XYZ 0 254 0]/Prev 680 0 R/Next 682 0 R>>endobj
+682 0 obj<</Parent 679 0 R/Title(1.3. NBNS NetBIOS)/Dest[534 0 R/XYZ 0 758 0]/Prev 681 0 R>>endobj
+683 0 obj<</Parent 674 0 R/Count -5/First 684 0 R/Last 688 0 R/Title(Chapter 2. Samba Architecture)/Dest[536 0 R/XYZ 0 786 0]/Prev 679 0 R/Next 689 0 R>>endobj
+684 0 obj<</Parent 683 0 R/Title(2.1. Introduction)/Dest[536 0 R/XYZ 0 762 0]/Next 685 0 R>>endobj
+685 0 obj<</Parent 683 0 R/Title(2.2. Multithreading and Samba)/Dest[536 0 R/XYZ 0 581 0]/Prev 684 0 R/Next 686 0 R>>endobj
+686 0 obj<</Parent 683 0 R/Title(2.3. Threading smbd)/Dest[536 0 R/XYZ 0 387 0]/Prev 685 0 R/Next 687 0 R>>endobj
+687 0 obj<</Parent 683 0 R/Title(2.4. Threading nmbd)/Dest[538 0 R/XYZ 0 786 0]/Prev 686 0 R/Next 688 0 R>>endobj
+688 0 obj<</Parent 683 0 R/Title(2.5. nbmd Design)/Dest[538 0 R/XYZ 0 487 0]/Prev 687 0 R>>endobj
+689 0 obj<</Parent 674 0 R/Count -5/First 690 0 R/Last 694 0 R/Title(Chapter 3. The samba DEBUG system)/Dest[540 0 R/XYZ 0 786 0]/Prev 683 0 R/Next 698 0 R>>endobj
+690 0 obj<</Parent 689 0 R/Title(3.1. New Output Syntax)/Dest[540 0 R/XYZ 0 762 0]/Next 691 0 R>>endobj
+691 0 obj<</Parent 689 0 R/Title(3.2. The DEBUG\(\) Macro)/Dest[542 0 R/XYZ 0 786 0]/Prev 690 0 R/Next 692 0 R>>endobj
+692 0 obj<</Parent 689 0 R/Title(3.3. The DEBUGADD\(\) Macro)/Dest[544 0 R/XYZ 0 786 0]/Prev 691 0 R/Next 693 0 R>>endobj
+693 0 obj<</Parent 689 0 R/Title(3.4. The DEBUGLVL\(\) Macro)/Dest[544 0 R/XYZ 0 567 0]/Prev 692 0 R/Next 694 0 R>>endobj
+694 0 obj<</Parent 689 0 R/Count -3/First 695 0 R/Last 697 0 R/Title(3.5. New Functions)/Dest[546 0 R/XYZ 0 786 0]/Prev 693 0 R>>endobj
+695 0 obj<</Parent 694 0 R/Title(3.5.1. dbgtext\(\))/Dest[546 0 R/XYZ 0 766 0]/Next 696 0 R>>endobj
+696 0 obj<</Parent 694 0 R/Title(3.5.2. dbghdr\(\))/Dest[546 0 R/XYZ 0 655 0]/Prev 695 0 R/Next 697 0 R>>endobj
+697 0 obj<</Parent 694 0 R/Title(3.5.3. format_debug_text\(\))/Dest[546 0 R/XYZ 0 543 0]/Prev 696 0 R>>endobj
+698 0 obj<</Parent 674 0 R/Title(Chapter 4. Coding Suggestions)/Dest[548 0 R/XYZ 0 786 0]/Prev 689 0 R/Next 699 0 R>>endobj
+699 0 obj<</Parent 674 0 R/Count -5/First 700 0 R/Last 721 0 R/Title(Chapter 5. Samba Internals)/Dest[552 0 R/XYZ 0 786 0]/Prev 698 0 R/Next 722 0 R>>endobj
+700 0 obj<</Parent 699 0 R/Title(5.1. Character Handling)/Dest[552 0 R/XYZ 0 762 0]/Next 701 0 R>>endobj
+701 0 obj<</Parent 699 0 R/Title(5.2. The new functions)/Dest[552 0 R/XYZ 0 621 0]/Prev 700 0 R/Next 702 0 R>>endobj
+702 0 obj<</Parent 699 0 R/Count -15/First 703 0 R/Last 717 0 R/Title(5.3. Macros in byteorder.h)/Dest[554 0 R/XYZ 0 758 0]/Prev 701 0 R/Next 718 0 R>>endobj
+703 0 obj<</Parent 702 0 R/Title(5.3.1. CVAL\(buf,pos\))/Dest[554 0 R/XYZ 0 683 0]/Next 704 0 R>>endobj
+704 0 obj<</Parent 702 0 R/Title(5.3.2. PVAL\(buf,pos\))/Dest[554 0 R/XYZ 0 624 0]/Prev 703 0 R/Next 705 0 R>>endobj
+705 0 obj<</Parent 702 0 R/Title(5.3.3. SCVAL\(buf,pos,val\))/Dest[554 0 R/XYZ 0 566 0]/Prev 704 0 R/Next 706 0 R>>endobj
+706 0 obj<</Parent 702 0 R/Title(5.3.4. SVAL\(buf,pos\))/Dest[554 0 R/XYZ 0 507 0]/Prev 705 0 R/Next 707 0 R>>endobj
+707 0 obj<</Parent 702 0 R/Title(5.3.5. IVAL\(buf,pos\))/Dest[554 0 R/XYZ 0 436 0]/Prev 706 0 R/Next 708 0 R>>endobj
+708 0 obj<</Parent 702 0 R/Title(5.3.6. SVALS\(buf,pos\))/Dest[554 0 R/XYZ 0 377 0]/Prev 707 0 R/Next 709 0 R>>endobj
+709 0 obj<</Parent 702 0 R/Title(5.3.7. IVALS\(buf,pos\))/Dest[554 0 R/XYZ 0 319 0]/Prev 708 0 R/Next 710 0 R>>endobj
+710 0 obj<</Parent 702 0 R/Title(5.3.8. SSVAL\(buf,pos,val\))/Dest[554 0 R/XYZ 0 261 0]/Prev 709 0 R/Next 711 0 R>>endobj
+711 0 obj<</Parent 702 0 R/Title(5.3.9. SIVAL\(buf,pos,val\))/Dest[554 0 R/XYZ 0 202 0]/Prev 710 0 R/Next 712 0 R>>endobj
+712 0 obj<</Parent 702 0 R/Title(5.3.10. SSVALS\(buf,pos,val\))/Dest[556 0 R/XYZ 0 786 0]/Prev 711 0 R/Next 713 0 R>>endobj
+713 0 obj<</Parent 702 0 R/Title(5.3.11. SIVALS\(buf,pos,val\))/Dest[556 0 R/XYZ 0 728 0]/Prev 712 0 R/Next 714 0 R>>endobj
+714 0 obj<</Parent 702 0 R/Title(5.3.12. RSVAL\(buf,pos\))/Dest[556 0 R/XYZ 0 669 0]/Prev 713 0 R/Next 715 0 R>>endobj
+715 0 obj<</Parent 702 0 R/Title(5.3.13. RIVAL\(buf,pos\))/Dest[556 0 R/XYZ 0 611 0]/Prev 714 0 R/Next 716 0 R>>endobj
+716 0 obj<</Parent 702 0 R/Title(5.3.14. RSSVAL\(buf,pos,val\))/Dest[556 0 R/XYZ 0 553 0]/Prev 715 0 R/Next 717 0 R>>endobj
+717 0 obj<</Parent 702 0 R/Title(5.3.15. RSIVAL\(buf,pos,val\))/Dest[556 0 R/XYZ 0 481 0]/Prev 716 0 R>>endobj
+718 0 obj<</Parent 699 0 R/Count -2/First 719 0 R/Last 720 0 R/Title(5.4. LAN Manager Samba API)/Dest[556 0 R/XYZ 0 423 0]/Prev 702 0 R/Next 721 0 R>>endobj
+719 0 obj<</Parent 718 0 R/Title(5.4.1. Parameters)/Dest[556 0 R/XYZ 0 273 0]/Next 720 0 R>>endobj
+720 0 obj<</Parent 718 0 R/Title(5.4.2. Return value)/Dest[558 0 R/XYZ 0 494 0]/Prev 719 0 R>>endobj
+721 0 obj<</Parent 699 0 R/Title(5.5. Code character table)/Dest[560 0 R/XYZ 0 786 0]/Prev 718 0 R>>endobj
+722 0 obj<</Parent 674 0 R/Count -2/First 723 0 R/Last 727 0 R/Title(Chapter 6. The smb.conf file)/Dest[562 0 R/XYZ 0 786 0]/Prev 699 0 R/Next 729 0 R>>endobj
+723 0 obj<</Parent 722 0 R/Count -3/First 724 0 R/Last 726 0 R/Title(6.1. Lexical Analysis)/Dest[562 0 R/XYZ 0 762 0]/Next 727 0 R>>endobj
+724 0 obj<</Parent 723 0 R/Title(6.1.1. Handling of Whitespace)/Dest[562 0 R/XYZ 0 476 0]/Next 725 0 R>>endobj
+725 0 obj<</Parent 723 0 R/Title(6.1.2. Handling of Line Continuation)/Dest[562 0 R/XYZ 0 312 0]/Prev 724 0 R/Next 726 0 R>>endobj
+726 0 obj<</Parent 723 0 R/Title(6.1.3. Line Continuation Quirks)/Dest[564 0 R/XYZ 0 705 0]/Prev 725 0 R>>endobj
+727 0 obj<</Parent 722 0 R/Count -1/First 728 0 R/Last 728 0 R/Title(6.2. Syntax)/Dest[564 0 R/XYZ 0 293 0]/Prev 723 0 R>>endobj
+728 0 obj<</Parent 727 0 R/Title(6.2.1. About params.c)/Dest[566 0 R/XYZ 0 718 0]>>endobj
+729 0 obj<</Parent 674 0 R/Count -9/First 730 0 R/Last 738 0 R/Title(Chapter 7. NetBIOS in a Unix World)/Dest[568 0 R/XYZ 0 786 0]/Prev 722 0 R/Next 739 0 R>>endobj
+730 0 obj<</Parent 729 0 R/Title(7.1. Introduction)/Dest[568 0 R/XYZ 0 762 0]/Next 731 0 R>>endobj
+731 0 obj<</Parent 729 0 R/Title(7.2. Usernames)/Dest[568 0 R/XYZ 0 647 0]/Prev 730 0 R/Next 732 0 R>>endobj
+732 0 obj<</Parent 729 0 R/Title(7.3. File Ownership)/Dest[568 0 R/XYZ 0 269 0]/Prev 731 0 R/Next 733 0 R>>endobj
+733 0 obj<</Parent 729 0 R/Title(7.4. Passwords)/Dest[570 0 R/XYZ 0 745 0]/Prev 732 0 R/Next 734 0 R>>endobj
+734 0 obj<</Parent 729 0 R/Title(7.5. Locking)/Dest[570 0 R/XYZ 0 511 0]/Prev 733 0 R/Next 735 0 R>>endobj
+735 0 obj<</Parent 729 0 R/Title(7.6. Deny Modes)/Dest[572 0 R/XYZ 0 786 0]/Prev 734 0 R/Next 736 0 R>>endobj
+736 0 obj<</Parent 729 0 R/Title(7.7. Trapdoor UIDs)/Dest[572 0 R/XYZ 0 619 0]/Prev 735 0 R/Next 737 0 R>>endobj
+737 0 obj<</Parent 729 0 R/Title(7.8. Port numbers)/Dest[572 0 R/XYZ 0 491 0]/Prev 736 0 R/Next 738 0 R>>endobj
+738 0 obj<</Parent 729 0 R/Title(7.9. Protocol Complexity)/Dest[572 0 R/XYZ 0 231 0]/Prev 737 0 R>>endobj
+739 0 obj<</Parent 674 0 R/Title(Chapter 8. Tracing samba system calls)/Dest[576 0 R/XYZ 0 786 0]/Prev 729 0 R/Next 740 0 R>>endobj
+740 0 obj<</Parent 674 0 R/Count -8/First 741 0 R/Last 777 0 R/Title(Chapter 9. NT Domain RPC's)/Dest[580 0 R/XYZ 0 786 0]/Prev 739 0 R/Next 780 0 R>>endobj
+741 0 obj<</Parent 740 0 R/Count -2/First 742 0 R/Last 743 0 R/Title(9.1. Introduction)/Dest[580 0 R/XYZ 0 762 0]/Next 744 0 R>>endobj
+742 0 obj<</Parent 741 0 R/Title(9.1.1. Sources)/Dest[582 0 R/XYZ 0 679 0]/Next 743 0 R>>endobj
+743 0 obj<</Parent 741 0 R/Title(9.1.2. Credits)/Dest[582 0 R/XYZ 0 569 0]/Prev 742 0 R>>endobj
+744 0 obj<</Parent 740 0 R/Count -3/First 745 0 R/Last 747 0 R/Title(9.2. Notes and Structures)/Dest[582 0 R/XYZ 0 447 0]/Prev 741 0 R/Next 748 0 R>>endobj
+745 0 obj<</Parent 744 0 R/Title(9.2.1. Notes)/Dest[582 0 R/XYZ 0 426 0]/Next 746 0 R>>endobj
+746 0 obj<</Parent 744 0 R/Title(9.2.2. Enumerations)/Dest[584 0 R/XYZ 0 771 0]/Prev 745 0 R/Next 747 0 R>>endobj
+747 0 obj<</Parent 744 0 R/Title(9.2.3. Structures)/Dest[584 0 R/XYZ 0 288 0]/Prev 746 0 R>>endobj
+748 0 obj<</Parent 740 0 R/Count -12/First 749 0 R/Last 760 0 R/Title(9.3. MSRPC over Transact Named Pipe)/Dest[604 0 R/XYZ 0 481 0]/Prev 744 0 R/Next 761 0 R>>endobj
+749 0 obj<</Parent 748 0 R/Title(9.3.1. MSRPC Pipes)/Dest[604 0 R/XYZ 0 419 0]/Next 750 0 R>>endobj
+750 0 obj<</Parent 748 0 R/Title(9.3.2. Header)/Dest[606 0 R/XYZ 0 620 0]/Prev 749 0 R/Next 751 0 R>>endobj
+751 0 obj<</Parent 748 0 R/Title(9.3.3. Tail)/Dest[614 0 R/XYZ 0 584 0]/Prev 750 0 R/Next 752 0 R>>endobj
+752 0 obj<</Parent 748 0 R/Title(9.3.4. RPC Bind / Bind Ack)/Dest[614 0 R/XYZ 0 460 0]/Prev 751 0 R/Next 753 0 R>>endobj
+753 0 obj<</Parent 748 0 R/Title(9.3.5. NTLSA Transact Named Pipe)/Dest[616 0 R/XYZ 0 601 0]/Prev 752 0 R/Next 754 0 R>>endobj
+754 0 obj<</Parent 748 0 R/Title(9.3.6. LSA Open Policy)/Dest[616 0 R/XYZ 0 193 0]/Prev 753 0 R/Next 755 0 R>>endobj
+755 0 obj<</Parent 748 0 R/Title(9.3.7. LSA Query Info Policy)/Dest[618 0 R/XYZ 0 545 0]/Prev 754 0 R/Next 756 0 R>>endobj
+756 0 obj<</Parent 748 0 R/Title(9.3.8. LSA Enumerate Trusted Domains)/Dest[618 0 R/XYZ 0 198 0]/Prev 755 0 R/Next 757 0 R>>endobj
+757 0 obj<</Parent 748 0 R/Title(9.3.9. LSA Open Secret)/Dest[620 0 R/XYZ 0 639 0]/Prev 756 0 R/Next 758 0 R>>endobj
+758 0 obj<</Parent 748 0 R/Title(9.3.10. LSA Close)/Dest[620 0 R/XYZ 0 354 0]/Prev 757 0 R/Next 759 0 R>>endobj
+759 0 obj<</Parent 748 0 R/Title(9.3.11. LSA Lookup SIDS)/Dest[622 0 R/XYZ 0 786 0]/Prev 758 0 R/Next 760 0 R>>endobj
+760 0 obj<</Parent 748 0 R/Title(9.3.12. LSA Lookup Names)/Dest[622 0 R/XYZ 0 301 0]/Prev 759 0 R>>endobj
+761 0 obj<</Parent 740 0 R/Count -5/First 762 0 R/Last 766 0 R/Title(9.4. NETLOGON rpc Transact Named Pipe)/Dest[624 0 R/XYZ 0 465 0]/Prev 748 0 R/Next 767 0 R>>endobj
+762 0 obj<</Parent 761 0 R/Title(9.4.1. LSA Request Challenge)/Dest[626 0 R/XYZ 0 718 0]/Next 763 0 R>>endobj
+763 0 obj<</Parent 761 0 R/Title(9.4.2. LSA Authenticate 2)/Dest[626 0 R/XYZ 0 326 0]/Prev 762 0 R/Next 764 0 R>>endobj
+764 0 obj<</Parent 761 0 R/Title(9.4.3. LSA Server Password Set)/Dest[628 0 R/XYZ 0 584 0]/Prev 763 0 R/Next 765 0 R>>endobj
+765 0 obj<</Parent 761 0 R/Title(9.4.4. LSA SAM Logon)/Dest[628 0 R/XYZ 0 218 0]/Prev 764 0 R/Next 766 0 R>>endobj
+766 0 obj<</Parent 761 0 R/Title(9.4.5. LSA SAM Logoff)/Dest[630 0 R/XYZ 0 406 0]/Prev 765 0 R>>endobj
+767 0 obj<</Parent 740 0 R/Count -2/First 768 0 R/Last 769 0 R/Title(9.5. \\\\MAILSLOT\\NET\\NTLOGON)/Dest[632 0 R/XYZ 0 786 0]/Prev 761 0 R/Next 770 0 R>>endobj
+768 0 obj<</Parent 767 0 R/Title(9.5.1. Query for PDC)/Dest[632 0 R/XYZ 0 711 0]/Next 769 0 R>>endobj
+769 0 obj<</Parent 767 0 R/Title(9.5.2. SAM Logon)/Dest[634 0 R/XYZ 0 786 0]/Prev 768 0 R>>endobj
+770 0 obj<</Parent 740 0 R/Count -2/First 771 0 R/Last 772 0 R/Title(9.6. SRVSVC Transact Named Pipe)/Dest[636 0 R/XYZ 0 758 0]/Prev 767 0 R/Next 773 0 R>>endobj
+771 0 obj<</Parent 770 0 R/Title(9.6.1. Net Share Enum)/Dest[636 0 R/XYZ 0 630 0]/Next 772 0 R>>endobj
+772 0 obj<</Parent 770 0 R/Title(9.6.2. Net Server Get Info)/Dest[638 0 R/XYZ 0 786 0]/Prev 771 0 R>>endobj
+773 0 obj<</Parent 740 0 R/Count -3/First 774 0 R/Last 776 0 R/Title(9.7. Cryptographic side of NT Domain Authentication)/Dest[638 0 R/XYZ 0 486 0]/Prev 770 0 R/Next 777 0 R>>endobj
+774 0 obj<</Parent 773 0 R/Title(9.7.1. Definitions)/Dest[638 0 R/XYZ 0 466 0]/Next 775 0 R>>endobj
+775 0 obj<</Parent 773 0 R/Title(9.7.2. Protocol)/Dest[640 0 R/XYZ 0 786 0]/Prev 774 0 R/Next 776 0 R>>endobj
+776 0 obj<</Parent 773 0 R/Title(9.7.3. Comments)/Dest[640 0 R/XYZ 0 437 0]/Prev 775 0 R>>endobj
+777 0 obj<</Parent 740 0 R/Count -2/First 778 0 R/Last 779 0 R/Title(9.8. SIDs and RIDs)/Dest[640 0 R/XYZ 0 181 0]/Prev 773 0 R>>endobj
+778 0 obj<</Parent 777 0 R/Title(9.8.1. Well-known SIDs)/Dest[642 0 R/XYZ 0 686 0]/Next 779 0 R>>endobj
+779 0 obj<</Parent 777 0 R/Title(9.8.2. Well-known RIDS)/Dest[644 0 R/XYZ 0 718 0]/Prev 778 0 R>>endobj
+780 0 obj<</Parent 674 0 R/Count -5/First 781 0 R/Last 785 0 R/Title(Chapter 10. Samba Printing Internals)/Dest[648 0 R/XYZ 0 786 0]/Prev 740 0 R/Next 786 0 R>>endobj
+781 0 obj<</Parent 780 0 R/Title(10.1. Abstract)/Dest[648 0 R/XYZ 0 762 0]/Next 782 0 R>>endobj
+782 0 obj<</Parent 780 0 R/Title(10.2. Printing Interface to Various Back ends)/Dest[648 0 R/XYZ 0 674 0]/Prev 781 0 R/Next 783 0 R>>endobj
+783 0 obj<</Parent 780 0 R/Title(10.3. Print Queue TDB's)/Dest[648 0 R/XYZ 0 414 0]/Prev 782 0 R/Next 784 0 R>>endobj
+784 0 obj<</Parent 780 0 R/Title(10.4. ChangeID & Client Caching of Printer Information)/Dest[652 0 R/XYZ 0 745 0]/Prev 783 0 R/Next 785 0 R>>endobj
+785 0 obj<</Parent 780 0 R/Title(10.5. Windows NT/2K Printer Change Notify)/Dest[652 0 R/XYZ 0 683 0]/Prev 784 0 R>>endobj
+786 0 obj<</Parent 674 0 R/Count -1/First 787 0 R/Last 787 0 R/Title(Chapter 11. Samba WINS Internals)/Dest[658 0 R/XYZ 0 786 0]/Prev 780 0 R/Next 788 0 R>>endobj
+787 0 obj<</Parent 786 0 R/Title(11.1. WINS Failover)/Dest[658 0 R/XYZ 0 762 0]>>endobj
+788 0 obj<</Parent 674 0 R/Count -7/First 789 0 R/Last 800 0 R/Title(Chapter 12. The Upcoming SAM System)/Dest[660 0 R/XYZ 0 786 0]/Prev 786 0 R/Next 801 0 R>>endobj
+789 0 obj<</Parent 788 0 R/Title(12.1. Security in the 'new SAM')/Dest[660 0 R/XYZ 0 762 0]/Next 790 0 R>>endobj
+790 0 obj<</Parent 788 0 R/Title(12.2. Standalone from UNIX)/Dest[662 0 R/XYZ 0 692 0]/Prev 789 0 R/Next 791 0 R>>endobj
+791 0 obj<</Parent 788 0 R/Title(12.3. Handles and Races in the new SAM)/Dest[662 0 R/XYZ 0 551 0]/Prev 790 0 R/Next 792 0 R>>endobj
+792 0 obj<</Parent 788 0 R/Count -3/First 793 0 R/Last 795 0 R/Title(12.4. Layers)/Dest[662 0 R/XYZ 0 251 0]/Prev 791 0 R/Next 796 0 R>>endobj
+793 0 obj<</Parent 792 0 R/Title(12.4.1. Application)/Dest[662 0 R/XYZ 0 231 0]/Next 794 0 R>>endobj
+794 0 obj<</Parent 792 0 R/Title(12.4.2. SAM Interface)/Dest[664 0 R/XYZ 0 786 0]/Prev 793 0 R/Next 795 0 R>>endobj
+795 0 obj<</Parent 792 0 R/Title(12.4.3. SAM Modules)/Dest[664 0 R/XYZ 0 649 0]/Prev 794 0 R>>endobj
+796 0 obj<</Parent 788 0 R/Count -2/First 797 0 R/Last 798 0 R/Title(12.5. SAM Modules)/Dest[664 0 R/XYZ 0 537 0]/Prev 792 0 R/Next 799 0 R>>endobj
+797 0 obj<</Parent 796 0 R/Title(12.5.1. Special Module: sam_passdb)/Dest[664 0 R/XYZ 0 517 0]/Next 798 0 R>>endobj
+798 0 obj<</Parent 796 0 R/Title(12.5.2. sam_ads)/Dest[664 0 R/XYZ 0 419 0]/Prev 797 0 R>>endobj
+799 0 obj<</Parent 788 0 R/Title(12.6. Memory Management)/Dest[664 0 R/XYZ 0 281 0]/Prev 796 0 R/Next 800 0 R>>endobj
+800 0 obj<</Parent 788 0 R/Title(12.7. Testing)/Dest[666 0 R/XYZ 0 542 0]/Prev 799 0 R>>endobj
+801 0 obj<</Parent 674 0 R/Count -3/First 802 0 R/Last 804 0 R/Title(Chapter 13. LanMan and NT Password Encryption)/Dest[668 0 R/XYZ 0 786 0]/Prev 788 0 R>>endobj
+802 0 obj<</Parent 801 0 R/Title(13.1. Introduction)/Dest[668 0 R/XYZ 0 762 0]/Next 803 0 R>>endobj
+803 0 obj<</Parent 801 0 R/Title(13.2. How does it work?)/Dest[668 0 R/XYZ 0 621 0]/Prev 802 0 R/Next 804 0 R>>endobj
+804 0 obj<</Parent 801 0 R/Title(13.3. The smbpasswd file)/Dest[670 0 R/XYZ 0 771 0]/Prev 803 0 R>>endobj
+805 0 obj<</Type/Catalog/Pages 513 0 R/PageLayout/SinglePage/Outlines 674 0 R/OpenAction[524 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>5<</S/D/St 1/P()>>6<</S/D/St 2/P()>>9<</S/D/St 5/P()>>11<</S/D/St 7/P()>>13<</S/D/St 9/P()>>17<</S/D/St 13/P()>>19<</S/D/St 15/P()>>24<</S/D/St 20/P()>>27<</S/D/St 23/P()>>31<</S/D/St 27/P()>>33<</S/D/St 29/P()>>67<</S/D/St 63/P()>>72<</S/D/St 68/P()>>73<</S/D/St 69/P()>>77<</S/D/St 73/P()>>]>>>>endobj
xref
-0 820
+0 806
0000000000 65535 f
0000000015 00000 n
-0000000244 00000 n
-0000001810 00000 n
-0000001884 00000 n
-0000001963 00000 n
-0000002045 00000 n
-0000002123 00000 n
-0000002200 00000 n
-0000002279 00000 n
-0000002362 00000 n
-0000002439 00000 n
-0000002521 00000 n
-0000002580 00000 n
-0000002681 00000 n
-0000002783 00000 n
-0000002884 00000 n
-0000002985 00000 n
-0000003087 00000 n
-0000003189 00000 n
-0000003291 00000 n
-0000003392 00000 n
-0000003494 00000 n
-0000003596 00000 n
-0000003698 00000 n
-0000003800 00000 n
-0000003902 00000 n
-0000004003 00000 n
-0000004105 00000 n
-0000004207 00000 n
-0000004309 00000 n
-0000004411 00000 n
-0000004513 00000 n
-0000004615 00000 n
-0000004717 00000 n
-0000004819 00000 n
-0000004920 00000 n
-0000005021 00000 n
-0000005123 00000 n
-0000005225 00000 n
-0000005327 00000 n
-0000005429 00000 n
-0000005531 00000 n
-0000005633 00000 n
-0000005735 00000 n
-0000005837 00000 n
-0000005939 00000 n
-0000006041 00000 n
-0000006143 00000 n
-0000006245 00000 n
-0000006347 00000 n
-0000006449 00000 n
-0000006551 00000 n
-0000006652 00000 n
-0000006752 00000 n
-0000006852 00000 n
-0000007162 00000 n
-0000007263 00000 n
-0000007365 00000 n
-0000007467 00000 n
-0000007569 00000 n
-0000007671 00000 n
-0000007772 00000 n
-0000007874 00000 n
-0000007976 00000 n
-0000008078 00000 n
-0000008180 00000 n
-0000008282 00000 n
-0000008384 00000 n
-0000008485 00000 n
-0000008587 00000 n
-0000008689 00000 n
-0000008791 00000 n
-0000008893 00000 n
-0000008995 00000 n
-0000009097 00000 n
-0000009199 00000 n
-0000009301 00000 n
-0000009403 00000 n
-0000009504 00000 n
-0000009605 00000 n
-0000009707 00000 n
-0000009809 00000 n
-0000009911 00000 n
-0000010013 00000 n
-0000010115 00000 n
-0000010217 00000 n
-0000010319 00000 n
-0000010421 00000 n
-0000010523 00000 n
-0000010625 00000 n
-0000010727 00000 n
-0000010829 00000 n
-0000010931 00000 n
-0000011033 00000 n
-0000011135 00000 n
-0000011237 00000 n
-0000011339 00000 n
-0000011440 00000 n
-0000011540 00000 n
-0000011640 00000 n
-0000011965 00000 n
-0000012067 00000 n
-0000012170 00000 n
-0000012273 00000 n
-0000012376 00000 n
-0000012479 00000 n
-0000012582 00000 n
-0000012685 00000 n
-0000012788 00000 n
-0000012891 00000 n
-0000012994 00000 n
-0000013097 00000 n
-0000013200 00000 n
-0000013303 00000 n
-0000013406 00000 n
-0000013509 00000 n
-0000013612 00000 n
-0000013715 00000 n
-0000013818 00000 n
-0000013921 00000 n
-0000014024 00000 n
-0000014126 00000 n
-0000014229 00000 n
-0000014332 00000 n
-0000014435 00000 n
-0000014538 00000 n
-0000014641 00000 n
-0000014743 00000 n
-0000014846 00000 n
-0000014948 00000 n
-0000015051 00000 n
-0000015154 00000 n
-0000015257 00000 n
-0000015360 00000 n
-0000015463 00000 n
-0000015566 00000 n
-0000015669 00000 n
-0000015772 00000 n
-0000015875 00000 n
-0000015978 00000 n
-0000016081 00000 n
-0000016184 00000 n
-0000016285 00000 n
-0000016386 00000 n
-0000016487 00000 n
-0000016856 00000 n
-0000016958 00000 n
-0000017061 00000 n
-0000017163 00000 n
-0000017266 00000 n
-0000017369 00000 n
-0000017426 00000 n
-0000017481 00000 n
-0000017568 00000 n
-0000017623 00000 n
-0000017710 00000 n
-0000017777 00000 n
-0000017863 00000 n
-0000017965 00000 n
-0000018068 00000 n
-0000018171 00000 n
-0000018274 00000 n
-0000018376 00000 n
-0000018479 00000 n
-0000018582 00000 n
-0000018685 00000 n
-0000018788 00000 n
-0000018891 00000 n
-0000018993 00000 n
-0000019096 00000 n
-0000019199 00000 n
-0000019302 00000 n
-0000019405 00000 n
-0000019508 00000 n
-0000019611 00000 n
-0000019714 00000 n
-0000019817 00000 n
-0000019919 00000 n
-0000020021 00000 n
-0000020124 00000 n
-0000020227 00000 n
-0000020330 00000 n
-0000020433 00000 n
-0000020536 00000 n
-0000020639 00000 n
-0000020742 00000 n
-0000020845 00000 n
-0000020948 00000 n
-0000021051 00000 n
-0000021154 00000 n
-0000021257 00000 n
-0000021359 00000 n
-0000021460 00000 n
-0000021561 00000 n
-0000021890 00000 n
-0000021993 00000 n
-0000022096 00000 n
-0000022199 00000 n
-0000022302 00000 n
-0000022405 00000 n
-0000022508 00000 n
-0000022611 00000 n
-0000022713 00000 n
-0000022816 00000 n
-0000022919 00000 n
-0000023022 00000 n
-0000023125 00000 n
-0000023228 00000 n
-0000023331 00000 n
-0000023433 00000 n
-0000023536 00000 n
-0000023639 00000 n
-0000023742 00000 n
-0000023845 00000 n
-0000023948 00000 n
-0000024051 00000 n
-0000024154 00000 n
-0000024257 00000 n
-0000024360 00000 n
-0000024462 00000 n
-0000024564 00000 n
-0000024667 00000 n
-0000024770 00000 n
-0000024873 00000 n
-0000024976 00000 n
-0000025079 00000 n
-0000025182 00000 n
-0000025285 00000 n
-0000025388 00000 n
-0000025491 00000 n
-0000025594 00000 n
-0000025697 00000 n
-0000025800 00000 n
-0000025903 00000 n
-0000026006 00000 n
-0000026109 00000 n
-0000026212 00000 n
-0000026315 00000 n
-0000026418 00000 n
-0000026521 00000 n
-0000026624 00000 n
-0000026727 00000 n
-0000026830 00000 n
-0000026932 00000 n
-0000027033 00000 n
-0000027134 00000 n
-0000027559 00000 n
-0000027662 00000 n
-0000027765 00000 n
-0000027868 00000 n
-0000027971 00000 n
-0000028074 00000 n
-0000028177 00000 n
-0000028280 00000 n
-0000028383 00000 n
-0000028486 00000 n
-0000028589 00000 n
-0000028692 00000 n
-0000028795 00000 n
-0000028898 00000 n
-0000029001 00000 n
-0000029103 00000 n
-0000029206 00000 n
-0000029309 00000 n
-0000029412 00000 n
-0000029515 00000 n
-0000029618 00000 n
-0000029720 00000 n
-0000029823 00000 n
-0000029925 00000 n
-0000030028 00000 n
-0000030131 00000 n
-0000030234 00000 n
-0000030337 00000 n
-0000030440 00000 n
-0000030543 00000 n
-0000030646 00000 n
-0000030749 00000 n
-0000030852 00000 n
-0000030955 00000 n
-0000031058 00000 n
-0000031161 00000 n
-0000031263 00000 n
-0000031366 00000 n
-0000031469 00000 n
-0000031572 00000 n
-0000031674 00000 n
-0000031777 00000 n
-0000031880 00000 n
-0000032233 00000 n
-0000032317 00000 n
-0000032403 00000 n
-0000032477 00000 n
-0000032563 00000 n
-0000032596 00000 n
-0000032674 00000 n
-0000032761 00000 n
-0000032867 00000 n
-0000032953 00000 n
+0000000243 00000 n
+0000001809 00000 n
+0000001883 00000 n
+0000001962 00000 n
+0000002044 00000 n
+0000002122 00000 n
+0000002199 00000 n
+0000002278 00000 n
+0000002361 00000 n
+0000002438 00000 n
+0000002520 00000 n
+0000002579 00000 n
+0000002680 00000 n
+0000002782 00000 n
+0000002883 00000 n
+0000002984 00000 n
+0000003086 00000 n
+0000003188 00000 n
+0000003290 00000 n
+0000003391 00000 n
+0000003493 00000 n
+0000003595 00000 n
+0000003697 00000 n
+0000003799 00000 n
+0000003901 00000 n
+0000004002 00000 n
+0000004104 00000 n
+0000004206 00000 n
+0000004308 00000 n
+0000004410 00000 n
+0000004512 00000 n
+0000004614 00000 n
+0000004716 00000 n
+0000004818 00000 n
+0000004919 00000 n
+0000005020 00000 n
+0000005122 00000 n
+0000005224 00000 n
+0000005326 00000 n
+0000005428 00000 n
+0000005530 00000 n
+0000005632 00000 n
+0000005734 00000 n
+0000005836 00000 n
+0000005938 00000 n
+0000006040 00000 n
+0000006142 00000 n
+0000006244 00000 n
+0000006346 00000 n
+0000006448 00000 n
+0000006550 00000 n
+0000006651 00000 n
+0000006751 00000 n
+0000006851 00000 n
+0000007161 00000 n
+0000007262 00000 n
+0000007364 00000 n
+0000007466 00000 n
+0000007568 00000 n
+0000007670 00000 n
+0000007771 00000 n
+0000007873 00000 n
+0000007975 00000 n
+0000008077 00000 n
+0000008179 00000 n
+0000008281 00000 n
+0000008383 00000 n
+0000008484 00000 n
+0000008586 00000 n
+0000008688 00000 n
+0000008790 00000 n
+0000008892 00000 n
+0000008994 00000 n
+0000009096 00000 n
+0000009198 00000 n
+0000009300 00000 n
+0000009402 00000 n
+0000009503 00000 n
+0000009604 00000 n
+0000009706 00000 n
+0000009808 00000 n
+0000009910 00000 n
+0000010012 00000 n
+0000010114 00000 n
+0000010216 00000 n
+0000010318 00000 n
+0000010420 00000 n
+0000010522 00000 n
+0000010624 00000 n
+0000010726 00000 n
+0000010828 00000 n
+0000010930 00000 n
+0000011032 00000 n
+0000011134 00000 n
+0000011236 00000 n
+0000011338 00000 n
+0000011439 00000 n
+0000011539 00000 n
+0000011639 00000 n
+0000011964 00000 n
+0000012066 00000 n
+0000012169 00000 n
+0000012272 00000 n
+0000012375 00000 n
+0000012478 00000 n
+0000012581 00000 n
+0000012684 00000 n
+0000012787 00000 n
+0000012890 00000 n
+0000012993 00000 n
+0000013096 00000 n
+0000013199 00000 n
+0000013302 00000 n
+0000013405 00000 n
+0000013508 00000 n
+0000013611 00000 n
+0000013714 00000 n
+0000013817 00000 n
+0000013920 00000 n
+0000014023 00000 n
+0000014125 00000 n
+0000014228 00000 n
+0000014331 00000 n
+0000014434 00000 n
+0000014537 00000 n
+0000014640 00000 n
+0000014742 00000 n
+0000014845 00000 n
+0000014947 00000 n
+0000015050 00000 n
+0000015153 00000 n
+0000015256 00000 n
+0000015359 00000 n
+0000015462 00000 n
+0000015565 00000 n
+0000015668 00000 n
+0000015771 00000 n
+0000015874 00000 n
+0000015977 00000 n
+0000016080 00000 n
+0000016183 00000 n
+0000016284 00000 n
+0000016385 00000 n
+0000016486 00000 n
+0000016855 00000 n
+0000016957 00000 n
+0000017060 00000 n
+0000017093 00000 n
+0000017148 00000 n
+0000017235 00000 n
+0000017290 00000 n
+0000017377 00000 n
+0000017444 00000 n
+0000017530 00000 n
+0000017632 00000 n
+0000017735 00000 n
+0000017838 00000 n
+0000017941 00000 n
+0000018043 00000 n
+0000018146 00000 n
+0000018249 00000 n
+0000018352 00000 n
+0000018455 00000 n
+0000018558 00000 n
+0000018660 00000 n
+0000018763 00000 n
+0000018866 00000 n
+0000018969 00000 n
+0000019072 00000 n
+0000019175 00000 n
+0000019278 00000 n
+0000019381 00000 n
+0000019484 00000 n
+0000019586 00000 n
+0000019688 00000 n
+0000019791 00000 n
+0000019894 00000 n
+0000019997 00000 n
+0000020100 00000 n
+0000020203 00000 n
+0000020306 00000 n
+0000020409 00000 n
+0000020512 00000 n
+0000020615 00000 n
+0000020718 00000 n
+0000020821 00000 n
+0000020924 00000 n
+0000021026 00000 n
+0000021127 00000 n
+0000021228 00000 n
+0000021557 00000 n
+0000021660 00000 n
+0000021763 00000 n
+0000021866 00000 n
+0000021969 00000 n
+0000022072 00000 n
+0000022175 00000 n
+0000022278 00000 n
+0000022380 00000 n
+0000022483 00000 n
+0000022586 00000 n
+0000022689 00000 n
+0000022792 00000 n
+0000022895 00000 n
+0000022998 00000 n
+0000023100 00000 n
+0000023203 00000 n
+0000023306 00000 n
+0000023409 00000 n
+0000023512 00000 n
+0000023615 00000 n
+0000023718 00000 n
+0000023821 00000 n
+0000023924 00000 n
+0000024027 00000 n
+0000024129 00000 n
+0000024231 00000 n
+0000024334 00000 n
+0000024437 00000 n
+0000024540 00000 n
+0000024643 00000 n
+0000024746 00000 n
+0000024849 00000 n
+0000024952 00000 n
+0000025055 00000 n
+0000025158 00000 n
+0000025261 00000 n
+0000025364 00000 n
+0000025467 00000 n
+0000025570 00000 n
+0000025673 00000 n
+0000025776 00000 n
+0000025879 00000 n
+0000025982 00000 n
+0000026085 00000 n
+0000026188 00000 n
+0000026291 00000 n
+0000026394 00000 n
+0000026497 00000 n
+0000026599 00000 n
+0000026700 00000 n
+0000026801 00000 n
+0000027226 00000 n
+0000027329 00000 n
+0000027432 00000 n
+0000027535 00000 n
+0000027638 00000 n
+0000027741 00000 n
+0000027844 00000 n
+0000027947 00000 n
+0000028050 00000 n
+0000028153 00000 n
+0000028256 00000 n
+0000028359 00000 n
+0000028462 00000 n
+0000028565 00000 n
+0000028668 00000 n
+0000028770 00000 n
+0000028873 00000 n
+0000028976 00000 n
+0000029079 00000 n
+0000029182 00000 n
+0000029285 00000 n
+0000029387 00000 n
+0000029490 00000 n
+0000029592 00000 n
+0000029695 00000 n
+0000029798 00000 n
+0000029901 00000 n
+0000030004 00000 n
+0000030107 00000 n
+0000030210 00000 n
+0000030313 00000 n
+0000030416 00000 n
+0000030519 00000 n
+0000030622 00000 n
+0000030725 00000 n
+0000030828 00000 n
+0000030930 00000 n
+0000031033 00000 n
+0000031136 00000 n
+0000031239 00000 n
+0000031568 00000 n
+0000031652 00000 n
+0000031738 00000 n
+0000031812 00000 n
+0000031898 00000 n
+0000031931 00000 n
+0000032009 00000 n
+0000032096 00000 n
+0000032202 00000 n
+0000032288 00000 n
+0000032360 00000 n
+0000032446 00000 n
+0000032505 00000 n
+0000032592 00000 n
+0000032683 00000 n
+0000032769 00000 n
+0000032840 00000 n
+0000032926 00000 n
+0000032991 00000 n
0000033025 00000 n
-0000033111 00000 n
-0000033170 00000 n
-0000033257 00000 n
-0000033348 00000 n
-0000033434 00000 n
-0000033505 00000 n
-0000033591 00000 n
-0000033656 00000 n
-0000033690 00000 n
-0000033724 00000 n
-0000037122 00000 n
-0000037165 00000 n
-0000037208 00000 n
-0000037251 00000 n
-0000037294 00000 n
-0000037337 00000 n
-0000037380 00000 n
-0000037423 00000 n
-0000037466 00000 n
-0000037509 00000 n
-0000037552 00000 n
-0000037595 00000 n
-0000037638 00000 n
-0000037681 00000 n
-0000037724 00000 n
-0000037767 00000 n
-0000037810 00000 n
-0000037853 00000 n
-0000037896 00000 n
-0000037939 00000 n
-0000037982 00000 n
-0000038025 00000 n
-0000038068 00000 n
-0000038111 00000 n
-0000038154 00000 n
-0000038197 00000 n
-0000038240 00000 n
-0000038283 00000 n
-0000038326 00000 n
-0000038369 00000 n
-0000038412 00000 n
-0000038455 00000 n
-0000038498 00000 n
-0000038541 00000 n
-0000038584 00000 n
-0000038627 00000 n
-0000038670 00000 n
-0000038713 00000 n
-0000038756 00000 n
-0000038799 00000 n
-0000038842 00000 n
-0000038885 00000 n
-0000038928 00000 n
-0000038971 00000 n
-0000039014 00000 n
-0000039057 00000 n
-0000039100 00000 n
-0000039143 00000 n
-0000039186 00000 n
-0000039229 00000 n
-0000039272 00000 n
-0000039315 00000 n
-0000039358 00000 n
-0000039401 00000 n
-0000039444 00000 n
-0000039487 00000 n
-0000039530 00000 n
-0000039573 00000 n
-0000039616 00000 n
-0000039659 00000 n
-0000039702 00000 n
-0000039745 00000 n
-0000039788 00000 n
-0000039831 00000 n
-0000039874 00000 n
-0000039917 00000 n
-0000039960 00000 n
-0000040003 00000 n
-0000040046 00000 n
-0000040089 00000 n
-0000040132 00000 n
-0000040175 00000 n
-0000040218 00000 n
-0000040261 00000 n
-0000040304 00000 n
-0000040347 00000 n
-0000040390 00000 n
-0000040433 00000 n
-0000040476 00000 n
-0000040519 00000 n
-0000040562 00000 n
-0000040605 00000 n
-0000040648 00000 n
-0000040691 00000 n
-0000040734 00000 n
-0000040777 00000 n
-0000040820 00000 n
-0000040863 00000 n
-0000040906 00000 n
-0000040949 00000 n
-0000040992 00000 n
-0000041035 00000 n
-0000041078 00000 n
-0000041121 00000 n
-0000041164 00000 n
-0000041207 00000 n
-0000041250 00000 n
-0000041293 00000 n
-0000041336 00000 n
-0000041379 00000 n
-0000041422 00000 n
-0000041465 00000 n
-0000041508 00000 n
-0000041551 00000 n
-0000041594 00000 n
-0000041637 00000 n
-0000041680 00000 n
-0000041723 00000 n
-0000041766 00000 n
-0000041809 00000 n
-0000041852 00000 n
-0000041895 00000 n
-0000041938 00000 n
-0000041981 00000 n
-0000042024 00000 n
-0000042067 00000 n
-0000042110 00000 n
-0000042153 00000 n
-0000042196 00000 n
-0000042239 00000 n
-0000042282 00000 n
-0000042325 00000 n
-0000042368 00000 n
-0000042411 00000 n
-0000042454 00000 n
-0000042497 00000 n
-0000042540 00000 n
-0000042583 00000 n
-0000042626 00000 n
-0000042669 00000 n
-0000042712 00000 n
-0000042755 00000 n
-0000042798 00000 n
-0000042841 00000 n
-0000042884 00000 n
-0000042927 00000 n
-0000042970 00000 n
-0000043013 00000 n
-0000043056 00000 n
-0000043099 00000 n
-0000043142 00000 n
-0000043185 00000 n
-0000043228 00000 n
-0000043271 00000 n
-0000043314 00000 n
-0000043357 00000 n
-0000043400 00000 n
-0000043443 00000 n
-0000043486 00000 n
-0000043529 00000 n
-0000043572 00000 n
-0000043615 00000 n
-0000043658 00000 n
-0000043701 00000 n
-0000043744 00000 n
-0000043787 00000 n
-0000043830 00000 n
-0000043873 00000 n
-0000043916 00000 n
-0000043959 00000 n
-0000044002 00000 n
-0000044045 00000 n
-0000044088 00000 n
-0000044131 00000 n
-0000044174 00000 n
-0000044217 00000 n
-0000044260 00000 n
-0000044303 00000 n
-0000044346 00000 n
-0000044389 00000 n
-0000044432 00000 n
-0000044475 00000 n
-0000044518 00000 n
-0000044561 00000 n
-0000044604 00000 n
-0000044647 00000 n
-0000044690 00000 n
-0000044733 00000 n
-0000044776 00000 n
-0000044819 00000 n
-0000044862 00000 n
-0000044905 00000 n
-0000044948 00000 n
-0000044991 00000 n
-0000045034 00000 n
-0000045077 00000 n
-0000045120 00000 n
-0000045163 00000 n
-0000045206 00000 n
-0000045249 00000 n
-0000045292 00000 n
-0000045335 00000 n
-0000045378 00000 n
-0000045421 00000 n
-0000045464 00000 n
-0000045507 00000 n
-0000045550 00000 n
-0000045593 00000 n
-0000045636 00000 n
-0000045679 00000 n
-0000045722 00000 n
-0000045765 00000 n
-0000045808 00000 n
-0000045851 00000 n
-0000045894 00000 n
-0000045937 00000 n
-0000045980 00000 n
-0000046023 00000 n
-0000046066 00000 n
-0000046109 00000 n
-0000046152 00000 n
+0000033059 00000 n
+0000036406 00000 n
+0000036449 00000 n
+0000036492 00000 n
+0000036535 00000 n
+0000036578 00000 n
+0000036621 00000 n
+0000036664 00000 n
+0000036707 00000 n
+0000036750 00000 n
+0000036793 00000 n
+0000036836 00000 n
+0000036879 00000 n
+0000036922 00000 n
+0000036965 00000 n
+0000037008 00000 n
+0000037051 00000 n
+0000037094 00000 n
+0000037137 00000 n
+0000037180 00000 n
+0000037223 00000 n
+0000037266 00000 n
+0000037309 00000 n
+0000037352 00000 n
+0000037395 00000 n
+0000037438 00000 n
+0000037481 00000 n
+0000037524 00000 n
+0000037567 00000 n
+0000037610 00000 n
+0000037653 00000 n
+0000037696 00000 n
+0000037739 00000 n
+0000037782 00000 n
+0000037825 00000 n
+0000037868 00000 n
+0000037911 00000 n
+0000037954 00000 n
+0000037997 00000 n
+0000038040 00000 n
+0000038083 00000 n
+0000038126 00000 n
+0000038169 00000 n
+0000038212 00000 n
+0000038255 00000 n
+0000038298 00000 n
+0000038341 00000 n
+0000038384 00000 n
+0000038427 00000 n
+0000038470 00000 n
+0000038513 00000 n
+0000038556 00000 n
+0000038599 00000 n
+0000038642 00000 n
+0000038685 00000 n
+0000038728 00000 n
+0000038771 00000 n
+0000038814 00000 n
+0000038857 00000 n
+0000038900 00000 n
+0000038943 00000 n
+0000038986 00000 n
+0000039029 00000 n
+0000039072 00000 n
+0000039115 00000 n
+0000039158 00000 n
+0000039201 00000 n
+0000039244 00000 n
+0000039287 00000 n
+0000039330 00000 n
+0000039373 00000 n
+0000039416 00000 n
+0000039459 00000 n
+0000039502 00000 n
+0000039545 00000 n
+0000039588 00000 n
+0000039631 00000 n
+0000039674 00000 n
+0000039717 00000 n
+0000039760 00000 n
+0000039803 00000 n
+0000039846 00000 n
+0000039889 00000 n
+0000039932 00000 n
+0000039975 00000 n
+0000040018 00000 n
+0000040061 00000 n
+0000040104 00000 n
+0000040147 00000 n
+0000040190 00000 n
+0000040233 00000 n
+0000040276 00000 n
+0000040319 00000 n
+0000040362 00000 n
+0000040405 00000 n
+0000040448 00000 n
+0000040491 00000 n
+0000040534 00000 n
+0000040577 00000 n
+0000040620 00000 n
+0000040663 00000 n
+0000040706 00000 n
+0000040749 00000 n
+0000040792 00000 n
+0000040835 00000 n
+0000040878 00000 n
+0000040921 00000 n
+0000040964 00000 n
+0000041007 00000 n
+0000041050 00000 n
+0000041093 00000 n
+0000041136 00000 n
+0000041179 00000 n
+0000041222 00000 n
+0000041265 00000 n
+0000041308 00000 n
+0000041351 00000 n
+0000041394 00000 n
+0000041437 00000 n
+0000041480 00000 n
+0000041523 00000 n
+0000041566 00000 n
+0000041609 00000 n
+0000041652 00000 n
+0000041695 00000 n
+0000041738 00000 n
+0000041781 00000 n
+0000041824 00000 n
+0000041867 00000 n
+0000041910 00000 n
+0000041953 00000 n
+0000041996 00000 n
+0000042039 00000 n
+0000042082 00000 n
+0000042125 00000 n
+0000042168 00000 n
+0000042211 00000 n
+0000042254 00000 n
+0000042297 00000 n
+0000042340 00000 n
+0000042383 00000 n
+0000042426 00000 n
+0000042469 00000 n
+0000042512 00000 n
+0000042555 00000 n
+0000042598 00000 n
+0000042641 00000 n
+0000042684 00000 n
+0000042727 00000 n
+0000042770 00000 n
+0000042813 00000 n
+0000042856 00000 n
+0000042899 00000 n
+0000042942 00000 n
+0000042985 00000 n
+0000043028 00000 n
+0000043071 00000 n
+0000043114 00000 n
+0000043157 00000 n
+0000043200 00000 n
+0000043243 00000 n
+0000043286 00000 n
+0000043329 00000 n
+0000043372 00000 n
+0000043415 00000 n
+0000043458 00000 n
+0000043501 00000 n
+0000043544 00000 n
+0000043587 00000 n
+0000043630 00000 n
+0000043673 00000 n
+0000043716 00000 n
+0000043759 00000 n
+0000043802 00000 n
+0000043845 00000 n
+0000043888 00000 n
+0000043931 00000 n
+0000043974 00000 n
+0000044017 00000 n
+0000044060 00000 n
+0000044103 00000 n
+0000044146 00000 n
+0000044189 00000 n
+0000044232 00000 n
+0000044275 00000 n
+0000044318 00000 n
+0000044361 00000 n
+0000044404 00000 n
+0000044447 00000 n
+0000044490 00000 n
+0000044533 00000 n
+0000044576 00000 n
+0000044619 00000 n
+0000044662 00000 n
+0000044705 00000 n
+0000044748 00000 n
+0000044791 00000 n
+0000044834 00000 n
+0000044877 00000 n
+0000044920 00000 n
+0000044963 00000 n
+0000045006 00000 n
+0000045049 00000 n
+0000045092 00000 n
+0000045135 00000 n
+0000045178 00000 n
+0000045221 00000 n
+0000045264 00000 n
+0000045307 00000 n
+0000045350 00000 n
+0000046037 00000 n
0000046195 00000 n
-0000046890 00000 n
-0000047048 00000 n
-0000047215 00000 n
-0000047405 00000 n
-0000050007 00000 n
-0000050198 00000 n
-0000053303 00000 n
-0000053494 00000 n
-0000057039 00000 n
-0000057230 00000 n
-0000057902 00000 n
-0000058060 00000 n
-0000058289 00000 n
-0000058489 00000 n
-0000060298 00000 n
-0000060470 00000 n
-0000062553 00000 n
-0000062725 00000 n
-0000064745 00000 n
-0000064912 00000 n
-0000066557 00000 n
-0000066724 00000 n
-0000068266 00000 n
-0000068433 00000 n
-0000070167 00000 n
-0000070334 00000 n
-0000072070 00000 n
-0000072246 00000 n
-0000073511 00000 n
-0000073687 00000 n
-0000074898 00000 n
-0000075074 00000 n
-0000076322 00000 n
-0000076489 00000 n
-0000077399 00000 n
-0000077590 00000 n
-0000079551 00000 n
-0000079708 00000 n
-0000081485 00000 n
-0000081652 00000 n
-0000083634 00000 n
-0000083801 00000 n
-0000084537 00000 n
-0000084713 00000 n
-0000085755 00000 n
-0000085922 00000 n
-0000087557 00000 n
-0000087724 00000 n
-0000088348 00000 n
-0000088524 00000 n
-0000089854 00000 n
-0000090030 00000 n
-0000091104 00000 n
-0000091271 00000 n
-0000091872 00000 n
-0000092039 00000 n
-0000093825 00000 n
-0000093992 00000 n
-0000095709 00000 n
-0000095876 00000 n
-0000097725 00000 n
-0000097882 00000 n
-0000098997 00000 n
-0000099182 00000 n
-0000100789 00000 n
-0000100955 00000 n
-0000101844 00000 n
-0000102044 00000 n
-0000103769 00000 n
-0000103945 00000 n
-0000105770 00000 n
-0000105946 00000 n
-0000106557 00000 n
-0000106733 00000 n
-0000107508 00000 n
-0000107684 00000 n
-0000108441 00000 n
-0000108617 00000 n
-0000109456 00000 n
-0000109632 00000 n
-0000110468 00000 n
-0000110653 00000 n
-0000111493 00000 n
-0000111669 00000 n
-0000112429 00000 n
-0000112595 00000 n
-0000113220 00000 n
-0000113405 00000 n
-0000114173 00000 n
-0000114349 00000 n
-0000115311 00000 n
-0000115496 00000 n
-0000116831 00000 n
-0000117016 00000 n
-0000118034 00000 n
-0000118200 00000 n
-0000118780 00000 n
-0000118965 00000 n
-0000120024 00000 n
-0000120200 00000 n
-0000121078 00000 n
-0000121254 00000 n
-0000122348 00000 n
-0000122533 00000 n
-0000123419 00000 n
-0000123604 00000 n
-0000124381 00000 n
-0000124557 00000 n
-0000125158 00000 n
-0000125334 00000 n
+0000046362 00000 n
+0000046552 00000 n
+0000049149 00000 n
+0000049340 00000 n
+0000052448 00000 n
+0000052639 00000 n
+0000056177 00000 n
+0000056368 00000 n
+0000056827 00000 n
+0000056985 00000 n
+0000057214 00000 n
+0000057414 00000 n
+0000059219 00000 n
+0000059391 00000 n
+0000061477 00000 n
+0000061649 00000 n
+0000063568 00000 n
+0000063735 00000 n
+0000065380 00000 n
+0000065547 00000 n
+0000067089 00000 n
+0000067256 00000 n
+0000068990 00000 n
+0000069157 00000 n
+0000070893 00000 n
+0000071069 00000 n
+0000072334 00000 n
+0000072510 00000 n
+0000073721 00000 n
+0000073897 00000 n
+0000075145 00000 n
+0000075312 00000 n
+0000076222 00000 n
+0000076413 00000 n
+0000078380 00000 n
+0000078537 00000 n
+0000080320 00000 n
+0000080487 00000 n
+0000082471 00000 n
+0000082638 00000 n
+0000083374 00000 n
+0000083550 00000 n
+0000084592 00000 n
+0000084759 00000 n
+0000086395 00000 n
+0000086562 00000 n
+0000087186 00000 n
+0000087362 00000 n
+0000088690 00000 n
+0000088866 00000 n
+0000089940 00000 n
+0000090107 00000 n
+0000090708 00000 n
+0000090875 00000 n
+0000092661 00000 n
+0000092828 00000 n
+0000094545 00000 n
+0000094712 00000 n
+0000096561 00000 n
+0000096718 00000 n
+0000097833 00000 n
+0000098018 00000 n
+0000099625 00000 n
+0000099791 00000 n
+0000100680 00000 n
+0000100880 00000 n
+0000102605 00000 n
+0000102781 00000 n
+0000104608 00000 n
+0000104784 00000 n
+0000105395 00000 n
+0000105571 00000 n
+0000106346 00000 n
+0000106522 00000 n
+0000107279 00000 n
+0000107455 00000 n
+0000108294 00000 n
+0000108470 00000 n
+0000109306 00000 n
+0000109491 00000 n
+0000110331 00000 n
+0000110507 00000 n
+0000111267 00000 n
+0000111433 00000 n
+0000112058 00000 n
+0000112243 00000 n
+0000113011 00000 n
+0000113187 00000 n
+0000114149 00000 n
+0000114334 00000 n
+0000115669 00000 n
+0000115854 00000 n
+0000116872 00000 n
+0000117038 00000 n
+0000117618 00000 n
+0000117803 00000 n
+0000118862 00000 n
+0000119038 00000 n
+0000119916 00000 n
+0000120092 00000 n
+0000121186 00000 n
+0000121371 00000 n
+0000122257 00000 n
+0000122442 00000 n
+0000123219 00000 n
+0000123395 00000 n
+0000123996 00000 n
+0000124172 00000 n
+0000124834 00000 n
+0000125019 00000 n
0000125996 00000 n
-0000126181 00000 n
-0000127158 00000 n
-0000127334 00000 n
-0000128341 00000 n
-0000128517 00000 n
-0000129511 00000 n
-0000129696 00000 n
-0000130528 00000 n
-0000130704 00000 n
-0000131437 00000 n
-0000131613 00000 n
-0000132295 00000 n
-0000132471 00000 n
-0000133300 00000 n
-0000133476 00000 n
-0000134464 00000 n
-0000134631 00000 n
-0000136067 00000 n
-0000136252 00000 n
-0000136985 00000 n
-0000137170 00000 n
-0000137797 00000 n
-0000137963 00000 n
-0000138361 00000 n
-0000138547 00000 n
-0000140075 00000 n
-0000140250 00000 n
-0000141964 00000 n
-0000142150 00000 n
-0000143732 00000 n
-0000143908 00000 n
-0000145674 00000 n
-0000145841 00000 n
-0000146219 00000 n
-0000146395 00000 n
-0000147692 00000 n
-0000147868 00000 n
-0000149572 00000 n
-0000149749 00000 n
-0000151501 00000 n
-0000151668 00000 n
-0000153562 00000 n
-0000153747 00000 n
-0000155017 00000 n
-0000155193 00000 n
-0000156921 00000 n
-0000157133 00000 n
-0000158757 00000 n
-0000158941 00000 n
-0000159854 00000 n
-0000160039 00000 n
-0000161039 00000 n
-0000161095 00000 n
-0000161194 00000 n
-0000161347 00000 n
-0000161426 00000 n
-0000161529 00000 n
-0000161727 00000 n
-0000161821 00000 n
-0000161938 00000 n
-0000162037 00000 n
-0000162197 00000 n
-0000162296 00000 n
-0000162420 00000 n
-0000162534 00000 n
-0000162648 00000 n
-0000162746 00000 n
-0000162910 00000 n
-0000163014 00000 n
-0000163133 00000 n
-0000163255 00000 n
-0000163377 00000 n
-0000163513 00000 n
-0000163613 00000 n
-0000163725 00000 n
-0000163835 00000 n
-0000163959 00000 n
-0000164116 00000 n
-0000164221 00000 n
-0000164338 00000 n
-0000164496 00000 n
-0000164600 00000 n
-0000164717 00000 n
-0000164839 00000 n
-0000164956 00000 n
-0000165073 00000 n
-0000165191 00000 n
-0000165309 00000 n
-0000165431 00000 n
-0000165553 00000 n
-0000165677 00000 n
-0000165801 00000 n
-0000165920 00000 n
-0000166039 00000 n
-0000166163 00000 n
-0000166274 00000 n
-0000166431 00000 n
-0000166530 00000 n
-0000166631 00000 n
-0000166738 00000 n
-0000166897 00000 n
-0000167036 00000 n
-0000167147 00000 n
-0000167278 00000 n
-0000167391 00000 n
-0000167520 00000 n
-0000167610 00000 n
-0000167775 00000 n
-0000167874 00000 n
-0000167983 00000 n
-0000168097 00000 n
-0000168206 00000 n
-0000168313 00000 n
-0000168423 00000 n
-0000168536 00000 n
-0000168648 00000 n
-0000168754 00000 n
-0000168886 00000 n
-0000169043 00000 n
-0000169178 00000 n
-0000169274 00000 n
-0000169370 00000 n
-0000169526 00000 n
-0000169620 00000 n
-0000169734 00000 n
-0000169833 00000 n
-0000170000 00000 n
-0000170100 00000 n
-0000170208 00000 n
-0000170314 00000 n
-0000170435 00000 n
-0000170562 00000 n
-0000170679 00000 n
-0000170802 00000 n
-0000170933 00000 n
-0000171050 00000 n
-0000171162 00000 n
-0000171280 00000 n
-0000171386 00000 n
-0000171554 00000 n
-0000171664 00000 n
-0000171784 00000 n
-0000171909 00000 n
-0000172024 00000 n
-0000172127 00000 n
-0000172289 00000 n
-0000172391 00000 n
-0000172489 00000 n
+0000126172 00000 n
+0000127179 00000 n
+0000127355 00000 n
+0000128349 00000 n
+0000128534 00000 n
+0000129366 00000 n
+0000129542 00000 n
+0000130275 00000 n
+0000130451 00000 n
+0000131133 00000 n
+0000131309 00000 n
+0000132138 00000 n
+0000132314 00000 n
+0000133302 00000 n
+0000133469 00000 n
+0000134905 00000 n
+0000135090 00000 n
+0000135823 00000 n
+0000136008 00000 n
+0000136635 00000 n
+0000136801 00000 n
+0000137199 00000 n
+0000137385 00000 n
+0000138913 00000 n
+0000139088 00000 n
+0000140802 00000 n
+0000140988 00000 n
+0000142570 00000 n
+0000142746 00000 n
+0000144513 00000 n
+0000144680 00000 n
+0000145058 00000 n
+0000145234 00000 n
+0000146531 00000 n
+0000146707 00000 n
+0000148414 00000 n
+0000148591 00000 n
+0000150343 00000 n
+0000150510 00000 n
+0000152404 00000 n
+0000152589 00000 n
+0000153859 00000 n
+0000154035 00000 n
+0000155763 00000 n
+0000155975 00000 n
+0000157598 00000 n
+0000157782 00000 n
+0000158672 00000 n
+0000158728 00000 n
+0000158827 00000 n
+0000158980 00000 n
+0000159059 00000 n
+0000159162 00000 n
+0000159360 00000 n
+0000159454 00000 n
+0000159571 00000 n
+0000159670 00000 n
+0000159830 00000 n
+0000159929 00000 n
+0000160053 00000 n
+0000160167 00000 n
+0000160281 00000 n
+0000160379 00000 n
+0000160543 00000 n
+0000160647 00000 n
+0000160766 00000 n
+0000160888 00000 n
+0000161010 00000 n
+0000161146 00000 n
+0000161246 00000 n
+0000161358 00000 n
+0000161468 00000 n
+0000161592 00000 n
+0000161749 00000 n
+0000161854 00000 n
+0000161971 00000 n
+0000162129 00000 n
+0000162233 00000 n
+0000162350 00000 n
+0000162472 00000 n
+0000162589 00000 n
+0000162706 00000 n
+0000162824 00000 n
+0000162942 00000 n
+0000163064 00000 n
+0000163186 00000 n
+0000163310 00000 n
+0000163434 00000 n
+0000163553 00000 n
+0000163672 00000 n
+0000163796 00000 n
+0000163907 00000 n
+0000164064 00000 n
+0000164163 00000 n
+0000164264 00000 n
+0000164371 00000 n
+0000164530 00000 n
+0000164669 00000 n
+0000164780 00000 n
+0000164911 00000 n
+0000165024 00000 n
+0000165153 00000 n
+0000165243 00000 n
+0000165408 00000 n
+0000165507 00000 n
+0000165616 00000 n
+0000165730 00000 n
+0000165839 00000 n
+0000165946 00000 n
+0000166056 00000 n
+0000166169 00000 n
+0000166281 00000 n
+0000166387 00000 n
+0000166519 00000 n
+0000166676 00000 n
+0000166811 00000 n
+0000166907 00000 n
+0000167003 00000 n
+0000167159 00000 n
+0000167253 00000 n
+0000167367 00000 n
+0000167466 00000 n
+0000167633 00000 n
+0000167733 00000 n
+0000167841 00000 n
+0000167947 00000 n
+0000168068 00000 n
+0000168195 00000 n
+0000168312 00000 n
+0000168435 00000 n
+0000168566 00000 n
+0000168683 00000 n
+0000168795 00000 n
+0000168913 00000 n
+0000169019 00000 n
+0000169187 00000 n
+0000169297 00000 n
+0000169417 00000 n
+0000169542 00000 n
+0000169657 00000 n
+0000169760 00000 n
+0000169922 00000 n
+0000170024 00000 n
+0000170122 00000 n
+0000170284 00000 n
+0000170387 00000 n
+0000170495 00000 n
+0000170677 00000 n
+0000170777 00000 n
+0000170887 00000 n
+0000170984 00000 n
+0000171120 00000 n
+0000171224 00000 n
+0000171328 00000 n
+0000171495 00000 n
+0000171591 00000 n
+0000171731 00000 n
+0000171849 00000 n
+0000171998 00000 n
+0000172121 00000 n
+0000172284 00000 n
+0000172372 00000 n
+0000172538 00000 n
0000172651 00000 n
-0000172754 00000 n
-0000172862 00000 n
-0000173044 00000 n
-0000173144 00000 n
-0000173254 00000 n
-0000173351 00000 n
-0000173487 00000 n
-0000173591 00000 n
-0000173695 00000 n
-0000173862 00000 n
-0000173958 00000 n
-0000174098 00000 n
-0000174216 00000 n
-0000174367 00000 n
-0000174490 00000 n
-0000174653 00000 n
-0000174741 00000 n
-0000174907 00000 n
-0000175020 00000 n
-0000175141 00000 n
-0000175274 00000 n
-0000175417 00000 n
-0000175518 00000 n
-0000175634 00000 n
-0000175735 00000 n
-0000175883 00000 n
-0000175999 00000 n
-0000176096 00000 n
-0000176214 00000 n
-0000176309 00000 n
-0000176485 00000 n
-0000176585 00000 n
-0000176703 00000 n
-0000176810 00000 n
-0000176961 00000 n
-0000177054 00000 n
-0000177158 00000 n
+0000172772 00000 n
+0000172905 00000 n
+0000173048 00000 n
+0000173149 00000 n
+0000173265 00000 n
+0000173366 00000 n
+0000173514 00000 n
+0000173630 00000 n
+0000173727 00000 n
+0000173845 00000 n
+0000173940 00000 n
+0000174103 00000 n
+0000174203 00000 n
+0000174321 00000 n
+0000174427 00000 n
trailer
-<</Size 820/Root 819 0 R/Info 1 0 R/ID[<7b9583ab0e3792f751adca5026f42dd3><7b9583ab0e3792f751adca5026f42dd3>]>>
+<</Size 806/Root 805 0 R/Info 1 0 R/ID[<37e21dd5bf11a0bb7770129df9f0d2ea><37e21dd5bf11a0bb7770129df9f0d2ea>]>>
startxref
-177658
+174907
%%EOF
diff --git a/docs/Samba-HOWTO-Collection.pdf b/docs/Samba-HOWTO-Collection.pdf
index fb5e53a515..8c67499ae8 100644
--- a/docs/Samba-HOWTO-Collection.pdf
+++ b/docs/Samba-HOWTO-Collection.pdf
@@ -1,6 +1,6 @@
%PDF-1.3
%âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030218225925-0100)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.77+)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030304132846+0600)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.76b+)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -13,55 +13,51 @@
11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
12 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
13 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
-14 0 obj<</Type/XObject/Subtype/Image/ColorSpace/DeviceGray/Interpolate true/Filter/FlateDecode/Width 24/Height 24/BitsPerComponent 8/Length 250 >>stream
-xUQ+–1¼ßÊ‘kGŽl;2²®À"c#‘‘X$G`IwèÙ׺(¾qOÑ%ùsÛN Šo$•¦š™àQÜ4FÛ¾Qz'`Ô/‹ËÞ~Läòì,û¯vuÓGo¡²— u›“jc™\ß±ÚXI3+cðÑEd‚Jk{Ãó÷çQÐ[ëòñ^X„àê¾øRƒo8ÐzÍ‘uá(dö*“GÉs(y›î üêõxÞ‹ÇYgäÚ(ï‘{E“ó䢡 {_‰3–û^ô¨žSd´î§é8ãæ„×<##~æ­•$:sð»›0Bˆ3ïå9÷dendstream
-endobj
-15 0 obj<</Type/XObject/Subtype/Image/ColorSpace[/Indexed/DeviceRGB 53<0800001000001800002100002900003100004200004A00005200005A00006B00007300007B00008400008C0000940000947B7B9C52529C5A5A9C7B7BA50000A53939A54A4AA58484A59494A5A5A5AD0000AD3131AD9494B50000B52929B59C9CB5A5A5B5B5B5BD0000BDADADC60000C61010C61818C6C6C6CE0000CE2929D60000D62929D6D6D6DE0000DEDEDEE70000E72121EF0808EFEFEFF70000F7F7F7FFFFFF>]/Interpolate true/Filter/FlateDecode/Width 24/Height 24/BitsPerComponent 8/Length 223 >>stream
-xUQ‡‚0 5âÀâ8@‹´öÿÍÚ4¥¦wo%w•R+©8¸çóCŒ+N"]ׂ*³ÏW ,D¶1Ž|áŠØi"%õ~öÄ0íÈ)ûÜ1ªlN!3€Ž1ˆìTÆ4HÔ†ÞË<ê <~õZ>ynõ¯.ŒHãê«>LÜê…K·ùbØŽ¼ÑŸ'4¦øËûŽžY}Íü-?f&tïA¿Â{2é“»7L}On4žïàKùIÿˆ" Ÿä õP†B‡hïG]áz˜$>—ÐÔ³å.mcoendstream
-endobj
-16 0 obj<</Subtype/Link/Rect[72.0 684.0 223.5 697.0]/Border[0 0 0]/Dest[1389 0 R/XYZ 0 734 0]>>endobj
-17 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[1389 0 R/XYZ 0 696 0]>>endobj
-18 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[1391 0 R/XYZ 0 734 0]>>endobj
-19 0 obj<</Subtype/Link/Rect[72.0 618.0 175.0 631.0]/Border[0 0 0]/Dest[1399 0 R/XYZ 0 734 0]>>endobj
-20 0 obj<</Subtype/Link/Rect[72.0 591.6 131.9 604.6]/Border[0 0 0]/Dest[1401 0 R/XYZ 0 734 0]>>endobj
-21 0 obj<</Subtype/Link/Rect[72.0 565.2 277.3 578.2]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 734 0]>>endobj
-22 0 obj<</Subtype/Link/Rect[108.0 552.0 215.5 565.0]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 696 0]>>endobj
-23 0 obj<</Subtype/Link/Rect[108.0 538.8 221.4 551.8]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 568 0]>>endobj
-24 0 obj<</Subtype/Link/Rect[108.0 525.6 224.1 538.6]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 163 0]>>endobj
-25 0 obj<</Subtype/Link/Rect[108.0 512.4 275.4 525.4]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 734 0]>>endobj
-26 0 obj<</Subtype/Link/Rect[108.0 499.2 280.3 512.2]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 385 0]>>endobj
-27 0 obj<</Subtype/Link/Rect[108.0 486.0 251.3 499.0]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 257 0]>>endobj
-28 0 obj<</Subtype/Link/Rect[126.0 472.8 259.5 485.8]/Border[0 0 0]/Dest[1409 0 R/XYZ 0 734 0]>>endobj
-29 0 obj<</Subtype/Link/Rect[126.0 459.6 307.8 472.6]/Border[0 0 0]/Dest[1409 0 R/XYZ 0 247 0]>>endobj
-30 0 obj<</Subtype/Link/Rect[108.0 446.4 328.6 459.4]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 665 0]>>endobj
-31 0 obj<</Subtype/Link/Rect[108.0 433.2 282.2 446.2]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 498 0]>>endobj
-32 0 obj<</Subtype/Link/Rect[108.0 420.0 478.0 433.0]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 330 0]>>endobj
-33 0 obj<</Subtype/Link/Rect[108.0 406.8 259.4 419.8]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 734 0]>>endobj
-34 0 obj<</Subtype/Link/Rect[126.0 393.6 254.0 406.6]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 553 0]>>endobj
-35 0 obj<</Subtype/Link/Rect[126.0 380.4 204.5 393.4]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 494 0]>>endobj
-36 0 obj<</Subtype/Link/Rect[126.0 367.2 285.2 380.2]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 409 0]>>endobj
-37 0 obj<</Subtype/Link/Rect[126.0 354.0 313.6 367.0]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 734 0]>>endobj
-38 0 obj<</Subtype/Link/Rect[126.0 340.8 195.7 353.8]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 583 0]>>endobj
-39 0 obj<</Subtype/Link/Rect[126.0 327.6 250.3 340.6]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 128 0]>>endobj
-40 0 obj<</Subtype/Link/Rect[72.0 301.2 435.9 314.2]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 734 0]>>endobj
-41 0 obj<</Subtype/Link/Rect[108.0 288.0 175.5 301.0]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 604 0]>>endobj
-42 0 obj<</Subtype/Link/Rect[108.0 274.8 313.1 287.8]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 159 0]>>endobj
-43 0 obj<</Subtype/Link/Rect[108.0 261.6 326.2 274.6]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 509 0]>>endobj
-44 0 obj<</Subtype/Link/Rect[108.0 248.4 187.1 261.4]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 331 0]>>endobj
-45 0 obj<</Subtype/Link/Rect[108.0 235.2 425.7 248.2]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 494 0]>>endobj
-46 0 obj<</Subtype/Link/Rect[108.0 222.0 232.3 235.0]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 213 0]>>endobj
-47 0 obj<</Subtype/Link/Rect[72.0 195.6 250.1 208.6]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 734 0]>>endobj
-48 0 obj<</Subtype/Link/Rect[108.0 182.4 181.6 195.4]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 696 0]>>endobj
-49 0 obj<</Subtype/Link/Rect[108.0 169.2 268.7 182.2]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 449 0]>>endobj
-50 0 obj<</Subtype/Link/Rect[126.0 156.0 295.0 169.0]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 676 0]>>endobj
-51 0 obj<</Subtype/Link/Rect[126.0 142.8 334.7 155.8]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 559 0]>>endobj
-52 0 obj<</Subtype/Link/Rect[108.0 129.6 246.4 142.6]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 452 0]>>endobj
-53 0 obj<</Subtype/Link/Rect[108.0 116.4 169.1 129.4]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 639 0]>>endobj
-54 0 obj<</Subtype/Link/Rect[108.0 103.2 149.2 116.2]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 551 0]>>endobj
-55 0 obj<</Subtype/Link/Rect[108.0 90.0 156.0 103.0]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 475 0]>>endobj
-56 0 obj<</Subtype/Link/Rect[126.0 76.8 207.9 89.8]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 442 0]>>endobj
-57 0 obj<</Subtype/Link/Rect[126.0 63.6 207.9 76.6]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 185 0]>>endobj
-58 0 obj[16 0 R
+14 0 obj<</Subtype/Link/Rect[72.0 684.0 223.5 697.0]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 734 0]>>endobj
+15 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 696 0]>>endobj
+16 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 734 0]>>endobj
+17 0 obj<</Subtype/Link/Rect[72.0 618.0 175.0 631.0]/Border[0 0 0]/Dest[1146 0 R/XYZ 0 734 0]>>endobj
+18 0 obj<</Subtype/Link/Rect[72.0 591.6 131.9 604.6]/Border[0 0 0]/Dest[1146 0 R/XYZ 0 696 0]>>endobj
+19 0 obj<</Subtype/Link/Rect[72.0 565.2 224.5 578.2]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+20 0 obj<</Subtype/Link/Rect[108.0 552.0 196.3 565.0]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 696 0]>>endobj
+21 0 obj<</Subtype/Link/Rect[108.0 538.8 202.1 551.8]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 568 0]>>endobj
+22 0 obj<</Subtype/Link/Rect[108.0 525.6 204.9 538.6]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 163 0]>>endobj
+23 0 obj<</Subtype/Link/Rect[108.0 512.4 256.2 525.4]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 734 0]>>endobj
+24 0 obj<</Subtype/Link/Rect[108.0 499.2 261.1 512.2]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 382 0]>>endobj
+25 0 obj<</Subtype/Link/Rect[108.0 486.0 232.1 499.0]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 254 0]>>endobj
+26 0 obj<</Subtype/Link/Rect[126.0 472.8 232.0 485.8]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 734 0]>>endobj
+27 0 obj<</Subtype/Link/Rect[126.0 459.6 280.3 472.6]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 244 0]>>endobj
+28 0 obj<</Subtype/Link/Rect[108.0 446.4 309.3 459.4]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 665 0]>>endobj
+29 0 obj<</Subtype/Link/Rect[108.0 433.2 262.9 446.2]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 498 0]>>endobj
+30 0 obj<</Subtype/Link/Rect[108.0 420.0 458.7 433.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 330 0]>>endobj
+31 0 obj<</Subtype/Link/Rect[108.0 406.8 234.6 419.8]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 734 0]>>endobj
+32 0 obj<</Subtype/Link/Rect[126.0 393.6 221.0 406.6]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 553 0]>>endobj
+33 0 obj<</Subtype/Link/Rect[126.0 380.4 171.5 393.4]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 494 0]>>endobj
+34 0 obj<</Subtype/Link/Rect[126.0 367.2 252.2 380.2]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 409 0]>>endobj
+35 0 obj<</Subtype/Link/Rect[126.0 354.0 280.6 367.0]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 734 0]>>endobj
+36 0 obj<</Subtype/Link/Rect[126.0 340.8 162.7 353.8]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 583 0]>>endobj
+37 0 obj<</Subtype/Link/Rect[126.0 327.6 217.3 340.6]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 128 0]>>endobj
+38 0 obj<</Subtype/Link/Rect[72.0 301.2 209.8 314.2]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+39 0 obj<</Subtype/Link/Rect[108.0 288.0 207.0 301.0]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 696 0]>>endobj
+40 0 obj<</Subtype/Link/Rect[108.0 274.8 228.7 287.8]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 515 0]>>endobj
+41 0 obj<</Subtype/Link/Rect[108.0 261.6 192.0 274.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 137 0]>>endobj
+42 0 obj<</Subtype/Link/Rect[108.0 248.4 216.8 261.4]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 533 0]>>endobj
+43 0 obj<</Subtype/Link/Rect[126.0 235.2 303.8 248.2]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 273 0]>>endobj
+44 0 obj<</Subtype/Link/Rect[108.0 222.0 221.0 235.0]/Border[0 0 0]/Dest[1172 0 R/XYZ 0 511 0]>>endobj
+45 0 obj<</Subtype/Link/Rect[108.0 208.8 291.0 221.8]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 560 0]>>endobj
+46 0 obj<</Subtype/Link/Rect[108.0 195.6 265.4 208.6]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 567 0]>>endobj
+47 0 obj<</Subtype/Link/Rect[108.0 182.4 245.8 195.4]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 208 0]>>endobj
+48 0 obj<</Subtype/Link/Rect[108.0 169.2 257.1 182.2]/Border[0 0 0]/Dest[1178 0 R/XYZ 0 454 0]>>endobj
+49 0 obj<</Subtype/Link/Rect[108.0 156.0 246.4 169.0]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 679 0]>>endobj
+50 0 obj<</Subtype/Link/Rect[108.0 142.8 191.4 155.8]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 590 0]>>endobj
+51 0 obj<</Subtype/Link/Rect[72.0 116.4 383.1 129.4]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+52 0 obj<</Subtype/Link/Rect[108.0 103.2 156.3 116.2]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 604 0]>>endobj
+53 0 obj<</Subtype/Link/Rect[108.0 90.0 293.8 103.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 159 0]>>endobj
+54 0 obj<</Subtype/Link/Rect[108.0 76.8 307.0 89.8]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 520 0]>>endobj
+55 0 obj<</Subtype/Link/Rect[108.0 63.6 167.9 76.6]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 339 0]>>endobj
+56 0 obj[14 0 R
+15 0 R
+16 0 R
17 0 R
18 0 R
19 0 R
@@ -100,53 +96,51 @@ endobj
52 0 R
53 0 R
54 0 R
-55 0 R
-56 0 R
-57 0 R]endobj
-59 0 obj<</Subtype/Link/Rect[72.0 684.0 250.1 697.0]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 734 0]>>endobj
-60 0 obj<</Subtype/Link/Rect[126.0 670.8 265.9 683.8]/Border[0 0 0]/Dest[1433 0 R/XYZ 0 349 0]>>endobj
-61 0 obj<</Subtype/Link/Rect[126.0 657.6 405.0 670.6]/Border[0 0 0]/Dest[1433 0 R/XYZ 0 251 0]>>endobj
-62 0 obj<</Subtype/Link/Rect[126.0 644.4 293.8 657.4]/Border[0 0 0]/Dest[1435 0 R/XYZ 0 547 0]>>endobj
-63 0 obj<</Subtype/Link/Rect[126.0 631.2 307.8 644.2]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 734 0]>>endobj
-64 0 obj<</Subtype/Link/Rect[126.0 618.0 276.9 631.0]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 543 0]>>endobj
-65 0 obj<</Subtype/Link/Rect[126.0 604.8 351.5 617.8]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 164 0]>>endobj
-66 0 obj<</Subtype/Link/Rect[126.0 591.6 345.0 604.6]/Border[0 0 0]/Dest[1441 0 R/XYZ 0 151 0]>>endobj
-67 0 obj<</Subtype/Link/Rect[108.0 578.4 163.3 591.4]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 322 0]>>endobj
-68 0 obj<</Subtype/Link/Rect[126.0 565.2 192.0 578.2]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 289 0]>>endobj
-69 0 obj<</Subtype/Link/Rect[126.0 552.0 248.2 565.0]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 191 0]>>endobj
-70 0 obj<</Subtype/Link/Rect[126.0 538.8 207.3 551.8]/Border[0 0 0]/Dest[1445 0 R/XYZ 0 734 0]>>endobj
-71 0 obj<</Subtype/Link/Rect[126.0 525.6 371.9 538.6]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 679 0]>>endobj
-72 0 obj<</Subtype/Link/Rect[126.0 512.4 330.5 525.4]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 528 0]>>endobj
-73 0 obj<</Subtype/Link/Rect[108.0 499.2 215.9 512.2]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 390 0]>>endobj
-74 0 obj<</Subtype/Link/Rect[126.0 486.0 192.0 499.0]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 357 0]>>endobj
-75 0 obj<</Subtype/Link/Rect[126.0 472.8 181.0 485.8]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 272 0]>>endobj
-76 0 obj<</Subtype/Link/Rect[72.0 446.4 177.1 459.4]/Border[0 0 0]/Dest[1449 0 R/XYZ 0 734 0]>>endobj
-77 0 obj<</Subtype/Link/Rect[72.0 420.0 131.9 433.0]/Border[0 0 0]/Dest[1451 0 R/XYZ 0 734 0]>>endobj
-78 0 obj<</Subtype/Link/Rect[72.0 393.6 398.6 406.6]/Border[0 0 0]/Dest[1453 0 R/XYZ 0 734 0]>>endobj
-79 0 obj<</Subtype/Link/Rect[72.0 367.2 384.0 380.2]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 734 0]>>endobj
-80 0 obj<</Subtype/Link/Rect[108.0 354.0 219.2 367.0]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 672 0]>>endobj
-81 0 obj<</Subtype/Link/Rect[108.0 340.8 181.0 353.8]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 584 0]>>endobj
-82 0 obj<</Subtype/Link/Rect[108.0 327.6 316.1 340.6]/Border[0 0 0]/Dest[1459 0 R/XYZ 0 718 0]>>endobj
-83 0 obj<</Subtype/Link/Rect[108.0 314.4 430.0 327.4]/Border[0 0 0]/Dest[1461 0 R/XYZ 0 613 0]>>endobj
-84 0 obj<</Subtype/Link/Rect[126.0 301.2 351.2 314.2]/Border[0 0 0]/Dest[1461 0 R/XYZ 0 227 0]>>endobj
-85 0 obj<</Subtype/Link/Rect[126.0 288.0 380.5 301.0]/Border[0 0 0]/Dest[1463 0 R/XYZ 0 315 0]>>endobj
-86 0 obj<</Subtype/Link/Rect[126.0 274.8 297.4 287.8]/Border[0 0 0]/Dest[1465 0 R/XYZ 0 734 0]>>endobj
-87 0 obj<</Subtype/Link/Rect[108.0 261.6 261.4 274.6]/Border[0 0 0]/Dest[1465 0 R/XYZ 0 385 0]>>endobj
-88 0 obj<</Subtype/Link/Rect[108.0 248.4 252.8 261.4]/Border[0 0 0]/Dest[1467 0 R/XYZ 0 129 0]>>endobj
-89 0 obj<</Subtype/Link/Rect[108.0 235.2 243.6 248.2]/Border[0 0 0]/Dest[1469 0 R/XYZ 0 124 0]>>endobj
-90 0 obj<</Subtype/Link/Rect[108.0 222.0 292.9 235.0]/Border[0 0 0]/Dest[1475 0 R/XYZ 0 507 0]>>endobj
-91 0 obj<</Subtype/Link/Rect[126.0 208.8 350.0 221.8]/Border[0 0 0]/Dest[1477 0 R/XYZ 0 520 0]>>endobj
-92 0 obj<</Subtype/Link/Rect[126.0 195.6 424.2 208.6]/Border[0 0 0]/Dest[1479 0 R/XYZ 0 734 0]>>endobj
-93 0 obj<</Subtype/Link/Rect[108.0 182.4 431.0 195.4]/Border[0 0 0]/Dest[1487 0 R/XYZ 0 734 0]>>endobj
-94 0 obj<</Subtype/Link/Rect[72.0 156.0 512.6 169.0]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 734 0]>>endobj
-95 0 obj<</Subtype/Link/Rect[108.0 142.8 219.2 155.8]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 672 0]>>endobj
-96 0 obj<</Subtype/Link/Rect[108.0 129.6 181.0 142.6]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 597 0]>>endobj
-97 0 obj<</Subtype/Link/Rect[108.0 116.4 359.1 129.4]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 225 0]>>endobj
-98 0 obj<</Subtype/Link/Rect[126.0 103.2 382.3 116.2]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 734 0]>>endobj
-99 0 obj<</Subtype/Link/Rect[126.0 90.0 269.0 103.0]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 609 0]>>endobj
-100 0 obj<</Subtype/Link/Rect[108.0 76.8 391.8 89.8]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 524 0]>>endobj
-101 0 obj<</Subtype/Link/Rect[108.0 63.6 268.1 76.6]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 323 0]>>endobj
-102 0 obj[59 0 R
+55 0 R]endobj
+57 0 obj<</Subtype/Link/Rect[72.0 684.0 383.1 697.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+58 0 obj<</Subtype/Link/Rect[108.0 670.8 406.5 683.8]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 494 0]>>endobj
+59 0 obj<</Subtype/Link/Rect[108.0 657.6 213.1 670.6]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 213 0]>>endobj
+60 0 obj<</Subtype/Link/Rect[72.0 631.2 302.4 644.2]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+61 0 obj<</Subtype/Link/Rect[108.0 618.0 162.4 631.0]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 696 0]>>endobj
+62 0 obj<</Subtype/Link/Rect[108.0 604.8 249.5 617.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 555 0]>>endobj
+63 0 obj<</Subtype/Link/Rect[126.0 591.6 267.5 604.6]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 734 0]>>endobj
+64 0 obj<</Subtype/Link/Rect[126.0 578.4 307.2 591.4]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 609 0]>>endobj
+65 0 obj<</Subtype/Link/Rect[108.0 565.2 227.2 578.2]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 511 0]>>endobj
+66 0 obj<</Subtype/Link/Rect[72.0 538.8 177.1 551.8]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 734 0]>>endobj
+67 0 obj<</Subtype/Link/Rect[72.0 512.4 131.9 525.4]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 696 0]>>endobj
+68 0 obj<</Subtype/Link/Rect[72.0 486.0 345.7 499.0]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+69 0 obj<</Subtype/Link/Rect[72.0 459.6 370.5 472.6]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+70 0 obj<</Subtype/Link/Rect[108.0 446.4 200.0 459.4]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 672 0]>>endobj
+71 0 obj<</Subtype/Link/Rect[108.0 433.2 161.8 446.2]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 584 0]>>endobj
+72 0 obj<</Subtype/Link/Rect[108.0 420.0 296.8 433.0]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 718 0]>>endobj
+73 0 obj<</Subtype/Link/Rect[108.0 406.8 410.8 419.8]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 613 0]>>endobj
+74 0 obj<</Subtype/Link/Rect[126.0 393.6 323.7 406.6]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 227 0]>>endobj
+75 0 obj<</Subtype/Link/Rect[126.0 380.4 353.0 393.4]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 316 0]>>endobj
+76 0 obj<</Subtype/Link/Rect[126.0 367.2 269.9 380.2]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 734 0]>>endobj
+77 0 obj<</Subtype/Link/Rect[108.0 354.0 242.1 367.0]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 385 0]>>endobj
+78 0 obj<</Subtype/Link/Rect[108.0 340.8 233.6 353.8]/Border[0 0 0]/Dest[1214 0 R/XYZ 0 126 0]>>endobj
+79 0 obj<</Subtype/Link/Rect[108.0 327.6 224.4 340.6]/Border[0 0 0]/Dest[1216 0 R/XYZ 0 124 0]>>endobj
+80 0 obj<</Subtype/Link/Rect[108.0 314.4 273.6 327.4]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 507 0]>>endobj
+81 0 obj<</Subtype/Link/Rect[126.0 301.2 322.5 314.2]/Border[0 0 0]/Dest[1224 0 R/XYZ 0 520 0]>>endobj
+82 0 obj<</Subtype/Link/Rect[126.0 288.0 396.7 301.0]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 734 0]>>endobj
+83 0 obj<</Subtype/Link/Rect[108.0 274.8 411.7 287.8]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 702 0]>>endobj
+84 0 obj<</Subtype/Link/Rect[72.0 248.4 459.8 261.4]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+85 0 obj<</Subtype/Link/Rect[108.0 235.2 200.0 248.2]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 672 0]>>endobj
+86 0 obj<</Subtype/Link/Rect[108.0 222.0 161.8 235.0]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 597 0]>>endobj
+87 0 obj<</Subtype/Link/Rect[108.0 208.8 339.9 221.8]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 223 0]>>endobj
+88 0 obj<</Subtype/Link/Rect[126.0 195.6 354.8 208.6]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 734 0]>>endobj
+89 0 obj<</Subtype/Link/Rect[126.0 182.4 241.5 195.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 609 0]>>endobj
+90 0 obj<</Subtype/Link/Rect[108.0 169.2 306.6 182.2]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 524 0]>>endobj
+91 0 obj<</Subtype/Link/Rect[108.0 156.0 248.8 169.0]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 383 0]>>endobj
+92 0 obj<</Subtype/Link/Rect[126.0 142.8 300.1 155.8]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 617 0]>>endobj
+93 0 obj<</Subtype/Link/Rect[72.0 116.4 230.0 129.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+94 0 obj<</Subtype/Link/Rect[108.0 103.2 298.3 116.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 551 0]>>endobj
+95 0 obj<</Subtype/Link/Rect[108.0 90.0 300.1 103.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 444 0]>>endobj
+96 0 obj<</Subtype/Link/Rect[108.0 76.8 178.6 89.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 267 0]>>endobj
+97 0 obj<</Subtype/Link/Rect[108.0 63.6 220.1 76.6]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 564 0]>>endobj
+98 0 obj[57 0 R
+58 0 R
+59 0 R
60 0 R
61 0 R
62 0 R
@@ -184,54 +178,53 @@ endobj
94 0 R
95 0 R
96 0 R
-97 0 R
-98 0 R
-99 0 R
+97 0 R]endobj
+99 0 obj<</Subtype/Link/Rect[72.0 684.0 230.0 697.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+100 0 obj<</Subtype/Link/Rect[108.0 670.8 234.2 683.8]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 245 0]>>endobj
+101 0 obj<</Subtype/Link/Rect[126.0 657.6 191.1 670.6]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 156 0]>>endobj
+102 0 obj<</Subtype/Link/Rect[108.0 644.4 205.4 657.4]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 692 0]>>endobj
+103 0 obj<</Subtype/Link/Rect[108.0 631.2 208.8 644.2]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 603 0]>>endobj
+104 0 obj<</Subtype/Link/Rect[108.0 618.0 133.7 631.0]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 528 0]>>endobj
+105 0 obj<</Subtype/Link/Rect[72.0 591.6 228.8 604.6]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+106 0 obj<</Subtype/Link/Rect[108.0 578.4 280.6 591.4]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 696 0]>>endobj
+107 0 obj<</Subtype/Link/Rect[108.0 565.2 268.7 578.2]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 362 0]>>endobj
+108 0 obj<</Subtype/Link/Rect[108.0 552.0 288.6 565.0]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 155 0]>>endobj
+109 0 obj<</Subtype/Link/Rect[72.0 525.6 198.2 538.6]/Border[0 0 0]/Dest[1256 0 R/XYZ 0 734 0]>>endobj
+110 0 obj<</Subtype/Link/Rect[72.0 499.2 131.9 512.2]/Border[0 0 0]/Dest[1256 0 R/XYZ 0 696 0]>>endobj
+111 0 obj<</Subtype/Link/Rect[72.0 472.8 296.0 485.8]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+112 0 obj<</Subtype/Link/Rect[108.0 459.6 142.2 472.6]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 696 0]>>endobj
+113 0 obj<</Subtype/Link/Rect[108.0 446.4 308.4 459.4]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 463 0]>>endobj
+114 0 obj<</Subtype/Link/Rect[126.0 433.2 167.6 446.2]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 335 0]>>endobj
+115 0 obj<</Subtype/Link/Rect[126.0 420.0 194.1 433.0]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 454 0]>>endobj
+116 0 obj<</Subtype/Link/Rect[126.0 406.8 185.6 419.8]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 317 0]>>endobj
+117 0 obj<</Subtype/Link/Rect[126.0 393.6 205.7 406.6]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 168 0]>>endobj
+118 0 obj<</Subtype/Link/Rect[108.0 380.4 363.1 393.4]/Border[0 0 0]/Dest[1264 0 R/XYZ 0 347 0]>>endobj
+119 0 obj<</Subtype/Link/Rect[126.0 367.2 246.1 380.2]/Border[0 0 0]/Dest[1266 0 R/XYZ 0 295 0]>>endobj
+120 0 obj<</Subtype/Link/Rect[126.0 354.0 214.6 367.0]/Border[0 0 0]/Dest[1268 0 R/XYZ 0 734 0]>>endobj
+121 0 obj<</Subtype/Link/Rect[126.0 340.8 178.2 353.8]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 456 0]>>endobj
+122 0 obj<</Subtype/Link/Rect[126.0 327.6 185.0 340.6]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 358 0]>>endobj
+123 0 obj<</Subtype/Link/Rect[126.0 314.4 191.1 327.4]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 221 0]>>endobj
+124 0 obj<</Subtype/Link/Rect[108.0 301.2 504.0 314.2]/Border[0 0 0]/Dest[1272 0 R/XYZ 0 667 0]>>endobj
+125 0 obj<</Subtype/Link/Rect[108.0 288.0 478.6 301.0]/Border[0 0 0]/Dest[1274 0 R/XYZ 0 734 0]>>endobj
+126 0 obj<</Subtype/Link/Rect[126.0 274.8 343.8 287.8]/Border[0 0 0]/Dest[1276 0 R/XYZ 0 692 0]>>endobj
+127 0 obj<</Subtype/Link/Rect[126.0 261.6 409.5 274.6]/Border[0 0 0]/Dest[1276 0 R/XYZ 0 440 0]>>endobj
+128 0 obj<</Subtype/Link/Rect[126.0 248.4 323.0 261.4]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 734 0]>>endobj
+129 0 obj<</Subtype/Link/Rect[108.0 235.2 162.4 248.2]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 172 0]>>endobj
+130 0 obj<</Subtype/Link/Rect[72.0 208.8 359.8 221.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+131 0 obj<</Subtype/Link/Rect[108.0 195.6 425.4 208.6]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 672 0]>>endobj
+132 0 obj<</Subtype/Link/Rect[108.0 182.4 299.9 195.4]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 497 0]>>endobj
+133 0 obj<</Subtype/Link/Rect[108.0 169.2 211.9 182.2]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 330 0]>>endobj
+134 0 obj<</Subtype/Link/Rect[108.0 156.0 273.0 169.0]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 665 0]>>endobj
+135 0 obj<</Subtype/Link/Rect[126.0 142.8 199.0 155.8]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 432 0]>>endobj
+136 0 obj<</Subtype/Link/Rect[126.0 129.6 224.1 142.6]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 189 0]>>endobj
+137 0 obj<</Subtype/Link/Rect[108.0 116.4 282.2 129.4]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 692 0]>>endobj
+138 0 obj<</Subtype/Link/Rect[108.0 103.2 372.8 116.2]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 260 0]>>endobj
+139 0 obj<</Subtype/Link/Rect[108.0 90.0 364.9 103.0]/Border[0 0 0]/Dest[1290 0 R/XYZ 0 599 0]>>endobj
+140 0 obj[99 0 R
100 0 R
-101 0 R]endobj
-103 0 obj<</Subtype/Link/Rect[72.0 684.0 512.6 697.0]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 734 0]>>endobj
-104 0 obj<</Subtype/Link/Rect[126.0 670.8 327.6 683.8]/Border[0 0 0]/Dest[1495 0 R/XYZ 0 541 0]>>endobj
-105 0 obj<</Subtype/Link/Rect[126.0 657.6 282.4 670.6]/Border[0 0 0]/Dest[1495 0 R/XYZ 0 390 0]>>endobj
-106 0 obj<</Subtype/Link/Rect[72.0 631.2 282.8 644.2]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 734 0]>>endobj
-107 0 obj<</Subtype/Link/Rect[108.0 618.0 317.6 631.0]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 551 0]>>endobj
-108 0 obj<</Subtype/Link/Rect[108.0 604.8 319.4 617.8]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 444 0]>>endobj
-109 0 obj<</Subtype/Link/Rect[108.0 591.6 197.8 604.6]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 267 0]>>endobj
-110 0 obj<</Subtype/Link/Rect[108.0 578.4 239.4 591.4]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 580 0]>>endobj
-111 0 obj<</Subtype/Link/Rect[108.0 565.2 253.4 578.2]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 264 0]>>endobj
-112 0 obj<</Subtype/Link/Rect[126.0 552.0 218.6 565.0]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 202 0]>>endobj
-113 0 obj<</Subtype/Link/Rect[108.0 538.8 224.7 551.8]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 734 0]>>endobj
-114 0 obj<</Subtype/Link/Rect[108.0 525.6 228.1 538.6]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 645 0]>>endobj
-115 0 obj<</Subtype/Link/Rect[108.0 512.4 152.9 525.4]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 570 0]>>endobj
-116 0 obj<</Subtype/Link/Rect[72.0 486.0 329.3 499.0]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 734 0]>>endobj
-117 0 obj<</Subtype/Link/Rect[108.0 472.8 299.9 485.8]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 672 0]>>endobj
-118 0 obj<</Subtype/Link/Rect[108.0 459.6 288.0 472.6]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 494 0]>>endobj
-119 0 obj<</Subtype/Link/Rect[108.0 446.4 307.9 459.4]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 405 0]>>endobj
-120 0 obj<</Subtype/Link/Rect[72.0 420.0 198.2 433.0]/Border[0 0 0]/Dest[1509 0 R/XYZ 0 734 0]>>endobj
-121 0 obj<</Subtype/Link/Rect[72.0 393.6 131.9 406.6]/Border[0 0 0]/Dest[1511 0 R/XYZ 0 734 0]>>endobj
-122 0 obj<</Subtype/Link/Rect[72.0 367.2 348.8 380.2]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 734 0]>>endobj
-123 0 obj<</Subtype/Link/Rect[108.0 354.0 161.5 367.0]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 672 0]>>endobj
-124 0 obj<</Subtype/Link/Rect[108.0 340.8 327.7 353.8]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 439 0]>>endobj
-125 0 obj<</Subtype/Link/Rect[126.0 327.6 195.1 340.6]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 311 0]>>endobj
-126 0 obj<</Subtype/Link/Rect[126.0 314.4 221.6 327.4]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 441 0]>>endobj
-127 0 obj<</Subtype/Link/Rect[126.0 301.2 213.1 314.2]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 303 0]>>endobj
-128 0 obj<</Subtype/Link/Rect[126.0 288.0 233.2 301.0]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 157 0]>>endobj
-129 0 obj<</Subtype/Link/Rect[108.0 274.8 382.4 287.8]/Border[0 0 0]/Dest[1521 0 R/XYZ 0 339 0]>>endobj
-130 0 obj<</Subtype/Link/Rect[126.0 261.6 273.6 274.6]/Border[0 0 0]/Dest[1523 0 R/XYZ 0 266 0]>>endobj
-131 0 obj<</Subtype/Link/Rect[126.0 248.4 242.1 261.4]/Border[0 0 0]/Dest[1525 0 R/XYZ 0 734 0]>>endobj
-132 0 obj<</Subtype/Link/Rect[126.0 235.2 205.8 248.2]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 459 0]>>endobj
-133 0 obj<</Subtype/Link/Rect[126.0 222.0 212.5 235.0]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 361 0]>>endobj
-134 0 obj<</Subtype/Link/Rect[126.0 208.8 218.6 221.8]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 224 0]>>endobj
-135 0 obj<</Subtype/Link/Rect[108.0 195.6 523.2 208.6]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 670 0]>>endobj
-136 0 obj<</Subtype/Link/Rect[108.0 182.4 497.9 195.4]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 126 0]>>endobj
-137 0 obj<</Subtype/Link/Rect[126.0 169.2 371.3 182.2]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 734 0]>>endobj
-138 0 obj<</Subtype/Link/Rect[126.0 156.0 437.0 169.0]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 484 0]>>endobj
-139 0 obj<</Subtype/Link/Rect[126.0 142.8 350.5 155.8]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 132 0]>>endobj
-140 0 obj<</Subtype/Link/Rect[108.0 129.6 181.6 142.6]/Border[0 0 0]/Dest[1535 0 R/XYZ 0 263 0]>>endobj
-141 0 obj<</Subtype/Link/Rect[72.0 103.2 418.2 116.2]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 734 0]>>endobj
-142 0 obj<</Subtype/Link/Rect[108.0 90.0 450.2 103.0]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 672 0]>>endobj
-143 0 obj<</Subtype/Link/Rect[108.0 76.8 324.6 89.8]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 537 0]>>endobj
-144 0 obj<</Subtype/Link/Rect[108.0 63.6 236.6 76.6]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 369 0]>>endobj
-145 0 obj[103 0 R
+101 0 R
+102 0 R
+103 0 R
104 0 R
105 0 R
106 0 R
@@ -267,57 +260,58 @@ endobj
136 0 R
137 0 R
138 0 R
-139 0 R
-140 0 R
-141 0 R
+139 0 R]endobj
+141 0 obj<</Subtype/Link/Rect[72.0 684.0 407.8 697.0]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+142 0 obj<</Subtype/Link/Rect[108.0 670.8 183.2 683.8]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 672 0]>>endobj
+143 0 obj<</Subtype/Link/Rect[108.0 657.6 225.6 670.6]/Border[0 0 0]/Dest[1294 0 R/XYZ 0 127 0]>>endobj
+144 0 obj<</Subtype/Link/Rect[108.0 644.4 251.0 657.4]/Border[0 0 0]/Dest[1296 0 R/XYZ 0 679 0]>>endobj
+145 0 obj<</Subtype/Link/Rect[72.0 618.0 349.4 631.0]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+146 0 obj<</Subtype/Link/Rect[108.0 604.8 159.9 617.8]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 672 0]>>endobj
+147 0 obj<</Subtype/Link/Rect[126.0 591.6 151.7 604.6]/Border[0 0 0]/Dest[1300 0 R/XYZ 0 652 0]>>endobj
+148 0 obj<</Subtype/Link/Rect[72.0 565.2 152.4 578.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+149 0 obj<</Subtype/Link/Rect[108.0 552.0 162.4 565.0]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 696 0]>>endobj
+150 0 obj<</Subtype/Link/Rect[108.0 538.8 169.7 551.8]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 317 0]>>endobj
+151 0 obj<</Subtype/Link/Rect[126.0 525.6 200.2 538.6]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 131 0]>>endobj
+152 0 obj<</Subtype/Link/Rect[126.0 512.4 284.9 525.4]/Border[0 0 0]/Dest[1306 0 R/XYZ 0 583 0]>>endobj
+153 0 obj<</Subtype/Link/Rect[126.0 499.2 277.8 512.2]/Border[0 0 0]/Dest[1306 0 R/XYZ 0 169 0]>>endobj
+154 0 obj<</Subtype/Link/Rect[126.0 486.0 341.4 499.0]/Border[0 0 0]/Dest[1308 0 R/XYZ 0 456 0]>>endobj
+155 0 obj<</Subtype/Link/Rect[126.0 472.8 232.6 485.8]/Border[0 0 0]/Dest[1310 0 R/XYZ 0 283 0]>>endobj
+156 0 obj<</Subtype/Link/Rect[108.0 459.6 200.9 472.6]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 734 0]>>endobj
+157 0 obj<</Subtype/Link/Rect[126.0 446.4 204.8 459.4]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 632 0]>>endobj
+158 0 obj<</Subtype/Link/Rect[126.0 433.2 271.7 446.2]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 507 0]>>endobj
+159 0 obj<</Subtype/Link/Rect[126.0 420.0 212.8 433.0]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 423 0]>>endobj
+160 0 obj<</Subtype/Link/Rect[126.0 406.8 225.0 419.8]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 325 0]>>endobj
+161 0 obj<</Subtype/Link/Rect[108.0 393.6 152.0 406.6]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 426 0]>>endobj
+162 0 obj<</Subtype/Link/Rect[126.0 380.4 180.4 393.4]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 393 0]>>endobj
+163 0 obj<</Subtype/Link/Rect[126.0 367.2 250.7 380.2]/Border[0 0 0]/Dest[1316 0 R/XYZ 0 450 0]>>endobj
+164 0 obj<</Subtype/Link/Rect[126.0 354.0 234.7 367.0]/Border[0 0 0]/Dest[1318 0 R/XYZ 0 665 0]>>endobj
+165 0 obj<</Subtype/Link/Rect[126.0 340.8 285.8 353.8]/Border[0 0 0]/Dest[1318 0 R/XYZ 0 479 0]>>endobj
+166 0 obj<</Subtype/Link/Rect[126.0 327.6 209.1 340.6]/Border[0 0 0]/Dest[1320 0 R/XYZ 0 718 0]>>endobj
+167 0 obj<</Subtype/Link/Rect[126.0 314.4 229.9 327.4]/Border[0 0 0]/Dest[1320 0 R/XYZ 0 373 0]>>endobj
+168 0 obj<</Subtype/Link/Rect[126.0 301.2 228.1 314.2]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 679 0]>>endobj
+169 0 obj<</Subtype/Link/Rect[126.0 288.0 208.8 301.0]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 594 0]>>endobj
+170 0 obj<</Subtype/Link/Rect[126.0 274.8 195.4 287.8]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 496 0]>>endobj
+171 0 obj<</Subtype/Link/Rect[72.0 248.4 373.3 261.4]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+172 0 obj<</Subtype/Link/Rect[108.0 235.2 145.3 248.2]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 672 0]>>endobj
+173 0 obj<</Subtype/Link/Rect[108.0 222.0 162.4 235.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 544 0]>>endobj
+174 0 obj<</Subtype/Link/Rect[108.0 208.8 214.3 221.8]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 231 0]>>endobj
+175 0 obj<</Subtype/Link/Rect[126.0 195.6 178.8 208.6]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 560 0]>>endobj
+176 0 obj<</Subtype/Link/Rect[108.0 182.4 202.7 195.4]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 409 0]>>endobj
+177 0 obj<</Subtype/Link/Rect[126.0 169.2 279.1 182.2]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 294 0]>>endobj
+178 0 obj<</Subtype/Link/Rect[126.0 156.0 221.3 169.0]/Border[0 0 0]/Dest[1328 0 R/XYZ 0 734 0]>>endobj
+179 0 obj<</Subtype/Link/Rect[126.0 142.8 279.4 155.8]/Border[0 0 0]/Dest[1328 0 R/XYZ 0 292 0]>>endobj
+180 0 obj<</Subtype/Link/Rect[126.0 129.6 259.8 142.6]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 665 0]>>endobj
+181 0 obj<</Subtype/Link/Rect[126.0 116.4 193.5 129.4]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 488 0]>>endobj
+182 0 obj<</Subtype/Link/Rect[108.0 103.2 240.6 116.2]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 351 0]>>endobj
+183 0 obj<</Subtype/Link/Rect[126.0 90.0 180.4 103.0]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 209 0]>>endobj
+184 0 obj<</Subtype/Link/Rect[126.0 76.8 187.1 89.8]/Border[0 0 0]/Dest[1332 0 R/XYZ 0 599 0]>>endobj
+185 0 obj<</Subtype/Link/Rect[126.0 63.6 211.6 76.6]/Border[0 0 0]/Dest[1332 0 R/XYZ 0 330 0]>>endobj
+186 0 obj[141 0 R
142 0 R
143 0 R
-144 0 R]endobj
-146 0 obj<</Subtype/Link/Rect[72.0 684.0 418.2 697.0]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 734 0]>>endobj
-147 0 obj<</Subtype/Link/Rect[108.0 670.8 297.7 683.8]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 705 0]>>endobj
-148 0 obj<</Subtype/Link/Rect[126.0 657.6 232.0 670.6]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 471 0]>>endobj
-149 0 obj<</Subtype/Link/Rect[126.0 644.4 257.1 657.4]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 228 0]>>endobj
-150 0 obj<</Subtype/Link/Rect[108.0 631.2 306.9 644.2]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 718 0]>>endobj
-151 0 obj<</Subtype/Link/Rect[108.0 618.0 397.6 631.0]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 287 0]>>endobj
-152 0 obj<</Subtype/Link/Rect[108.0 604.8 389.7 617.8]/Border[0 0 0]/Dest[1545 0 R/XYZ 0 652 0]>>endobj
-153 0 obj<</Subtype/Link/Rect[72.0 578.4 466.2 591.4]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 734 0]>>endobj
-154 0 obj<</Subtype/Link/Rect[108.0 565.2 207.9 578.2]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 672 0]>>endobj
-155 0 obj<</Subtype/Link/Rect[108.0 552.0 250.4 565.0]/Border[0 0 0]/Dest[1549 0 R/XYZ 0 148 0]>>endobj
-156 0 obj<</Subtype/Link/Rect[108.0 538.8 275.8 551.8]/Border[0 0 0]/Dest[1551 0 R/XYZ 0 705 0]>>endobj
-157 0 obj<</Subtype/Link/Rect[72.0 512.4 407.8 525.4]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 734 0]>>endobj
-158 0 obj<</Subtype/Link/Rect[108.0 499.2 184.7 512.2]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 672 0]>>endobj
-159 0 obj<</Subtype/Link/Rect[126.0 486.0 184.7 499.0]/Border[0 0 0]/Dest[1555 0 R/XYZ 0 652 0]>>endobj
-160 0 obj<</Subtype/Link/Rect[72.0 459.6 210.7 472.6]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 734 0]>>endobj
-161 0 obj<</Subtype/Link/Rect[108.0 446.4 187.1 459.4]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 696 0]>>endobj
-162 0 obj<</Subtype/Link/Rect[108.0 433.2 194.5 446.2]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 317 0]>>endobj
-163 0 obj<</Subtype/Link/Rect[126.0 420.0 233.2 433.0]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 127 0]>>endobj
-164 0 obj<</Subtype/Link/Rect[126.0 406.8 317.9 419.8]/Border[0 0 0]/Dest[1561 0 R/XYZ 0 531 0]>>endobj
-165 0 obj<</Subtype/Link/Rect[126.0 393.6 310.8 406.6]/Border[0 0 0]/Dest[1563 0 R/XYZ 0 734 0]>>endobj
-166 0 obj<</Subtype/Link/Rect[126.0 380.4 374.4 393.4]/Border[0 0 0]/Dest[1563 0 R/XYZ 0 363 0]>>endobj
-167 0 obj<</Subtype/Link/Rect[126.0 367.2 265.6 380.2]/Border[0 0 0]/Dest[1565 0 R/XYZ 0 184 0]>>endobj
-168 0 obj<</Subtype/Link/Rect[108.0 354.0 225.6 367.0]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 692 0]>>endobj
-169 0 obj<</Subtype/Link/Rect[126.0 340.8 237.8 353.8]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 590 0]>>endobj
-170 0 obj<</Subtype/Link/Rect[126.0 327.6 304.7 340.6]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 466 0]>>endobj
-171 0 obj<</Subtype/Link/Rect[126.0 314.4 245.8 327.4]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 381 0]>>endobj
-172 0 obj<</Subtype/Link/Rect[126.0 301.2 258.0 314.2]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 283 0]>>endobj
-173 0 obj<</Subtype/Link/Rect[108.0 288.0 176.8 301.0]/Border[0 0 0]/Dest[1569 0 R/XYZ 0 397 0]>>endobj
-174 0 obj<</Subtype/Link/Rect[126.0 274.8 213.4 287.8]/Border[0 0 0]/Dest[1569 0 R/XYZ 0 363 0]>>endobj
-175 0 obj<</Subtype/Link/Rect[126.0 261.6 283.7 274.6]/Border[0 0 0]/Dest[1571 0 R/XYZ 0 429 0]>>endobj
-176 0 obj<</Subtype/Link/Rect[126.0 248.4 267.7 261.4]/Border[0 0 0]/Dest[1573 0 R/XYZ 0 665 0]>>endobj
-177 0 obj<</Subtype/Link/Rect[126.0 235.2 318.8 248.2]/Border[0 0 0]/Dest[1573 0 R/XYZ 0 485 0]>>endobj
-178 0 obj<</Subtype/Link/Rect[126.0 222.0 242.1 235.0]/Border[0 0 0]/Dest[1575 0 R/XYZ 0 734 0]>>endobj
-179 0 obj<</Subtype/Link/Rect[126.0 208.8 262.9 221.8]/Border[0 0 0]/Dest[1575 0 R/XYZ 0 394 0]>>endobj
-180 0 obj<</Subtype/Link/Rect[126.0 195.6 261.1 208.6]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 718 0]>>endobj
-181 0 obj<</Subtype/Link/Rect[126.0 182.4 241.8 195.4]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 633 0]>>endobj
-182 0 obj<</Subtype/Link/Rect[126.0 169.2 228.4 182.2]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 535 0]>>endobj
-183 0 obj<</Subtype/Link/Rect[72.0 142.8 431.7 155.8]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 734 0]>>endobj
-184 0 obj<</Subtype/Link/Rect[108.0 129.6 170.0 142.6]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 672 0]>>endobj
-185 0 obj<</Subtype/Link/Rect[108.0 116.4 187.1 129.4]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 544 0]>>endobj
-186 0 obj<</Subtype/Link/Rect[108.0 103.2 239.1 116.2]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 231 0]>>endobj
-187 0 obj<</Subtype/Link/Rect[126.0 90.0 211.8 103.0]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 560 0]>>endobj
-188 0 obj<</Subtype/Link/Rect[108.0 76.8 227.5 89.8]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 409 0]>>endobj
-189 0 obj<</Subtype/Link/Rect[126.0 63.6 312.1 76.6]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 294 0]>>endobj
-190 0 obj[146 0 R
+144 0 R
+145 0 R
+146 0 R
147 0 R
148 0 R
149 0 R
@@ -356,55 +350,51 @@ endobj
182 0 R
183 0 R
184 0 R
-185 0 R
-186 0 R
-187 0 R
+185 0 R]endobj
+187 0 obj<</Subtype/Link/Rect[72.0 684.0 373.3 697.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+188 0 obj<</Subtype/Link/Rect[108.0 670.8 158.7 683.8]/Border[0 0 0]/Dest[1346 0 R/XYZ 0 217 0]>>endobj
+189 0 obj<</Subtype/Link/Rect[108.0 657.6 158.1 670.6]/Border[0 0 0]/Dest[1348 0 R/XYZ 0 679 0]>>endobj
+190 0 obj<</Subtype/Link/Rect[72.0 631.2 178.4 644.2]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+191 0 obj<</Subtype/Link/Rect[108.0 618.0 146.5 631.0]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 696 0]>>endobj
+192 0 obj<</Subtype/Link/Rect[108.0 604.8 161.8 617.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 595 0]>>endobj
+193 0 obj<</Subtype/Link/Rect[108.0 591.6 326.4 604.6]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 511 0]>>endobj
+194 0 obj<</Subtype/Link/Rect[108.0 578.4 285.0 591.4]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 357 0]>>endobj
+195 0 obj<</Subtype/Link/Rect[72.0 552.0 166.1 565.0]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+196 0 obj<</Subtype/Link/Rect[108.0 538.8 146.5 551.8]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 696 0]>>endobj
+197 0 obj<</Subtype/Link/Rect[108.0 525.6 135.5 538.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 608 0]>>endobj
+198 0 obj<</Subtype/Link/Rect[72.0 499.2 183.2 512.2]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+199 0 obj<</Subtype/Link/Rect[108.0 486.0 243.0 499.0]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 696 0]>>endobj
+200 0 obj<</Subtype/Link/Rect[108.0 472.8 186.5 485.8]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 382 0]>>endobj
+201 0 obj<</Subtype/Link/Rect[126.0 459.6 148.0 472.6]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 348 0]>>endobj
+202 0 obj<</Subtype/Link/Rect[126.0 446.4 157.8 459.4]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 212 0]>>endobj
+203 0 obj<</Subtype/Link/Rect[126.0 433.2 160.8 446.2]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 560 0]>>endobj
+204 0 obj<</Subtype/Link/Rect[108.0 420.0 257.4 433.0]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 430 0]>>endobj
+205 0 obj<</Subtype/Link/Rect[126.0 406.8 178.5 419.8]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 315 0]>>endobj
+206 0 obj<</Subtype/Link/Rect[126.0 393.6 151.0 406.6]/Border[0 0 0]/Dest[1360 0 R/XYZ 0 734 0]>>endobj
+207 0 obj<</Subtype/Link/Rect[72.0 367.2 425.8 380.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+208 0 obj<</Subtype/Link/Rect[108.0 354.0 143.4 367.0]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 672 0]>>endobj
+209 0 obj<</Subtype/Link/Rect[108.0 340.8 162.4 353.8]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 412 0]>>endobj
+210 0 obj<</Subtype/Link/Rect[108.0 327.6 220.4 340.6]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 573 0]>>endobj
+211 0 obj<</Subtype/Link/Rect[108.0 314.4 359.5 327.4]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 471 0]>>endobj
+212 0 obj<</Subtype/Link/Rect[108.0 301.2 248.3 314.2]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 734 0]>>endobj
+213 0 obj<</Subtype/Link/Rect[126.0 288.0 240.6 301.0]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 700 0]>>endobj
+214 0 obj<</Subtype/Link/Rect[126.0 274.8 212.5 287.8]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 138 0]>>endobj
+215 0 obj<</Subtype/Link/Rect[108.0 261.6 262.3 274.6]/Border[0 0 0]/Dest[1368 0 R/XYZ 0 227 0]>>endobj
+216 0 obj<</Subtype/Link/Rect[108.0 248.4 231.4 261.4]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 705 0]>>endobj
+217 0 obj<</Subtype/Link/Rect[108.0 235.2 306.0 248.2]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 320 0]>>endobj
+218 0 obj<</Subtype/Link/Rect[108.0 222.0 299.5 235.0]/Border[0 0 0]/Dest[1372 0 R/XYZ 0 309 0]>>endobj
+219 0 obj<</Subtype/Link/Rect[108.0 208.8 155.7 221.8]/Border[0 0 0]/Dest[1374 0 R/XYZ 0 478 0]>>endobj
+220 0 obj<</Subtype/Link/Rect[72.0 182.4 284.0 195.4]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+221 0 obj<</Subtype/Link/Rect[108.0 169.2 162.4 182.2]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 696 0]>>endobj
+222 0 obj<</Subtype/Link/Rect[108.0 156.0 222.9 169.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 581 0]>>endobj
+223 0 obj<</Subtype/Link/Rect[126.0 142.8 215.8 155.8]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 493 0]>>endobj
+224 0 obj<</Subtype/Link/Rect[126.0 129.6 190.8 142.6]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 382 0]>>endobj
+225 0 obj<</Subtype/Link/Rect[72.0 103.2 194.3 116.2]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+226 0 obj[187 0 R
188 0 R
-189 0 R]endobj
-191 0 obj<</Subtype/Link/Rect[72.0 684.0 431.7 697.0]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 734 0]>>endobj
-192 0 obj<</Subtype/Link/Rect[126.0 670.8 319.4 683.8]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 734 0]>>endobj
-193 0 obj<</Subtype/Link/Rect[126.0 657.6 254.3 670.6]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 635 0]>>endobj
-194 0 obj<</Subtype/Link/Rect[126.0 644.4 312.4 657.4]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 194 0]>>endobj
-195 0 obj<</Subtype/Link/Rect[126.0 631.2 292.8 644.2]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 560 0]>>endobj
-196 0 obj<</Subtype/Link/Rect[126.0 618.0 226.5 631.0]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 383 0]>>endobj
-197 0 obj<</Subtype/Link/Rect[108.0 604.8 265.4 617.8]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 245 0]>>endobj
-198 0 obj<</Subtype/Link/Rect[126.0 591.6 213.4 604.6]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 734 0]>>endobj
-199 0 obj<</Subtype/Link/Rect[126.0 578.4 220.1 591.4]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 451 0]>>endobj
-200 0 obj<</Subtype/Link/Rect[126.0 565.2 244.6 578.2]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 181 0]>>endobj
-201 0 obj<</Subtype/Link/Rect[108.0 552.0 183.5 565.0]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 734 0]>>endobj
-202 0 obj<</Subtype/Link/Rect[108.0 538.8 182.9 551.8]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 513 0]>>endobj
-203 0 obj<</Subtype/Link/Rect[72.0 512.4 268.2 525.4]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 734 0]>>endobj
-204 0 obj<</Subtype/Link/Rect[108.0 499.2 231.7 512.2]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 696 0]>>endobj
-205 0 obj<</Subtype/Link/Rect[108.0 486.0 253.4 499.0]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 515 0]>>endobj
-206 0 obj<</Subtype/Link/Rect[108.0 472.8 216.8 485.8]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 137 0]>>endobj
-207 0 obj<</Subtype/Link/Rect[108.0 459.6 241.5 472.6]/Border[0 0 0]/Dest[1607 0 R/XYZ 0 533 0]>>endobj
-208 0 obj<</Subtype/Link/Rect[126.0 446.4 336.8 459.4]/Border[0 0 0]/Dest[1607 0 R/XYZ 0 273 0]>>endobj
-209 0 obj<</Subtype/Link/Rect[108.0 433.2 245.8 446.2]/Border[0 0 0]/Dest[1613 0 R/XYZ 0 560 0]>>endobj
-210 0 obj<</Subtype/Link/Rect[108.0 420.0 315.8 433.0]/Border[0 0 0]/Dest[1615 0 R/XYZ 0 613 0]>>endobj
-211 0 obj<</Subtype/Link/Rect[108.0 406.8 290.1 419.8]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 622 0]>>endobj
-212 0 obj<</Subtype/Link/Rect[108.0 393.6 270.5 406.6]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 266 0]>>endobj
-213 0 obj<</Subtype/Link/Rect[108.0 380.4 281.8 393.4]/Border[0 0 0]/Dest[1619 0 R/XYZ 0 520 0]>>endobj
-214 0 obj<</Subtype/Link/Rect[108.0 367.2 276.6 380.2]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 734 0]>>endobj
-215 0 obj<</Subtype/Link/Rect[108.0 354.0 221.7 367.0]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 645 0]>>endobj
-216 0 obj<</Subtype/Link/Rect[72.0 327.6 241.6 340.6]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 734 0]>>endobj
-217 0 obj<</Subtype/Link/Rect[108.0 314.4 267.8 327.4]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 696 0]>>endobj
-218 0 obj<</Subtype/Link/Rect[108.0 301.2 211.3 314.2]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 385 0]>>endobj
-219 0 obj<</Subtype/Link/Rect[126.0 288.0 181.0 301.0]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 351 0]>>endobj
-220 0 obj<</Subtype/Link/Rect[126.0 274.8 190.8 287.8]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 215 0]>>endobj
-221 0 obj<</Subtype/Link/Rect[126.0 261.6 193.8 274.6]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 560 0]>>endobj
-222 0 obj<</Subtype/Link/Rect[108.0 248.4 282.1 261.4]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 430 0]>>endobj
-223 0 obj<</Subtype/Link/Rect[126.0 235.2 211.5 248.2]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 315 0]>>endobj
-224 0 obj<</Subtype/Link/Rect[126.0 222.0 184.0 235.0]/Border[0 0 0]/Dest[1627 0 R/XYZ 0 734 0]>>endobj
-225 0 obj<</Subtype/Link/Rect[72.0 195.6 295.6 208.6]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 734 0]>>endobj
-226 0 obj<</Subtype/Link/Rect[108.0 182.4 187.1 195.4]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 696 0]>>endobj
-227 0 obj<</Subtype/Link/Rect[108.0 169.2 247.6 182.2]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 581 0]>>endobj
-228 0 obj<</Subtype/Link/Rect[126.0 156.0 248.8 169.0]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 493 0]>>endobj
-229 0 obj<</Subtype/Link/Rect[126.0 142.8 223.8 155.8]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 382 0]>>endobj
-230 0 obj<</Subtype/Link/Rect[72.0 116.4 252.6 129.4]/Border[0 0 0]/Dest[1633 0 R/XYZ 0 734 0]>>endobj
-231 0 obj<</Subtype/Link/Rect[72.0 90.0 255.6 103.0]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 734 0]>>endobj
-232 0 obj<</Subtype/Link/Rect[108.0 76.8 190.8 89.8]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 696 0]>>endobj
-233 0 obj<</Subtype/Link/Rect[108.0 63.6 197.8 76.6]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 449 0]>>endobj
-234 0 obj[191 0 R
+189 0 R
+190 0 R
+191 0 R
192 0 R
193 0 R
194 0 R
@@ -438,59 +428,59 @@ endobj
222 0 R
223 0 R
224 0 R
-225 0 R
-226 0 R
-227 0 R
+225 0 R]endobj
+227 0 obj<</Subtype/Link/Rect[72.0 684.0 197.3 697.0]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+228 0 obj<</Subtype/Link/Rect[108.0 670.8 166.1 683.8]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 696 0]>>endobj
+229 0 obj<</Subtype/Link/Rect[108.0 657.6 173.1 670.6]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 449 0]>>endobj
+230 0 obj<</Subtype/Link/Rect[108.0 644.4 150.5 657.4]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 189 0]>>endobj
+231 0 obj<</Subtype/Link/Rect[108.0 631.2 151.1 644.2]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 639 0]>>endobj
+232 0 obj<</Subtype/Link/Rect[108.0 618.0 149.9 631.0]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 458 0]>>endobj
+233 0 obj<</Subtype/Link/Rect[108.0 604.8 149.8 617.8]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 383 0]>>endobj
+234 0 obj<</Subtype/Link/Rect[108.0 591.6 152.3 604.6]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 215 0]>>endobj
+235 0 obj<</Subtype/Link/Rect[108.0 578.4 164.5 591.4]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 734 0]>>endobj
+236 0 obj<</Subtype/Link/Rect[108.0 565.2 163.9 578.2]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 605 0]>>endobj
+237 0 obj<</Subtype/Link/Rect[108.0 552.0 165.8 565.0]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 530 0]>>endobj
+238 0 obj<</Subtype/Link/Rect[72.0 525.6 144.7 538.6]/Border[0 0 0]/Dest[1390 0 R/XYZ 0 734 0]>>endobj
+239 0 obj<</Subtype/Link/Rect[72.0 499.2 122.7 512.2]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+240 0 obj<</Subtype/Link/Rect[108.0 486.0 137.9 499.0]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 655 0]>>endobj
+241 0 obj<</Subtype/Link/Rect[108.0 472.8 154.1 485.8]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 408 0]>>endobj
+242 0 obj<</Subtype/Link/Rect[108.0 459.6 135.5 472.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 293 0]>>endobj
+243 0 obj<</Subtype/Link/Rect[108.0 446.4 235.8 459.4]/Border[0 0 0]/Dest[1394 0 R/XYZ 0 216 0]>>endobj
+244 0 obj<</Subtype/Link/Rect[72.0 420.0 213.2 433.0]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+245 0 obj<</Subtype/Link/Rect[108.0 406.8 190.8 419.8]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 668 0]>>endobj
+246 0 obj<</Subtype/Link/Rect[108.0 393.6 157.2 406.6]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 461 0]>>endobj
+247 0 obj<</Subtype/Link/Rect[126.0 380.4 481.3 393.4]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 427 0]>>endobj
+248 0 obj<</Subtype/Link/Rect[126.0 367.2 486.5 380.2]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 734 0]>>endobj
+249 0 obj<</Subtype/Link/Rect[126.0 354.0 437.9 367.0]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 520 0]>>endobj
+250 0 obj<</Subtype/Link/Rect[126.0 340.8 407.7 353.8]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 422 0]>>endobj
+251 0 obj<</Subtype/Link/Rect[108.0 327.6 223.5 340.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 165 0]>>endobj
+252 0 obj<</Subtype/Link/Rect[126.0 314.4 300.5 327.4]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 132 0]>>endobj
+253 0 obj<</Subtype/Link/Rect[126.0 301.2 299.5 314.2]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 652 0]>>endobj
+254 0 obj<</Subtype/Link/Rect[126.0 288.0 283.3 301.0]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 501 0]>>endobj
+255 0 obj<</Subtype/Link/Rect[126.0 274.8 249.1 287.8]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 403 0]>>endobj
+256 0 obj<</Subtype/Link/Rect[108.0 261.6 181.9 274.6]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 319 0]>>endobj
+257 0 obj<</Subtype/Link/Rect[108.0 248.4 243.0 261.4]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
+258 0 obj<</Subtype/Link/Rect[72.0 222.0 145.6 235.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+259 0 obj<</Subtype/Link/Rect[108.0 208.8 162.4 221.8]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 696 0]>>endobj
+260 0 obj<</Subtype/Link/Rect[108.0 195.6 163.3 208.6]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 423 0]>>endobj
+261 0 obj<</Subtype/Link/Rect[108.0 182.4 165.7 195.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 282 0]>>endobj
+262 0 obj<</Subtype/Link/Rect[108.0 169.2 170.6 182.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 613 0]>>endobj
+263 0 obj<</Subtype/Link/Rect[108.0 156.0 243.0 169.0]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 260 0]>>endobj
+264 0 obj<</Subtype/Link/Rect[108.0 142.8 141.6 155.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 159 0]>>endobj
+265 0 obj<</Subtype/Link/Rect[72.0 116.4 214.7 129.4]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+266 0 obj<</Subtype/Link/Rect[108.0 103.2 162.4 116.2]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 696 0]>>endobj
+267 0 obj<</Subtype/Link/Rect[108.0 90.0 165.5 103.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 529 0]>>endobj
+268 0 obj<</Subtype/Link/Rect[108.0 76.8 131.2 89.8]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 196 0]>>endobj
+269 0 obj<</Subtype/Link/Rect[126.0 63.6 153.2 76.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 163 0]>>endobj
+270 0 obj[227 0 R
228 0 R
229 0 R
230 0 R
231 0 R
232 0 R
-233 0 R]endobj
-235 0 obj<</Subtype/Link/Rect[72.0 684.0 255.6 697.0]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 734 0]>>endobj
-236 0 obj<</Subtype/Link/Rect[108.0 670.8 175.2 683.8]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 189 0]>>endobj
-237 0 obj<</Subtype/Link/Rect[108.0 657.6 175.8 670.6]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 639 0]>>endobj
-238 0 obj<</Subtype/Link/Rect[108.0 644.4 174.6 657.4]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 458 0]>>endobj
-239 0 obj<</Subtype/Link/Rect[108.0 631.2 174.6 644.2]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 383 0]>>endobj
-240 0 obj<</Subtype/Link/Rect[108.0 618.0 177.0 631.0]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 215 0]>>endobj
-241 0 obj<</Subtype/Link/Rect[108.0 604.8 189.3 617.8]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 734 0]>>endobj
-242 0 obj<</Subtype/Link/Rect[108.0 591.6 188.7 604.6]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 605 0]>>endobj
-243 0 obj<</Subtype/Link/Rect[108.0 578.4 196.0 591.4]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 530 0]>>endobj
-244 0 obj<</Subtype/Link/Rect[72.0 552.0 244.6 565.0]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 734 0]>>endobj
-245 0 obj<</Subtype/Link/Rect[108.0 538.8 190.6 551.8]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 696 0]>>endobj
-246 0 obj<</Subtype/Link/Rect[108.0 525.6 200.6 538.6]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 463 0]>>endobj
-247 0 obj<</Subtype/Link/Rect[126.0 512.4 223.8 525.4]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 160 0]>>endobj
-248 0 obj<</Subtype/Link/Rect[126.0 499.2 243.6 512.2]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 734 0]>>endobj
-249 0 obj<</Subtype/Link/Rect[126.0 486.0 219.8 499.0]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 662 0]>>endobj
-250 0 obj<</Subtype/Link/Rect[126.0 472.8 195.4 485.8]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 590 0]>>endobj
-251 0 obj<</Subtype/Link/Rect[108.0 459.6 216.8 472.6]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 426 0]>>endobj
-252 0 obj<</Subtype/Link/Rect[72.0 433.2 144.7 446.2]/Border[0 0 0]/Dest[1649 0 R/XYZ 0 734 0]>>endobj
-253 0 obj<</Subtype/Link/Rect[72.0 406.8 181.1 419.8]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 734 0]>>endobj
-254 0 obj<</Subtype/Link/Rect[108.0 393.6 162.7 406.6]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 655 0]>>endobj
-255 0 obj<</Subtype/Link/Rect[108.0 380.4 178.9 393.4]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 408 0]>>endobj
-256 0 obj<</Subtype/Link/Rect[108.0 367.2 160.2 380.2]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 293 0]>>endobj
-257 0 obj<</Subtype/Link/Rect[108.0 354.0 260.5 367.0]/Border[0 0 0]/Dest[1653 0 R/XYZ 0 228 0]>>endobj
-258 0 obj<</Subtype/Link/Rect[72.0 327.6 271.5 340.6]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 734 0]>>endobj
-259 0 obj<</Subtype/Link/Rect[108.0 314.4 215.5 327.4]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 668 0]>>endobj
-260 0 obj<</Subtype/Link/Rect[108.0 301.2 182.0 314.2]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 461 0]>>endobj
-261 0 obj<</Subtype/Link/Rect[126.0 288.0 514.3 301.0]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 427 0]>>endobj
-262 0 obj<</Subtype/Link/Rect[126.0 274.8 519.5 287.8]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 734 0]>>endobj
-263 0 obj<</Subtype/Link/Rect[126.0 261.6 470.9 274.6]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 523 0]>>endobj
-264 0 obj<</Subtype/Link/Rect[126.0 248.4 440.7 261.4]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 408 0]>>endobj
-265 0 obj<</Subtype/Link/Rect[108.0 235.2 248.2 248.2]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 151 0]>>endobj
-266 0 obj<</Subtype/Link/Rect[126.0 222.0 333.5 235.0]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 118 0]>>endobj
-267 0 obj<</Subtype/Link/Rect[126.0 208.8 332.5 221.8]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 626 0]>>endobj
-268 0 obj<</Subtype/Link/Rect[126.0 195.6 316.3 208.6]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 475 0]>>endobj
-269 0 obj<</Subtype/Link/Rect[126.0 182.4 282.1 195.4]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 377 0]>>endobj
-270 0 obj<</Subtype/Link/Rect[108.0 169.2 206.7 182.2]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 292 0]>>endobj
-271 0 obj<</Subtype/Link/Rect[108.0 156.0 267.8 169.0]/Border[0 0 0]/Dest[1661 0 R/XYZ 0 718 0]>>endobj
-272 0 obj<</Subtype/Link/Rect[72.0 129.6 204.0 142.6]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 734 0]>>endobj
-273 0 obj<</Subtype/Link/Rect[108.0 116.4 187.1 129.4]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 696 0]>>endobj
-274 0 obj<</Subtype/Link/Rect[108.0 103.2 188.0 116.2]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 423 0]>>endobj
-275 0 obj<</Subtype/Link/Rect[108.0 90.0 190.5 103.0]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 282 0]>>endobj
-276 0 obj<</Subtype/Link/Rect[108.0 76.8 195.4 89.8]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 613 0]>>endobj
-277 0 obj<</Subtype/Link/Rect[108.0 63.6 267.8 76.6]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 260 0]>>endobj
-278 0 obj[235 0 R
+233 0 R
+234 0 R
+235 0 R
236 0 R
237 0 R
238 0 R
@@ -524,96 +514,90 @@ endobj
266 0 R
267 0 R
268 0 R
-269 0 R
-270 0 R
-271 0 R
+269 0 R]endobj
+271 0 obj<</Subtype/Link/Rect[72.0 684.0 214.7 697.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+272 0 obj<</Subtype/Link/Rect[126.0 670.8 153.2 683.8]/Border[0 0 0]/Dest[1412 0 R/XYZ 0 734 0]>>endobj
+273 0 obj<</Subtype/Link/Rect[126.0 657.6 153.2 670.6]/Border[0 0 0]/Dest[1412 0 R/XYZ 0 530 0]>>endobj
+274 0 obj<</Subtype/Link/Rect[126.0 644.4 153.2 657.4]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 599 0]>>endobj
+275 0 obj<</Subtype/Link/Rect[126.0 631.2 153.2 644.2]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 449 0]>>endobj
+276 0 obj<</Subtype/Link/Rect[126.0 618.0 153.2 631.0]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 324 0]>>endobj
+277 0 obj<</Subtype/Link/Rect[126.0 604.8 153.2 617.8]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 734 0]>>endobj
+278 0 obj<</Subtype/Link/Rect[126.0 591.6 153.2 604.6]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 371 0]>>endobj
+279 0 obj<</Subtype/Link/Rect[126.0 578.4 153.2 591.4]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 705 0]>>endobj
+280 0 obj<</Subtype/Link/Rect[126.0 565.2 158.7 578.2]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 515 0]>>endobj
+281 0 obj<</Subtype/Link/Rect[126.0 552.0 158.7 565.0]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 377 0]>>endobj
+282 0 obj<</Subtype/Link/Rect[108.0 538.8 202.1 551.8]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 239 0]>>endobj
+283 0 obj[271 0 R
272 0 R
273 0 R
274 0 R
275 0 R
276 0 R
-277 0 R]endobj
-279 0 obj<</Subtype/Link/Rect[72.0 684.0 204.0 697.0]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 734 0]>>endobj
-280 0 obj<</Subtype/Link/Rect[108.0 670.8 166.4 683.8]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 159 0]>>endobj
-281 0 obj<</Subtype/Link/Rect[72.0 644.4 273.0 657.4]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 734 0]>>endobj
-282 0 obj<</Subtype/Link/Rect[108.0 631.2 187.1 644.2]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 696 0]>>endobj
-283 0 obj<</Subtype/Link/Rect[108.0 618.0 190.2 631.0]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 529 0]>>endobj
-284 0 obj<</Subtype/Link/Rect[108.0 604.8 156.0 617.8]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 199 0]>>endobj
-285 0 obj<</Subtype/Link/Rect[126.0 591.6 186.2 604.6]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 165 0]>>endobj
-286 0 obj<</Subtype/Link/Rect[126.0 578.4 186.2 591.4]/Border[0 0 0]/Dest[1669 0 R/XYZ 0 734 0]>>endobj
-287 0 obj<</Subtype/Link/Rect[126.0 565.2 186.2 578.2]/Border[0 0 0]/Dest[1669 0 R/XYZ 0 530 0]>>endobj
-288 0 obj<</Subtype/Link/Rect[126.0 552.0 186.2 565.0]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 626 0]>>endobj
-289 0 obj<</Subtype/Link/Rect[126.0 538.8 186.2 551.8]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 475 0]>>endobj
-290 0 obj<</Subtype/Link/Rect[126.0 525.6 186.2 538.6]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 351 0]>>endobj
-291 0 obj<</Subtype/Link/Rect[126.0 512.4 186.2 525.4]/Border[0 0 0]/Dest[1673 0 R/XYZ 0 734 0]>>endobj
-292 0 obj<</Subtype/Link/Rect[126.0 499.2 186.2 512.2]/Border[0 0 0]/Dest[1673 0 R/XYZ 0 371 0]>>endobj
-293 0 obj<</Subtype/Link/Rect[126.0 486.0 186.2 499.0]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 705 0]>>endobj
-294 0 obj<</Subtype/Link/Rect[126.0 472.8 197.2 485.8]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 515 0]>>endobj
-295 0 obj<</Subtype/Link/Rect[126.0 459.6 197.2 472.6]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 377 0]>>endobj
-296 0 obj<</Subtype/Link/Rect[108.0 446.4 226.9 459.4]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 239 0]>>endobj
-297 0 obj[279 0 R
+277 0 R
+278 0 R
+279 0 R
280 0 R
281 0 R
-282 0 R
-283 0 R
-284 0 R
-285 0 R
-286 0 R
+282 0 R]endobj
+284 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+285 0 obj<</Subtype/Link/Rect[185.6 631.0 289.8 644.0]/Border[0 0 0]/A 284 0 R>>endobj
+286 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+287 0 obj<</Subtype/Link/Rect[72.0 617.8 148.4 630.8]/Border[0 0 0]/A 286 0 R>>endobj
+288 0 obj<</S/URI/URI(mailto:jelmer@samba.org)>>endobj
+289 0 obj<</Subtype/Link/Rect[160.3 617.8 246.8 630.8]/Border[0 0 0]/A 288 0 R>>endobj
+290 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
+291 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 290 0 R>>endobj
+292 0 obj<</Subtype/Link/Rect[78.4 499.0 170.1 512.0]/Border[0 0 0]/Dest[1144 0 R/XYZ 0 364 0]>>endobj
+293 0 obj<</Subtype/Link/Rect[108.0 485.8 248.9 498.8]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+294 0 obj<</Subtype/Link/Rect[144.0 472.6 232.9 485.6]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 696 0]>>endobj
+295 0 obj<</Subtype/Link/Rect[144.0 459.4 238.1 472.4]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 568 0]>>endobj
+296 0 obj<</Subtype/Link/Rect[144.0 446.2 241.5 459.2]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 163 0]>>endobj
+297 0 obj<</Subtype/Link/Rect[144.0 433.0 292.8 446.0]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 734 0]>>endobj
+298 0 obj<</Subtype/Link/Rect[144.0 419.8 295.9 432.8]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 382 0]>>endobj
+299 0 obj<</Subtype/Link/Rect[144.0 406.6 268.1 419.6]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 254 0]>>endobj
+300 0 obj<</Subtype/Link/Rect[144.0 393.4 347.8 406.4]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 665 0]>>endobj
+301 0 obj<</Subtype/Link/Rect[144.0 380.2 297.1 393.2]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 498 0]>>endobj
+302 0 obj<</Subtype/Link/Rect[144.0 367.0 483.7 380.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 330 0]>>endobj
+303 0 obj<</Subtype/Link/Rect[144.0 353.8 268.6 366.8]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 734 0]>>endobj
+304 0 obj<</Subtype/Link/Rect[108.0 340.6 236.6 353.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+305 0 obj<</Subtype/Link/Rect[144.0 327.4 241.2 340.4]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 696 0]>>endobj
+306 0 obj<</Subtype/Link/Rect[144.0 314.2 265.3 327.2]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 515 0]>>endobj
+307 0 obj<</Subtype/Link/Rect[144.0 301.0 229.2 314.0]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 137 0]>>endobj
+308 0 obj<</Subtype/Link/Rect[144.0 287.8 253.4 300.8]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 533 0]>>endobj
+309 0 obj<</Subtype/Link/Rect[144.0 274.6 255.2 287.6]/Border[0 0 0]/Dest[1172 0 R/XYZ 0 511 0]>>endobj
+310 0 obj<</Subtype/Link/Rect[144.0 261.4 324.0 274.4]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 560 0]>>endobj
+311 0 obj<</Subtype/Link/Rect[144.0 248.2 298.3 261.2]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 567 0]>>endobj
+312 0 obj<</Subtype/Link/Rect[144.0 235.0 284.2 248.0]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 208 0]>>endobj
+313 0 obj<</Subtype/Link/Rect[144.0 221.8 293.7 234.8]/Border[0 0 0]/Dest[1178 0 R/XYZ 0 454 0]>>endobj
+314 0 obj<</Subtype/Link/Rect[144.0 208.6 285.5 221.6]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 679 0]>>endobj
+315 0 obj<</Subtype/Link/Rect[144.0 195.4 227.4 208.4]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 590 0]>>endobj
+316 0 obj<</Subtype/Link/Rect[108.0 182.2 399.5 195.2]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+317 0 obj<</Subtype/Link/Rect[144.0 169.0 192.3 182.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 604 0]>>endobj
+318 0 obj<</Subtype/Link/Rect[144.0 155.8 328.9 168.8]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 159 0]>>endobj
+319 0 obj<</Subtype/Link/Rect[144.0 142.6 341.4 155.6]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 520 0]>>endobj
+320 0 obj<</Subtype/Link/Rect[144.0 129.4 200.8 142.4]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 339 0]>>endobj
+321 0 obj<</Subtype/Link/Rect[144.0 116.2 439.4 129.2]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 494 0]>>endobj
+322 0 obj<</Subtype/Link/Rect[144.0 103.0 249.1 116.0]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 213 0]>>endobj
+323 0 obj<</Subtype/Link/Rect[108.0 89.8 322.5 102.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+324 0 obj<</Subtype/Link/Rect[144.0 76.6 199.0 89.6]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 696 0]>>endobj
+325 0 obj<</Subtype/Link/Rect[144.0 63.4 283.6 76.4]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 555 0]>>endobj
+326 0 obj[285 0 R
287 0 R
-288 0 R
289 0 R
-290 0 R
291 0 R
292 0 R
293 0 R
294 0 R
295 0 R
-296 0 R]endobj
-298 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-299 0 obj<</Subtype/Link/Rect[185.6 631.0 289.8 644.0]/Border[0 0 0]/A 298 0 R>>endobj
-300 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-301 0 obj<</Subtype/Link/Rect[72.0 617.8 148.4 630.8]/Border[0 0 0]/A 300 0 R>>endobj
-302 0 obj<</S/URI/URI(mailto:jelmer@samba.org)>>endobj
-303 0 obj<</Subtype/Link/Rect[160.3 617.8 246.8 630.8]/Border[0 0 0]/A 302 0 R>>endobj
-304 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
-305 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 304 0 R>>endobj
-306 0 obj<</Subtype/Link/Rect[78.4 499.0 170.1 512.0]/Border[0 0 0]/Dest[1397 0 R/XYZ 0 483 0]>>endobj
-307 0 obj<</Subtype/Link/Rect[116.2 485.8 259.9 498.8]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 734 0]>>endobj
-308 0 obj<</Subtype/Link/Rect[160.5 472.6 252.2 485.6]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 696 0]>>endobj
-309 0 obj<</Subtype/Link/Rect[160.5 459.4 257.4 472.4]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 568 0]>>endobj
-310 0 obj<</Subtype/Link/Rect[160.5 446.2 260.7 459.2]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 163 0]>>endobj
-311 0 obj<</Subtype/Link/Rect[160.5 433.0 312.1 446.0]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 734 0]>>endobj
-312 0 obj<</Subtype/Link/Rect[160.5 419.8 315.1 432.8]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 385 0]>>endobj
-313 0 obj<</Subtype/Link/Rect[160.5 406.6 287.3 419.6]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 257 0]>>endobj
-314 0 obj<</Subtype/Link/Rect[160.5 393.4 367.0 406.4]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 665 0]>>endobj
-315 0 obj<</Subtype/Link/Rect[160.5 380.2 316.3 393.2]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 498 0]>>endobj
-316 0 obj<</Subtype/Link/Rect[160.5 367.0 503.0 380.0]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 330 0]>>endobj
-317 0 obj<</Subtype/Link/Rect[166.0 353.8 293.3 366.8]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 734 0]>>endobj
-318 0 obj<</Subtype/Link/Rect[116.2 340.6 410.5 353.6]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 734 0]>>endobj
-319 0 obj<</Subtype/Link/Rect[160.5 327.4 211.5 340.4]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 604 0]>>endobj
-320 0 obj<</Subtype/Link/Rect[160.5 314.2 348.1 327.2]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 159 0]>>endobj
-321 0 obj<</Subtype/Link/Rect[160.5 301.0 360.7 314.0]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 509 0]>>endobj
-322 0 obj<</Subtype/Link/Rect[160.5 287.8 220.1 300.8]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 331 0]>>endobj
-323 0 obj<</Subtype/Link/Rect[160.5 274.6 458.7 287.6]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 494 0]>>endobj
-324 0 obj<</Subtype/Link/Rect[160.5 261.4 268.4 274.4]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 213 0]>>endobj
-325 0 obj<</Subtype/Link/Rect[116.2 248.2 237.6 261.2]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 734 0]>>endobj
-326 0 obj<</Subtype/Link/Rect[160.5 235.0 218.2 248.0]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 696 0]>>endobj
-327 0 obj<</Subtype/Link/Rect[160.5 221.8 302.9 234.8]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 449 0]>>endobj
-328 0 obj<</Subtype/Link/Rect[160.5 208.6 280.6 221.6]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 452 0]>>endobj
-329 0 obj<</Subtype/Link/Rect[160.5 195.4 205.7 208.4]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 639 0]>>endobj
-330 0 obj<</Subtype/Link/Rect[160.5 182.2 184.0 195.2]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 551 0]>>endobj
-331 0 obj<</Subtype/Link/Rect[160.5 169.0 190.8 182.0]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 475 0]>>endobj
-332 0 obj<</Subtype/Link/Rect[160.5 155.8 196.9 168.8]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 322 0]>>endobj
-333 0 obj<</Subtype/Link/Rect[160.5 142.6 250.6 155.6]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 390 0]>>endobj
-334 0 obj<</Subtype/Link/Rect[82.1 129.4 170.4 142.4]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 163 0]>>endobj
-335 0 obj<</Subtype/Link/Rect[116.2 116.2 378.7 129.2]/Border[0 0 0]/Dest[1453 0 R/XYZ 0 734 0]>>endobj
-336 0 obj<</Subtype/Link/Rect[116.2 103.0 361.6 116.0]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 734 0]>>endobj
-337 0 obj<</Subtype/Link/Rect[160.5 89.8 257.0 102.8]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 672 0]>>endobj
-338 0 obj<</Subtype/Link/Rect[160.5 76.6 217.0 89.6]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 584 0]>>endobj
-339 0 obj<</Subtype/Link/Rect[160.5 63.4 353.3 76.4]/Border[0 0 0]/Dest[1459 0 R/XYZ 0 718 0]>>endobj
-340 0 obj[299 0 R
+296 0 R
+297 0 R
+298 0 R
+299 0 R
+300 0 R
301 0 R
+302 0 R
303 0 R
+304 0 R
305 0 R
306 0 R
307 0 R
@@ -634,9 +618,59 @@ endobj
322 0 R
323 0 R
324 0 R
-325 0 R
-326 0 R
-327 0 R
+325 0 R]endobj
+327 0 obj<</Subtype/Link/Rect[144.0 721.0 261.3 734.0]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 511 0]>>endobj
+328 0 obj<</Subtype/Link/Rect[82.1 707.8 170.4 720.8]/Border[0 0 0]/Dest[1194 0 R/XYZ 0 681 0]>>endobj
+329 0 obj<</Subtype/Link/Rect[108.0 694.6 367.7 707.6]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+330 0 obj<</Subtype/Link/Rect[108.0 681.4 389.4 694.4]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+331 0 obj<</Subtype/Link/Rect[144.0 668.2 237.8 681.2]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 672 0]>>endobj
+332 0 obj<</Subtype/Link/Rect[144.0 655.0 197.8 668.0]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 584 0]>>endobj
+333 0 obj<</Subtype/Link/Rect[144.0 641.8 334.1 654.8]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 718 0]>>endobj
+334 0 obj<</Subtype/Link/Rect[144.0 628.6 448.0 641.6]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 613 0]>>endobj
+335 0 obj<</Subtype/Link/Rect[144.0 615.4 280.0 628.4]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 385 0]>>endobj
+336 0 obj<</Subtype/Link/Rect[144.0 602.2 269.6 615.2]/Border[0 0 0]/Dest[1214 0 R/XYZ 0 126 0]>>endobj
+337 0 obj<</Subtype/Link/Rect[144.0 589.0 261.6 602.0]/Border[0 0 0]/Dest[1216 0 R/XYZ 0 124 0]>>endobj
+338 0 obj<</Subtype/Link/Rect[144.0 575.8 307.2 588.8]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 507 0]>>endobj
+339 0 obj<</Subtype/Link/Rect[144.0 562.6 440.4 575.6]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 702 0]>>endobj
+340 0 obj<</Subtype/Link/Rect[108.0 549.4 474.4 562.4]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+341 0 obj<</Subtype/Link/Rect[144.0 536.2 237.8 549.2]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 672 0]>>endobj
+342 0 obj<</Subtype/Link/Rect[144.0 523.0 197.8 536.0]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 597 0]>>endobj
+343 0 obj<</Subtype/Link/Rect[144.0 509.8 377.1 522.8]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 223 0]>>endobj
+344 0 obj<</Subtype/Link/Rect[144.0 496.6 345.0 509.6]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 524 0]>>endobj
+345 0 obj<</Subtype/Link/Rect[144.0 483.4 284.9 496.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 383 0]>>endobj
+346 0 obj<</Subtype/Link/Rect[108.0 470.2 255.6 483.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+347 0 obj<</Subtype/Link/Rect[144.0 457.0 337.4 470.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 551 0]>>endobj
+348 0 obj<</Subtype/Link/Rect[144.0 443.8 338.6 456.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 444 0]>>endobj
+349 0 obj<</Subtype/Link/Rect[144.0 430.6 214.0 443.6]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 267 0]>>endobj
+350 0 obj<</Subtype/Link/Rect[144.0 417.4 254.9 430.4]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 564 0]>>endobj
+351 0 obj<</Subtype/Link/Rect[144.0 404.2 272.0 417.2]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 245 0]>>endobj
+352 0 obj<</Subtype/Link/Rect[144.0 391.0 241.5 404.0]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 692 0]>>endobj
+353 0 obj<</Subtype/Link/Rect[144.0 377.8 243.0 390.8]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 603 0]>>endobj
+354 0 obj<</Subtype/Link/Rect[144.0 364.6 169.1 377.6]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 528 0]>>endobj
+355 0 obj<</Subtype/Link/Rect[108.0 351.4 254.4 364.4]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+356 0 obj<</Subtype/Link/Rect[144.0 338.2 316.0 351.2]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 696 0]>>endobj
+357 0 obj<</Subtype/Link/Rect[144.0 325.0 303.5 338.0]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 362 0]>>endobj
+358 0 obj<</Subtype/Link/Rect[144.0 311.8 326.5 324.8]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 155 0]>>endobj
+359 0 obj<</Subtype/Link/Rect[85.7 298.6 190.2 311.6]/Border[0 0 0]/Dest[1254 0 R/XYZ 0 337 0]>>endobj
+360 0 obj<</Subtype/Link/Rect[108.0 285.4 314.9 298.4]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+361 0 obj<</Subtype/Link/Rect[144.0 272.2 177.6 285.2]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 696 0]>>endobj
+362 0 obj<</Subtype/Link/Rect[144.0 259.0 342.6 272.0]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 463 0]>>endobj
+363 0 obj<</Subtype/Link/Rect[144.0 245.8 395.5 258.8]/Border[0 0 0]/Dest[1264 0 R/XYZ 0 347 0]>>endobj
+364 0 obj<</Subtype/Link/Rect[144.0 232.6 540.0 245.6]/Border[0 0 0]/Dest[1272 0 R/XYZ 0 667 0]>>endobj
+365 0 obj<</Subtype/Link/Rect[144.0 219.4 512.2 232.4]/Border[0 0 0]/Dest[1274 0 R/XYZ 0 734 0]>>endobj
+366 0 obj<</Subtype/Link/Rect[144.0 206.2 198.4 219.2]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 172 0]>>endobj
+367 0 obj<</Subtype/Link/Rect[108.0 193.0 377.5 206.0]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+368 0 obj<</Subtype/Link/Rect[144.0 179.8 458.4 192.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 672 0]>>endobj
+369 0 obj<</Subtype/Link/Rect[144.0 166.6 335.3 179.6]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 497 0]>>endobj
+370 0 obj<</Subtype/Link/Rect[144.0 153.4 245.5 166.4]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 330 0]>>endobj
+371 0 obj<</Subtype/Link/Rect[144.0 140.2 307.8 153.2]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 665 0]>>endobj
+372 0 obj<</Subtype/Link/Rect[144.0 127.0 316.9 140.0]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 692 0]>>endobj
+373 0 obj<</Subtype/Link/Rect[144.0 113.8 413.8 126.8]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 260 0]>>endobj
+374 0 obj<</Subtype/Link/Rect[144.0 100.6 404.0 113.6]/Border[0 0 0]/Dest[1290 0 R/XYZ 0 599 0]>>endobj
+375 0 obj<</Subtype/Link/Rect[108.0 87.4 421.2 100.4]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+376 0 obj<</Subtype/Link/Rect[144.0 74.2 218.5 87.2]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 672 0]>>endobj
+377 0 obj<</Subtype/Link/Rect[144.0 61.0 261.6 74.0]/Border[0 0 0]/Dest[1294 0 R/XYZ 0 127 0]>>endobj
+378 0 obj[327 0 R
328 0 R
329 0 R
330 0 R
@@ -648,59 +682,9 @@ endobj
336 0 R
337 0 R
338 0 R
-339 0 R]endobj
-341 0 obj<</Subtype/Link/Rect[160.5 721.0 467.3 734.0]/Border[0 0 0]/Dest[1461 0 R/XYZ 0 613 0]>>endobj
-342 0 obj<</Subtype/Link/Rect[160.5 707.8 299.2 720.8]/Border[0 0 0]/Dest[1465 0 R/XYZ 0 385 0]>>endobj
-343 0 obj<</Subtype/Link/Rect[160.5 694.6 288.8 707.6]/Border[0 0 0]/Dest[1467 0 R/XYZ 0 129 0]>>endobj
-344 0 obj<</Subtype/Link/Rect[160.5 681.4 280.9 694.4]/Border[0 0 0]/Dest[1469 0 R/XYZ 0 124 0]>>endobj
-345 0 obj<</Subtype/Link/Rect[160.5 668.2 326.4 681.2]/Border[0 0 0]/Dest[1475 0 R/XYZ 0 507 0]>>endobj
-346 0 obj<</Subtype/Link/Rect[160.5 655.0 459.7 668.0]/Border[0 0 0]/Dest[1487 0 R/XYZ 0 734 0]>>endobj
-347 0 obj<</Subtype/Link/Rect[116.2 641.8 485.4 654.8]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 734 0]>>endobj
-348 0 obj<</Subtype/Link/Rect[160.5 628.6 257.0 641.6]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 672 0]>>endobj
-349 0 obj<</Subtype/Link/Rect[160.5 615.4 217.0 628.4]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 597 0]>>endobj
-350 0 obj<</Subtype/Link/Rect[160.5 602.2 396.4 615.2]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 225 0]>>endobj
-351 0 obj<</Subtype/Link/Rect[160.5 589.0 430.3 602.0]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 524 0]>>endobj
-352 0 obj<</Subtype/Link/Rect[160.5 575.8 304.1 588.8]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 323 0]>>endobj
-353 0 obj<</Subtype/Link/Rect[116.2 562.6 266.6 575.6]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 734 0]>>endobj
-354 0 obj<</Subtype/Link/Rect[160.5 549.4 356.7 562.4]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 551 0]>>endobj
-355 0 obj<</Subtype/Link/Rect[160.5 536.2 357.9 549.2]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 444 0]>>endobj
-356 0 obj<</Subtype/Link/Rect[160.5 523.0 233.2 536.0]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 267 0]>>endobj
-357 0 obj<</Subtype/Link/Rect[160.5 509.8 274.2 522.8]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 580 0]>>endobj
-358 0 obj<</Subtype/Link/Rect[160.5 496.6 291.3 509.6]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 264 0]>>endobj
-359 0 obj<</Subtype/Link/Rect[160.5 483.4 260.7 496.4]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 734 0]>>endobj
-360 0 obj<</Subtype/Link/Rect[160.5 470.2 262.3 483.2]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 645 0]>>endobj
-361 0 obj<</Subtype/Link/Rect[160.5 457.0 188.3 470.0]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 570 0]>>endobj
-362 0 obj<</Subtype/Link/Rect[116.2 443.8 308.7 456.8]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 734 0]>>endobj
-363 0 obj<</Subtype/Link/Rect[160.5 430.6 335.3 443.6]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 672 0]>>endobj
-364 0 obj<</Subtype/Link/Rect[160.5 417.4 322.8 430.4]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 494 0]>>endobj
-365 0 obj<</Subtype/Link/Rect[160.5 404.2 345.7 417.2]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 405 0]>>endobj
-366 0 obj<</Subtype/Link/Rect[85.7 391.0 190.2 404.0]/Border[0 0 0]/Dest[1507 0 R/XYZ 0 641 0]>>endobj
-367 0 obj<</Subtype/Link/Rect[116.2 377.8 325.9 390.8]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 734 0]>>endobj
-368 0 obj<</Subtype/Link/Rect[160.5 364.6 196.9 377.6]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 672 0]>>endobj
-369 0 obj<</Subtype/Link/Rect[160.5 351.4 361.9 364.4]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 439 0]>>endobj
-370 0 obj<</Subtype/Link/Rect[160.5 338.2 414.7 351.2]/Border[0 0 0]/Dest[1521 0 R/XYZ 0 339 0]>>endobj
-371 0 obj<</Subtype/Link/Rect[160.5 325.0 526.6 338.0]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 670 0]>>endobj
-372 0 obj<</Subtype/Link/Rect[144.0 311.8 173.9 324.8]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 670 0]>>endobj
-373 0 obj<</Subtype/Link/Rect[160.5 298.6 531.4 311.6]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 126 0]>>endobj
-374 0 obj<</Subtype/Link/Rect[160.5 285.4 217.6 298.4]/Border[0 0 0]/Dest[1535 0 R/XYZ 0 263 0]>>endobj
-375 0 obj<</Subtype/Link/Rect[121.8 272.2 394.0 285.2]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 734 0]>>endobj
-376 0 obj<</Subtype/Link/Rect[166.0 259.0 483.2 272.0]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 672 0]>>endobj
-377 0 obj<</Subtype/Link/Rect[166.0 245.8 360.0 258.8]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 537 0]>>endobj
-378 0 obj<</Subtype/Link/Rect[166.0 232.6 270.2 245.6]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 369 0]>>endobj
-379 0 obj<</Subtype/Link/Rect[166.0 219.4 332.5 232.4]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 705 0]>>endobj
-380 0 obj<</Subtype/Link/Rect[166.0 206.2 341.7 219.2]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 718 0]>>endobj
-381 0 obj<</Subtype/Link/Rect[166.0 193.0 438.5 206.0]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 287 0]>>endobj
-382 0 obj<</Subtype/Link/Rect[166.0 179.8 428.8 192.8]/Border[0 0 0]/Dest[1545 0 R/XYZ 0 652 0]>>endobj
-383 0 obj<</Subtype/Link/Rect[121.8 166.6 437.7 179.6]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 734 0]>>endobj
-384 0 obj<</Subtype/Link/Rect[166.0 153.4 243.3 166.4]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 672 0]>>endobj
-385 0 obj<</Subtype/Link/Rect[166.0 140.2 286.4 153.2]/Border[0 0 0]/Dest[1549 0 R/XYZ 0 148 0]>>endobj
-386 0 obj<</Subtype/Link/Rect[166.0 127.0 309.9 140.0]/Border[0 0 0]/Dest[1551 0 R/XYZ 0 705 0]>>endobj
-387 0 obj<</Subtype/Link/Rect[121.8 113.8 386.0 126.8]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 734 0]>>endobj
-388 0 obj<</Subtype/Link/Rect[166.0 100.6 221.3 113.6]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 672 0]>>endobj
-389 0 obj<</Subtype/Link/Rect[121.8 87.4 198.8 100.4]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 734 0]>>endobj
-390 0 obj<</Subtype/Link/Rect[166.0 74.2 223.8 87.2]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 696 0]>>endobj
-391 0 obj<</Subtype/Link/Rect[166.0 61.0 231.1 74.0]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 317 0]>>endobj
-392 0 obj[341 0 R
+339 0 R
+340 0 R
+341 0 R
342 0 R
343 0 R
344 0 R
@@ -736,9 +720,59 @@ endobj
374 0 R
375 0 R
376 0 R
-377 0 R
-378 0 R
-379 0 R
+377 0 R]endobj
+379 0 obj<</Subtype/Link/Rect[144.0 721.0 285.2 734.0]/Border[0 0 0]/Dest[1296 0 R/XYZ 0 679 0]>>endobj
+380 0 obj<</Subtype/Link/Rect[108.0 707.8 369.5 720.8]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+381 0 obj<</Subtype/Link/Rect[144.0 694.6 196.6 707.6]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 672 0]>>endobj
+382 0 obj<</Subtype/Link/Rect[108.0 681.4 182.3 694.4]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+383 0 obj<</Subtype/Link/Rect[144.0 668.2 199.0 681.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 696 0]>>endobj
+384 0 obj<</Subtype/Link/Rect[144.0 655.0 206.3 668.0]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 317 0]>>endobj
+385 0 obj<</Subtype/Link/Rect[144.0 641.8 235.7 654.8]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 734 0]>>endobj
+386 0 obj<</Subtype/Link/Rect[144.0 628.6 188.6 641.6]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 426 0]>>endobj
+387 0 obj<</Subtype/Link/Rect[108.0 615.4 388.5 628.4]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+388 0 obj<</Subtype/Link/Rect[144.0 602.2 181.3 615.2]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 672 0]>>endobj
+389 0 obj<</Subtype/Link/Rect[144.0 589.0 199.0 602.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 544 0]>>endobj
+390 0 obj<</Subtype/Link/Rect[144.0 575.8 249.1 588.8]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 231 0]>>endobj
+391 0 obj<</Subtype/Link/Rect[144.0 562.6 235.7 575.6]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 409 0]>>endobj
+392 0 obj<</Subtype/Link/Rect[144.0 549.4 279.1 562.4]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 351 0]>>endobj
+393 0 obj<</Subtype/Link/Rect[144.0 536.2 194.1 549.2]/Border[0 0 0]/Dest[1346 0 R/XYZ 0 217 0]>>endobj
+394 0 obj<</Subtype/Link/Rect[144.0 523.0 194.1 536.0]/Border[0 0 0]/Dest[1348 0 R/XYZ 0 679 0]>>endobj
+395 0 obj<</Subtype/Link/Rect[108.0 509.8 207.0 522.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+396 0 obj<</Subtype/Link/Rect[144.0 496.6 181.9 509.6]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 696 0]>>endobj
+397 0 obj<</Subtype/Link/Rect[144.0 483.4 197.8 496.4]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 595 0]>>endobj
+398 0 obj<</Subtype/Link/Rect[144.0 470.2 364.3 483.2]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 511 0]>>endobj
+399 0 obj<</Subtype/Link/Rect[144.0 457.0 322.8 470.0]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 357 0]>>endobj
+400 0 obj<</Subtype/Link/Rect[108.0 443.8 195.4 456.8]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+401 0 obj<</Subtype/Link/Rect[144.0 430.6 181.9 443.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 696 0]>>endobj
+402 0 obj<</Subtype/Link/Rect[144.0 417.4 172.1 430.4]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 608 0]>>endobj
+403 0 obj<</Subtype/Link/Rect[108.0 404.2 211.9 417.2]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+404 0 obj<</Subtype/Link/Rect[144.0 391.0 280.9 404.0]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 696 0]>>endobj
+405 0 obj<</Subtype/Link/Rect[144.0 377.8 221.9 390.8]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 382 0]>>endobj
+406 0 obj<</Subtype/Link/Rect[144.0 364.6 292.8 377.6]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 430 0]>>endobj
+407 0 obj<</Subtype/Link/Rect[108.0 351.4 439.7 364.4]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+408 0 obj<</Subtype/Link/Rect[144.0 338.2 180.7 351.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 672 0]>>endobj
+409 0 obj<</Subtype/Link/Rect[144.0 325.0 199.0 338.0]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 412 0]>>endobj
+410 0 obj<</Subtype/Link/Rect[144.0 311.8 255.2 324.8]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 573 0]>>endobj
+411 0 obj<</Subtype/Link/Rect[144.0 298.6 393.6 311.6]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 471 0]>>endobj
+412 0 obj<</Subtype/Link/Rect[144.0 285.4 282.4 298.4]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 734 0]>>endobj
+413 0 obj<</Subtype/Link/Rect[144.0 272.2 298.3 285.2]/Border[0 0 0]/Dest[1368 0 R/XYZ 0 227 0]>>endobj
+414 0 obj<</Subtype/Link/Rect[144.0 259.0 266.8 272.0]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 705 0]>>endobj
+415 0 obj<</Subtype/Link/Rect[144.0 245.8 342.0 258.8]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 320 0]>>endobj
+416 0 obj<</Subtype/Link/Rect[144.0 232.6 335.6 245.6]/Border[0 0 0]/Dest[1372 0 R/XYZ 0 309 0]>>endobj
+417 0 obj<</Subtype/Link/Rect[144.0 219.4 190.4 232.4]/Border[0 0 0]/Dest[1374 0 R/XYZ 0 478 0]>>endobj
+418 0 obj<</Subtype/Link/Rect[108.0 206.2 306.6 219.2]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+419 0 obj<</Subtype/Link/Rect[144.0 193.0 199.0 206.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 696 0]>>endobj
+420 0 obj<</Subtype/Link/Rect[144.0 179.8 257.0 192.8]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 581 0]>>endobj
+421 0 obj<</Subtype/Link/Rect[108.0 166.6 219.8 179.6]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+422 0 obj<</Subtype/Link/Rect[108.0 153.4 225.9 166.4]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+423 0 obj<</Subtype/Link/Rect[144.0 140.2 202.7 153.2]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 696 0]>>endobj
+424 0 obj<</Subtype/Link/Rect[144.0 127.0 207.9 140.0]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 449 0]>>endobj
+425 0 obj<</Subtype/Link/Rect[144.0 113.8 185.9 126.8]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 189 0]>>endobj
+426 0 obj<</Subtype/Link/Rect[144.0 100.6 185.2 113.6]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 639 0]>>endobj
+427 0 obj<</Subtype/Link/Rect[144.0 87.4 184.6 100.4]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 458 0]>>endobj
+428 0 obj<</Subtype/Link/Rect[144.0 74.2 186.5 87.2]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 383 0]>>endobj
+429 0 obj<</Subtype/Link/Rect[144.0 61.0 188.3 74.0]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 215 0]>>endobj
+430 0 obj[379 0 R
380 0 R
381 0 R
382 0 R
@@ -750,59 +784,9 @@ endobj
388 0 R
389 0 R
390 0 R
-391 0 R]endobj
-393 0 obj<</Subtype/Link/Rect[166.0 721.0 260.4 734.0]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 692 0]>>endobj
-394 0 obj<</Subtype/Link/Rect[166.0 707.8 213.4 720.8]/Border[0 0 0]/Dest[1569 0 R/XYZ 0 397 0]>>endobj
-395 0 obj<</Subtype/Link/Rect[121.8 694.6 405.0 707.6]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 734 0]>>endobj
-396 0 obj<</Subtype/Link/Rect[166.0 681.4 206.0 694.4]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 672 0]>>endobj
-397 0 obj<</Subtype/Link/Rect[166.0 668.2 223.8 681.2]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 544 0]>>endobj
-398 0 obj<</Subtype/Link/Rect[166.0 655.0 273.9 668.0]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 231 0]>>endobj
-399 0 obj<</Subtype/Link/Rect[166.0 641.8 260.4 654.8]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 409 0]>>endobj
-400 0 obj<</Subtype/Link/Rect[166.0 628.6 303.8 641.6]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 245 0]>>endobj
-401 0 obj<</Subtype/Link/Rect[166.0 615.4 218.9 628.4]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 734 0]>>endobj
-402 0 obj<</Subtype/Link/Rect[166.0 602.2 218.9 615.2]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 513 0]>>endobj
-403 0 obj<</Subtype/Link/Rect[121.8 589.0 253.1 602.0]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 734 0]>>endobj
-404 0 obj<</Subtype/Link/Rect[166.0 575.8 265.9 588.8]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 696 0]>>endobj
-405 0 obj<</Subtype/Link/Rect[166.0 562.6 290.1 575.6]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 515 0]>>endobj
-406 0 obj<</Subtype/Link/Rect[166.0 549.4 254.0 562.4]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 137 0]>>endobj
-407 0 obj<</Subtype/Link/Rect[166.0 536.2 278.1 549.2]/Border[0 0 0]/Dest[1607 0 R/XYZ 0 533 0]>>endobj
-408 0 obj<</Subtype/Link/Rect[166.0 523.0 280.0 536.0]/Border[0 0 0]/Dest[1613 0 R/XYZ 0 560 0]>>endobj
-409 0 obj<</Subtype/Link/Rect[166.0 509.8 348.7 522.8]/Border[0 0 0]/Dest[1615 0 R/XYZ 0 613 0]>>endobj
-410 0 obj<</Subtype/Link/Rect[166.0 496.6 323.1 509.6]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 622 0]>>endobj
-411 0 obj<</Subtype/Link/Rect[166.0 483.4 309.0 496.4]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 266 0]>>endobj
-412 0 obj<</Subtype/Link/Rect[166.0 470.2 318.5 483.2]/Border[0 0 0]/Dest[1619 0 R/XYZ 0 520 0]>>endobj
-413 0 obj<</Subtype/Link/Rect[171.5 457.0 315.7 470.0]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 734 0]>>endobj
-414 0 obj<</Subtype/Link/Rect[171.5 443.8 257.7 456.8]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 645 0]>>endobj
-415 0 obj<</Subtype/Link/Rect[121.8 430.6 228.4 443.6]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 734 0]>>endobj
-416 0 obj<</Subtype/Link/Rect[166.0 417.4 305.6 430.4]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 696 0]>>endobj
-417 0 obj<</Subtype/Link/Rect[166.0 404.2 246.7 417.2]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 385 0]>>endobj
-418 0 obj<</Subtype/Link/Rect[166.0 391.0 317.5 404.0]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 430 0]>>endobj
-419 0 obj<</Subtype/Link/Rect[121.8 377.8 281.2 390.8]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 734 0]>>endobj
-420 0 obj<</Subtype/Link/Rect[166.0 364.6 223.8 377.6]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 696 0]>>endobj
-421 0 obj<</Subtype/Link/Rect[166.0 351.4 281.8 364.4]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 581 0]>>endobj
-422 0 obj<</Subtype/Link/Rect[121.8 338.2 236.3 351.2]/Border[0 0 0]/Dest[1633 0 R/XYZ 0 734 0]>>endobj
-423 0 obj<</Subtype/Link/Rect[121.8 325.0 242.4 338.0]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 734 0]>>endobj
-424 0 obj<</Subtype/Link/Rect[166.0 311.8 227.4 324.8]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 696 0]>>endobj
-425 0 obj<</Subtype/Link/Rect[166.0 298.6 232.6 311.6]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 449 0]>>endobj
-426 0 obj<</Subtype/Link/Rect[166.0 285.4 210.6 298.4]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 189 0]>>endobj
-427 0 obj<</Subtype/Link/Rect[166.0 272.2 210.0 285.2]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 639 0]>>endobj
-428 0 obj<</Subtype/Link/Rect[166.0 259.0 209.4 272.0]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 458 0]>>endobj
-429 0 obj<</Subtype/Link/Rect[166.0 245.8 211.2 258.8]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 383 0]>>endobj
-430 0 obj<</Subtype/Link/Rect[166.0 232.6 213.1 245.6]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 215 0]>>endobj
-431 0 obj<</Subtype/Link/Rect[166.0 219.4 224.1 232.4]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 734 0]>>endobj
-432 0 obj<</Subtype/Link/Rect[166.0 206.2 222.8 219.2]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 605 0]>>endobj
-433 0 obj<</Subtype/Link/Rect[171.5 193.0 232.0 206.0]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 530 0]>>endobj
-434 0 obj<</Subtype/Link/Rect[121.8 179.8 232.7 192.8]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 734 0]>>endobj
-435 0 obj<</Subtype/Link/Rect[166.0 166.6 224.6 179.6]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 696 0]>>endobj
-436 0 obj<</Subtype/Link/Rect[166.0 153.4 233.5 166.4]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 463 0]>>endobj
-437 0 obj<</Subtype/Link/Rect[166.0 140.2 250.3 153.2]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 426 0]>>endobj
-438 0 obj<</Subtype/Link/Rect[85.1 127.0 138.6 140.0]/Border[0 0 0]/Dest[1647 0 R/XYZ 0 308 0]>>endobj
-439 0 obj<</Subtype/Link/Rect[121.8 113.8 172.2 126.8]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 734 0]>>endobj
-440 0 obj<</Subtype/Link/Rect[166.0 100.6 198.1 113.6]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 655 0]>>endobj
-441 0 obj<</Subtype/Link/Rect[166.0 87.4 213.7 100.4]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 408 0]>>endobj
-442 0 obj<</Subtype/Link/Rect[166.0 74.2 194.4 87.2]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 293 0]>>endobj
-443 0 obj<</Subtype/Link/Rect[166.0 61.0 296.5 74.0]/Border[0 0 0]/Dest[1653 0 R/XYZ 0 228 0]>>endobj
-444 0 obj[393 0 R
+391 0 R
+392 0 R
+393 0 R
394 0 R
395 0 R
396 0 R
@@ -838,9 +822,35 @@ endobj
426 0 R
427 0 R
428 0 R
-429 0 R
-430 0 R
-431 0 R
+429 0 R]endobj
+431 0 obj<</Subtype/Link/Rect[144.0 721.0 199.3 734.0]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 734 0]>>endobj
+432 0 obj<</Subtype/Link/Rect[144.0 707.8 198.1 720.8]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 605 0]>>endobj
+433 0 obj<</Subtype/Link/Rect[144.0 694.6 201.8 707.6]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 530 0]>>endobj
+434 0 obj<</Subtype/Link/Rect[85.1 681.4 138.6 694.4]/Border[0 0 0]/Dest[1388 0 R/XYZ 0 450 0]>>endobj
+435 0 obj<</Subtype/Link/Rect[108.0 668.2 155.7 681.2]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+436 0 obj<</Subtype/Link/Rect[144.0 655.0 173.3 668.0]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 655 0]>>endobj
+437 0 obj<</Subtype/Link/Rect[144.0 641.8 188.9 654.8]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 408 0]>>endobj
+438 0 obj<</Subtype/Link/Rect[144.0 628.6 169.7 641.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 293 0]>>endobj
+439 0 obj<</Subtype/Link/Rect[144.0 615.4 271.8 628.4]/Border[0 0 0]/Dest[1394 0 R/XYZ 0 216 0]>>endobj
+440 0 obj<</Subtype/Link/Rect[108.0 602.2 240.6 615.2]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+441 0 obj<</Subtype/Link/Rect[144.0 589.0 227.4 602.0]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 668 0]>>endobj
+442 0 obj<</Subtype/Link/Rect[144.0 575.8 192.6 588.8]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 461 0]>>endobj
+443 0 obj<</Subtype/Link/Rect[144.0 562.6 257.1 575.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 165 0]>>endobj
+444 0 obj<</Subtype/Link/Rect[144.0 549.4 216.9 562.4]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 319 0]>>endobj
+445 0 obj<</Subtype/Link/Rect[144.0 536.2 277.2 549.2]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
+446 0 obj<</Subtype/Link/Rect[108.0 523.0 176.8 536.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+447 0 obj<</Subtype/Link/Rect[144.0 509.8 199.0 522.8]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 696 0]>>endobj
+448 0 obj<</Subtype/Link/Rect[144.0 496.6 199.9 509.6]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 423 0]>>endobj
+449 0 obj<</Subtype/Link/Rect[144.0 483.4 201.1 496.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 282 0]>>endobj
+450 0 obj<</Subtype/Link/Rect[144.0 470.2 209.7 483.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 613 0]>>endobj
+451 0 obj<</Subtype/Link/Rect[144.0 457.0 280.3 470.0]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 260 0]>>endobj
+452 0 obj<</Subtype/Link/Rect[144.0 443.8 178.8 456.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 159 0]>>endobj
+453 0 obj<</Subtype/Link/Rect[108.0 430.6 244.0 443.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+454 0 obj<</Subtype/Link/Rect[144.0 417.4 199.0 430.4]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 696 0]>>endobj
+455 0 obj<</Subtype/Link/Rect[144.0 404.2 199.6 417.2]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 529 0]>>endobj
+456 0 obj<</Subtype/Link/Rect[144.0 391.0 166.6 404.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 196 0]>>endobj
+457 0 obj<</Subtype/Link/Rect[144.0 377.8 238.7 390.8]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 239 0]>>endobj
+458 0 obj[431 0 R
432 0 R
433 0 R
434 0 R
@@ -852,26 +862,9 @@ endobj
440 0 R
441 0 R
442 0 R
-443 0 R]endobj
-445 0 obj<</Subtype/Link/Rect[121.8 721.0 257.1 734.0]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 734 0]>>endobj
-446 0 obj<</Subtype/Link/Rect[166.0 707.8 252.2 720.8]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 668 0]>>endobj
-447 0 obj<</Subtype/Link/Rect[166.0 694.6 217.3 707.6]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 461 0]>>endobj
-448 0 obj<</Subtype/Link/Rect[166.0 681.4 281.8 694.4]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 151 0]>>endobj
-449 0 obj<</Subtype/Link/Rect[166.0 668.2 241.6 681.2]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 292 0]>>endobj
-450 0 obj<</Subtype/Link/Rect[166.0 655.0 301.9 668.0]/Border[0 0 0]/Dest[1661 0 R/XYZ 0 718 0]>>endobj
-451 0 obj<</Subtype/Link/Rect[121.8 641.8 193.2 654.8]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 734 0]>>endobj
-452 0 obj<</Subtype/Link/Rect[166.0 628.6 223.8 641.6]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 696 0]>>endobj
-453 0 obj<</Subtype/Link/Rect[166.0 615.4 224.7 628.4]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 423 0]>>endobj
-454 0 obj<</Subtype/Link/Rect[166.0 602.2 225.9 615.2]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 282 0]>>endobj
-455 0 obj<</Subtype/Link/Rect[166.0 589.0 234.4 602.0]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 613 0]>>endobj
-456 0 obj<</Subtype/Link/Rect[166.0 575.8 305.0 588.8]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 260 0]>>endobj
-457 0 obj<</Subtype/Link/Rect[166.0 562.6 203.6 575.6]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 159 0]>>endobj
-458 0 obj<</Subtype/Link/Rect[121.8 549.4 260.5 562.4]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 734 0]>>endobj
-459 0 obj<</Subtype/Link/Rect[166.0 536.2 223.8 549.2]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 696 0]>>endobj
-460 0 obj<</Subtype/Link/Rect[166.0 523.0 224.4 536.0]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 529 0]>>endobj
-461 0 obj<</Subtype/Link/Rect[166.0 509.8 191.4 522.8]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 199 0]>>endobj
-462 0 obj<</Subtype/Link/Rect[166.0 496.6 263.5 509.6]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 239 0]>>endobj
-463 0 obj[445 0 R
+443 0 R
+444 0 R
+445 0 R
446 0 R
447 0 R
448 0 R
@@ -883,2080 +876,1598 @@ endobj
454 0 R
455 0 R
456 0 R
-457 0 R
-458 0 R
-459 0 R
+457 0 R]endobj
+459 0 obj<</Subtype/Link/Rect[72.0 631.0 212.9 644.0]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+460 0 obj<</Subtype/Link/Rect[72.0 617.8 200.6 630.8]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+461 0 obj<</Subtype/Link/Rect[72.0 604.6 363.5 617.6]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+462 0 obj<</Subtype/Link/Rect[72.0 591.4 286.5 604.4]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+463 0 obj[459 0 R
460 0 R
461 0 R
462 0 R]endobj
-464 0 obj<</Subtype/Link/Rect[80.2 631.0 223.9 644.0]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 734 0]>>endobj
-465 0 obj<</Subtype/Link/Rect[124.5 617.8 216.2 630.8]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 696 0]>>endobj
-466 0 obj<</Subtype/Link/Rect[124.5 604.6 221.4 617.6]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 568 0]>>endobj
-467 0 obj<</Subtype/Link/Rect[124.5 591.4 224.7 604.4]/Border[0 0 0]/Dest[1405 0 R/XYZ 0 163 0]>>endobj
-468 0 obj<</Subtype/Link/Rect[124.5 578.2 276.1 591.2]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 734 0]>>endobj
-469 0 obj<</Subtype/Link/Rect[124.5 565.0 279.1 578.0]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 385 0]>>endobj
-470 0 obj<</Subtype/Link/Rect[124.5 551.8 251.3 564.8]/Border[0 0 0]/Dest[1407 0 R/XYZ 0 257 0]>>endobj
-471 0 obj<</Subtype/Link/Rect[168.8 538.6 276.9 551.6]/Border[0 0 0]/Dest[1409 0 R/XYZ 0 734 0]>>endobj
-472 0 obj<</Subtype/Link/Rect[168.8 525.4 328.3 538.4]/Border[0 0 0]/Dest[1409 0 R/XYZ 0 247 0]>>endobj
-473 0 obj<</Subtype/Link/Rect[124.5 512.2 331.0 525.2]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 665 0]>>endobj
-474 0 obj<</Subtype/Link/Rect[124.5 499.0 280.3 512.0]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 498 0]>>endobj
-475 0 obj<</Subtype/Link/Rect[124.5 485.8 467.0 498.8]/Border[0 0 0]/Dest[1411 0 R/XYZ 0 330 0]>>endobj
-476 0 obj<</Subtype/Link/Rect[130.0 472.6 257.3 485.6]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 734 0]>>endobj
-477 0 obj<</Subtype/Link/Rect[174.2 459.4 273.2 472.4]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 553 0]>>endobj
-478 0 obj<</Subtype/Link/Rect[174.2 446.2 221.9 459.2]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 494 0]>>endobj
-479 0 obj<</Subtype/Link/Rect[174.2 433.0 303.2 446.0]/Border[0 0 0]/Dest[1413 0 R/XYZ 0 409 0]>>endobj
-480 0 obj<</Subtype/Link/Rect[174.2 419.8 331.6 432.8]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 734 0]>>endobj
-481 0 obj<</Subtype/Link/Rect[174.2 406.6 212.4 419.6]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 583 0]>>endobj
-482 0 obj<</Subtype/Link/Rect[174.2 393.4 269.0 406.4]/Border[0 0 0]/Dest[1415 0 R/XYZ 0 128 0]>>endobj
-483 0 obj<</Subtype/Link/Rect[80.2 380.2 374.5 393.2]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 734 0]>>endobj
-484 0 obj<</Subtype/Link/Rect[124.5 367.0 175.5 380.0]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 604 0]>>endobj
-485 0 obj<</Subtype/Link/Rect[124.5 353.8 312.1 366.8]/Border[0 0 0]/Dest[1419 0 R/XYZ 0 159 0]>>endobj
-486 0 obj<</Subtype/Link/Rect[124.5 340.6 324.7 353.6]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 509 0]>>endobj
-487 0 obj<</Subtype/Link/Rect[124.5 327.4 184.1 340.4]/Border[0 0 0]/Dest[1421 0 R/XYZ 0 331 0]>>endobj
-488 0 obj<</Subtype/Link/Rect[124.5 314.2 422.7 327.2]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 494 0]>>endobj
-489 0 obj<</Subtype/Link/Rect[124.5 301.0 232.4 314.0]/Border[0 0 0]/Dest[1423 0 R/XYZ 0 213 0]>>endobj
-490 0 obj<</Subtype/Link/Rect[80.2 287.8 201.6 300.8]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 734 0]>>endobj
-491 0 obj<</Subtype/Link/Rect[124.5 274.6 182.2 287.6]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 696 0]>>endobj
-492 0 obj<</Subtype/Link/Rect[124.5 261.4 266.9 274.4]/Border[0 0 0]/Dest[1427 0 R/XYZ 0 449 0]>>endobj
-493 0 obj<</Subtype/Link/Rect[168.8 248.2 309.9 261.2]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 676 0]>>endobj
-494 0 obj<</Subtype/Link/Rect[168.8 235.0 353.4 248.0]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 559 0]>>endobj
-495 0 obj<</Subtype/Link/Rect[124.5 221.8 244.6 234.8]/Border[0 0 0]/Dest[1429 0 R/XYZ 0 452 0]>>endobj
-496 0 obj<</Subtype/Link/Rect[124.5 208.6 169.7 221.6]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 639 0]>>endobj
-497 0 obj<</Subtype/Link/Rect[124.5 195.4 148.0 208.4]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 551 0]>>endobj
-498 0 obj<</Subtype/Link/Rect[124.5 182.2 154.8 195.2]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 475 0]>>endobj
-499 0 obj<</Subtype/Link/Rect[168.8 169.0 226.5 182.0]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 442 0]>>endobj
-500 0 obj<</Subtype/Link/Rect[168.8 155.8 226.5 168.8]/Border[0 0 0]/Dest[1431 0 R/XYZ 0 185 0]>>endobj
-501 0 obj<</Subtype/Link/Rect[168.8 142.6 282.7 155.6]/Border[0 0 0]/Dest[1433 0 R/XYZ 0 349 0]>>endobj
-502 0 obj<</Subtype/Link/Rect[168.8 129.4 421.1 142.4]/Border[0 0 0]/Dest[1433 0 R/XYZ 0 251 0]>>endobj
-503 0 obj<</Subtype/Link/Rect[168.8 116.2 309.9 129.2]/Border[0 0 0]/Dest[1435 0 R/XYZ 0 547 0]>>endobj
-504 0 obj<</Subtype/Link/Rect[168.8 103.0 325.8 116.0]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 734 0]>>endobj
-505 0 obj<</Subtype/Link/Rect[168.8 89.8 294.3 102.8]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 543 0]>>endobj
-506 0 obj<</Subtype/Link/Rect[168.8 76.6 369.5 89.6]/Border[0 0 0]/Dest[1439 0 R/XYZ 0 164 0]>>endobj
-507 0 obj<</Subtype/Link/Rect[168.8 63.4 363.1 76.4]/Border[0 0 0]/Dest[1441 0 R/XYZ 0 151 0]>>endobj
-508 0 obj[464 0 R
-465 0 R
-466 0 R
-467 0 R
-468 0 R
-469 0 R
-470 0 R
+464 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+465 0 obj<</Subtype/Link/Rect[367.1 584.2 468.3 597.2]/Border[0 0 0]/A 464 0 R>>endobj
+466 0 obj[465 0 R]endobj
+467 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
+468 0 obj<</Subtype/Link/Rect[280.4 510.2 327.1 523.2]/Border[0 0 0]/A 467 0 R>>endobj
+469 0 obj[468 0 R]endobj
+470 0 obj<</Subtype/Link/Rect[72.0 631.0 331.7 644.0]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+471 0 obj<</Subtype/Link/Rect[72.0 617.8 353.4 630.8]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+472 0 obj<</Subtype/Link/Rect[72.0 604.6 438.4 617.6]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+473 0 obj<</Subtype/Link/Rect[72.0 591.4 219.6 604.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+474 0 obj<</Subtype/Link/Rect[72.0 578.2 218.4 591.2]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+475 0 obj[470 0 R
471 0 R
472 0 R
473 0 R
-474 0 R
-475 0 R
-476 0 R
-477 0 R
-478 0 R
+474 0 R]endobj
+476 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+477 0 obj<</Subtype/Link/Rect[153.2 599.8 225.8 612.8]/Border[0 0 0]/A 476 0 R>>endobj
+478 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+479 0 obj<</Subtype/Link/Rect[303.1 599.8 389.9 612.8]/Border[0 0 0]/A 478 0 R>>endobj
+480 0 obj<</S/Launch/F(UNIX_INSTALL.html)>>endobj
+481 0 obj<</Subtype/Link/Rect[333.5 442.5 438.0 455.5]/Border[0 0 0]/A 480 0 R>>endobj
+482 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+483 0 obj<</Subtype/Link/Rect[440.4 429.3 541.8 442.3]/Border[0 0 0]/A 482 0 R>>endobj
+484 0 obj[477 0 R
479 0 R
-480 0 R
481 0 R
-482 0 R
-483 0 R
-484 0 R
-485 0 R
-486 0 R
-487 0 R
+483 0 R]endobj
+485 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+486 0 obj<</Subtype/Link/Rect[465.5 659.0 546.8 672.0]/Border[0 0 0]/A 485 0 R>>endobj
+487 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+488 0 obj<</Subtype/Link/Rect[72.0 645.8 92.8 658.8]/Border[0 0 0]/A 487 0 R>>endobj
+489 0 obj<</S/Launch/F(#NETBIOSNAME)>>endobj
+490 0 obj<</Subtype/Link/Rect[95.0 572.0 159.8 583.0]/Border[0 0 0]/A 489 0 R>>endobj
+491 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
+492 0 obj<</Subtype/Link/Rect[95.0 561.2 143.6 572.2]/Border[0 0 0]/A 491 0 R>>endobj
+493 0 obj<</S/Launch/F(#OSLEVEL)>>endobj
+494 0 obj<</Subtype/Link/Rect[95.0 528.8 138.2 539.8]/Border[0 0 0]/A 493 0 R>>endobj
+495 0 obj<</S/Launch/F(#PERFERREDMASTER)>>endobj
+496 0 obj<</Subtype/Link/Rect[95.0 518.0 181.4 529.0]/Border[0 0 0]/A 495 0 R>>endobj
+497 0 obj<</S/Launch/F(#DOMAINMASTER)>>endobj
+498 0 obj<</Subtype/Link/Rect[95.0 507.2 165.2 518.2]/Border[0 0 0]/A 497 0 R>>endobj
+499 0 obj<</S/Launch/F(#LOCALMASTER)>>endobj
+500 0 obj<</Subtype/Link/Rect[95.0 496.4 159.8 507.4]/Border[0 0 0]/A 499 0 R>>endobj
+501 0 obj<</S/Launch/F(#SECURITYEQUALSUSER)>>endobj
+502 0 obj<</Subtype/Link/Rect[95.0 464.0 138.2 475.0]/Border[0 0 0]/A 501 0 R>>endobj
+503 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+504 0 obj<</Subtype/Link/Rect[95.0 431.6 186.8 442.6]/Border[0 0 0]/A 503 0 R>>endobj
+505 0 obj<</S/Launch/F(#DOMAINLOGONS)>>endobj
+506 0 obj<</Subtype/Link/Rect[95.0 399.2 165.2 410.2]/Border[0 0 0]/A 505 0 R>>endobj
+507 0 obj<</S/Launch/F(#LOGONPATH)>>endobj
+508 0 obj<</Subtype/Link/Rect[95.0 366.8 149.0 377.8]/Border[0 0 0]/A 507 0 R>>endobj
+509 0 obj<</S/Launch/F(#LOGONDRIVE)>>endobj
+510 0 obj<</Subtype/Link/Rect[95.0 323.6 154.4 334.6]/Border[0 0 0]/A 509 0 R>>endobj
+511 0 obj<</S/Launch/F(#LOGONHOME)>>endobj
+512 0 obj<</Subtype/Link/Rect[95.0 312.8 149.0 323.8]/Border[0 0 0]/A 511 0 R>>endobj
+513 0 obj<</S/Launch/F(#LOGONSCRIPT)>>endobj
+514 0 obj<</Subtype/Link/Rect[95.0 269.6 159.8 280.6]/Border[0 0 0]/A 513 0 R>>endobj
+515 0 obj<</S/Launch/F(#PATH)>>endobj
+516 0 obj<</Subtype/Link/Rect[95.0 226.4 116.6 237.4]/Border[0 0 0]/A 515 0 R>>endobj
+517 0 obj<</S/Launch/F(#READONLY)>>endobj
+518 0 obj<</Subtype/Link/Rect[95.0 215.6 143.6 226.6]/Border[0 0 0]/A 517 0 R>>endobj
+519 0 obj<</S/Launch/F(#WRITELIST)>>endobj
+520 0 obj<</Subtype/Link/Rect[95.0 204.8 149.0 215.8]/Border[0 0 0]/A 519 0 R>>endobj
+521 0 obj<</S/Launch/F(#PATH)>>endobj
+522 0 obj<</Subtype/Link/Rect[95.0 161.6 116.6 172.6]/Border[0 0 0]/A 521 0 R>>endobj
+523 0 obj<</S/Launch/F(#READONLY)>>endobj
+524 0 obj<</Subtype/Link/Rect[95.0 150.8 143.6 161.8]/Border[0 0 0]/A 523 0 R>>endobj
+525 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
+526 0 obj<</Subtype/Link/Rect[95.0 140.0 154.4 151.0]/Border[0 0 0]/A 525 0 R>>endobj
+527 0 obj<</S/Launch/F(#DIRECTORYMASK)>>endobj
+528 0 obj<</Subtype/Link/Rect[95.0 129.2 170.6 140.2]/Border[0 0 0]/A 527 0 R>>endobj
+529 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+530 0 obj<</Subtype/Link/Rect[108.0 62.1 200.6 75.1]/Border[0 0 0]/A 529 0 R>>endobj
+531 0 obj[486 0 R
488 0 R
-489 0 R
490 0 R
-491 0 R
492 0 R
-493 0 R
494 0 R
-495 0 R
496 0 R
-497 0 R
498 0 R
-499 0 R
500 0 R
-501 0 R
502 0 R
-503 0 R
504 0 R
-505 0 R
506 0 R
-507 0 R]endobj
-509 0 obj<</Subtype/Link/Rect[124.5 721.0 160.9 734.0]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 322 0]>>endobj
-510 0 obj<</Subtype/Link/Rect[168.8 707.8 209.4 720.8]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 289 0]>>endobj
-511 0 obj<</Subtype/Link/Rect[168.8 694.6 269.3 707.6]/Border[0 0 0]/Dest[1443 0 R/XYZ 0 191 0]>>endobj
-512 0 obj<</Subtype/Link/Rect[168.8 681.4 225.3 694.4]/Border[0 0 0]/Dest[1445 0 R/XYZ 0 734 0]>>endobj
-513 0 obj<</Subtype/Link/Rect[168.8 668.2 391.8 681.2]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 679 0]>>endobj
-514 0 obj<</Subtype/Link/Rect[168.8 655.0 350.3 668.0]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 528 0]>>endobj
-515 0 obj<</Subtype/Link/Rect[124.5 641.8 214.6 654.8]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 390 0]>>endobj
-516 0 obj<</Subtype/Link/Rect[168.8 628.6 209.4 641.6]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 357 0]>>endobj
-517 0 obj<</Subtype/Link/Rect[168.8 615.4 199.6 628.4]/Border[0 0 0]/Dest[1447 0 R/XYZ 0 272 0]>>endobj
-518 0 obj[509 0 R
+508 0 R
510 0 R
-511 0 R
512 0 R
-513 0 R
514 0 R
-515 0 R
516 0 R
-517 0 R]endobj
-519 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-520 0 obj<</Subtype/Link/Rect[367.1 584.2 468.3 597.2]/Border[0 0 0]/A 519 0 R>>endobj
-521 0 obj[520 0 R]endobj
-522 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
-523 0 obj<</Subtype/Link/Rect[280.4 510.2 327.1 523.2]/Border[0 0 0]/A 522 0 R>>endobj
-524 0 obj[523 0 R]endobj
-525 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
-526 0 obj<</Subtype/Link/Rect[169.5 333.4 285.9 346.4]/Border[0 0 0]/A 525 0 R>>endobj
-527 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
-528 0 obj<</Subtype/Link/Rect[223.9 320.2 387.9 333.2]/Border[0 0 0]/A 527 0 R>>endobj
-529 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
-530 0 obj<</Subtype/Link/Rect[112.6 293.8 202.0 306.8]/Border[0 0 0]/A 529 0 R>>endobj
-531 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html)>>endobj
-532 0 obj<</Subtype/Link/Rect[125.1 227.8 267.5 240.8]/Border[0 0 0]/A 531 0 R>>endobj
-533 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
-534 0 obj<</Subtype/Link/Rect[243.7 214.6 287.3 227.6]/Border[0 0 0]/A 533 0 R>>endobj
-535 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-536 0 obj<</Subtype/Link/Rect[212.8 143.0 332.5 156.0]/Border[0 0 0]/A 535 0 R>>endobj
-537 0 obj[526 0 R
+518 0 R
+520 0 R
+522 0 R
+524 0 R
+526 0 R
528 0 R
-530 0 R
-532 0 R
-534 0 R
-536 0 R]endobj
-538 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
-539 0 obj<</Subtype/Link/Rect[284.3 377.8 380.9 390.8]/Border[0 0 0]/A 538 0 R>>endobj
-540 0 obj<</S/Launch/F(samba-patches@samba.org)>>endobj
-541 0 obj<</Subtype/Link/Rect[332.3 266.6 458.0 279.6]/Border[0 0 0]/A 540 0 R>>endobj
-542 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-543 0 obj<</Subtype/Link/Rect[476.6 266.6 555.8 279.6]/Border[0 0 0]/A 542 0 R>>endobj
-544 0 obj[539 0 R
-541 0 R
-543 0 R]endobj
-545 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-546 0 obj<</Subtype/Link/Rect[271.2 721.0 350.4 734.0]/Border[0 0 0]/A 545 0 R>>endobj
-547 0 obj[546 0 R]endobj
-548 0 obj<</S/Launch/F(#LDAPSSL)>>endobj
-549 0 obj<</Subtype/Link/Rect[108.0 553.4 141.3 566.4]/Border[0 0 0]/A 548 0 R>>endobj
-550 0 obj<</S/Launch/F(#LDAPSERVER)>>endobj
-551 0 obj<</Subtype/Link/Rect[108.0 540.2 156.6 553.2]/Border[0 0 0]/A 550 0 R>>endobj
-552 0 obj<</S/Launch/F(#LDAPADMINDN)>>endobj
-553 0 obj<</Subtype/Link/Rect[108.0 527.0 170.9 540.0]/Border[0 0 0]/A 552 0 R>>endobj
-554 0 obj<</S/Launch/F(#LDAPSUFFIX)>>endobj
-555 0 obj<</Subtype/Link/Rect[108.0 513.8 155.4 526.8]/Border[0 0 0]/A 554 0 R>>endobj
-556 0 obj<</S/Launch/F(#LDAPFILTER)>>endobj
-557 0 obj<</Subtype/Link/Rect[108.0 500.6 151.1 513.6]/Border[0 0 0]/A 556 0 R>>endobj
-558 0 obj<</S/Launch/F(#LDAPPORT)>>endobj
-559 0 obj<</Subtype/Link/Rect[108.0 487.4 147.4 500.4]/Border[0 0 0]/A 558 0 R>>endobj
-560 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-561 0 obj<</Subtype/Link/Rect[186.9 461.0 243.1 474.0]/Border[0 0 0]/A 560 0 R>>endobj
-562 0 obj[549 0 R
-551 0 R
-553 0 R
-555 0 R
+530 0 R]endobj
+532 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
+533 0 obj<</Subtype/Link/Rect[494.2 641.8 530.0 654.8]/Border[0 0 0]/A 532 0 R>>endobj
+534 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
+535 0 obj<</Subtype/Link/Rect[72.0 628.6 127.9 641.6]/Border[0 0 0]/A 534 0 R>>endobj
+536 0 obj[533 0 R
+535 0 R]endobj
+537 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
+538 0 obj<</Subtype/Link/Rect[72.0 509.3 138.6 522.3]/Border[0 0 0]/A 537 0 R>>endobj
+539 0 obj<</S/Launch/F(#ADDUSERSCRIPT)>>endobj
+540 0 obj<</Subtype/Link/Rect[420.0 220.8 486.9 233.8]/Border[0 0 0]/A 539 0 R>>endobj
+541 0 obj[538 0 R
+540 0 R]endobj
+542 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
+543 0 obj<</Subtype/Link/Rect[139.8 721.0 387.6 734.0]/Border[0 0 0]/A 542 0 R>>endobj
+544 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
+545 0 obj<</Subtype/Link/Rect[285.2 179.8 540.0 192.8]/Border[0 0 0]/A 544 0 R>>endobj
+546 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
+547 0 obj<</Subtype/Link/Rect[230.8 140.2 505.8 153.2]/Border[0 0 0]/A 546 0 R>>endobj
+548 0 obj[543 0 R
+545 0 R
+547 0 R]endobj
+549 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
+550 0 obj<</Subtype/Link/Rect[349.4 417.4 455.4 430.4]/Border[0 0 0]/A 549 0 R>>endobj
+551 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
+552 0 obj<</Subtype/Link/Rect[424.5 404.2 536.6 417.2]/Border[0 0 0]/A 551 0 R>>endobj
+553 0 obj[550 0 R
+552 0 R]endobj
+554 0 obj<</S/URI/URI(http://samba.org)>>endobj
+555 0 obj<</Subtype/Link/Rect[233.5 549.4 308.1 562.4]/Border[0 0 0]/A 554 0 R>>endobj
+556 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
+557 0 obj<</Subtype/Link/Rect[144.0 496.6 346.1 509.6]/Border[0 0 0]/A 556 0 R>>endobj
+558 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
+559 0 obj<</Subtype/Link/Rect[179.7 470.2 342.3 483.2]/Border[0 0 0]/A 558 0 R>>endobj
+560 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
+561 0 obj<</Subtype/Link/Rect[282.1 457.0 378.7 470.0]/Border[0 0 0]/A 560 0 R>>endobj
+562 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
+563 0 obj<</Subtype/Link/Rect[241.5 443.8 408.5 456.8]/Border[0 0 0]/A 562 0 R>>endobj
+564 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
+565 0 obj<</Subtype/Link/Rect[277.5 430.6 469.1 443.6]/Border[0 0 0]/A 564 0 R>>endobj
+566 0 obj<</S/URI/URI(http://samba.org)>>endobj
+567 0 obj<</Subtype/Link/Rect[358.2 377.8 432.8 390.8]/Border[0 0 0]/A 566 0 R>>endobj
+568 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
+569 0 obj<</Subtype/Link/Rect[298.4 338.2 422.8 351.2]/Border[0 0 0]/A 568 0 R>>endobj
+570 0 obj[555 0 R
557 0 R
559 0 R
-561 0 R]endobj
-563 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-564 0 obj<</Subtype/Link/Rect[72.0 395.0 176.8 408.0]/Border[0 0 0]/A 563 0 R>>endobj
-565 0 obj[564 0 R]endobj
-566 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-567 0 obj<</Subtype/Link/Rect[72.0 351.4 176.7 364.4]/Border[0 0 0]/A 566 0 R>>endobj
-568 0 obj[567 0 R]endobj
-569 0 obj<</Subtype/Link/Rect[80.2 631.0 342.7 644.0]/Border[0 0 0]/Dest[1453 0 R/XYZ 0 734 0]>>endobj
-570 0 obj<</Subtype/Link/Rect[80.2 617.8 325.6 630.8]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 734 0]>>endobj
-571 0 obj<</Subtype/Link/Rect[124.5 604.6 221.0 617.6]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 672 0]>>endobj
-572 0 obj<</Subtype/Link/Rect[124.5 591.4 181.0 604.4]/Border[0 0 0]/Dest[1457 0 R/XYZ 0 584 0]>>endobj
-573 0 obj<</Subtype/Link/Rect[124.5 578.2 317.3 591.2]/Border[0 0 0]/Dest[1459 0 R/XYZ 0 718 0]>>endobj
-574 0 obj<</Subtype/Link/Rect[124.5 565.0 431.3 578.0]/Border[0 0 0]/Dest[1461 0 R/XYZ 0 613 0]>>endobj
-575 0 obj<</Subtype/Link/Rect[168.8 551.8 369.2 564.8]/Border[0 0 0]/Dest[1461 0 R/XYZ 0 227 0]>>endobj
-576 0 obj<</Subtype/Link/Rect[168.8 538.6 400.6 551.6]/Border[0 0 0]/Dest[1463 0 R/XYZ 0 315 0]>>endobj
-577 0 obj<</Subtype/Link/Rect[168.8 525.4 316.0 538.4]/Border[0 0 0]/Dest[1465 0 R/XYZ 0 734 0]>>endobj
-578 0 obj<</Subtype/Link/Rect[124.5 512.2 263.2 525.2]/Border[0 0 0]/Dest[1465 0 R/XYZ 0 385 0]>>endobj
-579 0 obj<</Subtype/Link/Rect[124.5 499.0 252.8 512.0]/Border[0 0 0]/Dest[1467 0 R/XYZ 0 129 0]>>endobj
-580 0 obj<</Subtype/Link/Rect[124.5 485.8 244.9 498.8]/Border[0 0 0]/Dest[1469 0 R/XYZ 0 124 0]>>endobj
-581 0 obj<</Subtype/Link/Rect[124.5 472.6 290.4 485.6]/Border[0 0 0]/Dest[1475 0 R/XYZ 0 507 0]>>endobj
-582 0 obj<</Subtype/Link/Rect[168.8 459.4 368.0 472.4]/Border[0 0 0]/Dest[1477 0 R/XYZ 0 520 0]>>endobj
-583 0 obj<</Subtype/Link/Rect[168.8 446.2 444.1 459.2]/Border[0 0 0]/Dest[1479 0 R/XYZ 0 734 0]>>endobj
-584 0 obj<</Subtype/Link/Rect[124.5 433.0 423.7 446.0]/Border[0 0 0]/Dest[1487 0 R/XYZ 0 734 0]>>endobj
-585 0 obj<</Subtype/Link/Rect[80.2 419.8 449.4 432.8]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 734 0]>>endobj
-586 0 obj<</Subtype/Link/Rect[124.5 406.6 221.0 419.6]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 672 0]>>endobj
-587 0 obj<</Subtype/Link/Rect[124.5 393.4 181.0 406.4]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 597 0]>>endobj
-588 0 obj<</Subtype/Link/Rect[124.5 380.2 360.4 393.2]/Border[0 0 0]/Dest[1491 0 R/XYZ 0 225 0]>>endobj
-589 0 obj<</Subtype/Link/Rect[168.8 367.0 401.0 380.0]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 734 0]>>endobj
-590 0 obj<</Subtype/Link/Rect[168.8 353.8 287.0 366.8]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 609 0]>>endobj
-591 0 obj<</Subtype/Link/Rect[124.5 340.6 394.3 353.6]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 524 0]>>endobj
-592 0 obj<</Subtype/Link/Rect[124.5 327.4 268.1 340.4]/Border[0 0 0]/Dest[1493 0 R/XYZ 0 323 0]>>endobj
-593 0 obj<</Subtype/Link/Rect[168.8 314.2 345.7 327.2]/Border[0 0 0]/Dest[1495 0 R/XYZ 0 541 0]>>endobj
-594 0 obj<</Subtype/Link/Rect[168.8 301.0 300.5 314.0]/Border[0 0 0]/Dest[1495 0 R/XYZ 0 390 0]>>endobj
-595 0 obj<</Subtype/Link/Rect[80.2 287.8 230.6 300.8]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 734 0]>>endobj
-596 0 obj<</Subtype/Link/Rect[124.5 274.6 320.7 287.6]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 551 0]>>endobj
-597 0 obj<</Subtype/Link/Rect[124.5 261.4 321.9 274.4]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 444 0]>>endobj
-598 0 obj<</Subtype/Link/Rect[124.5 248.2 197.2 261.2]/Border[0 0 0]/Dest[1497 0 R/XYZ 0 267 0]>>endobj
-599 0 obj<</Subtype/Link/Rect[124.5 235.0 238.2 248.0]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 580 0]>>endobj
-600 0 obj<</Subtype/Link/Rect[124.5 221.8 255.3 234.8]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 264 0]>>endobj
-601 0 obj<</Subtype/Link/Rect[168.8 208.6 239.0 221.6]/Border[0 0 0]/Dest[1499 0 R/XYZ 0 202 0]>>endobj
-602 0 obj<</Subtype/Link/Rect[124.5 195.4 224.7 208.4]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 734 0]>>endobj
-603 0 obj<</Subtype/Link/Rect[124.5 182.2 226.3 195.2]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 645 0]>>endobj
-604 0 obj<</Subtype/Link/Rect[124.5 169.0 152.3 182.0]/Border[0 0 0]/Dest[1501 0 R/XYZ 0 570 0]>>endobj
-605 0 obj<</Subtype/Link/Rect[80.2 155.8 272.7 168.8]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 734 0]>>endobj
-606 0 obj<</Subtype/Link/Rect[124.5 142.6 299.3 155.6]/Border[0 0 0]/Dest[1503 0 R/XYZ 0 672 0]>>endobj
-607 0 obj<</Subtype/Link/Rect[124.5 129.4 286.8 142.4]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 494 0]>>endobj
-608 0 obj<</Subtype/Link/Rect[124.5 116.2 309.7 129.2]/Border[0 0 0]/Dest[1505 0 R/XYZ 0 405 0]>>endobj
-609 0 obj[569 0 R
-570 0 R
-571 0 R
-572 0 R
-573 0 R
-574 0 R
-575 0 R
-576 0 R
-577 0 R
-578 0 R
-579 0 R
-580 0 R
-581 0 R
+561 0 R
+563 0 R
+565 0 R
+567 0 R
+569 0 R]endobj
+571 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
+572 0 obj<</Subtype/Link/Rect[132.8 575.8 227.8 588.8]/Border[0 0 0]/A 571 0 R>>endobj
+573 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
+574 0 obj<</Subtype/Link/Rect[306.3 562.6 328.0 575.6]/Border[0 0 0]/A 573 0 R>>endobj
+575 0 obj[572 0 R
+574 0 R]endobj
+576 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
+577 0 obj<</Subtype/Link/Rect[210.4 613.0 317.8 626.0]/Border[0 0 0]/A 576 0 R>>endobj
+578 0 obj[577 0 R]endobj
+579 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
+580 0 obj<</Subtype/Link/Rect[218.7 452.2 284.9 465.2]/Border[0 0 0]/A 579 0 R>>endobj
+581 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+582 0 obj<</Subtype/Link/Rect[350.3 135.4 422.9 148.4]/Border[0 0 0]/A 581 0 R>>endobj
+583 0 obj<</S/Launch/F(#SECURITY)>>endobj
+584 0 obj<</Subtype/Link/Rect[169.1 95.8 235.1 108.8]/Border[0 0 0]/A 583 0 R>>endobj
+585 0 obj[580 0 R
582 0 R
-583 0 R
-584 0 R
-585 0 R
-586 0 R
-587 0 R
-588 0 R
+584 0 R]endobj
+586 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
+587 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 586 0 R>>endobj
+588 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+589 0 obj<</Subtype/Link/Rect[224.7 641.8 336.9 654.8]/Border[0 0 0]/A 588 0 R>>endobj
+590 0 obj<</S/Launch/F(#PASSWORDSERVER)>>endobj
+591 0 obj<</Subtype/Link/Rect[188.7 602.2 300.9 615.2]/Border[0 0 0]/A 590 0 R>>endobj
+592 0 obj<</S/Launch/F(#SECURITYEQUALSSERVER)>>endobj
+593 0 obj<</Subtype/Link/Rect[275.2 69.0 351.3 82.0]/Border[0 0 0]/A 592 0 R>>endobj
+594 0 obj[587 0 R
589 0 R
-590 0 R
591 0 R
-592 0 R
-593 0 R
-594 0 R
-595 0 R
-596 0 R
-597 0 R
+593 0 R]endobj
+595 0 obj<</S/Launch/F(winbind.html)>>endobj
+596 0 obj<</Subtype/Link/Rect[151.1 681.4 219.5 694.4]/Border[0 0 0]/A 595 0 R>>endobj
+597 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
+598 0 obj<</Subtype/Link/Rect[438.0 364.6 495.1 377.6]/Border[0 0 0]/A 597 0 R>>endobj
+599 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
+600 0 obj<</Subtype/Link/Rect[72.0 351.4 186.6 364.4]/Border[0 0 0]/A 599 0 R>>endobj
+601 0 obj[596 0 R
598 0 R
-599 0 R
-600 0 R
-601 0 R
-602 0 R
+600 0 R]endobj
+602 0 obj<</Subtype/Link/Rect[72.0 631.0 278.9 644.0]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+603 0 obj<</Subtype/Link/Rect[72.0 617.8 341.5 630.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+604 0 obj<</Subtype/Link/Rect[72.0 604.6 385.2 617.6]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+605 0 obj<</Subtype/Link/Rect[72.0 591.4 333.5 604.4]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+606 0 obj<</Subtype/Link/Rect[72.0 578.2 146.3 591.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+607 0 obj<</Subtype/Link/Rect[72.0 565.0 352.5 578.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+608 0 obj<</Subtype/Link/Rect[72.0 551.8 171.0 564.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+609 0 obj<</Subtype/Link/Rect[72.0 538.6 159.4 551.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+610 0 obj<</Subtype/Link/Rect[72.0 525.4 175.9 538.4]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+611 0 obj<</Subtype/Link/Rect[72.0 512.2 403.7 525.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+612 0 obj<</Subtype/Link/Rect[72.0 499.0 270.6 512.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+613 0 obj<</Subtype/Link/Rect[72.0 485.8 183.8 498.8]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+614 0 obj<</Subtype/Link/Rect[72.0 472.6 189.9 485.6]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+615 0 obj[602 0 R
603 0 R
604 0 R
605 0 R
606 0 R
607 0 R
-608 0 R]endobj
-610 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-611 0 obj<</Subtype/Link/Rect[153.2 599.8 225.8 612.8]/Border[0 0 0]/A 610 0 R>>endobj
-612 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-613 0 obj<</Subtype/Link/Rect[303.1 599.8 389.9 612.8]/Border[0 0 0]/A 612 0 R>>endobj
-614 0 obj<</S/Launch/F(UNIX_INSTALL.html)>>endobj
-615 0 obj<</Subtype/Link/Rect[333.5 442.5 438.0 455.5]/Border[0 0 0]/A 614 0 R>>endobj
-616 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-617 0 obj<</Subtype/Link/Rect[440.4 429.3 541.8 442.3]/Border[0 0 0]/A 616 0 R>>endobj
-618 0 obj[611 0 R
+608 0 R
+609 0 R
+610 0 R
+611 0 R
+612 0 R
613 0 R
-615 0 R
-617 0 R]endobj
-619 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-620 0 obj<</Subtype/Link/Rect[465.5 659.0 546.8 672.0]/Border[0 0 0]/A 619 0 R>>endobj
-621 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-622 0 obj<</Subtype/Link/Rect[72.0 645.8 92.8 658.8]/Border[0 0 0]/A 621 0 R>>endobj
-623 0 obj<</S/Launch/F(#NETBIOSNAME)>>endobj
-624 0 obj<</Subtype/Link/Rect[93.6 573.4 158.4 584.4]/Border[0 0 0]/A 623 0 R>>endobj
-625 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-626 0 obj<</Subtype/Link/Rect[93.6 562.6 142.2 573.6]/Border[0 0 0]/A 625 0 R>>endobj
-627 0 obj<</S/Launch/F(#OSLEVEL)>>endobj
-628 0 obj<</Subtype/Link/Rect[93.6 530.2 136.8 541.2]/Border[0 0 0]/A 627 0 R>>endobj
-629 0 obj<</S/Launch/F(#PERFERREDMASTER)>>endobj
-630 0 obj<</Subtype/Link/Rect[93.6 519.4 180.0 530.4]/Border[0 0 0]/A 629 0 R>>endobj
-631 0 obj<</S/Launch/F(#DOMAINMASTER)>>endobj
-632 0 obj<</Subtype/Link/Rect[93.6 508.6 163.8 519.6]/Border[0 0 0]/A 631 0 R>>endobj
-633 0 obj<</S/Launch/F(#LOCALMASTER)>>endobj
-634 0 obj<</Subtype/Link/Rect[93.6 497.8 158.4 508.8]/Border[0 0 0]/A 633 0 R>>endobj
-635 0 obj<</S/Launch/F(#SECURITYEQUALSUSER)>>endobj
-636 0 obj<</Subtype/Link/Rect[93.6 465.4 136.8 476.4]/Border[0 0 0]/A 635 0 R>>endobj
-637 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-638 0 obj<</Subtype/Link/Rect[93.6 433.0 185.4 444.0]/Border[0 0 0]/A 637 0 R>>endobj
-639 0 obj<</S/Launch/F(#DOMAINLOGONS)>>endobj
-640 0 obj<</Subtype/Link/Rect[93.6 400.6 163.8 411.6]/Border[0 0 0]/A 639 0 R>>endobj
-641 0 obj<</S/Launch/F(#LOGONPATH)>>endobj
-642 0 obj<</Subtype/Link/Rect[93.6 368.2 147.6 379.2]/Border[0 0 0]/A 641 0 R>>endobj
-643 0 obj<</S/Launch/F(#LOGONDRIVE)>>endobj
-644 0 obj<</Subtype/Link/Rect[93.6 325.0 153.0 336.0]/Border[0 0 0]/A 643 0 R>>endobj
-645 0 obj<</S/Launch/F(#LOGONHOME)>>endobj
-646 0 obj<</Subtype/Link/Rect[93.6 314.2 147.6 325.2]/Border[0 0 0]/A 645 0 R>>endobj
-647 0 obj<</S/Launch/F(#LOGONSCRIPT)>>endobj
-648 0 obj<</Subtype/Link/Rect[93.6 271.0 158.4 282.0]/Border[0 0 0]/A 647 0 R>>endobj
-649 0 obj<</S/Launch/F(#PATH)>>endobj
-650 0 obj<</Subtype/Link/Rect[93.6 227.8 115.2 238.8]/Border[0 0 0]/A 649 0 R>>endobj
-651 0 obj<</S/Launch/F(#READONLY)>>endobj
-652 0 obj<</Subtype/Link/Rect[93.6 217.0 142.2 228.0]/Border[0 0 0]/A 651 0 R>>endobj
-653 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-654 0 obj<</Subtype/Link/Rect[93.6 206.2 147.6 217.2]/Border[0 0 0]/A 653 0 R>>endobj
-655 0 obj<</S/Launch/F(#PATH)>>endobj
-656 0 obj<</Subtype/Link/Rect[93.6 163.0 115.2 174.0]/Border[0 0 0]/A 655 0 R>>endobj
-657 0 obj<</S/Launch/F(#READONLY)>>endobj
-658 0 obj<</Subtype/Link/Rect[93.6 152.2 142.2 163.2]/Border[0 0 0]/A 657 0 R>>endobj
-659 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-660 0 obj<</Subtype/Link/Rect[93.6 141.4 153.0 152.4]/Border[0 0 0]/A 659 0 R>>endobj
-661 0 obj<</S/Launch/F(#DIRECTORYMASK)>>endobj
-662 0 obj<</Subtype/Link/Rect[93.6 130.6 169.2 141.6]/Border[0 0 0]/A 661 0 R>>endobj
-663 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-664 0 obj<</Subtype/Link/Rect[108.0 65.0 200.6 78.0]/Border[0 0 0]/A 663 0 R>>endobj
-665 0 obj[620 0 R
-622 0 R
-624 0 R
-626 0 R
-628 0 R
-630 0 R
-632 0 R
+614 0 R]endobj
+616 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+617 0 obj<</Subtype/Link/Rect[174.0 508.6 270.6 521.6]/Border[0 0 0]/A 616 0 R>>endobj
+618 0 obj<</S/Launch/F(#PASSWORDLEVEL)>>endobj
+619 0 obj<</Subtype/Link/Rect[73.4 245.2 154.4 256.2]/Border[0 0 0]/A 618 0 R>>endobj
+620 0 obj<</S/Launch/F(#USERNAMELEVEL)>>endobj
+621 0 obj<</Subtype/Link/Rect[73.4 234.4 149.0 245.4]/Border[0 0 0]/A 620 0 R>>endobj
+622 0 obj[617 0 R
+619 0 R
+621 0 R]endobj
+623 0 obj<</S/Launch/F(winbind.html)>>endobj
+624 0 obj<</Subtype/Link/Rect[503.4 113.7 544.6 126.7]/Border[0 0 0]/A 623 0 R>>endobj
+625 0 obj<</S/Launch/F(winbind.html)>>endobj
+626 0 obj<</Subtype/Link/Rect[72.0 100.5 115.4 113.5]/Border[0 0 0]/A 625 0 R>>endobj
+627 0 obj[624 0 R
+626 0 R]endobj
+628 0 obj<</S/Launch/F(#NTACLSUPPORT)>>endobj
+629 0 obj<</Subtype/Link/Rect[339.9 526.6 438.9 539.6]/Border[0 0 0]/A 628 0 R>>endobj
+630 0 obj[629 0 R]endobj
+631 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
+632 0 obj<</Subtype/Link/Rect[493.0 707.8 545.8 720.8]/Border[0 0 0]/A 631 0 R>>endobj
+633 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
+634 0 obj<</Subtype/Link/Rect[72.0 694.6 98.4 707.6]/Border[0 0 0]/A 633 0 R>>endobj
+635 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
+636 0 obj<</Subtype/Link/Rect[356.1 615.4 428.7 628.4]/Border[0 0 0]/A 635 0 R>>endobj
+637 0 obj<</S/Launch/F(#FORCESECURITYMODE)>>endobj
+638 0 obj<</Subtype/Link/Rect[424.3 562.6 549.7 575.6]/Border[0 0 0]/A 637 0 R>>endobj
+639 0 obj<</S/Launch/F(#FORCECREATEMODE)>>endobj
+640 0 obj<</Subtype/Link/Rect[356.1 483.4 468.3 496.4]/Border[0 0 0]/A 639 0 R>>endobj
+641 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+642 0 obj<</Subtype/Link/Rect[72.0 206.2 144.6 219.2]/Border[0 0 0]/A 641 0 R>>endobj
+643 0 obj[632 0 R
634 0 R
636 0 R
638 0 R
640 0 R
-642 0 R
-644 0 R
-646 0 R
-648 0 R
-650 0 R
-652 0 R
-654 0 R
-656 0 R
-658 0 R
-660 0 R
+642 0 R]endobj
+644 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
+645 0 obj<</Subtype/Link/Rect[118.1 67.2 222.3 80.2]/Border[0 0 0]/A 644 0 R>>endobj
+646 0 obj[645 0 R]endobj
+647 0 obj<</S/Launch/F(#OBEYPAMRESTRICTIONS)>>endobj
+648 0 obj<</Subtype/Link/Rect[235.4 632.6 332.9 645.6]/Border[0 0 0]/A 647 0 R>>endobj
+649 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+650 0 obj<</Subtype/Link/Rect[338.7 553.4 449.4 566.4]/Border[0 0 0]/A 649 0 R>>endobj
+651 0 obj[648 0 R
+650 0 R]endobj
+652 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
+653 0 obj<</Subtype/Link/Rect[72.0 586.6 183.5 599.6]/Border[0 0 0]/A 652 0 R>>endobj
+654 0 obj<</S/Launch/F(#HOSTMSDFS)>>endobj
+655 0 obj<</Subtype/Link/Rect[345.1 507.4 417.7 520.4]/Border[0 0 0]/A 654 0 R>>endobj
+656 0 obj<</S/Launch/F(#MSDFSROOT)>>endobj
+657 0 obj<</Subtype/Link/Rect[380.8 494.2 453.4 507.2]/Border[0 0 0]/A 656 0 R>>endobj
+658 0 obj[653 0 R
+655 0 R
+657 0 R]endobj
+659 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
+660 0 obj<</Subtype/Link/Rect[143.7 544.6 280.3 557.6]/Border[0 0 0]/A 659 0 R>>endobj
+661 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
+662 0 obj<</Subtype/Link/Rect[218.6 518.2 341.1 531.2]/Border[0 0 0]/A 661 0 R>>endobj
+663 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
+664 0 obj<</Subtype/Link/Rect[72.0 333.4 355.9 346.4]/Border[0 0 0]/A 663 0 R>>endobj
+665 0 obj[660 0 R
662 0 R
664 0 R]endobj
-666 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-667 0 obj<</Subtype/Link/Rect[494.2 641.8 530.0 654.8]/Border[0 0 0]/A 666 0 R>>endobj
-668 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-669 0 obj<</Subtype/Link/Rect[72.0 628.6 127.9 641.6]/Border[0 0 0]/A 668 0 R>>endobj
-670 0 obj[667 0 R
-669 0 R]endobj
-671 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
-672 0 obj<</Subtype/Link/Rect[72.0 512.2 138.6 525.2]/Border[0 0 0]/A 671 0 R>>endobj
-673 0 obj<</S/Launch/F(#ADDUSERSCRIPT)>>endobj
-674 0 obj<</Subtype/Link/Rect[420.0 219.7 486.9 232.7]/Border[0 0 0]/A 673 0 R>>endobj
-675 0 obj[672 0 R
-674 0 R]endobj
-676 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
-677 0 obj<</Subtype/Link/Rect[139.8 721.0 387.6 734.0]/Border[0 0 0]/A 676 0 R>>endobj
-678 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
-679 0 obj<</Subtype/Link/Rect[285.2 179.8 540.0 192.8]/Border[0 0 0]/A 678 0 R>>endobj
-680 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
-681 0 obj<</Subtype/Link/Rect[230.8 140.2 505.8 153.2]/Border[0 0 0]/A 680 0 R>>endobj
-682 0 obj[677 0 R
-679 0 R
-681 0 R]endobj
-683 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
-684 0 obj<</Subtype/Link/Rect[349.4 417.4 455.4 430.4]/Border[0 0 0]/A 683 0 R>>endobj
-685 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
-686 0 obj<</Subtype/Link/Rect[424.5 404.2 536.6 417.2]/Border[0 0 0]/A 685 0 R>>endobj
-687 0 obj[684 0 R
-686 0 R]endobj
-688 0 obj<</S/URI/URI(http://samba.org)>>endobj
-689 0 obj<</Subtype/Link/Rect[233.5 549.4 308.1 562.4]/Border[0 0 0]/A 688 0 R>>endobj
-690 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
-691 0 obj<</Subtype/Link/Rect[144.0 496.6 346.1 509.6]/Border[0 0 0]/A 690 0 R>>endobj
-692 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
-693 0 obj<</Subtype/Link/Rect[179.7 470.2 342.3 483.2]/Border[0 0 0]/A 692 0 R>>endobj
-694 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
-695 0 obj<</Subtype/Link/Rect[282.1 457.0 378.7 470.0]/Border[0 0 0]/A 694 0 R>>endobj
-696 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
-697 0 obj<</Subtype/Link/Rect[241.5 443.8 408.5 456.8]/Border[0 0 0]/A 696 0 R>>endobj
-698 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
-699 0 obj<</Subtype/Link/Rect[277.5 430.6 469.1 443.6]/Border[0 0 0]/A 698 0 R>>endobj
-700 0 obj<</S/URI/URI(http://samba.org)>>endobj
-701 0 obj<</Subtype/Link/Rect[358.2 377.8 432.8 390.8]/Border[0 0 0]/A 700 0 R>>endobj
-702 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
-703 0 obj<</Subtype/Link/Rect[298.4 338.2 422.8 351.2]/Border[0 0 0]/A 702 0 R>>endobj
-704 0 obj[689 0 R
-691 0 R
-693 0 R
-695 0 R
-697 0 R
-699 0 R
-701 0 R
-703 0 R]endobj
-705 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
-706 0 obj<</Subtype/Link/Rect[132.8 575.8 227.8 588.8]/Border[0 0 0]/A 705 0 R>>endobj
-707 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
-708 0 obj<</Subtype/Link/Rect[306.3 562.6 328.0 575.6]/Border[0 0 0]/A 707 0 R>>endobj
-709 0 obj[706 0 R
-708 0 R]endobj
-710 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-711 0 obj<</Subtype/Link/Rect[210.4 613.0 317.8 626.0]/Border[0 0 0]/A 710 0 R>>endobj
-712 0 obj[711 0 R]endobj
-713 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-714 0 obj<</Subtype/Link/Rect[191.8 573.4 264.4 586.4]/Border[0 0 0]/A 713 0 R>>endobj
-715 0 obj<</S/Launch/F(#SECURITY)>>endobj
-716 0 obj<</Subtype/Link/Rect[169.1 547.0 235.1 560.0]/Border[0 0 0]/A 715 0 R>>endobj
-717 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-718 0 obj<</Subtype/Link/Rect[146.2 481.0 225.4 494.0]/Border[0 0 0]/A 717 0 R>>endobj
-719 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-720 0 obj<</Subtype/Link/Rect[224.7 401.8 336.9 414.8]/Border[0 0 0]/A 719 0 R>>endobj
-721 0 obj<</S/Launch/F(#PASSWORDSERVER)>>endobj
-722 0 obj<</Subtype/Link/Rect[188.7 362.2 300.9 375.2]/Border[0 0 0]/A 721 0 R>>endobj
-723 0 obj[714 0 R
+666 0 obj<</S/Launch/F(#WRITELIST)>>endobj
+667 0 obj<</Subtype/Link/Rect[91.9 468.5 157.9 481.5]/Border[0 0 0]/A 666 0 R>>endobj
+668 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+669 0 obj<</Subtype/Link/Rect[184.4 455.3 285.8 468.3]/Border[0 0 0]/A 668 0 R>>endobj
+670 0 obj<</S/Launch/F(#GUESTOK)>>endobj
+671 0 obj<</Subtype/Link/Rect[160.6 428.9 228.6 441.9]/Border[0 0 0]/A 670 0 R>>endobj
+672 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
+673 0 obj<</Subtype/Link/Rect[501.3 319.0 536.7 332.0]/Border[0 0 0]/A 672 0 R>>endobj
+674 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
+675 0 obj<</Subtype/Link/Rect[94.2 305.8 174.1 318.8]/Border[0 0 0]/A 674 0 R>>endobj
+676 0 obj[667 0 R
+669 0 R
+671 0 R
+673 0 R
+675 0 R]endobj
+677 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
+678 0 obj<</Subtype/Link/Rect[451.3 719.6 537.1 732.6]/Border[0 0 0]/A 677 0 R>>endobj
+679 0 obj<</S/Launch/F(rpcclient.1.html)>>endobj
+680 0 obj<</Subtype/Link/Rect[233.6 99.7 379.3 112.7]/Border[0 0 0]/A 679 0 R>>endobj
+681 0 obj[678 0 R
+680 0 R]endobj
+682 0 obj<</S/Launch/F(#SHOWADDPRINTERWIZARD)>>endobj
+683 0 obj<</Subtype/Link/Rect[108.0 347.7 299.4 360.7]/Border[0 0 0]/A 682 0 R>>endobj
+684 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
+685 0 obj<</Subtype/Link/Rect[453.9 321.3 526.5 334.3]/Border[0 0 0]/A 684 0 R>>endobj
+686 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
+687 0 obj<</Subtype/Link/Rect[72.0 308.1 118.2 321.1]/Border[0 0 0]/A 686 0 R>>endobj
+688 0 obj<</S/Launch/F(#DELETEPRINTERCOMMAND)>>endobj
+689 0 obj<</Subtype/Link/Rect[189.3 202.5 334.5 215.5]/Border[0 0 0]/A 688 0 R>>endobj
+690 0 obj<</S/Launch/F(#ADDPRINTERCOMMAN)>>endobj
+691 0 obj<</Subtype/Link/Rect[200.6 176.1 326.0 189.1]/Border[0 0 0]/A 690 0 R>>endobj
+692 0 obj[683 0 R
+685 0 R
+687 0 R
+689 0 R
+691 0 R]endobj
+693 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
+694 0 obj<</Subtype/Link/Rect[451.4 135.3 510.8 148.3]/Border[0 0 0]/A 693 0 R>>endobj
+695 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
+696 0 obj<</Subtype/Link/Rect[72.0 122.1 118.2 135.1]/Border[0 0 0]/A 695 0 R>>endobj
+697 0 obj[694 0 R
+696 0 R]endobj
+698 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+699 0 obj<</Subtype/Link/Rect[297.8 674.2 437.4 687.2]/Border[0 0 0]/A 698 0 R>>endobj
+700 0 obj[699 0 R]endobj
+701 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
+702 0 obj<</Subtype/Link/Rect[197.9 304.6 310.1 317.6]/Border[0 0 0]/A 701 0 R>>endobj
+703 0 obj[702 0 R]endobj
+704 0 obj<</S/URI/URI(http://samba.org/)>>endobj
+705 0 obj<</Subtype/Link/Rect[151.1 438.2 262.3 451.2]/Border[0 0 0]/A 704 0 R>>endobj
+706 0 obj[705 0 R]endobj
+707 0 obj<</S/Launch/F(winbindd.8.html)>>endobj
+708 0 obj<</Subtype/Link/Rect[306.3 232.9 363.4 245.9]/Border[0 0 0]/A 707 0 R>>endobj
+709 0 obj<</S/Launch/F(#WINBINDSEPARATOR)>>endobj
+710 0 obj<</Subtype/Link/Rect[100.4 161.5 192.2 172.5]/Border[0 0 0]/A 709 0 R>>endobj
+711 0 obj<</S/Launch/F(#WINBINDUID)>>endobj
+712 0 obj<</Subtype/Link/Rect[100.4 139.9 159.8 150.9]/Border[0 0 0]/A 711 0 R>>endobj
+713 0 obj<</S/Launch/F(#WINBINDGID)>>endobj
+714 0 obj<</Subtype/Link/Rect[100.4 118.3 159.8 129.3]/Border[0 0 0]/A 713 0 R>>endobj
+715 0 obj<</S/Launch/F(#WINBINDENUMUSERS)>>endobj
+716 0 obj<</Subtype/Link/Rect[100.4 96.7 197.6 107.7]/Border[0 0 0]/A 715 0 R>>endobj
+717 0 obj<</S/Launch/F(#WINBINDENUMGROUP)>>endobj
+718 0 obj<</Subtype/Link/Rect[100.4 85.9 203.0 96.9]/Border[0 0 0]/A 717 0 R>>endobj
+719 0 obj<</S/Launch/F(#TEMPLATEHOMEDIR)>>endobj
+720 0 obj<</Subtype/Link/Rect[100.4 64.3 186.8 75.3]/Border[0 0 0]/A 719 0 R>>endobj
+721 0 obj[708 0 R
+710 0 R
+712 0 R
+714 0 R
716 0 R
718 0 R
-720 0 R
-722 0 R]endobj
-724 0 obj<</S/Launch/F(net.8.html)>>endobj
-725 0 obj<</Subtype/Link/Rect[218.7 694.6 247.7 707.6]/Border[0 0 0]/A 724 0 R>>endobj
-726 0 obj<</S/Launch/F(#SECURITYEQUALSSERVER)>>endobj
-727 0 obj<</Subtype/Link/Rect[275.2 319.8 351.3 332.8]/Border[0 0 0]/A 726 0 R>>endobj
-728 0 obj<</S/Launch/F(winbind.html)>>endobj
-729 0 obj<</Subtype/Link/Rect[151.1 267.0 219.5 280.0]/Border[0 0 0]/A 728 0 R>>endobj
-730 0 obj[725 0 R
-727 0 R
-729 0 R]endobj
-731 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
-732 0 obj<</Subtype/Link/Rect[438.0 668.2 495.1 681.2]/Border[0 0 0]/A 731 0 R>>endobj
-733 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
-734 0 obj<</Subtype/Link/Rect[72.0 655.0 186.6 668.0]/Border[0 0 0]/A 733 0 R>>endobj
-735 0 obj[732 0 R
-734 0 R]endobj
-736 0 obj<</Subtype/Link/Rect[80.2 631.0 289.9 644.0]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 734 0]>>endobj
-737 0 obj<</Subtype/Link/Rect[124.5 617.8 160.9 630.8]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 672 0]>>endobj
-738 0 obj<</Subtype/Link/Rect[124.5 604.6 325.9 617.6]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 439 0]>>endobj
-739 0 obj<</Subtype/Link/Rect[171.5 591.4 237.5 604.4]/Border[0 0 0]/Dest[1517 0 R/XYZ 0 311 0]>>endobj
-740 0 obj<</Subtype/Link/Rect[171.5 578.2 277.1 591.2]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 441 0]>>endobj
-741 0 obj<</Subtype/Link/Rect[171.5 565.0 263.9 578.0]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 303 0]>>endobj
-742 0 obj<</Subtype/Link/Rect[171.5 551.8 290.3 564.8]/Border[0 0 0]/Dest[1519 0 R/XYZ 0 157 0]>>endobj
-743 0 obj<</Subtype/Link/Rect[124.5 538.6 378.7 551.6]/Border[0 0 0]/Dest[1521 0 R/XYZ 0 339 0]>>endobj
-744 0 obj<</Subtype/Link/Rect[168.8 525.4 289.1 538.4]/Border[0 0 0]/Dest[1523 0 R/XYZ 0 266 0]>>endobj
-745 0 obj<</Subtype/Link/Rect[168.8 512.2 255.8 525.2]/Border[0 0 0]/Dest[1525 0 R/XYZ 0 734 0]>>endobj
-746 0 obj<</Subtype/Link/Rect[168.8 499.0 221.3 512.0]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 459 0]>>endobj
-747 0 obj<</Subtype/Link/Rect[168.8 485.8 228.0 498.8]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 361 0]>>endobj
-748 0 obj<</Subtype/Link/Rect[168.8 472.6 232.9 485.6]/Border[0 0 0]/Dest[1527 0 R/XYZ 0 224 0]>>endobj
-749 0 obj<</Subtype/Link/Rect[124.5 459.4 523.3 472.4]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 670 0]>>endobj
-750 0 obj<</Subtype/Link/Rect[124.5 446.2 495.4 459.2]/Border[0 0 0]/Dest[1529 0 R/XYZ 0 126 0]>>endobj
-751 0 obj<</Subtype/Link/Rect[168.8 433.0 388.1 446.0]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 734 0]>>endobj
-752 0 obj<</Subtype/Link/Rect[168.8 419.8 450.1 432.8]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 484 0]>>endobj
-753 0 obj<</Subtype/Link/Rect[168.8 406.6 371.6 419.6]/Border[0 0 0]/Dest[1533 0 R/XYZ 0 132 0]>>endobj
-754 0 obj<</Subtype/Link/Rect[124.5 393.4 181.6 406.4]/Border[0 0 0]/Dest[1535 0 R/XYZ 0 263 0]>>endobj
-755 0 obj<</Subtype/Link/Rect[85.8 380.2 358.0 393.2]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 734 0]>>endobj
-756 0 obj<</Subtype/Link/Rect[130.0 367.0 447.2 380.0]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 672 0]>>endobj
-757 0 obj<</Subtype/Link/Rect[130.0 353.8 324.0 366.8]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 537 0]>>endobj
-758 0 obj<</Subtype/Link/Rect[130.0 340.6 234.2 353.6]/Border[0 0 0]/Dest[1537 0 R/XYZ 0 369 0]>>endobj
-759 0 obj<</Subtype/Link/Rect[130.0 327.4 296.5 340.4]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 705 0]>>endobj
-760 0 obj<</Subtype/Link/Rect[174.2 314.2 251.2 327.2]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 471 0]>>endobj
-761 0 obj<</Subtype/Link/Rect[174.2 301.0 276.3 314.0]/Border[0 0 0]/Dest[1539 0 R/XYZ 0 228 0]>>endobj
-762 0 obj<</Subtype/Link/Rect[130.0 287.8 305.7 300.8]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 718 0]>>endobj
-763 0 obj<</Subtype/Link/Rect[130.0 274.6 402.5 287.6]/Border[0 0 0]/Dest[1541 0 R/XYZ 0 287 0]>>endobj
-764 0 obj<</Subtype/Link/Rect[130.0 261.4 392.8 274.4]/Border[0 0 0]/Dest[1545 0 R/XYZ 0 652 0]>>endobj
-765 0 obj<</Subtype/Link/Rect[85.8 248.2 401.7 261.2]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 734 0]>>endobj
-766 0 obj<</Subtype/Link/Rect[130.0 235.0 207.3 248.0]/Border[0 0 0]/Dest[1547 0 R/XYZ 0 672 0]>>endobj
-767 0 obj<</Subtype/Link/Rect[130.0 221.8 250.4 234.8]/Border[0 0 0]/Dest[1549 0 R/XYZ 0 148 0]>>endobj
-768 0 obj<</Subtype/Link/Rect[130.0 208.6 273.9 221.6]/Border[0 0 0]/Dest[1551 0 R/XYZ 0 705 0]>>endobj
-769 0 obj<</Subtype/Link/Rect[85.8 195.4 350.0 208.4]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 734 0]>>endobj
-770 0 obj<</Subtype/Link/Rect[130.0 182.2 185.3 195.2]/Border[0 0 0]/Dest[1553 0 R/XYZ 0 672 0]>>endobj
-771 0 obj<</Subtype/Link/Rect[174.2 169.0 202.1 182.0]/Border[0 0 0]/Dest[1555 0 R/XYZ 0 652 0]>>endobj
-772 0 obj<</Subtype/Link/Rect[85.8 155.8 162.8 168.8]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 734 0]>>endobj
-773 0 obj<</Subtype/Link/Rect[130.0 142.6 187.8 155.6]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 696 0]>>endobj
-774 0 obj<</Subtype/Link/Rect[130.0 129.4 195.1 142.4]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 317 0]>>endobj
-775 0 obj<</Subtype/Link/Rect[174.2 116.2 254.3 129.2]/Border[0 0 0]/Dest[1557 0 R/XYZ 0 127 0]>>endobj
-776 0 obj<</Subtype/Link/Rect[174.2 103.0 337.1 116.0]/Border[0 0 0]/Dest[1561 0 R/XYZ 0 531 0]>>endobj
-777 0 obj<</Subtype/Link/Rect[174.2 89.8 331.3 102.8]/Border[0 0 0]/Dest[1563 0 R/XYZ 0 734 0]>>endobj
-778 0 obj<</Subtype/Link/Rect[174.2 76.6 386.9 89.6]/Border[0 0 0]/Dest[1563 0 R/XYZ 0 363 0]>>endobj
-779 0 obj<</Subtype/Link/Rect[174.2 63.4 287.3 76.4]/Border[0 0 0]/Dest[1565 0 R/XYZ 0 184 0]>>endobj
-780 0 obj[736 0 R
-737 0 R
+720 0 R]endobj
+722 0 obj<</S/Launch/F(#TEMPLATESHELL)>>endobj
+723 0 obj<</Subtype/Link/Rect[100.4 721.6 176.0 732.6]/Border[0 0 0]/A 722 0 R>>endobj
+724 0 obj[723 0 R]endobj
+725 0 obj<</S/URI/URI(http://www.css.tayloru.edu/~elorimer/databasefs/index.php)>>endobj
+726 0 obj<</Subtype/Link/Rect[97.1 272.5 360.6 285.5]/Border[0 0 0]/A 725 0 R>>endobj
+727 0 obj<</S/URI/URI(mailto:elorimer@css.tayloru.edu)>>endobj
+728 0 obj<</Subtype/Link/Rect[84.8 246.1 144.7 259.1]/Border[0 0 0]/A 727 0 R>>endobj
+729 0 obj[726 0 R
+728 0 R]endobj
+730 0 obj<</S/URI/URI(http://www.openantivirus.org/)>>endobj
+731 0 obj<</Subtype/Link/Rect[97.1 691.0 233.0 704.0]/Border[0 0 0]/A 730 0 R>>endobj
+732 0 obj[731 0 R]endobj
+733 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
+734 0 obj<</Subtype/Link/Rect[169.5 560.2 285.9 573.2]/Border[0 0 0]/A 733 0 R>>endobj
+735 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
+736 0 obj<</Subtype/Link/Rect[223.9 547.0 387.9 560.0]/Border[0 0 0]/A 735 0 R>>endobj
+737 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
+738 0 obj<</Subtype/Link/Rect[112.6 520.6 202.0 533.6]/Border[0 0 0]/A 737 0 R>>endobj
+739 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html)>>endobj
+740 0 obj<</Subtype/Link/Rect[125.1 454.6 267.5 467.6]/Border[0 0 0]/A 739 0 R>>endobj
+741 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
+742 0 obj<</Subtype/Link/Rect[243.7 441.4 287.3 454.4]/Border[0 0 0]/A 741 0 R>>endobj
+743 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+744 0 obj<</Subtype/Link/Rect[212.8 366.2 332.5 379.2]/Border[0 0 0]/A 743 0 R>>endobj
+745 0 obj[734 0 R
+736 0 R
738 0 R
-739 0 R
740 0 R
-741 0 R
742 0 R
-743 0 R
-744 0 R
-745 0 R
-746 0 R
-747 0 R
-748 0 R
+744 0 R]endobj
+746 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
+747 0 obj<</Subtype/Link/Rect[284.3 602.2 380.9 615.2]/Border[0 0 0]/A 746 0 R>>endobj
+748 0 obj<</S/Launch/F(samba-patches@samba.org)>>endobj
+749 0 obj<</Subtype/Link/Rect[332.3 487.4 458.0 500.4]/Border[0 0 0]/A 748 0 R>>endobj
+750 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
+751 0 obj<</Subtype/Link/Rect[476.6 487.4 555.8 500.4]/Border[0 0 0]/A 750 0 R>>endobj
+752 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
+753 0 obj<</Subtype/Link/Rect[271.2 254.5 350.4 267.5]/Border[0 0 0]/A 752 0 R>>endobj
+754 0 obj[747 0 R
749 0 R
-750 0 R
751 0 R
-752 0 R
-753 0 R
-754 0 R
-755 0 R
-756 0 R
-757 0 R
+753 0 R]endobj
+755 0 obj<</S/Launch/F(#LDAPSSL)>>endobj
+756 0 obj<</Subtype/Link/Rect[108.0 721.0 141.3 734.0]/Border[0 0 0]/A 755 0 R>>endobj
+757 0 obj<</S/Launch/F(#LDAPSERVER)>>endobj
+758 0 obj<</Subtype/Link/Rect[108.0 707.8 156.6 720.8]/Border[0 0 0]/A 757 0 R>>endobj
+759 0 obj<</S/Launch/F(#LDAPADMINDN)>>endobj
+760 0 obj<</Subtype/Link/Rect[108.0 694.6 170.9 707.6]/Border[0 0 0]/A 759 0 R>>endobj
+761 0 obj<</S/Launch/F(#LDAPSUFFIX)>>endobj
+762 0 obj<</Subtype/Link/Rect[108.0 681.4 155.4 694.4]/Border[0 0 0]/A 761 0 R>>endobj
+763 0 obj<</S/Launch/F(#LDAPFILTER)>>endobj
+764 0 obj<</Subtype/Link/Rect[108.0 668.2 151.1 681.2]/Border[0 0 0]/A 763 0 R>>endobj
+765 0 obj<</S/Launch/F(#LDAPPORT)>>endobj
+766 0 obj<</Subtype/Link/Rect[108.0 655.0 147.4 668.0]/Border[0 0 0]/A 765 0 R>>endobj
+767 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+768 0 obj<</Subtype/Link/Rect[186.9 628.6 243.1 641.6]/Border[0 0 0]/A 767 0 R>>endobj
+769 0 obj[756 0 R
758 0 R
-759 0 R
760 0 R
-761 0 R
762 0 R
-763 0 R
764 0 R
-765 0 R
766 0 R
-767 0 R
-768 0 R
-769 0 R
-770 0 R
-771 0 R
-772 0 R
-773 0 R
-774 0 R
-775 0 R
-776 0 R
-777 0 R
-778 0 R
-779 0 R]endobj
-781 0 obj<</Subtype/Link/Rect[130.0 721.0 224.4 734.0]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 692 0]>>endobj
-782 0 obj<</Subtype/Link/Rect[174.2 707.8 255.8 720.8]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 590 0]>>endobj
-783 0 obj<</Subtype/Link/Rect[174.2 694.6 327.6 707.6]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 466 0]>>endobj
-784 0 obj<</Subtype/Link/Rect[174.2 681.4 263.8 694.4]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 381 0]>>endobj
-785 0 obj<</Subtype/Link/Rect[174.2 668.2 276.6 681.2]/Border[0 0 0]/Dest[1567 0 R/XYZ 0 283 0]>>endobj
-786 0 obj<</Subtype/Link/Rect[130.0 655.0 177.4 668.0]/Border[0 0 0]/Dest[1569 0 R/XYZ 0 397 0]>>endobj
-787 0 obj<</Subtype/Link/Rect[174.2 641.8 232.0 654.8]/Border[0 0 0]/Dest[1569 0 R/XYZ 0 363 0]>>endobj
-788 0 obj<</Subtype/Link/Rect[174.2 628.6 302.9 641.6]/Border[0 0 0]/Dest[1571 0 R/XYZ 0 429 0]>>endobj
-789 0 obj<</Subtype/Link/Rect[174.2 615.4 287.0 628.4]/Border[0 0 0]/Dest[1573 0 R/XYZ 0 665 0]>>endobj
-790 0 obj<</Subtype/Link/Rect[174.2 602.2 339.2 615.2]/Border[0 0 0]/Dest[1573 0 R/XYZ 0 485 0]>>endobj
-791 0 obj<</Subtype/Link/Rect[174.2 589.0 260.7 602.0]/Border[0 0 0]/Dest[1575 0 R/XYZ 0 734 0]>>endobj
-792 0 obj<</Subtype/Link/Rect[174.2 575.8 282.7 588.8]/Border[0 0 0]/Dest[1575 0 R/XYZ 0 394 0]>>endobj
-793 0 obj<</Subtype/Link/Rect[174.2 562.6 279.7 575.6]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 718 0]>>endobj
-794 0 obj<</Subtype/Link/Rect[174.2 549.4 259.8 562.4]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 633 0]>>endobj
-795 0 obj<</Subtype/Link/Rect[174.2 536.2 246.4 549.2]/Border[0 0 0]/Dest[1577 0 R/XYZ 0 535 0]>>endobj
-796 0 obj<</Subtype/Link/Rect[85.8 523.0 369.0 536.0]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 734 0]>>endobj
-797 0 obj<</Subtype/Link/Rect[130.0 509.8 170.0 522.8]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 672 0]>>endobj
-798 0 obj<</Subtype/Link/Rect[130.0 496.6 187.8 509.6]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 544 0]>>endobj
-799 0 obj<</Subtype/Link/Rect[130.0 483.4 237.9 496.4]/Border[0 0 0]/Dest[1579 0 R/XYZ 0 231 0]>>endobj
-800 0 obj<</Subtype/Link/Rect[174.2 470.2 230.5 483.2]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 560 0]>>endobj
-801 0 obj<</Subtype/Link/Rect[130.0 457.0 224.4 470.0]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 409 0]>>endobj
-802 0 obj<</Subtype/Link/Rect[174.2 443.8 330.7 456.8]/Border[0 0 0]/Dest[1581 0 R/XYZ 0 294 0]>>endobj
-803 0 obj<</Subtype/Link/Rect[174.2 430.6 334.9 443.6]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 734 0]>>endobj
-804 0 obj<</Subtype/Link/Rect[174.2 417.4 269.9 430.4]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 635 0]>>endobj
-805 0 obj<</Subtype/Link/Rect[174.2 404.2 330.4 417.2]/Border[0 0 0]/Dest[1583 0 R/XYZ 0 194 0]>>endobj
-806 0 obj<</Subtype/Link/Rect[174.2 391.0 312.0 404.0]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 560 0]>>endobj
-807 0 obj<</Subtype/Link/Rect[174.2 377.8 244.5 390.8]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 383 0]>>endobj
-808 0 obj<</Subtype/Link/Rect[130.0 364.6 267.8 377.6]/Border[0 0 0]/Dest[1585 0 R/XYZ 0 245 0]>>endobj
-809 0 obj<</Subtype/Link/Rect[174.2 351.4 232.0 364.4]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 734 0]>>endobj
-810 0 obj<</Subtype/Link/Rect[174.2 338.2 237.5 351.2]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 451 0]>>endobj
-811 0 obj<</Subtype/Link/Rect[174.2 325.0 261.3 338.0]/Border[0 0 0]/Dest[1587 0 R/XYZ 0 181 0]>>endobj
-812 0 obj<</Subtype/Link/Rect[130.0 311.8 182.9 324.8]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 734 0]>>endobj
-813 0 obj<</Subtype/Link/Rect[130.0 298.6 182.9 311.6]/Border[0 0 0]/Dest[1603 0 R/XYZ 0 513 0]>>endobj
-814 0 obj<</Subtype/Link/Rect[85.8 285.4 217.1 298.4]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 734 0]>>endobj
-815 0 obj<</Subtype/Link/Rect[130.0 272.2 229.9 285.2]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 696 0]>>endobj
-816 0 obj<</Subtype/Link/Rect[130.0 259.0 254.1 272.0]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 515 0]>>endobj
-817 0 obj<</Subtype/Link/Rect[130.0 245.8 218.0 258.8]/Border[0 0 0]/Dest[1605 0 R/XYZ 0 137 0]>>endobj
-818 0 obj<</Subtype/Link/Rect[130.0 232.6 242.1 245.6]/Border[0 0 0]/Dest[1607 0 R/XYZ 0 533 0]>>endobj
-819 0 obj<</Subtype/Link/Rect[174.2 219.4 354.8 232.4]/Border[0 0 0]/Dest[1607 0 R/XYZ 0 273 0]>>endobj
-820 0 obj<</Subtype/Link/Rect[130.0 206.2 244.0 219.2]/Border[0 0 0]/Dest[1613 0 R/XYZ 0 560 0]>>endobj
-821 0 obj<</Subtype/Link/Rect[130.0 193.0 312.7 206.0]/Border[0 0 0]/Dest[1615 0 R/XYZ 0 613 0]>>endobj
-822 0 obj<</Subtype/Link/Rect[130.0 179.8 287.1 192.8]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 622 0]>>endobj
-823 0 obj<</Subtype/Link/Rect[130.0 166.6 273.0 179.6]/Border[0 0 0]/Dest[1617 0 R/XYZ 0 266 0]>>endobj
-824 0 obj<</Subtype/Link/Rect[130.0 153.4 282.5 166.4]/Border[0 0 0]/Dest[1619 0 R/XYZ 0 520 0]>>endobj
-825 0 obj<</Subtype/Link/Rect[135.5 140.2 279.7 153.2]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 734 0]>>endobj
-826 0 obj<</Subtype/Link/Rect[135.5 127.0 221.7 140.0]/Border[0 0 0]/Dest[1621 0 R/XYZ 0 645 0]>>endobj
-827 0 obj<</Subtype/Link/Rect[85.8 113.8 192.4 126.8]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 734 0]>>endobj
-828 0 obj<</Subtype/Link/Rect[130.0 100.6 269.6 113.6]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 696 0]>>endobj
-829 0 obj<</Subtype/Link/Rect[130.0 87.4 210.7 100.4]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 385 0]>>endobj
-830 0 obj<</Subtype/Link/Rect[174.2 74.2 199.6 87.2]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 351 0]>>endobj
-831 0 obj<</Subtype/Link/Rect[174.2 61.0 208.8 74.0]/Border[0 0 0]/Dest[1623 0 R/XYZ 0 215 0]>>endobj
-832 0 obj[781 0 R
+768 0 R]endobj
+770 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+771 0 obj<</Subtype/Link/Rect[72.0 553.4 176.8 566.4]/Border[0 0 0]/A 770 0 R>>endobj
+772 0 obj[771 0 R]endobj
+773 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
+774 0 obj<</Subtype/Link/Rect[72.0 509.8 176.7 522.8]/Border[0 0 0]/A 773 0 R>>endobj
+775 0 obj[774 0 R]endobj
+776 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+777 0 obj<</Subtype/Link/Rect[302.7 431.7 381.8 444.7]/Border[0 0 0]/A 776 0 R>>endobj
+778 0 obj[777 0 R]endobj
+779 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
+780 0 obj<</Subtype/Link/Rect[354.3 597.4 500.7 610.4]/Border[0 0 0]/A 779 0 R>>endobj
+781 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
+782 0 obj<</Subtype/Link/Rect[135.9 397.8 283.2 410.8]/Border[0 0 0]/A 781 0 R>>endobj
+783 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
+784 0 obj<</Subtype/Link/Rect[391.6 286.6 498.2 299.6]/Border[0 0 0]/A 783 0 R>>endobj
+785 0 obj[780 0 R
782 0 R
-783 0 R
-784 0 R
-785 0 R
-786 0 R
+784 0 R]endobj
+786 0 obj<</Subtype/Link/Rect[72.0 670.6 119.7 683.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+787 0 obj<</Subtype/Link/Rect[72.0 657.4 204.6 670.4]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+788 0 obj<</Subtype/Link/Rect[72.0 644.2 140.8 657.2]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+789 0 obj<</Subtype/Link/Rect[72.0 631.0 208.0 644.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+790 0 obj[786 0 R
787 0 R
788 0 R
-789 0 R
-790 0 R
-791 0 R
-792 0 R
-793 0 R
+789 0 R]endobj
+791 0 obj<</S/URI/URI(http://www.thursby.com/)>>endobj
+792 0 obj<</Subtype/Link/Rect[91.9 621.8 131.3 634.8]/Border[0 0 0]/A 791 0 R>>endobj
+793 0 obj<</S/URI/URI(http://www.umich.edu/~rsug/netatalk/)>>endobj
+794 0 obj<</Subtype/Link/Rect[72.0 503.0 109.3 516.0]/Border[0 0 0]/A 793 0 R>>endobj
+795 0 obj<</S/URI/URI(http://www.cs.mu.oz.au/appletalk/atalk.html)>>endobj
+796 0 obj<</Subtype/Link/Rect[130.7 503.0 154.8 516.0]/Border[0 0 0]/A 795 0 R>>endobj
+797 0 obj<</S/URI/URI(http://www.eats.com/linux_mac_win.html)>>endobj
+798 0 obj<</Subtype/Link/Rect[72.0 476.6 258.1 489.6]/Border[0 0 0]/A 797 0 R>>endobj
+799 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
+800 0 obj<</Subtype/Link/Rect[325.6 367.8 544.5 380.8]/Border[0 0 0]/A 799 0 R>>endobj
+801 0 obj[792 0 R
794 0 R
-795 0 R
796 0 R
-797 0 R
798 0 R
-799 0 R
-800 0 R
-801 0 R
-802 0 R
-803 0 R
-804 0 R
+800 0 R]endobj
+802 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
+803 0 obj<</Subtype/Link/Rect[72.0 661.0 319.2 674.0]/Border[0 0 0]/A 802 0 R>>endobj
+804 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
+805 0 obj<</Subtype/Link/Rect[340.6 661.0 538.7 674.0]/Border[0 0 0]/A 804 0 R>>endobj
+806 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
+807 0 obj<</Subtype/Link/Rect[173.1 535.7 363.5 548.7]/Border[0 0 0]/A 806 0 R>>endobj
+808 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
+809 0 obj<</Subtype/Link/Rect[220.2 464.1 429.3 477.1]/Border[0 0 0]/A 808 0 R>>endobj
+810 0 obj[803 0 R
805 0 R
-806 0 R
807 0 R
-808 0 R
-809 0 R
-810 0 R
-811 0 R
-812 0 R
-813 0 R
-814 0 R
-815 0 R
-816 0 R
-817 0 R
-818 0 R
-819 0 R
+809 0 R]endobj
+811 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+812 0 obj<</Subtype/Link/Rect[218.7 347.8 275.0 360.8]/Border[0 0 0]/A 811 0 R>>endobj
+813 0 obj[812 0 R]endobj
+814 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+815 0 obj<</Subtype/Link/Rect[493.6 595.0 549.8 608.0]/Border[0 0 0]/A 814 0 R>>endobj
+816 0 obj[815 0 R]endobj
+817 0 obj<</S/Launch/F(samba@samba.org)>>endobj
+818 0 obj<</Subtype/Link/Rect[311.8 650.2 398.3 663.2]/Border[0 0 0]/A 817 0 R>>endobj
+819 0 obj<</S/URI/URI(mailto:samba-technical@samba.org)>>endobj
+820 0 obj<</Subtype/Link/Rect[126.4 637.0 258.8 650.0]/Border[0 0 0]/A 819 0 R>>endobj
+821 0 obj<</S/URI/URI(http://samba.org/samba/)>>endobj
+822 0 obj<</Subtype/Link/Rect[161.5 439.0 270.3 452.0]/Border[0 0 0]/A 821 0 R>>endobj
+823 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
+824 0 obj<</Subtype/Link/Rect[185.0 337.4 229.3 350.4]/Border[0 0 0]/A 823 0 R>>endobj
+825 0 obj[818 0 R
820 0 R
-821 0 R
822 0 R
-823 0 R
-824 0 R
-825 0 R
-826 0 R
-827 0 R
-828 0 R
-829 0 R
-830 0 R
-831 0 R]endobj
-833 0 obj<</Subtype/Link/Rect[174.2 721.0 212.4 734.0]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 560 0]>>endobj
-834 0 obj<</Subtype/Link/Rect[130.0 707.8 281.5 720.8]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 430 0]>>endobj
-835 0 obj<</Subtype/Link/Rect[174.2 694.6 231.4 707.6]/Border[0 0 0]/Dest[1625 0 R/XYZ 0 315 0]>>endobj
-836 0 obj<</Subtype/Link/Rect[174.2 681.4 202.0 694.4]/Border[0 0 0]/Dest[1627 0 R/XYZ 0 734 0]>>endobj
-837 0 obj<</Subtype/Link/Rect[85.8 668.2 245.2 681.2]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 734 0]>>endobj
-838 0 obj<</Subtype/Link/Rect[130.0 655.0 187.8 668.0]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 696 0]>>endobj
-839 0 obj<</Subtype/Link/Rect[130.0 641.8 245.8 654.8]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 581 0]>>endobj
-840 0 obj<</Subtype/Link/Rect[174.2 628.6 263.2 641.6]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 493 0]>>endobj
-841 0 obj<</Subtype/Link/Rect[174.2 615.4 239.9 628.4]/Border[0 0 0]/Dest[1629 0 R/XYZ 0 382 0]>>endobj
-842 0 obj<</Subtype/Link/Rect[85.8 602.2 200.3 615.2]/Border[0 0 0]/Dest[1633 0 R/XYZ 0 734 0]>>endobj
-843 0 obj<</Subtype/Link/Rect[85.8 589.0 206.4 602.0]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 734 0]>>endobj
-844 0 obj<</Subtype/Link/Rect[130.0 575.8 191.4 588.8]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 696 0]>>endobj
-845 0 obj<</Subtype/Link/Rect[130.0 562.6 196.6 575.6]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 449 0]>>endobj
-846 0 obj<</Subtype/Link/Rect[130.0 549.4 174.6 562.4]/Border[0 0 0]/Dest[1635 0 R/XYZ 0 189 0]>>endobj
-847 0 obj<</Subtype/Link/Rect[130.0 536.2 174.0 549.2]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 639 0]>>endobj
-848 0 obj<</Subtype/Link/Rect[130.0 523.0 173.4 536.0]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 458 0]>>endobj
-849 0 obj<</Subtype/Link/Rect[130.0 509.8 175.2 522.8]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 383 0]>>endobj
-850 0 obj<</Subtype/Link/Rect[130.0 496.6 177.1 509.6]/Border[0 0 0]/Dest[1637 0 R/XYZ 0 215 0]>>endobj
-851 0 obj<</Subtype/Link/Rect[130.0 483.4 188.1 496.4]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 734 0]>>endobj
-852 0 obj<</Subtype/Link/Rect[130.0 470.2 186.8 483.2]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 605 0]>>endobj
-853 0 obj<</Subtype/Link/Rect[135.5 457.0 196.0 470.0]/Border[0 0 0]/Dest[1639 0 R/XYZ 0 530 0]>>endobj
-854 0 obj<</Subtype/Link/Rect[85.8 443.8 196.7 456.8]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 734 0]>>endobj
-855 0 obj<</Subtype/Link/Rect[130.0 430.6 188.6 443.6]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 696 0]>>endobj
-856 0 obj<</Subtype/Link/Rect[130.0 417.4 197.5 430.4]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 463 0]>>endobj
-857 0 obj<</Subtype/Link/Rect[174.2 404.2 241.8 417.2]/Border[0 0 0]/Dest[1643 0 R/XYZ 0 160 0]>>endobj
-858 0 obj<</Subtype/Link/Rect[174.2 391.0 262.2 404.0]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 734 0]>>endobj
-859 0 obj<</Subtype/Link/Rect[174.2 377.8 236.6 390.8]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 662 0]>>endobj
-860 0 obj<</Subtype/Link/Rect[174.2 364.6 212.7 377.6]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 590 0]>>endobj
-861 0 obj<</Subtype/Link/Rect[130.0 351.4 214.3 364.4]/Border[0 0 0]/Dest[1645 0 R/XYZ 0 426 0]>>endobj
-862 0 obj[833 0 R
-834 0 R
-835 0 R
-836 0 R
-837 0 R
-838 0 R
-839 0 R
-840 0 R
-841 0 R
-842 0 R
-843 0 R
-844 0 R
-845 0 R
-846 0 R
-847 0 R
-848 0 R
-849 0 R
-850 0 R
-851 0 R
-852 0 R
-853 0 R
-854 0 R
-855 0 R
-856 0 R
-857 0 R
-858 0 R
-859 0 R
-860 0 R
-861 0 R]endobj
-863 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-864 0 obj<</Subtype/Link/Rect[174.0 562.6 270.6 575.6]/Border[0 0 0]/A 863 0 R>>endobj
-865 0 obj<</S/Launch/F(#PASSWORDLEVEL)>>endobj
-866 0 obj<</Subtype/Link/Rect[72.0 300.6 153.0 311.6]/Border[0 0 0]/A 865 0 R>>endobj
-867 0 obj<</S/Launch/F(#USERNAMELEVEL)>>endobj
-868 0 obj<</Subtype/Link/Rect[72.0 289.8 147.6 300.8]/Border[0 0 0]/A 867 0 R>>endobj
-869 0 obj[864 0 R
-866 0 R
-868 0 R]endobj
-870 0 obj<</S/Launch/F(winbind.html)>>endobj
-871 0 obj<</Subtype/Link/Rect[503.4 161.0 544.6 174.0]/Border[0 0 0]/A 870 0 R>>endobj
-872 0 obj<</S/Launch/F(winbind.html)>>endobj
-873 0 obj<</Subtype/Link/Rect[72.0 147.8 115.4 160.8]/Border[0 0 0]/A 872 0 R>>endobj
-874 0 obj[871 0 R
-873 0 R]endobj
-875 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-876 0 obj<</Subtype/Link/Rect[493.0 75.0 545.8 88.0]/Border[0 0 0]/A 875 0 R>>endobj
-877 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-878 0 obj<</Subtype/Link/Rect[72.0 61.8 98.4 74.8]/Border[0 0 0]/A 877 0 R>>endobj
-879 0 obj[876 0 R
-878 0 R]endobj
-880 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-881 0 obj<</Subtype/Link/Rect[356.1 655.0 428.7 668.0]/Border[0 0 0]/A 880 0 R>>endobj
-882 0 obj<</S/Launch/F(#FORCESECURITYMODE)>>endobj
-883 0 obj<</Subtype/Link/Rect[424.3 602.2 549.7 615.2]/Border[0 0 0]/A 882 0 R>>endobj
-884 0 obj<</S/Launch/F(#FORCECREATEMODE)>>endobj
-885 0 obj<</Subtype/Link/Rect[356.1 523.0 468.3 536.0]/Border[0 0 0]/A 884 0 R>>endobj
-886 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-887 0 obj<</Subtype/Link/Rect[72.0 245.8 144.6 258.8]/Border[0 0 0]/A 886 0 R>>endobj
-888 0 obj[881 0 R
-883 0 R
-885 0 R
-887 0 R]endobj
-889 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
-890 0 obj<</Subtype/Link/Rect[118.1 89.0 222.3 102.0]/Border[0 0 0]/A 889 0 R>>endobj
-891 0 obj[890 0 R]endobj
-892 0 obj<</S/Launch/F(#OBEYPAMRESTRICTIONS)>>endobj
-893 0 obj<</Subtype/Link/Rect[235.4 659.0 332.9 672.0]/Border[0 0 0]/A 892 0 R>>endobj
-894 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-895 0 obj<</Subtype/Link/Rect[338.7 579.8 449.4 592.8]/Border[0 0 0]/A 894 0 R>>endobj
-896 0 obj[893 0 R
-895 0 R]endobj
-897 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
-898 0 obj<</Subtype/Link/Rect[72.0 586.6 183.5 599.6]/Border[0 0 0]/A 897 0 R>>endobj
-899 0 obj<</S/Launch/F(#HOSTMSDFS)>>endobj
-900 0 obj<</Subtype/Link/Rect[345.1 507.4 417.7 520.4]/Border[0 0 0]/A 899 0 R>>endobj
-901 0 obj<</S/Launch/F(#MSDFSROOT)>>endobj
-902 0 obj<</Subtype/Link/Rect[380.8 494.2 453.4 507.2]/Border[0 0 0]/A 901 0 R>>endobj
-903 0 obj[898 0 R
-900 0 R
-902 0 R]endobj
-904 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
-905 0 obj<</Subtype/Link/Rect[143.7 544.6 280.3 557.6]/Border[0 0 0]/A 904 0 R>>endobj
-906 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
-907 0 obj<</Subtype/Link/Rect[218.6 518.2 341.1 531.2]/Border[0 0 0]/A 906 0 R>>endobj
-908 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
-909 0 obj<</Subtype/Link/Rect[72.0 333.4 355.9 346.4]/Border[0 0 0]/A 908 0 R>>endobj
-910 0 obj[905 0 R
-907 0 R
-909 0 R]endobj
-911 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-912 0 obj<</Subtype/Link/Rect[91.9 445.0 157.9 458.0]/Border[0 0 0]/A 911 0 R>>endobj
-913 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-914 0 obj<</Subtype/Link/Rect[184.4 431.8 285.8 444.8]/Border[0 0 0]/A 913 0 R>>endobj
-915 0 obj<</S/Launch/F(#GUESTOK)>>endobj
-916 0 obj<</Subtype/Link/Rect[160.6 405.4 228.6 418.4]/Border[0 0 0]/A 915 0 R>>endobj
-917 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-918 0 obj<</Subtype/Link/Rect[501.3 291.5 536.7 304.5]/Border[0 0 0]/A 917 0 R>>endobj
-919 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-920 0 obj<</Subtype/Link/Rect[94.2 278.3 174.1 291.3]/Border[0 0 0]/A 919 0 R>>endobj
-921 0 obj[912 0 R
-914 0 R
-916 0 R
-918 0 R
-920 0 R]endobj
-922 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
-923 0 obj<</Subtype/Link/Rect[451.3 680.0 497.5 693.0]/Border[0 0 0]/A 922 0 R>>endobj
-924 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
-925 0 obj<</Subtype/Link/Rect[130.2 666.8 163.2 679.8]/Border[0 0 0]/A 924 0 R>>endobj
-926 0 obj[923 0 R
-925 0 R]endobj
-927 0 obj<</S/Launch/F(rpcclient.1.html)>>endobj
-928 0 obj<</Subtype/Link/Rect[233.6 664.6 379.3 677.6]/Border[0 0 0]/A 927 0 R>>endobj
-929 0 obj<</S/Launch/F(#SHOWADDPRINTERWIZARD)>>endobj
-930 0 obj<</Subtype/Link/Rect[108.0 254.6 299.4 267.6]/Border[0 0 0]/A 929 0 R>>endobj
-931 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-932 0 obj<</Subtype/Link/Rect[453.9 228.2 526.5 241.2]/Border[0 0 0]/A 931 0 R>>endobj
-933 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-934 0 obj<</Subtype/Link/Rect[72.0 215.0 118.2 228.0]/Border[0 0 0]/A 933 0 R>>endobj
-935 0 obj<</S/Launch/F(#DELETEPRINTERCOMMAND)>>endobj
-936 0 obj<</Subtype/Link/Rect[189.3 109.4 334.5 122.4]/Border[0 0 0]/A 935 0 R>>endobj
-937 0 obj<</S/Launch/F(#ADDPRINTERCOMMAN)>>endobj
-938 0 obj<</Subtype/Link/Rect[200.6 83.0 326.0 96.0]/Border[0 0 0]/A 937 0 R>>endobj
-939 0 obj[928 0 R
-930 0 R
-932 0 R
-934 0 R
-936 0 R
-938 0 R]endobj
-940 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-941 0 obj<</Subtype/Link/Rect[451.4 721.0 510.8 734.0]/Border[0 0 0]/A 940 0 R>>endobj
-942 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-943 0 obj<</Subtype/Link/Rect[72.0 707.8 118.2 720.8]/Border[0 0 0]/A 942 0 R>>endobj
-944 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-945 0 obj<</Subtype/Link/Rect[297.8 632.6 437.4 645.6]/Border[0 0 0]/A 944 0 R>>endobj
-946 0 obj[941 0 R
-943 0 R
-945 0 R]endobj
-947 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
-948 0 obj<</Subtype/Link/Rect[197.9 199.0 310.1 212.0]/Border[0 0 0]/A 947 0 R>>endobj
-949 0 obj[948 0 R]endobj
-950 0 obj<</S/URI/URI(http://samba.org/)>>endobj
-951 0 obj<</Subtype/Link/Rect[151.1 289.4 262.3 302.4]/Border[0 0 0]/A 950 0 R>>endobj
-952 0 obj[951 0 R]endobj
-953 0 obj<</S/Launch/F(winbindd.8.html)>>endobj
-954 0 obj<</Subtype/Link/Rect[306.3 76.6 363.4 89.6]/Border[0 0 0]/A 953 0 R>>endobj
-955 0 obj[954 0 R]endobj
-956 0 obj<</S/Launch/F(#WINBINDSEPARATOR)>>endobj
-957 0 obj<</Subtype/Link/Rect[99.0 690.6 190.8 701.6]/Border[0 0 0]/A 956 0 R>>endobj
-958 0 obj<</S/Launch/F(#WINBINDUID)>>endobj
-959 0 obj<</Subtype/Link/Rect[99.0 669.0 158.4 680.0]/Border[0 0 0]/A 958 0 R>>endobj
-960 0 obj<</S/Launch/F(#WINBINDGID)>>endobj
-961 0 obj<</Subtype/Link/Rect[99.0 647.4 158.4 658.4]/Border[0 0 0]/A 960 0 R>>endobj
-962 0 obj<</S/Launch/F(#WINBINDENUMUSERS)>>endobj
-963 0 obj<</Subtype/Link/Rect[99.0 625.8 196.2 636.8]/Border[0 0 0]/A 962 0 R>>endobj
-964 0 obj<</S/Launch/F(#WINBINDENUMGROUP)>>endobj
-965 0 obj<</Subtype/Link/Rect[99.0 615.0 201.6 626.0]/Border[0 0 0]/A 964 0 R>>endobj
-966 0 obj<</S/Launch/F(#TEMPLATEHOMEDIR)>>endobj
-967 0 obj<</Subtype/Link/Rect[99.0 593.4 185.4 604.4]/Border[0 0 0]/A 966 0 R>>endobj
-968 0 obj<</S/Launch/F(#TEMPLATESHELL)>>endobj
-969 0 obj<</Subtype/Link/Rect[99.0 582.6 174.6 593.6]/Border[0 0 0]/A 968 0 R>>endobj
-970 0 obj[957 0 R
-959 0 R
-961 0 R
-963 0 R
-965 0 R
-967 0 R
-969 0 R]endobj
-971 0 obj<</S/URI/URI(http://www.css.tayloru.edu/~elorimer/databasefs/index.php)>>endobj
-972 0 obj<</Subtype/Link/Rect[97.1 272.5 360.6 285.5]/Border[0 0 0]/A 971 0 R>>endobj
-973 0 obj<</S/URI/URI(mailto:elorimer@css.tayloru.edu)>>endobj
-974 0 obj<</Subtype/Link/Rect[84.8 246.1 144.7 259.1]/Border[0 0 0]/A 973 0 R>>endobj
-975 0 obj[972 0 R
-974 0 R]endobj
-976 0 obj<</S/URI/URI(http://www.openantivirus.org/)>>endobj
-977 0 obj<</Subtype/Link/Rect[97.1 691.0 233.0 704.0]/Border[0 0 0]/A 976 0 R>>endobj
-978 0 obj[977 0 R]endobj
-979 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
-980 0 obj<</Subtype/Link/Rect[354.3 597.4 500.7 610.4]/Border[0 0 0]/A 979 0 R>>endobj
-981 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
-982 0 obj<</Subtype/Link/Rect[135.9 397.8 283.2 410.8]/Border[0 0 0]/A 981 0 R>>endobj
-983 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
-984 0 obj<</Subtype/Link/Rect[391.6 286.6 498.2 299.6]/Border[0 0 0]/A 983 0 R>>endobj
-985 0 obj[980 0 R
-982 0 R
-984 0 R]endobj
-986 0 obj<</Subtype/Link/Rect[85.8 670.6 136.2 683.6]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 734 0]>>endobj
-987 0 obj<</Subtype/Link/Rect[130.0 657.4 162.1 670.4]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 655 0]>>endobj
-988 0 obj<</Subtype/Link/Rect[130.0 644.2 177.7 657.2]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 408 0]>>endobj
-989 0 obj<</Subtype/Link/Rect[130.0 631.0 158.4 644.0]/Border[0 0 0]/Dest[1651 0 R/XYZ 0 293 0]>>endobj
-990 0 obj<</Subtype/Link/Rect[130.0 617.8 260.5 630.8]/Border[0 0 0]/Dest[1653 0 R/XYZ 0 228 0]>>endobj
-991 0 obj<</Subtype/Link/Rect[85.8 604.6 221.1 617.6]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 734 0]>>endobj
-992 0 obj<</Subtype/Link/Rect[130.0 591.4 216.2 604.4]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 668 0]>>endobj
-993 0 obj<</Subtype/Link/Rect[130.0 578.2 181.3 591.2]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 461 0]>>endobj
-994 0 obj<</Subtype/Link/Rect[174.2 565.0 533.6 578.0]/Border[0 0 0]/Dest[1655 0 R/XYZ 0 427 0]>>endobj
-995 0 obj<</Subtype/Link/Rect[174.2 551.8 536.9 564.8]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 734 0]>>endobj
-996 0 obj<</Subtype/Link/Rect[174.2 538.6 490.2 551.6]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 523 0]>>endobj
-997 0 obj<</Subtype/Link/Rect[174.2 525.4 459.3 538.4]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 408 0]>>endobj
-998 0 obj<</Subtype/Link/Rect[130.0 512.2 245.8 525.2]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 151 0]>>endobj
-999 0 obj<</Subtype/Link/Rect[174.2 499.0 351.5 512.0]/Border[0 0 0]/Dest[1657 0 R/XYZ 0 118 0]>>endobj
-1000 0 obj<</Subtype/Link/Rect[174.2 485.8 351.2 498.8]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 626 0]>>endobj
-1001 0 obj<</Subtype/Link/Rect[174.2 472.6 332.5 485.6]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 475 0]>>endobj
-1002 0 obj<</Subtype/Link/Rect[174.2 459.4 301.4 472.4]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 377 0]>>endobj
-1003 0 obj<</Subtype/Link/Rect[130.0 446.2 205.6 459.2]/Border[0 0 0]/Dest[1659 0 R/XYZ 0 292 0]>>endobj
-1004 0 obj<</Subtype/Link/Rect[130.0 433.0 265.9 446.0]/Border[0 0 0]/Dest[1661 0 R/XYZ 0 718 0]>>endobj
-1005 0 obj<</Subtype/Link/Rect[85.8 419.8 157.2 432.8]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 734 0]>>endobj
-1006 0 obj<</Subtype/Link/Rect[130.0 406.6 187.8 419.6]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 696 0]>>endobj
-1007 0 obj<</Subtype/Link/Rect[130.0 393.4 188.7 406.4]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 423 0]>>endobj
-1008 0 obj<</Subtype/Link/Rect[130.0 380.2 189.9 393.2]/Border[0 0 0]/Dest[1663 0 R/XYZ 0 282 0]>>endobj
-1009 0 obj<</Subtype/Link/Rect[130.0 367.0 198.4 380.0]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 613 0]>>endobj
-1010 0 obj<</Subtype/Link/Rect[130.0 353.8 269.0 366.8]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 260 0]>>endobj
-1011 0 obj<</Subtype/Link/Rect[130.0 340.6 167.6 353.6]/Border[0 0 0]/Dest[1665 0 R/XYZ 0 159 0]>>endobj
-1012 0 obj<</Subtype/Link/Rect[85.8 327.4 224.5 340.4]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 734 0]>>endobj
-1013 0 obj<</Subtype/Link/Rect[130.0 314.2 187.8 327.2]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 696 0]>>endobj
-1014 0 obj<</Subtype/Link/Rect[130.0 301.0 188.4 314.0]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 529 0]>>endobj
-1015 0 obj<</Subtype/Link/Rect[130.0 287.8 155.4 300.8]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 199 0]>>endobj
-1016 0 obj<</Subtype/Link/Rect[174.2 274.6 203.6 287.6]/Border[0 0 0]/Dest[1667 0 R/XYZ 0 165 0]>>endobj
-1017 0 obj<</Subtype/Link/Rect[174.2 261.4 203.6 274.4]/Border[0 0 0]/Dest[1669 0 R/XYZ 0 734 0]>>endobj
-1018 0 obj<</Subtype/Link/Rect[174.2 248.2 203.6 261.2]/Border[0 0 0]/Dest[1669 0 R/XYZ 0 530 0]>>endobj
-1019 0 obj<</Subtype/Link/Rect[174.2 235.0 203.6 248.0]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 626 0]>>endobj
-1020 0 obj<</Subtype/Link/Rect[174.2 221.8 203.6 234.8]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 475 0]>>endobj
-1021 0 obj<</Subtype/Link/Rect[174.2 208.6 203.6 221.6]/Border[0 0 0]/Dest[1671 0 R/XYZ 0 351 0]>>endobj
-1022 0 obj<</Subtype/Link/Rect[174.2 195.4 203.6 208.4]/Border[0 0 0]/Dest[1673 0 R/XYZ 0 734 0]>>endobj
-1023 0 obj<</Subtype/Link/Rect[174.2 182.2 203.6 195.2]/Border[0 0 0]/Dest[1673 0 R/XYZ 0 371 0]>>endobj
-1024 0 obj<</Subtype/Link/Rect[174.2 169.0 203.6 182.0]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 705 0]>>endobj
-1025 0 obj<</Subtype/Link/Rect[179.8 155.8 214.6 168.8]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 515 0]>>endobj
-1026 0 obj<</Subtype/Link/Rect[179.8 142.6 214.6 155.6]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 377 0]>>endobj
-1027 0 obj<</Subtype/Link/Rect[130.0 129.4 227.5 142.4]/Border[0 0 0]/Dest[1675 0 R/XYZ 0 239 0]>>endobj
-1028 0 obj[986 0 R
-987 0 R
-988 0 R
-989 0 R
-990 0 R
-991 0 R
-992 0 R
-993 0 R
-994 0 R
-995 0 R
-996 0 R
-997 0 R
-998 0 R
-999 0 R
-1000 0 R
-1001 0 R
-1002 0 R
-1003 0 R
-1004 0 R
-1005 0 R
-1006 0 R
-1007 0 R
-1008 0 R
-1009 0 R
-1010 0 R
-1011 0 R
-1012 0 R
-1013 0 R
-1014 0 R
-1015 0 R
-1016 0 R
-1017 0 R
-1018 0 R
-1019 0 R
-1020 0 R
-1021 0 R
-1022 0 R
-1023 0 R
-1024 0 R
-1025 0 R
-1026 0 R
-1027 0 R]endobj
-1029 0 obj<</S/URI/URI(http://www.thursby.com/)>>endobj
-1030 0 obj<</Subtype/Link/Rect[91.9 621.8 131.3 634.8]/Border[0 0 0]/A 1029 0 R>>endobj
-1031 0 obj<</S/URI/URI(http://www.umich.edu/~rsug/netatalk/)>>endobj
-1032 0 obj<</Subtype/Link/Rect[72.0 503.0 109.3 516.0]/Border[0 0 0]/A 1031 0 R>>endobj
-1033 0 obj<</S/URI/URI(http://www.cs.mu.oz.au/appletalk/atalk.html)>>endobj
-1034 0 obj<</Subtype/Link/Rect[130.7 503.0 154.8 516.0]/Border[0 0 0]/A 1033 0 R>>endobj
-1035 0 obj<</S/URI/URI(http://www.eats.com/linux_mac_win.html)>>endobj
-1036 0 obj<</Subtype/Link/Rect[72.0 476.6 258.1 489.6]/Border[0 0 0]/A 1035 0 R>>endobj
-1037 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
-1038 0 obj<</Subtype/Link/Rect[325.6 367.8 544.5 380.8]/Border[0 0 0]/A 1037 0 R>>endobj
-1039 0 obj[1030 0 R
-1032 0 R
-1034 0 R
-1036 0 R
-1038 0 R]endobj
-1040 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
-1041 0 obj<</Subtype/Link/Rect[72.0 661.0 319.2 674.0]/Border[0 0 0]/A 1040 0 R>>endobj
-1042 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
-1043 0 obj<</Subtype/Link/Rect[340.6 661.0 538.7 674.0]/Border[0 0 0]/A 1042 0 R>>endobj
-1044 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
-1045 0 obj<</Subtype/Link/Rect[173.1 538.6 363.5 551.6]/Border[0 0 0]/A 1044 0 R>>endobj
-1046 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
-1047 0 obj<</Subtype/Link/Rect[220.2 450.2 429.3 463.2]/Border[0 0 0]/A 1046 0 R>>endobj
-1048 0 obj[1041 0 R
-1043 0 R
-1045 0 R
-1047 0 R]endobj
-1049 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-1050 0 obj<</Subtype/Link/Rect[218.7 321.4 274.9 334.4]/Border[0 0 0]/A 1049 0 R>>endobj
-1051 0 obj[1050 0 R]endobj
-1052 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-1053 0 obj<</Subtype/Link/Rect[493.6 579.8 549.8 592.8]/Border[0 0 0]/A 1052 0 R>>endobj
-1054 0 obj[1053 0 R]endobj
-1055 0 obj<</S/Launch/F(samba@samba.org)>>endobj
-1056 0 obj<</Subtype/Link/Rect[311.8 650.2 398.3 663.2]/Border[0 0 0]/A 1055 0 R>>endobj
-1057 0 obj<</S/URI/URI(mailto:samba-technical@samba.org)>>endobj
-1058 0 obj<</Subtype/Link/Rect[126.4 637.0 258.8 650.0]/Border[0 0 0]/A 1057 0 R>>endobj
-1059 0 obj<</S/URI/URI(http://samba.org/samba/)>>endobj
-1060 0 obj<</Subtype/Link/Rect[161.5 439.0 270.3 452.0]/Border[0 0 0]/A 1059 0 R>>endobj
-1061 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
-1062 0 obj<</Subtype/Link/Rect[185.0 337.4 229.3 350.4]/Border[0 0 0]/A 1061 0 R>>endobj
-1063 0 obj[1056 0 R
-1058 0 R
-1060 0 R
-1062 0 R]endobj
-1064 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
-1065 0 obj<</Subtype/Link/Rect[164.2 180.2 250.8 193.2]/Border[0 0 0]/A 1064 0 R>>endobj
-1066 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
-1067 0 obj<</Subtype/Link/Rect[233.0 167.0 338.7 180.0]/Border[0 0 0]/A 1066 0 R>>endobj
-1068 0 obj[1065 0 R
-1067 0 R]endobj
-1069 0 obj<</Dests 1070 0 R>>endobj
-1070 0 obj<</Kids[1071 0 R]>>endobj
-1071 0 obj<</Limits[(15)(winbind)]/Names[(15)1072 0 R(16)1073 0 R(29)1074 0 R(3)1075 0 R(4)1076 0 R(8)1077 0 R(9)1078 0 R(ads)1079 0 R(aen100)1080 0 R(aen1100)1081 0 R(aen1126)1082 0 R(aen1145)1083 0 R(aen1153)1084 0 R(aen1161)1085 0 R(aen1169)1086 0 R(aen1176)1087 0 R(aen1212)1088 0 R(aen1225)1089 0 R(aen1228)1090 0 R(aen1238)1091 0 R(aen1274)1092 0 R(aen1278)1093 0 R(aen1286)1094 0 R(aen1289)1095 0 R(aen129)1096 0 R(aen1292)1097 0 R(aen1295)1098 0 R(aen1300)1099 0 R(aen1317)1100 0 R(aen1321)1101 0 R(aen1339)1102 0 R(aen1346)1103 0 R(aen1356)1104 0 R(aen1371)1105 0 R(aen1381)1106 0 R(aen1385)1107 0 R(aen1393)1108 0 R(aen1398)1109 0 R(aen1401)1110 0 R(aen1423)1111 0 R(aen145)1112 0 R(aen1478)1113 0 R(aen1481)1114 0 R(aen1499)1115 0 R(aen1513)1116 0 R(aen1535)1117 0 R(aen154)1118 0 R(aen1551)1119 0 R(aen1567)1120 0 R(aen1578)1121 0 R(aen1586)1122 0 R(aen1598)1123 0 R(aen1610)1124 0 R(aen1615)1125 0 R(aen1623)1126 0 R(aen1628)1127 0 R(aen1631)1128 0 R(aen1643)1129 0 R(aen1653)1130 0 R(aen1681)1131 0 R(aen1689)1132 0 R(aen170)1133 0 R(aen1706)1134 0 R(aen1713)1135 0 R(aen1718)1136 0 R(aen1723)1137 0 R(aen1744)1138 0 R(aen1748)1139 0 R(aen1759)1140 0 R(aen1779)1141 0 R(aen1794)1142 0 R(aen1808)1143 0 R(aen1815)1144 0 R(aen1837)1145 0 R(aen184)1146 0 R(aen189)1147 0 R(aen1901)1148 0 R(aen1922)1149 0 R(aen193)1150 0 R(aen196)1151 0 R(aen1966)1152 0 R(aen1973)1153 0 R(aen1993)1154 0 R(aen2028)1155 0 R(aen205)1156 0 R(aen2054)1157 0 R(aen2076)1158 0 R(aen2084)1159 0 R(aen21)1160 0 R(aen210)1161 0 R(aen2119)1162 0 R(aen2135)1163 0 R(aen2146)1164 0 R(aen2176)1165 0 R(aen2184)1166 0 R(aen2188)1167 0 R(aen219)1168 0 R(aen2198)1169 0 R(aen2201)1170 0 R(aen2205)1171 0 R(aen2227)1172 0 R(aen2229)1173 0 R(aen2245)1174 0 R(aen2254)1175 0 R(aen2262)1176 0 R(aen2290)1177 0 R(aen230)1178 0 R(aen2301)1179 0 R(aen2313)1180 0 R(aen2316)1181 0 R(aen2319)1182 0 R(aen2360)1183 0 R(aen2364)1184 0 R(aen2377)1185 0 R(aen238)1186 0 R(aen2384)1187 0 R(aen2388)1188 0 R(aen2393)1189 0 R(aen2397)1190 0 R(aen2400)1191 0 R(aen2416)1192 0 R(aen2424)1193 0 R(aen2428)1194 0 R(aen2431)1195 0 R(aen2438)1196 0 R(aen2451)1197 0 R(aen2465)1198 0 R(aen2476)1199 0 R(aen2495)1200 0 R(aen252)1201 0 R(aen2528)1202 0 R(aen2544)1203 0 R(aen2555)1204 0 R(aen257)1205 0 R(aen2591)1206 0 R(aen2593)1207 0 R(aen26)1208 0 R(aen2610)1209 0 R(aen2617)1210 0 R(aen2623)1211 0 R(aen2640)1212 0 R(aen2673)1213 0 R(aen268)1214 0 R(aen2680)1215 0 R(aen2690)1216 0 R(aen2700)1217 0 R(aen2704)1218 0 R(aen2713)1219 0 R(aen2720)1220 0 R(aen2725)1221 0 R(aen274)1222 0 R(aen2760)1223 0 R(aen2779)1224 0 R(aen2797)1225 0 R(aen2807)1226 0 R(aen2816)1227 0 R(aen2834)1228 0 R(aen2837)1229 0 R(aen2855)1230 0 R(aen2864)1231 0 R(aen2866)1232 0 R(aen2874)1233 0 R(aen2911)1234 0 R(aen2918)1235 0 R(aen2922)1236 0 R(aen2930)1237 0 R(aen2942)1238 0 R(aen2947)1239 0 R(aen2950)1240 0 R(aen2955)1241 0 R(aen3033)1242 0 R(aen3039)1243 0 R(aen3046)1244 0 R(aen3051)1245 0 R(aen3056)1246 0 R(aen3059)1247 0 R(aen3064)1248 0 R(aen3068)1249 0 R(aen3072)1250 0 R(aen3075)1251 0 R(aen3123)1252 0 R(aen3132)1253 0 R(aen3155)1254 0 R(aen3159)1255 0 R(aen3162)1256 0 R(aen3165)1257 0 R(aen3170)1258 0 R(aen324)1259 0 R(aen3251)1260 0 R(aen3257)1261 0 R(aen3261)1262 0 R(aen3290)1263 0 R(aen331)1264 0 R(aen3311)1265 0 R(aen3320)1266 0 R(aen3322)1267 0 R(aen3337)1268 0 R(aen3346)1269 0 R(aen3350)1270 0 R(aen3360)1271 0 R(aen3362)1272 0 R(aen3367)1273 0 R(aen3372)1274 0 R(aen3376)1275 0 R(aen3381)1276 0 R(aen3397)1277 0 R(aen3421)1278 0 R(aen3431)1279 0 R(aen3437)1280 0 R(aen3454)1281 0 R(aen346)1282 0 R(aen3464)1283 0 R(aen3467)1284 0 R(aen3490)1285 0 R(aen3495)1286 0 R(aen3505)1287 0 R(aen3507)1288 0 R(aen351)1289 0 R(aen3513)1290 0 R(aen3519)1291 0 R(aen3534)1292 0 R(aen3539)1293 0 R(aen3545)1294 0 R(aen3553)1295 0 R(aen357)1296 0 R(aen3579)1297 0 R(aen3596)1298 0 R(aen36)1299 0 R(aen3604)1300 0 R(aen3610)1301 0 R(aen3615)1302 0 R(aen388)1303 0 R(aen393)1304 0 R(aen396)1305 0 R(aen398)1306 0 R(aen4)1307 0 R(aen418)1308 0 R(aen447)1309 0 R(aen452)1310 0 R(aen464)1311 0 R(aen466)1312 0 R(aen483)1313 0 R(aen511)1314 0 R(aen516)1315 0 R(aen536)1316 0 R(aen606)1317 0 R(aen614)1318 0 R(aen616)1319 0 R(aen622)1320 0 R(aen632)1321 0 R(aen64)1322 0 R(aen649)1323 0 R(aen654)1324 0 R(aen662)1325 0 R(aen664)1326 0 R(aen670)1327 0 R(aen678)1328 0 R(aen68)1329 0 R(aen722)1330 0 R(aen728)1331 0 R(aen767)1332 0 R(aen8)1333 0 R(aen810)1334 0 R(aen82)1335 0 R(aen829)1336 0 R(aen870)1337 0 R(aen879)1338 0 R(aen894)1339 0 R(aen90)1340 0 R(aen942)1341 0 R(aen986)1342 0 R(appendixes)1343 0 R(browsing-quick)1344 0 R(bugreport)1345 0 R(cvs-access)1346 0 R(diagnosis)1347 0 R(domain-security)1348 0 R(groupmapping)1349 0 R(groupprofiles)1350 0 R(improved-browsing)1351 0 R(install)1352 0 R(integrate-ms-networks)1353 0 R(introduction)1354 0 R(msdfs)1355 0 R(optional)1356 0 R(other-clients)1357 0 R(pam)1358 0 R(passdb)1359 0 R(portability)1360 0 R(printing)1361 0 R(samba-bdc)1362 0 R(samba-howto-collection)1363 0 R(samba-howto-collection.html)1364 0 R(samba-pdc)1365 0 R(securitylevels)1366 0 R(speed)1367 0 R(type)1368 0 R(unix-permissions)1369 0 R(vfs)1370 0 R(winbind)1371 0 R]>>endobj
-1072 0 obj<</D[1509 0 R/XYZ 0 734 0]>>endobj
-1073 0 obj<</D[1511 0 R/XYZ 0 734 0]>>endobj
-1074 0 obj<</D[1649 0 R/XYZ 0 734 0]>>endobj
-1075 0 obj<</D[1399 0 R/XYZ 0 734 0]>>endobj
-1076 0 obj<</D[1401 0 R/XYZ 0 734 0]>>endobj
-1077 0 obj<</D[1449 0 R/XYZ 0 734 0]>>endobj
-1078 0 obj<</D[1451 0 R/XYZ 0 734 0]>>endobj
-1079 0 obj<</D[1497 0 R/XYZ 0 734 0]>>endobj
-1080 0 obj<</D[1409 0 R/XYZ 0 734 0]>>endobj
-1081 0 obj<</D[1475 0 R/XYZ 0 507 0]>>endobj
-1082 0 obj<</D[1477 0 R/XYZ 0 520 0]>>endobj
-1083 0 obj<</D[1479 0 R/XYZ 0 734 0]>>endobj
-1084 0 obj<</D[1479 0 R/XYZ 0 536 0]>>endobj
-1085 0 obj<</D[1479 0 R/XYZ 0 362 0]>>endobj
-1086 0 obj<</D[1479 0 R/XYZ 0 138 0]>>endobj
-1087 0 obj<</D[1481 0 R/XYZ 0 674 0]>>endobj
-1088 0 obj<</D[1483 0 R/XYZ 0 362 0]>>endobj
-1089 0 obj<</D[1485 0 R/XYZ 0 465 0]>>endobj
-1090 0 obj<</D[1485 0 R/XYZ 0 383 0]>>endobj
-1091 0 obj<</D[1487 0 R/XYZ 0 734 0]>>endobj
-1092 0 obj<</D[1491 0 R/XYZ 0 672 0]>>endobj
-1093 0 obj<</D[1491 0 R/XYZ 0 597 0]>>endobj
-1094 0 obj<</D[1491 0 R/XYZ 0 225 0]>>endobj
-1095 0 obj<</D[1493 0 R/XYZ 0 734 0]>>endobj
-1096 0 obj<</D[1409 0 R/XYZ 0 247 0]>>endobj
-1097 0 obj<</D[1493 0 R/XYZ 0 609 0]>>endobj
-1098 0 obj<</D[1493 0 R/XYZ 0 524 0]>>endobj
-1099 0 obj<</D[1493 0 R/XYZ 0 323 0]>>endobj
-1100 0 obj<</D[1495 0 R/XYZ 0 541 0]>>endobj
-1101 0 obj<</D[1495 0 R/XYZ 0 390 0]>>endobj
-1102 0 obj<</D[1497 0 R/XYZ 0 551 0]>>endobj
-1103 0 obj<</D[1497 0 R/XYZ 0 444 0]>>endobj
-1104 0 obj<</D[1497 0 R/XYZ 0 267 0]>>endobj
-1105 0 obj<</D[1499 0 R/XYZ 0 580 0]>>endobj
-1106 0 obj<</D[1499 0 R/XYZ 0 264 0]>>endobj
-1107 0 obj<</D[1499 0 R/XYZ 0 202 0]>>endobj
-1108 0 obj<</D[1501 0 R/XYZ 0 734 0]>>endobj
-1109 0 obj<</D[1501 0 R/XYZ 0 645 0]>>endobj
-1110 0 obj<</D[1501 0 R/XYZ 0 570 0]>>endobj
-1111 0 obj<</D[1503 0 R/XYZ 0 672 0]>>endobj
-1112 0 obj<</D[1411 0 R/XYZ 0 665 0]>>endobj
-1113 0 obj<</D[1505 0 R/XYZ 0 494 0]>>endobj
-1114 0 obj<</D[1505 0 R/XYZ 0 405 0]>>endobj
-1115 0 obj<</D[1509 0 R/XYZ 0 696 0]>>endobj
-1116 0 obj<</D[1517 0 R/XYZ 0 672 0]>>endobj
-1117 0 obj<</D[1517 0 R/XYZ 0 439 0]>>endobj
-1118 0 obj<</D[1411 0 R/XYZ 0 498 0]>>endobj
-1119 0 obj<</D[1517 0 R/XYZ 0 311 0]>>endobj
-1120 0 obj<</D[1519 0 R/XYZ 0 441 0]>>endobj
-1121 0 obj<</D[1519 0 R/XYZ 0 303 0]>>endobj
-1122 0 obj<</D[1519 0 R/XYZ 0 157 0]>>endobj
-1123 0 obj<</D[1521 0 R/XYZ 0 339 0]>>endobj
-1124 0 obj<</D[1523 0 R/XYZ 0 266 0]>>endobj
-1125 0 obj<</D[1525 0 R/XYZ 0 734 0]>>endobj
-1126 0 obj<</D[1527 0 R/XYZ 0 459 0]>>endobj
-1127 0 obj<</D[1527 0 R/XYZ 0 361 0]>>endobj
-1128 0 obj<</D[1527 0 R/XYZ 0 224 0]>>endobj
-1129 0 obj<</D[1529 0 R/XYZ 0 670 0]>>endobj
-1130 0 obj<</D[1529 0 R/XYZ 0 126 0]>>endobj
-1131 0 obj<</D[1533 0 R/XYZ 0 734 0]>>endobj
-1132 0 obj<</D[1533 0 R/XYZ 0 484 0]>>endobj
-1133 0 obj<</D[1411 0 R/XYZ 0 330 0]>>endobj
-1134 0 obj<</D[1533 0 R/XYZ 0 132 0]>>endobj
-1135 0 obj<</D[1535 0 R/XYZ 0 523 0]>>endobj
-1136 0 obj<</D[1535 0 R/XYZ 0 377 0]>>endobj
-1137 0 obj<</D[1535 0 R/XYZ 0 263 0]>>endobj
-1138 0 obj<</D[1537 0 R/XYZ 0 672 0]>>endobj
-1139 0 obj<</D[1537 0 R/XYZ 0 537 0]>>endobj
-1140 0 obj<</D[1537 0 R/XYZ 0 369 0]>>endobj
-1141 0 obj<</D[1539 0 R/XYZ 0 705 0]>>endobj
-1142 0 obj<</D[1539 0 R/XYZ 0 471 0]>>endobj
-1143 0 obj<</D[1539 0 R/XYZ 0 228 0]>>endobj
-1144 0 obj<</D[1541 0 R/XYZ 0 718 0]>>endobj
-1145 0 obj<</D[1541 0 R/XYZ 0 287 0]>>endobj
-1146 0 obj<</D[1413 0 R/XYZ 0 734 0]>>endobj
-1147 0 obj<</D[1413 0 R/XYZ 0 553 0]>>endobj
-1148 0 obj<</D[1545 0 R/XYZ 0 652 0]>>endobj
-1149 0 obj<</D[1547 0 R/XYZ 0 672 0]>>endobj
-1150 0 obj<</D[1413 0 R/XYZ 0 494 0]>>endobj
-1151 0 obj<</D[1413 0 R/XYZ 0 409 0]>>endobj
-1152 0 obj<</D[1549 0 R/XYZ 0 148 0]>>endobj
-1153 0 obj<</D[1551 0 R/XYZ 0 705 0]>>endobj
-1154 0 obj<</D[1553 0 R/XYZ 0 672 0]>>endobj
-1155 0 obj<</D[1555 0 R/XYZ 0 652 0]>>endobj
-1156 0 obj<</D[1415 0 R/XYZ 0 734 0]>>endobj
-1157 0 obj<</D[1557 0 R/XYZ 0 696 0]>>endobj
-1158 0 obj<</D[1557 0 R/XYZ 0 317 0]>>endobj
-1159 0 obj<</D[1557 0 R/XYZ 0 127 0]>>endobj
-1160 0 obj<</D[1399 0 R/XYZ 0 696 0]>>endobj
-1161 0 obj<</D[1415 0 R/XYZ 0 583 0]>>endobj
-1162 0 obj<</D[1561 0 R/XYZ 0 531 0]>>endobj
-1163 0 obj<</D[1563 0 R/XYZ 0 734 0]>>endobj
-1164 0 obj<</D[1563 0 R/XYZ 0 363 0]>>endobj
-1165 0 obj<</D[1565 0 R/XYZ 0 184 0]>>endobj
-1166 0 obj<</D[1567 0 R/XYZ 0 692 0]>>endobj
-1167 0 obj<</D[1567 0 R/XYZ 0 590 0]>>endobj
-1168 0 obj<</D[1415 0 R/XYZ 0 128 0]>>endobj
-1169 0 obj<</D[1567 0 R/XYZ 0 466 0]>>endobj
-1170 0 obj<</D[1567 0 R/XYZ 0 381 0]>>endobj
-1171 0 obj<</D[1567 0 R/XYZ 0 283 0]>>endobj
-1172 0 obj<</D[1569 0 R/XYZ 0 397 0]>>endobj
-1173 0 obj<</D[1569 0 R/XYZ 0 363 0]>>endobj
-1174 0 obj<</D[1571 0 R/XYZ 0 429 0]>>endobj
-1175 0 obj<</D[1573 0 R/XYZ 0 665 0]>>endobj
-1176 0 obj<</D[1573 0 R/XYZ 0 485 0]>>endobj
-1177 0 obj<</D[1575 0 R/XYZ 0 734 0]>>endobj
-1178 0 obj<</D[1419 0 R/XYZ 0 604 0]>>endobj
-1179 0 obj<</D[1575 0 R/XYZ 0 394 0]>>endobj
-1180 0 obj<</D[1577 0 R/XYZ 0 718 0]>>endobj
-1181 0 obj<</D[1577 0 R/XYZ 0 633 0]>>endobj
-1182 0 obj<</D[1577 0 R/XYZ 0 535 0]>>endobj
-1183 0 obj<</D[1579 0 R/XYZ 0 672 0]>>endobj
-1184 0 obj<</D[1579 0 R/XYZ 0 544 0]>>endobj
-1185 0 obj<</D[1579 0 R/XYZ 0 231 0]>>endobj
-1186 0 obj<</D[1419 0 R/XYZ 0 159 0]>>endobj
-1187 0 obj<</D[1581 0 R/XYZ 0 560 0]>>endobj
-1188 0 obj<</D[1581 0 R/XYZ 0 409 0]>>endobj
-1189 0 obj<</D[1581 0 R/XYZ 0 294 0]>>endobj
-1190 0 obj<</D[1583 0 R/XYZ 0 734 0]>>endobj
-1191 0 obj<</D[1583 0 R/XYZ 0 635 0]>>endobj
-1192 0 obj<</D[1583 0 R/XYZ 0 194 0]>>endobj
-1193 0 obj<</D[1585 0 R/XYZ 0 560 0]>>endobj
-1194 0 obj<</D[1585 0 R/XYZ 0 383 0]>>endobj
-1195 0 obj<</D[1585 0 R/XYZ 0 245 0]>>endobj
-1196 0 obj<</D[1587 0 R/XYZ 0 734 0]>>endobj
-1197 0 obj<</D[1587 0 R/XYZ 0 451 0]>>endobj
-1198 0 obj<</D[1587 0 R/XYZ 0 181 0]>>endobj
-1199 0 obj<</D[1589 0 R/XYZ 0 718 0]>>endobj
-1200 0 obj<</D[1589 0 R/XYZ 0 533 0]>>endobj
-1201 0 obj<</D[1421 0 R/XYZ 0 509 0]>>endobj
-1202 0 obj<</D[1589 0 R/XYZ 0 129 0]>>endobj
-1203 0 obj<</D[1591 0 R/XYZ 0 567 0]>>endobj
-1204 0 obj<</D[1591 0 R/XYZ 0 420 0]>>endobj
-1205 0 obj<</D[1421 0 R/XYZ 0 331 0]>>endobj
-1206 0 obj<</D[1593 0 R/XYZ 0 375 0]>>endobj
-1207 0 obj<</D[1593 0 R/XYZ 0 349 0]>>endobj
-1208 0 obj<</D[1405 0 R/XYZ 0 696 0]>>endobj
-1209 0 obj<</D[1595 0 R/XYZ 0 441 0]>>endobj
-1210 0 obj<</D[1597 0 R/XYZ 0 524 0]>>endobj
-1211 0 obj<</D[1597 0 R/XYZ 0 458 0]>>endobj
-1212 0 obj<</D[1597 0 R/XYZ 0 219 0]>>endobj
-1213 0 obj<</D[1599 0 R/XYZ 0 262 0]>>endobj
-1214 0 obj<</D[1423 0 R/XYZ 0 494 0]>>endobj
-1215 0 obj<</D[1603 0 R/XYZ 0 734 0]>>endobj
-1216 0 obj<</D[1603 0 R/XYZ 0 513 0]>>endobj
-1217 0 obj<</D[1605 0 R/XYZ 0 696 0]>>endobj
-1218 0 obj<</D[1605 0 R/XYZ 0 515 0]>>endobj
-1219 0 obj<</D[1605 0 R/XYZ 0 137 0]>>endobj
-1220 0 obj<</D[1607 0 R/XYZ 0 533 0]>>endobj
-1221 0 obj<</D[1607 0 R/XYZ 0 273 0]>>endobj
-1222 0 obj<</D[1423 0 R/XYZ 0 213 0]>>endobj
-1223 0 obj<</D[1613 0 R/XYZ 0 560 0]>>endobj
-1224 0 obj<</D[1615 0 R/XYZ 0 613 0]>>endobj
-1225 0 obj<</D[1617 0 R/XYZ 0 622 0]>>endobj
-1226 0 obj<</D[1617 0 R/XYZ 0 266 0]>>endobj
-1227 0 obj<</D[1619 0 R/XYZ 0 520 0]>>endobj
-1228 0 obj<</D[1621 0 R/XYZ 0 734 0]>>endobj
-1229 0 obj<</D[1621 0 R/XYZ 0 645 0]>>endobj
-1230 0 obj<</D[1623 0 R/XYZ 0 696 0]>>endobj
-1231 0 obj<</D[1623 0 R/XYZ 0 385 0]>>endobj
-1232 0 obj<</D[1623 0 R/XYZ 0 351 0]>>endobj
-1233 0 obj<</D[1623 0 R/XYZ 0 215 0]>>endobj
-1234 0 obj<</D[1625 0 R/XYZ 0 560 0]>>endobj
-1235 0 obj<</D[1625 0 R/XYZ 0 430 0]>>endobj
-1236 0 obj<</D[1625 0 R/XYZ 0 315 0]>>endobj
-1237 0 obj<</D[1627 0 R/XYZ 0 734 0]>>endobj
-1238 0 obj<</D[1629 0 R/XYZ 0 696 0]>>endobj
-1239 0 obj<</D[1629 0 R/XYZ 0 581 0]>>endobj
-1240 0 obj<</D[1629 0 R/XYZ 0 493 0]>>endobj
-1241 0 obj<</D[1629 0 R/XYZ 0 382 0]>>endobj
-1242 0 obj<</D[1635 0 R/XYZ 0 696 0]>>endobj
-1243 0 obj<</D[1635 0 R/XYZ 0 449 0]>>endobj
-1244 0 obj<</D[1635 0 R/XYZ 0 189 0]>>endobj
-1245 0 obj<</D[1637 0 R/XYZ 0 639 0]>>endobj
-1246 0 obj<</D[1637 0 R/XYZ 0 458 0]>>endobj
-1247 0 obj<</D[1637 0 R/XYZ 0 383 0]>>endobj
-1248 0 obj<</D[1637 0 R/XYZ 0 215 0]>>endobj
-1249 0 obj<</D[1639 0 R/XYZ 0 734 0]>>endobj
-1250 0 obj<</D[1639 0 R/XYZ 0 605 0]>>endobj
-1251 0 obj<</D[1639 0 R/XYZ 0 530 0]>>endobj
-1252 0 obj<</D[1643 0 R/XYZ 0 696 0]>>endobj
-1253 0 obj<</D[1643 0 R/XYZ 0 463 0]>>endobj
-1254 0 obj<</D[1643 0 R/XYZ 0 160 0]>>endobj
-1255 0 obj<</D[1645 0 R/XYZ 0 734 0]>>endobj
-1256 0 obj<</D[1645 0 R/XYZ 0 662 0]>>endobj
-1257 0 obj<</D[1645 0 R/XYZ 0 590 0]>>endobj
-1258 0 obj<</D[1645 0 R/XYZ 0 426 0]>>endobj
-1259 0 obj<</D[1427 0 R/XYZ 0 696 0]>>endobj
-1260 0 obj<</D[1651 0 R/XYZ 0 655 0]>>endobj
-1261 0 obj<</D[1651 0 R/XYZ 0 408 0]>>endobj
-1262 0 obj<</D[1651 0 R/XYZ 0 293 0]>>endobj
-1263 0 obj<</D[1653 0 R/XYZ 0 228 0]>>endobj
-1264 0 obj<</D[1427 0 R/XYZ 0 449 0]>>endobj
-1265 0 obj<</D[1655 0 R/XYZ 0 668 0]>>endobj
-1266 0 obj<</D[1655 0 R/XYZ 0 461 0]>>endobj
-1267 0 obj<</D[1655 0 R/XYZ 0 427 0]>>endobj
-1268 0 obj<</D[1657 0 R/XYZ 0 734 0]>>endobj
-1269 0 obj<</D[1657 0 R/XYZ 0 523 0]>>endobj
-1270 0 obj<</D[1657 0 R/XYZ 0 408 0]>>endobj
-1271 0 obj<</D[1657 0 R/XYZ 0 151 0]>>endobj
-1272 0 obj<</D[1657 0 R/XYZ 0 118 0]>>endobj
-1273 0 obj<</D[1659 0 R/XYZ 0 626 0]>>endobj
-1274 0 obj<</D[1659 0 R/XYZ 0 475 0]>>endobj
-1275 0 obj<</D[1659 0 R/XYZ 0 377 0]>>endobj
-1276 0 obj<</D[1659 0 R/XYZ 0 292 0]>>endobj
-1277 0 obj<</D[1661 0 R/XYZ 0 718 0]>>endobj
-1278 0 obj<</D[1663 0 R/XYZ 0 696 0]>>endobj
-1279 0 obj<</D[1663 0 R/XYZ 0 423 0]>>endobj
-1280 0 obj<</D[1663 0 R/XYZ 0 282 0]>>endobj
-1281 0 obj<</D[1665 0 R/XYZ 0 613 0]>>endobj
-1282 0 obj<</D[1429 0 R/XYZ 0 676 0]>>endobj
-1283 0 obj<</D[1665 0 R/XYZ 0 260 0]>>endobj
-1284 0 obj<</D[1665 0 R/XYZ 0 159 0]>>endobj
-1285 0 obj<</D[1667 0 R/XYZ 0 696 0]>>endobj
-1286 0 obj<</D[1667 0 R/XYZ 0 529 0]>>endobj
-1287 0 obj<</D[1667 0 R/XYZ 0 199 0]>>endobj
-1288 0 obj<</D[1667 0 R/XYZ 0 165 0]>>endobj
-1289 0 obj<</D[1429 0 R/XYZ 0 559 0]>>endobj
-1290 0 obj<</D[1669 0 R/XYZ 0 734 0]>>endobj
-1291 0 obj<</D[1669 0 R/XYZ 0 530 0]>>endobj
-1292 0 obj<</D[1671 0 R/XYZ 0 626 0]>>endobj
-1293 0 obj<</D[1671 0 R/XYZ 0 475 0]>>endobj
-1294 0 obj<</D[1671 0 R/XYZ 0 351 0]>>endobj
-1295 0 obj<</D[1673 0 R/XYZ 0 734 0]>>endobj
-1296 0 obj<</D[1429 0 R/XYZ 0 452 0]>>endobj
-1297 0 obj<</D[1673 0 R/XYZ 0 371 0]>>endobj
-1298 0 obj<</D[1675 0 R/XYZ 0 705 0]>>endobj
-1299 0 obj<</D[1405 0 R/XYZ 0 568 0]>>endobj
-1300 0 obj<</D[1675 0 R/XYZ 0 515 0]>>endobj
-1301 0 obj<</D[1675 0 R/XYZ 0 377 0]>>endobj
-1302 0 obj<</D[1675 0 R/XYZ 0 239 0]>>endobj
-1303 0 obj<</D[1431 0 R/XYZ 0 639 0]>>endobj
-1304 0 obj<</D[1431 0 R/XYZ 0 551 0]>>endobj
-1305 0 obj<</D[1431 0 R/XYZ 0 475 0]>>endobj
-1306 0 obj<</D[1431 0 R/XYZ 0 442 0]>>endobj
-1307 0 obj<</D[1389 0 R/XYZ 0 696 0]>>endobj
-1308 0 obj<</D[1431 0 R/XYZ 0 185 0]>>endobj
-1309 0 obj<</D[1433 0 R/XYZ 0 349 0]>>endobj
-1310 0 obj<</D[1433 0 R/XYZ 0 251 0]>>endobj
-1311 0 obj<</D[1435 0 R/XYZ 0 547 0]>>endobj
-1312 0 obj<</D[1435 0 R/XYZ 0 517 0]>>endobj
-1313 0 obj<</D[1437 0 R/XYZ 0 632 0]>>endobj
-1314 0 obj<</D[1439 0 R/XYZ 0 734 0]>>endobj
-1315 0 obj<</D[1439 0 R/XYZ 0 543 0]>>endobj
-1316 0 obj<</D[1439 0 R/XYZ 0 164 0]>>endobj
-1317 0 obj<</D[1441 0 R/XYZ 0 151 0]>>endobj
-1318 0 obj<</D[1443 0 R/XYZ 0 322 0]>>endobj
-1319 0 obj<</D[1443 0 R/XYZ 0 289 0]>>endobj
-1320 0 obj<</D[1443 0 R/XYZ 0 191 0]>>endobj
-1321 0 obj<</D[1445 0 R/XYZ 0 734 0]>>endobj
-1322 0 obj<</D[1405 0 R/XYZ 0 163 0]>>endobj
-1323 0 obj<</D[1447 0 R/XYZ 0 679 0]>>endobj
-1324 0 obj<</D[1447 0 R/XYZ 0 528 0]>>endobj
-1325 0 obj<</D[1447 0 R/XYZ 0 390 0]>>endobj
-1326 0 obj<</D[1447 0 R/XYZ 0 357 0]>>endobj
-1327 0 obj<</D[1447 0 R/XYZ 0 272 0]>>endobj
-1328 0 obj<</D[1449 0 R/XYZ 0 696 0]>>endobj
-1329 0 obj<</D[1407 0 R/XYZ 0 734 0]>>endobj
-1330 0 obj<</D[1457 0 R/XYZ 0 672 0]>>endobj
-1331 0 obj<</D[1457 0 R/XYZ 0 584 0]>>endobj
-1332 0 obj<</D[1459 0 R/XYZ 0 718 0]>>endobj
-1333 0 obj<</D[1391 0 R/XYZ 0 734 0]>>endobj
-1334 0 obj<</D[1461 0 R/XYZ 0 613 0]>>endobj
-1335 0 obj<</D[1407 0 R/XYZ 0 385 0]>>endobj
-1336 0 obj<</D[1461 0 R/XYZ 0 227 0]>>endobj
-1337 0 obj<</D[1463 0 R/XYZ 0 315 0]>>endobj
-1338 0 obj<</D[1465 0 R/XYZ 0 734 0]>>endobj
-1339 0 obj<</D[1465 0 R/XYZ 0 385 0]>>endobj
-1340 0 obj<</D[1407 0 R/XYZ 0 257 0]>>endobj
-1341 0 obj<</D[1467 0 R/XYZ 0 129 0]>>endobj
-1342 0 obj<</D[1469 0 R/XYZ 0 124 0]>>endobj
-1343 0 obj<</D[1647 0 R/XYZ 0 308 0]>>endobj
-1344 0 obj<</D[1419 0 R/XYZ 0 734 0]>>endobj
-1345 0 obj<</D[1663 0 R/XYZ 0 734 0]>>endobj
-1346 0 obj<</D[1629 0 R/XYZ 0 734 0]>>endobj
-1347 0 obj<</D[1667 0 R/XYZ 0 734 0]>>endobj
-1348 0 obj<</D[1503 0 R/XYZ 0 734 0]>>endobj
-1349 0 obj<</D[1633 0 R/XYZ 0 734 0]>>endobj
-1350 0 obj<</D[1643 0 R/XYZ 0 734 0]>>endobj
-1351 0 obj<</D[1605 0 R/XYZ 0 734 0]>>endobj
-1352 0 obj<</D[1405 0 R/XYZ 0 734 0]>>endobj
-1353 0 obj<</D[1517 0 R/XYZ 0 734 0]>>endobj
-1354 0 obj<</D[1397 0 R/XYZ 0 483 0]>>endobj
-1355 0 obj<</D[1553 0 R/XYZ 0 734 0]>>endobj
-1356 0 obj<</D[1507 0 R/XYZ 0 641 0]>>endobj
-1357 0 obj<</D[1655 0 R/XYZ 0 734 0]>>endobj
-1358 0 obj<</D[1547 0 R/XYZ 0 734 0]>>endobj
-1359 0 obj<</D[1427 0 R/XYZ 0 734 0]>>endobj
-1360 0 obj<</D[1651 0 R/XYZ 0 734 0]>>endobj
-1361 0 obj<</D[1557 0 R/XYZ 0 734 0]>>endobj
-1362 0 obj<</D[1491 0 R/XYZ 0 734 0]>>endobj
-1363 0 obj<</D[1389 0 R/XYZ 0 734 0]>>endobj
-1364 0 obj<</D[1389 0 R/XYZ 0 734 0]>>endobj
-1365 0 obj<</D[1457 0 R/XYZ 0 734 0]>>endobj
-1366 0 obj<</D[1453 0 R/XYZ 0 734 0]>>endobj
-1367 0 obj<</D[1635 0 R/XYZ 0 734 0]>>endobj
-1368 0 obj<</D[1447 0 R/XYZ 0 163 0]>>endobj
-1369 0 obj<</D[1537 0 R/XYZ 0 734 0]>>endobj
-1370 0 obj<</D[1623 0 R/XYZ 0 734 0]>>endobj
-1371 0 obj<</D[1579 0 R/XYZ 0 734 0]>>endobj
-1372 0 obj<</Type/Pages/Count 152/Kids[1373 0 R
-1375 0 R
-1377 0 R
-1379 0 R
-1381 0 R
-1383 0 R
-1385 0 R
-1387 0 R
-1389 0 R
-1391 0 R
-1393 0 R
-1395 0 R
-1397 0 R
-1399 0 R
-1401 0 R
-1403 0 R
-1405 0 R
-1407 0 R
-1409 0 R
-1411 0 R
-1413 0 R
-1415 0 R
-1417 0 R
-1419 0 R
-1421 0 R
-1423 0 R
-1425 0 R
-1427 0 R
-1429 0 R
-1431 0 R
-1433 0 R
-1435 0 R
-1437 0 R
-1439 0 R
-1441 0 R
-1443 0 R
-1445 0 R
-1447 0 R
-1449 0 R
-1451 0 R
-1453 0 R
-1455 0 R
-1457 0 R
-1459 0 R
-1461 0 R
-1463 0 R
-1465 0 R
-1467 0 R
-1469 0 R
-1471 0 R
-1473 0 R
-1475 0 R
-1477 0 R
-1479 0 R
-1481 0 R
-1483 0 R
-1485 0 R
-1487 0 R
-1489 0 R
-1491 0 R
-1493 0 R
-1495 0 R
-1497 0 R
-1499 0 R
-1501 0 R
-1503 0 R
-1505 0 R
-1507 0 R
-1509 0 R
-1511 0 R
-1513 0 R
-1515 0 R
-1517 0 R
-1519 0 R
-1521 0 R
-1523 0 R
-1525 0 R
-1527 0 R
-1529 0 R
-1531 0 R
-1533 0 R
-1535 0 R
-1537 0 R
-1539 0 R
-1541 0 R
-1543 0 R
-1545 0 R
-1547 0 R
-1549 0 R
-1551 0 R
-1553 0 R
-1555 0 R
-1557 0 R
-1559 0 R
-1561 0 R
-1563 0 R
-1565 0 R
-1567 0 R
-1569 0 R
-1571 0 R
-1573 0 R
-1575 0 R
-1577 0 R
-1579 0 R
-1581 0 R
-1583 0 R
-1585 0 R
-1587 0 R
-1589 0 R
-1591 0 R
-1593 0 R
-1595 0 R
-1597 0 R
-1599 0 R
-1601 0 R
-1603 0 R
-1605 0 R
-1607 0 R
-1609 0 R
-1611 0 R
-1613 0 R
-1615 0 R
-1617 0 R
-1619 0 R
-1621 0 R
-1623 0 R
-1625 0 R
-1627 0 R
-1629 0 R
-1631 0 R
-1633 0 R
-1635 0 R
-1637 0 R
-1639 0 R
-1641 0 R
-1643 0 R
-1645 0 R
-1647 0 R
-1649 0 R
-1651 0 R
-1653 0 R
-1655 0 R
-1657 0 R
-1659 0 R
-1661 0 R
-1663 0 R
-1665 0 R
-1667 0 R
-1669 0 R
-1671 0 R
-1673 0 R
-1675 0 R
+824 0 R]endobj
+826 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
+827 0 obj<</Subtype/Link/Rect[164.2 180.2 250.8 193.2]/Border[0 0 0]/A 826 0 R>>endobj
+828 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
+829 0 obj<</Subtype/Link/Rect[233.0 167.0 338.7 180.0]/Border[0 0 0]/A 828 0 R>>endobj
+830 0 obj[827 0 R
+829 0 R]endobj
+831 0 obj<</Dests 832 0 R>>endobj
+832 0 obj<</Kids[833 0 R]>>endobj
+833 0 obj<</Limits[(16)(winbind)]/Names[(16)834 0 R(3)835 0 R(31)836 0 R(9)837 0 R(ads)838 0 R(aen100)839 0 R(aen1006)840 0 R(aen1014)841 0 R(aen1022)842 0 R(aen1029)843 0 R(aen1065)844 0 R(aen1078)845 0 R(aen1081)846 0 R(aen1091)847 0 R(aen1127)848 0 R(aen1131)849 0 R(aen1139)850 0 R(aen1142)851 0 R(aen1145)852 0 R(aen1148)853 0 R(aen1152)854 0 R(aen1169)855 0 R(aen1187)856 0 R(aen1193)857 0 R(aen1202)858 0 R(aen1217)859 0 R(aen1227)860 0 R(aen1231)861 0 R(aen1243)862 0 R(aen1248)863 0 R(aen1251)864 0 R(aen1273)865 0 R(aen129)866 0 R(aen1337)867 0 R(aen1342)868 0 R(aen1360)869 0 R(aen1374)870 0 R(aen1396)871 0 R(aen1412)872 0 R(aen1428)873 0 R(aen1439)874 0 R(aen1447)875 0 R(aen145)876 0 R(aen1459)877 0 R(aen1471)878 0 R(aen1476)879 0 R(aen1484)880 0 R(aen1489)881 0 R(aen1492)882 0 R(aen1504)883 0 R(aen1514)884 0 R(aen154)885 0 R(aen1542)886 0 R(aen1550)887 0 R(aen1567)888 0 R(aen1574)889 0 R(aen1579)890 0 R(aen1584)891 0 R(aen1605)892 0 R(aen1614)893 0 R(aen1625)894 0 R(aen1645)895 0 R(aen1660)896 0 R(aen1674)897 0 R(aen1681)898 0 R(aen170)899 0 R(aen1703)900 0 R(aen1767)901 0 R(aen1788)902 0 R(aen1832)903 0 R(aen1839)904 0 R(aen184)905 0 R(aen1859)906 0 R(aen189)907 0 R(aen1894)908 0 R(aen1920)909 0 R(aen193)910 0 R(aen1942)911 0 R(aen1950)912 0 R(aen196)913 0 R(aen1985)914 0 R(aen2001)915 0 R(aen2012)916 0 R(aen2042)917 0 R(aen205)918 0 R(aen2050)919 0 R(aen2054)920 0 R(aen2064)921 0 R(aen2067)922 0 R(aen2071)923 0 R(aen2093)924 0 R(aen2095)925 0 R(aen21)926 0 R(aen210)927 0 R(aen2111)928 0 R(aen2120)929 0 R(aen2128)930 0 R(aen2156)931 0 R(aen2167)932 0 R(aen2179)933 0 R(aen2182)934 0 R(aen2185)935 0 R(aen219)936 0 R(aen2225)937 0 R(aen2229)938 0 R(aen2242)939 0 R(aen2249)940 0 R(aen2253)941 0 R(aen2258)942 0 R(aen2262)943 0 R(aen2278)944 0 R(aen2286)945 0 R(aen229)946 0 R(aen2290)947 0 R(aen2293)948 0 R(aen2300)949 0 R(aen2313)950 0 R(aen2327)951 0 R(aen233)952 0 R(aen2338)953 0 R(aen2357)954 0 R(aen2390)955 0 R(aen2406)956 0 R(aen2417)957 0 R(aen242)958 0 R(aen2453)959 0 R(aen2455)960 0 R(aen2472)961 0 R(aen2479)962 0 R(aen2485)963 0 R(aen249)964 0 R(aen2502)965 0 R(aen2535)966 0 R(aen254)967 0 R(aen2542)968 0 R(aen2552)969 0 R(aen2566)970 0 R(aen2572)971 0 R(aen2589)972 0 R(aen2594)973 0 R(aen26)974 0 R(aen2613)975 0 R(aen2619)976 0 R(aen2640)977 0 R(aen2649)978 0 R(aen2651)979 0 R(aen2659)980 0 R(aen2696)981 0 R(aen2703)982 0 R(aen2707)983 0 R(aen2715)984 0 R(aen2737)985 0 R(aen2757)986 0 R(aen2786)987 0 R(aen2791)988 0 R(aen2803)989 0 R(aen2805)990 0 R(aen2822)991 0 R(aen2850)992 0 R(aen2855)993 0 R(aen2875)994 0 R(aen289)995 0 R(aen2945)996 0 R(aen2953)997 0 R(aen2964)998 0 R(aen2969)999 0 R(aen2972)1000 0 R(aen2977)1001 0 R(aen3055)1002 0 R(aen3061)1003 0 R(aen3068)1004 0 R(aen3073)1005 0 R(aen3078)1006 0 R(aen308)1007 0 R(aen3081)1008 0 R(aen3086)1009 0 R(aen3090)1010 0 R(aen3094)1011 0 R(aen3097)1012 0 R(aen3139)1013 0 R(aen3145)1014 0 R(aen3149)1015 0 R(aen3178)1016 0 R(aen3199)1017 0 R(aen3208)1018 0 R(aen3210)1019 0 R(aen3225)1020 0 R(aen3234)1021 0 R(aen3238)1022 0 R(aen3248)1023 0 R(aen3250)1024 0 R(aen3255)1025 0 R(aen326)1026 0 R(aen3260)1027 0 R(aen3264)1028 0 R(aen3269)1029 0 R(aen3285)1030 0 R(aen3309)1031 0 R(aen3319)1032 0 R(aen3325)1033 0 R(aen3342)1034 0 R(aen3352)1035 0 R(aen3355)1036 0 R(aen336)1037 0 R(aen3378)1038 0 R(aen3383)1039 0 R(aen3393)1040 0 R(aen3395)1041 0 R(aen3401)1042 0 R(aen3407)1043 0 R(aen3422)1044 0 R(aen3427)1045 0 R(aen3433)1046 0 R(aen3441)1047 0 R(aen345)1048 0 R(aen3467)1049 0 R(aen3484)1050 0 R(aen3492)1051 0 R(aen3498)1052 0 R(aen3503)1053 0 R(aen36)1054 0 R(aen363)1055 0 R(aen366)1056 0 R(aen377)1057 0 R(aen385)1058 0 R(aen399)1059 0 R(aen4)1060 0 R(aen404)1061 0 R(aen415)1062 0 R(aen421)1063 0 R(aen457)1064 0 R(aen462)1065 0 R(aen481)1066 0 R(aen488)1067 0 R(aen497)1068 0 R(aen531)1069 0 R(aen575)1070 0 R(aen581)1071 0 R(aen620)1072 0 R(aen64)1073 0 R(aen663)1074 0 R(aen68)1075 0 R(aen682)1076 0 R(aen723)1077 0 R(aen732)1078 0 R(aen747)1079 0 R(aen795)1080 0 R(aen8)1081 0 R(aen82)1082 0 R(aen839)1083 0 R(aen90)1084 0 R(aen953)1085 0 R(aen979)1086 0 R(aen998)1087 0 R(appendixes)1088 0 R(browsing-quick)1089 0 R(bugreport)1090 0 R(cvs-access)1091 0 R(diagnosis)1092 0 R(domain-security)1093 0 R(groupmapping)1094 0 R(improved-browsing)1095 0 R(install)1096 0 R(integrate-ms-networks)1097 0 R(introduction)1098 0 R(msdfs)1099 0 R(optional)1100 0 R(other-clients)1101 0 R(pam)1102 0 R(pdb-mysql)1103 0 R(pdb-xml)1104 0 R(portability)1105 0 R(printing)1106 0 R(pwencrypt)1107 0 R(samba-bdc)1108 0 R(samba-howto-collection)1109 0 R(samba-howto-collection.html)1110 0 R(samba-ldap-howto)1111 0 R(samba-pdc)1112 0 R(securitylevels)1113 0 R(speed)1114 0 R(type)1115 0 R(unix-permissions)1116 0 R(vfs)1117 0 R(winbind)1118 0 R]>>endobj
+834 0 obj<</D[1256 0 R/XYZ 0 734 0]>>endobj
+835 0 obj<</D[1146 0 R/XYZ 0 734 0]>>endobj
+836 0 obj<</D[1390 0 R/XYZ 0 734 0]>>endobj
+837 0 obj<</D[1196 0 R/XYZ 0 734 0]>>endobj
+838 0 obj<</D[1244 0 R/XYZ 0 734 0]>>endobj
+839 0 obj<</D[1154 0 R/XYZ 0 734 0]>>endobj
+840 0 obj<</D[1226 0 R/XYZ 0 540 0]>>endobj
+841 0 obj<</D[1226 0 R/XYZ 0 363 0]>>endobj
+842 0 obj<</D[1226 0 R/XYZ 0 136 0]>>endobj
+843 0 obj<</D[1228 0 R/XYZ 0 665 0]>>endobj
+844 0 obj<</D[1230 0 R/XYZ 0 335 0]>>endobj
+845 0 obj<</D[1232 0 R/XYZ 0 425 0]>>endobj
+846 0 obj<</D[1232 0 R/XYZ 0 344 0]>>endobj
+847 0 obj<</D[1234 0 R/XYZ 0 702 0]>>endobj
+848 0 obj<</D[1238 0 R/XYZ 0 672 0]>>endobj
+849 0 obj<</D[1238 0 R/XYZ 0 597 0]>>endobj
+850 0 obj<</D[1238 0 R/XYZ 0 223 0]>>endobj
+851 0 obj<</D[1240 0 R/XYZ 0 734 0]>>endobj
+852 0 obj<</D[1240 0 R/XYZ 0 609 0]>>endobj
+853 0 obj<</D[1240 0 R/XYZ 0 524 0]>>endobj
+854 0 obj<</D[1240 0 R/XYZ 0 383 0]>>endobj
+855 0 obj<</D[1242 0 R/XYZ 0 617 0]>>endobj
+856 0 obj<</D[1244 0 R/XYZ 0 551 0]>>endobj
+857 0 obj<</D[1244 0 R/XYZ 0 444 0]>>endobj
+858 0 obj<</D[1244 0 R/XYZ 0 267 0]>>endobj
+859 0 obj<</D[1246 0 R/XYZ 0 564 0]>>endobj
+860 0 obj<</D[1246 0 R/XYZ 0 245 0]>>endobj
+861 0 obj<</D[1246 0 R/XYZ 0 156 0]>>endobj
+862 0 obj<</D[1248 0 R/XYZ 0 692 0]>>endobj
+863 0 obj<</D[1248 0 R/XYZ 0 603 0]>>endobj
+864 0 obj<</D[1248 0 R/XYZ 0 528 0]>>endobj
+865 0 obj<</D[1250 0 R/XYZ 0 696 0]>>endobj
+866 0 obj<</D[1154 0 R/XYZ 0 244 0]>>endobj
+867 0 obj<</D[1252 0 R/XYZ 0 362 0]>>endobj
+868 0 obj<</D[1252 0 R/XYZ 0 155 0]>>endobj
+869 0 obj<</D[1256 0 R/XYZ 0 696 0]>>endobj
+870 0 obj<</D[1260 0 R/XYZ 0 696 0]>>endobj
+871 0 obj<</D[1260 0 R/XYZ 0 463 0]>>endobj
+872 0 obj<</D[1260 0 R/XYZ 0 335 0]>>endobj
+873 0 obj<</D[1262 0 R/XYZ 0 454 0]>>endobj
+874 0 obj<</D[1262 0 R/XYZ 0 317 0]>>endobj
+875 0 obj<</D[1262 0 R/XYZ 0 168 0]>>endobj
+876 0 obj<</D[1156 0 R/XYZ 0 665 0]>>endobj
+877 0 obj<</D[1264 0 R/XYZ 0 347 0]>>endobj
+878 0 obj<</D[1266 0 R/XYZ 0 295 0]>>endobj
+879 0 obj<</D[1268 0 R/XYZ 0 734 0]>>endobj
+880 0 obj<</D[1270 0 R/XYZ 0 456 0]>>endobj
+881 0 obj<</D[1270 0 R/XYZ 0 358 0]>>endobj
+882 0 obj<</D[1270 0 R/XYZ 0 221 0]>>endobj
+883 0 obj<</D[1272 0 R/XYZ 0 667 0]>>endobj
+884 0 obj<</D[1274 0 R/XYZ 0 734 0]>>endobj
+885 0 obj<</D[1156 0 R/XYZ 0 498 0]>>endobj
+886 0 obj<</D[1276 0 R/XYZ 0 692 0]>>endobj
+887 0 obj<</D[1276 0 R/XYZ 0 440 0]>>endobj
+888 0 obj<</D[1278 0 R/XYZ 0 734 0]>>endobj
+889 0 obj<</D[1278 0 R/XYZ 0 437 0]>>endobj
+890 0 obj<</D[1278 0 R/XYZ 0 288 0]>>endobj
+891 0 obj<</D[1278 0 R/XYZ 0 172 0]>>endobj
+892 0 obj<</D[1282 0 R/XYZ 0 672 0]>>endobj
+893 0 obj<</D[1282 0 R/XYZ 0 497 0]>>endobj
+894 0 obj<</D[1282 0 R/XYZ 0 330 0]>>endobj
+895 0 obj<</D[1284 0 R/XYZ 0 665 0]>>endobj
+896 0 obj<</D[1284 0 R/XYZ 0 432 0]>>endobj
+897 0 obj<</D[1284 0 R/XYZ 0 189 0]>>endobj
+898 0 obj<</D[1286 0 R/XYZ 0 692 0]>>endobj
+899 0 obj<</D[1156 0 R/XYZ 0 330 0]>>endobj
+900 0 obj<</D[1286 0 R/XYZ 0 260 0]>>endobj
+901 0 obj<</D[1290 0 R/XYZ 0 599 0]>>endobj
+902 0 obj<</D[1292 0 R/XYZ 0 672 0]>>endobj
+903 0 obj<</D[1294 0 R/XYZ 0 127 0]>>endobj
+904 0 obj<</D[1296 0 R/XYZ 0 679 0]>>endobj
+905 0 obj<</D[1158 0 R/XYZ 0 734 0]>>endobj
+906 0 obj<</D[1298 0 R/XYZ 0 672 0]>>endobj
+907 0 obj<</D[1158 0 R/XYZ 0 553 0]>>endobj
+908 0 obj<</D[1300 0 R/XYZ 0 652 0]>>endobj
+909 0 obj<</D[1302 0 R/XYZ 0 696 0]>>endobj
+910 0 obj<</D[1158 0 R/XYZ 0 494 0]>>endobj
+911 0 obj<</D[1302 0 R/XYZ 0 317 0]>>endobj
+912 0 obj<</D[1302 0 R/XYZ 0 131 0]>>endobj
+913 0 obj<</D[1158 0 R/XYZ 0 409 0]>>endobj
+914 0 obj<</D[1306 0 R/XYZ 0 583 0]>>endobj
+915 0 obj<</D[1306 0 R/XYZ 0 169 0]>>endobj
+916 0 obj<</D[1308 0 R/XYZ 0 456 0]>>endobj
+917 0 obj<</D[1310 0 R/XYZ 0 283 0]>>endobj
+918 0 obj<</D[1160 0 R/XYZ 0 734 0]>>endobj
+919 0 obj<</D[1312 0 R/XYZ 0 734 0]>>endobj
+920 0 obj<</D[1312 0 R/XYZ 0 632 0]>>endobj
+921 0 obj<</D[1312 0 R/XYZ 0 507 0]>>endobj
+922 0 obj<</D[1312 0 R/XYZ 0 423 0]>>endobj
+923 0 obj<</D[1312 0 R/XYZ 0 325 0]>>endobj
+924 0 obj<</D[1314 0 R/XYZ 0 426 0]>>endobj
+925 0 obj<</D[1314 0 R/XYZ 0 393 0]>>endobj
+926 0 obj<</D[1146 0 R/XYZ 0 696 0]>>endobj
+927 0 obj<</D[1160 0 R/XYZ 0 583 0]>>endobj
+928 0 obj<</D[1316 0 R/XYZ 0 450 0]>>endobj
+929 0 obj<</D[1318 0 R/XYZ 0 665 0]>>endobj
+930 0 obj<</D[1318 0 R/XYZ 0 479 0]>>endobj
+931 0 obj<</D[1320 0 R/XYZ 0 718 0]>>endobj
+932 0 obj<</D[1320 0 R/XYZ 0 373 0]>>endobj
+933 0 obj<</D[1322 0 R/XYZ 0 679 0]>>endobj
+934 0 obj<</D[1322 0 R/XYZ 0 594 0]>>endobj
+935 0 obj<</D[1322 0 R/XYZ 0 496 0]>>endobj
+936 0 obj<</D[1160 0 R/XYZ 0 128 0]>>endobj
+937 0 obj<</D[1324 0 R/XYZ 0 672 0]>>endobj
+938 0 obj<</D[1324 0 R/XYZ 0 544 0]>>endobj
+939 0 obj<</D[1324 0 R/XYZ 0 231 0]>>endobj
+940 0 obj<</D[1326 0 R/XYZ 0 560 0]>>endobj
+941 0 obj<</D[1326 0 R/XYZ 0 409 0]>>endobj
+942 0 obj<</D[1326 0 R/XYZ 0 294 0]>>endobj
+943 0 obj<</D[1328 0 R/XYZ 0 734 0]>>endobj
+944 0 obj<</D[1328 0 R/XYZ 0 292 0]>>endobj
+945 0 obj<</D[1330 0 R/XYZ 0 665 0]>>endobj
+946 0 obj<</D[1164 0 R/XYZ 0 696 0]>>endobj
+947 0 obj<</D[1330 0 R/XYZ 0 488 0]>>endobj
+948 0 obj<</D[1330 0 R/XYZ 0 351 0]>>endobj
+949 0 obj<</D[1330 0 R/XYZ 0 209 0]>>endobj
+950 0 obj<</D[1332 0 R/XYZ 0 599 0]>>endobj
+951 0 obj<</D[1332 0 R/XYZ 0 330 0]>>endobj
+952 0 obj<</D[1164 0 R/XYZ 0 515 0]>>endobj
+953 0 obj<</D[1332 0 R/XYZ 0 192 0]>>endobj
+954 0 obj<</D[1334 0 R/XYZ 0 692 0]>>endobj
+955 0 obj<</D[1334 0 R/XYZ 0 285 0]>>endobj
+956 0 obj<</D[1336 0 R/XYZ 0 705 0]>>endobj
+957 0 obj<</D[1336 0 R/XYZ 0 557 0]>>endobj
+958 0 obj<</D[1164 0 R/XYZ 0 137 0]>>endobj
+959 0 obj<</D[1338 0 R/XYZ 0 503 0]>>endobj
+960 0 obj<</D[1338 0 R/XYZ 0 477 0]>>endobj
+961 0 obj<</D[1340 0 R/XYZ 0 564 0]>>endobj
+962 0 obj<</D[1342 0 R/XYZ 0 640 0]>>endobj
+963 0 obj<</D[1342 0 R/XYZ 0 574 0]>>endobj
+964 0 obj<</D[1166 0 R/XYZ 0 533 0]>>endobj
+965 0 obj<</D[1342 0 R/XYZ 0 335 0]>>endobj
+966 0 obj<</D[1344 0 R/XYZ 0 357 0]>>endobj
+967 0 obj<</D[1166 0 R/XYZ 0 273 0]>>endobj
+968 0 obj<</D[1346 0 R/XYZ 0 217 0]>>endobj
+969 0 obj<</D[1348 0 R/XYZ 0 679 0]>>endobj
+970 0 obj<</D[1350 0 R/XYZ 0 696 0]>>endobj
+971 0 obj<</D[1350 0 R/XYZ 0 595 0]>>endobj
+972 0 obj<</D[1352 0 R/XYZ 0 511 0]>>endobj
+973 0 obj<</D[1352 0 R/XYZ 0 357 0]>>endobj
+974 0 obj<</D[1150 0 R/XYZ 0 696 0]>>endobj
+975 0 obj<</D[1354 0 R/XYZ 0 696 0]>>endobj
+976 0 obj<</D[1354 0 R/XYZ 0 608 0]>>endobj
+977 0 obj<</D[1356 0 R/XYZ 0 696 0]>>endobj
+978 0 obj<</D[1356 0 R/XYZ 0 382 0]>>endobj
+979 0 obj<</D[1356 0 R/XYZ 0 348 0]>>endobj
+980 0 obj<</D[1356 0 R/XYZ 0 212 0]>>endobj
+981 0 obj<</D[1358 0 R/XYZ 0 560 0]>>endobj
+982 0 obj<</D[1358 0 R/XYZ 0 430 0]>>endobj
+983 0 obj<</D[1358 0 R/XYZ 0 315 0]>>endobj
+984 0 obj<</D[1360 0 R/XYZ 0 734 0]>>endobj
+985 0 obj<</D[1362 0 R/XYZ 0 672 0]>>endobj
+986 0 obj<</D[1362 0 R/XYZ 0 412 0]>>endobj
+987 0 obj<</D[1364 0 R/XYZ 0 573 0]>>endobj
+988 0 obj<</D[1364 0 R/XYZ 0 471 0]>>endobj
+989 0 obj<</D[1366 0 R/XYZ 0 734 0]>>endobj
+990 0 obj<</D[1366 0 R/XYZ 0 700 0]>>endobj
+991 0 obj<</D[1366 0 R/XYZ 0 138 0]>>endobj
+992 0 obj<</D[1368 0 R/XYZ 0 227 0]>>endobj
+993 0 obj<</D[1370 0 R/XYZ 0 705 0]>>endobj
+994 0 obj<</D[1370 0 R/XYZ 0 320 0]>>endobj
+995 0 obj<</D[1172 0 R/XYZ 0 511 0]>>endobj
+996 0 obj<</D[1372 0 R/XYZ 0 309 0]>>endobj
+997 0 obj<</D[1374 0 R/XYZ 0 478 0]>>endobj
+998 0 obj<</D[1376 0 R/XYZ 0 696 0]>>endobj
+999 0 obj<</D[1376 0 R/XYZ 0 581 0]>>endobj
+1000 0 obj<</D[1376 0 R/XYZ 0 493 0]>>endobj
+1001 0 obj<</D[1376 0 R/XYZ 0 382 0]>>endobj
+1002 0 obj<</D[1382 0 R/XYZ 0 696 0]>>endobj
+1003 0 obj<</D[1382 0 R/XYZ 0 449 0]>>endobj
+1004 0 obj<</D[1382 0 R/XYZ 0 189 0]>>endobj
+1005 0 obj<</D[1384 0 R/XYZ 0 639 0]>>endobj
+1006 0 obj<</D[1384 0 R/XYZ 0 458 0]>>endobj
+1007 0 obj<</D[1174 0 R/XYZ 0 560 0]>>endobj
+1008 0 obj<</D[1384 0 R/XYZ 0 383 0]>>endobj
+1009 0 obj<</D[1384 0 R/XYZ 0 215 0]>>endobj
+1010 0 obj<</D[1386 0 R/XYZ 0 734 0]>>endobj
+1011 0 obj<</D[1386 0 R/XYZ 0 605 0]>>endobj
+1012 0 obj<</D[1386 0 R/XYZ 0 530 0]>>endobj
+1013 0 obj<</D[1392 0 R/XYZ 0 655 0]>>endobj
+1014 0 obj<</D[1392 0 R/XYZ 0 408 0]>>endobj
+1015 0 obj<</D[1392 0 R/XYZ 0 293 0]>>endobj
+1016 0 obj<</D[1394 0 R/XYZ 0 216 0]>>endobj
+1017 0 obj<</D[1398 0 R/XYZ 0 668 0]>>endobj
+1018 0 obj<</D[1398 0 R/XYZ 0 461 0]>>endobj
+1019 0 obj<</D[1398 0 R/XYZ 0 427 0]>>endobj
+1020 0 obj<</D[1400 0 R/XYZ 0 734 0]>>endobj
+1021 0 obj<</D[1400 0 R/XYZ 0 520 0]>>endobj
+1022 0 obj<</D[1400 0 R/XYZ 0 422 0]>>endobj
+1023 0 obj<</D[1400 0 R/XYZ 0 165 0]>>endobj
+1024 0 obj<</D[1400 0 R/XYZ 0 132 0]>>endobj
+1025 0 obj<</D[1402 0 R/XYZ 0 652 0]>>endobj
+1026 0 obj<</D[1176 0 R/XYZ 0 567 0]>>endobj
+1027 0 obj<</D[1402 0 R/XYZ 0 501 0]>>endobj
+1028 0 obj<</D[1402 0 R/XYZ 0 403 0]>>endobj
+1029 0 obj<</D[1402 0 R/XYZ 0 319 0]>>endobj
+1030 0 obj<</D[1404 0 R/XYZ 0 734 0]>>endobj
+1031 0 obj<</D[1406 0 R/XYZ 0 696 0]>>endobj
+1032 0 obj<</D[1406 0 R/XYZ 0 423 0]>>endobj
+1033 0 obj<</D[1406 0 R/XYZ 0 282 0]>>endobj
+1034 0 obj<</D[1408 0 R/XYZ 0 613 0]>>endobj
+1035 0 obj<</D[1408 0 R/XYZ 0 260 0]>>endobj
+1036 0 obj<</D[1408 0 R/XYZ 0 159 0]>>endobj
+1037 0 obj<</D[1176 0 R/XYZ 0 208 0]>>endobj
+1038 0 obj<</D[1410 0 R/XYZ 0 696 0]>>endobj
+1039 0 obj<</D[1410 0 R/XYZ 0 529 0]>>endobj
+1040 0 obj<</D[1410 0 R/XYZ 0 196 0]>>endobj
+1041 0 obj<</D[1410 0 R/XYZ 0 163 0]>>endobj
+1042 0 obj<</D[1412 0 R/XYZ 0 734 0]>>endobj
+1043 0 obj<</D[1412 0 R/XYZ 0 530 0]>>endobj
+1044 0 obj<</D[1414 0 R/XYZ 0 599 0]>>endobj
+1045 0 obj<</D[1414 0 R/XYZ 0 449 0]>>endobj
+1046 0 obj<</D[1414 0 R/XYZ 0 324 0]>>endobj
+1047 0 obj<</D[1416 0 R/XYZ 0 734 0]>>endobj
+1048 0 obj<</D[1178 0 R/XYZ 0 454 0]>>endobj
+1049 0 obj<</D[1416 0 R/XYZ 0 371 0]>>endobj
+1050 0 obj<</D[1418 0 R/XYZ 0 705 0]>>endobj
+1051 0 obj<</D[1418 0 R/XYZ 0 515 0]>>endobj
+1052 0 obj<</D[1418 0 R/XYZ 0 377 0]>>endobj
+1053 0 obj<</D[1418 0 R/XYZ 0 239 0]>>endobj
+1054 0 obj<</D[1150 0 R/XYZ 0 568 0]>>endobj
+1055 0 obj<</D[1180 0 R/XYZ 0 679 0]>>endobj
+1056 0 obj<</D[1180 0 R/XYZ 0 590 0]>>endobj
+1057 0 obj<</D[1182 0 R/XYZ 0 604 0]>>endobj
+1058 0 obj<</D[1182 0 R/XYZ 0 159 0]>>endobj
+1059 0 obj<</D[1184 0 R/XYZ 0 520 0]>>endobj
+1060 0 obj<</D[1136 0 R/XYZ 0 696 0]>>endobj
+1061 0 obj<</D[1184 0 R/XYZ 0 339 0]>>endobj
+1062 0 obj<</D[1186 0 R/XYZ 0 494 0]>>endobj
+1063 0 obj<</D[1186 0 R/XYZ 0 213 0]>>endobj
+1064 0 obj<</D[1190 0 R/XYZ 0 696 0]>>endobj
+1065 0 obj<</D[1190 0 R/XYZ 0 555 0]>>endobj
+1066 0 obj<</D[1192 0 R/XYZ 0 734 0]>>endobj
+1067 0 obj<</D[1192 0 R/XYZ 0 609 0]>>endobj
+1068 0 obj<</D[1192 0 R/XYZ 0 511 0]>>endobj
+1069 0 obj<</D[1196 0 R/XYZ 0 696 0]>>endobj
+1070 0 obj<</D[1204 0 R/XYZ 0 672 0]>>endobj
+1071 0 obj<</D[1204 0 R/XYZ 0 584 0]>>endobj
+1072 0 obj<</D[1206 0 R/XYZ 0 718 0]>>endobj
+1073 0 obj<</D[1150 0 R/XYZ 0 163 0]>>endobj
+1074 0 obj<</D[1208 0 R/XYZ 0 613 0]>>endobj
+1075 0 obj<</D[1152 0 R/XYZ 0 734 0]>>endobj
+1076 0 obj<</D[1208 0 R/XYZ 0 227 0]>>endobj
+1077 0 obj<</D[1210 0 R/XYZ 0 316 0]>>endobj
+1078 0 obj<</D[1212 0 R/XYZ 0 734 0]>>endobj
+1079 0 obj<</D[1212 0 R/XYZ 0 385 0]>>endobj
+1080 0 obj<</D[1214 0 R/XYZ 0 126 0]>>endobj
+1081 0 obj<</D[1138 0 R/XYZ 0 734 0]>>endobj
+1082 0 obj<</D[1152 0 R/XYZ 0 382 0]>>endobj
+1083 0 obj<</D[1216 0 R/XYZ 0 124 0]>>endobj
+1084 0 obj<</D[1152 0 R/XYZ 0 254 0]>>endobj
+1085 0 obj<</D[1222 0 R/XYZ 0 507 0]>>endobj
+1086 0 obj<</D[1224 0 R/XYZ 0 520 0]>>endobj
+1087 0 obj<</D[1226 0 R/XYZ 0 734 0]>>endobj
+1088 0 obj<</D[1388 0 R/XYZ 0 450 0]>>endobj
+1089 0 obj<</D[1182 0 R/XYZ 0 734 0]>>endobj
+1090 0 obj<</D[1406 0 R/XYZ 0 734 0]>>endobj
+1091 0 obj<</D[1376 0 R/XYZ 0 734 0]>>endobj
+1092 0 obj<</D[1410 0 R/XYZ 0 734 0]>>endobj
+1093 0 obj<</D[1250 0 R/XYZ 0 734 0]>>endobj
+1094 0 obj<</D[1380 0 R/XYZ 0 734 0]>>endobj
+1095 0 obj<</D[1164 0 R/XYZ 0 734 0]>>endobj
+1096 0 obj<</D[1150 0 R/XYZ 0 734 0]>>endobj
+1097 0 obj<</D[1260 0 R/XYZ 0 734 0]>>endobj
+1098 0 obj<</D[1144 0 R/XYZ 0 364 0]>>endobj
+1099 0 obj<</D[1298 0 R/XYZ 0 734 0]>>endobj
+1100 0 obj<</D[1254 0 R/XYZ 0 337 0]>>endobj
+1101 0 obj<</D[1398 0 R/XYZ 0 734 0]>>endobj
+1102 0 obj<</D[1292 0 R/XYZ 0 734 0]>>endobj
+1103 0 obj<</D[1350 0 R/XYZ 0 734 0]>>endobj
+1104 0 obj<</D[1354 0 R/XYZ 0 734 0]>>endobj
+1105 0 obj<</D[1392 0 R/XYZ 0 734 0]>>endobj
+1106 0 obj<</D[1302 0 R/XYZ 0 734 0]>>endobj
+1107 0 obj<</D[1190 0 R/XYZ 0 734 0]>>endobj
+1108 0 obj<</D[1238 0 R/XYZ 0 734 0]>>endobj
+1109 0 obj<</D[1136 0 R/XYZ 0 734 0]>>endobj
+1110 0 obj<</D[1136 0 R/XYZ 0 734 0]>>endobj
+1111 0 obj<</D[1362 0 R/XYZ 0 734 0]>>endobj
+1112 0 obj<</D[1204 0 R/XYZ 0 734 0]>>endobj
+1113 0 obj<</D[1200 0 R/XYZ 0 734 0]>>endobj
+1114 0 obj<</D[1382 0 R/XYZ 0 734 0]>>endobj
+1115 0 obj<</D[1194 0 R/XYZ 0 681 0]>>endobj
+1116 0 obj<</D[1282 0 R/XYZ 0 734 0]>>endobj
+1117 0 obj<</D[1356 0 R/XYZ 0 734 0]>>endobj
+1118 0 obj<</D[1324 0 R/XYZ 0 734 0]>>endobj
+1119 0 obj<</Type/Pages/Count 150/Kids[1120 0 R
+1122 0 R
+1124 0 R
+1126 0 R
+1128 0 R
+1130 0 R
+1132 0 R
+1134 0 R
+1136 0 R
+1138 0 R
+1140 0 R
+1142 0 R
+1144 0 R
+1146 0 R
+1148 0 R
+1150 0 R
+1152 0 R
+1154 0 R
+1156 0 R
+1158 0 R
+1160 0 R
+1162 0 R
+1164 0 R
+1166 0 R
+1168 0 R
+1170 0 R
+1172 0 R
+1174 0 R
+1176 0 R
+1178 0 R
+1180 0 R
+1182 0 R
+1184 0 R
+1186 0 R
+1188 0 R
+1190 0 R
+1192 0 R
+1194 0 R
+1196 0 R
+1198 0 R
+1200 0 R
+1202 0 R
+1204 0 R
+1206 0 R
+1208 0 R
+1210 0 R
+1212 0 R
+1214 0 R
+1216 0 R
+1218 0 R
+1220 0 R
+1222 0 R
+1224 0 R
+1226 0 R
+1228 0 R
+1230 0 R
+1232 0 R
+1234 0 R
+1236 0 R
+1238 0 R
+1240 0 R
+1242 0 R
+1244 0 R
+1246 0 R
+1248 0 R
+1250 0 R
+1252 0 R
+1254 0 R
+1256 0 R
+1258 0 R
+1260 0 R
+1262 0 R
+1264 0 R
+1266 0 R
+1268 0 R
+1270 0 R
+1272 0 R
+1274 0 R
+1276 0 R
+1278 0 R
+1280 0 R
+1282 0 R
+1284 0 R
+1286 0 R
+1288 0 R
+1290 0 R
+1292 0 R
+1294 0 R
+1296 0 R
+1298 0 R
+1300 0 R
+1302 0 R
+1304 0 R
+1306 0 R
+1308 0 R
+1310 0 R
+1312 0 R
+1314 0 R
+1316 0 R
+1318 0 R
+1320 0 R
+1322 0 R
+1324 0 R
+1326 0 R
+1328 0 R
+1330 0 R
+1332 0 R
+1334 0 R
+1336 0 R
+1338 0 R
+1340 0 R
+1342 0 R
+1344 0 R
+1346 0 R
+1348 0 R
+1350 0 R
+1352 0 R
+1354 0 R
+1356 0 R
+1358 0 R
+1360 0 R
+1362 0 R
+1364 0 R
+1366 0 R
+1368 0 R
+1370 0 R
+1372 0 R
+1374 0 R
+1376 0 R
+1378 0 R
+1380 0 R
+1382 0 R
+1384 0 R
+1386 0 R
+1388 0 R
+1390 0 R
+1392 0 R
+1394 0 R
+1396 0 R
+1398 0 R
+1400 0 R
+1402 0 R
+1404 0 R
+1406 0 R
+1408 0 R
+1410 0 R
+1412 0 R
+1414 0 R
+1416 0 R
+1418 0 R
]>>endobj
-1373 0 obj<</Type/Page/Parent 1372 0 R/Contents 1374 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1374 0 obj<</Filter/FlateDecode/Length 94 >>stream
+1120 0 obj<</Type/Page/Parent 1119 0 R/Contents 1121 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1121 0 obj<</Filter/FlateDecode/Length 94 >>stream
x+ä2T0
ä
endobj
-1375 0 obj<</Type/Page/Parent 1372 0 R/Contents 1376 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 58 0 R>>endobj
-1376 0 obj<</Filter/FlateDecode/Length 3865 >>stream
-xÍ[ÛrÇ}×Wlå%vUaïؼ¤(ÒvXe],Â¥<øe ‚$,b—ÁE²þ>çôÌôô cÙ"©¤ÊæÙƒ™éÛôôô®ÿû,MÆøšÔY’WÉlùl<ã‰þãí|’TEƒ.“¼ÕÜ&çÏ \&u5à \&i™ŽJ;°â¤y9š`Òº¥pR1pœCŠ0ãfT`\1&%€ãH•“\ä¬õo™QÕÒýŒ”\Œ£#)3–Õ¨ÂbeƒÅJºX>eÎ(iR
- £ˆacä „Þ§Ôq.“IÓDÎ@ˆ™60f$- ³@ Öb°íiXƒ—I6.G¹asº©LiM¨’qU¢J„P¥æ¬Ê¸LšB'á8©JIwè@‹©J>XÒ‰'1jœ8¢8žkø“R9¹¤ØGI‹¹$c+•%‹fìb€*; K®Î0.rŠ3SÃÁ™bÁ<ÅÜq Å`¡eø-—tâÀ¼Œ±@! Šã¹ 91é˜qI‹Áfé5,6XnÇÌøÉiɉ[²Mœ¸¢¸žCìC"å DüÔ4rRØ õTÒb°EIq"k0ØŠ©À°S• Õ±N¤1Ý
-…€¨Šç+W9±ä¸â¤JZ 6çÞ4¬Á`1
-ÑÇ ¶n3—âÿ¼v v‚(n!¦"’’ƒE2Á¢‘5줰nѬÍâVõ\š‹xJZŒi«†òFÖ`°˜n‹¬Á`e«Ö`²ÆYk0\.çQdËÓÔl6Ñåž«Sº\9±ä˜ã#i1Xd>ì~j1XœN0Dd ¦2cº<²3~ÅÄÊZ 6«j‘5¬s‘Cäb+ŸuPCN4œ7Ë`ûHZLU „’a [ásà V}à eïíºN™I7r. *ã9'½rª2JzeüÈ´àžŠÓZŒ±eÛÖ`*Ãx1¬ÁT†~‹¬Åô[6X×b°Ípf‹QÙ!&ff‹Á–´W\×b°²× k0Ë4V†sÊ)Îü Dˆc“‰$rJQ€Ðq(*¤sâ,œÔbš?þVXƒi~ž­qbIiy9‘” I8Ò@ DŽ„JZÌi3ꩬ›VŽ#ÑÓ
-ˆÓz.M%X”´˜‹²"‰CÝ´xȲԉ' Në¹4k¨Š’cZYΰSžª†5˜šfv"¡bå¹éDEò·tQÒbŠÄ2Ü°ƒÅeÁÇL'Èφ5lÃ[ˆa †:™(«3[ ¶`ñÇ:eQD3´²¢²žK³œÑ¢¤ Ìš,†™:0p)¶i­Ì_’´˜v`ÑYVºYUI8ȵÄ495Kä „T1rb= ™!-‹ã*¬/²L»”U¤Ö`XVjÔÈZL¯°B0¬Á`á_+•ÅHV8åK3Öb°÷[œYN‹ ZË>(±´ãÝÓÊ/žÌr¬¬wâ@ÏÉM!rJÁDòCŽCDûÁBXPI‹iû”zDÖ`gû²°}À.ª:ÖÙ
-‚ª(!x{ö”+ÞÜA~†û‡3PDaR/¦ÏžÏ4—L¯ë¨Ñ¯‹dz)Ýw<ž}3m/nçI•œôÝfÞmÖßNÅ(¤¢”£Žü°£ŒÃ¾9?~ù☿@"©36öñ0y³êÏ6òwÇ¢ñÏOûÙv‰9ÛÍ¢ïÈ2äŽ=ÍÿR§v§W§e -y¡ØÑ]*¯ÇtÞ.9‡ødR<©üûVóE‡³ä’Š¿Ž/Ö›Uë]ƒó½üÊ„ßWGžd´öQ.«.g# ¡Ñ8 ñõü›¯Ú[>Fϰʽk’E·Þ´··vØ<y^eªW¢#Þ=Eou›U¹…íRN¾2™wÝU‹StrÓÞmæ+>g­„ãRD*ÎæsðßýGþMÒ’ɦçÔ’MêSDræü(“á‡çmw)£Ç£b’ù§óµ$ Üðãš®ºsÊ÷üû˜fØ÷7yÍ\g
-ÙÇ™äí¼uZ¡:(ÃÃÍÍ\¬‚·9MÐtÙJ.E Pé³»öz.™åN¬¼ë­Çâþk‚l t¶«ô‹íâörÑ]SIœuYäâ/]»Z8=™š'ÞÒ^Ë¡9Ð2ßÕr꽈‹ºzùI<‹ÛBpöbyׯ6m'qŒ
-¬ÔD·ÞÌïäט¡ò§Òãys°RPzpl¢¸ÚÕùd5o7¼¸»á$=äÖõò‚º±¦x&³¾»Z\oWšÂQdŽSŸ“«ÅíÜ­‡]U<^A‘Ž)èQZ Ü]©ÈîÐOýV²â ?959)^¥ÇØ ~ân\š4~\lnÄN迃%6ÈzwíJªl‰IêÆËSÔliù…wq¾iW¿ÃѾ.ÕÅ÷„‚ËH‹úCŸíS¼zÂwË ÷C¶^$>„’÷Ìtæ6¤hÑÝži÷*µê]EYŒp¿ô'À¢›o.GŒ úÍçº~,wzMS)&áN”Ã;nu©Û*w|‹ƒ¾Ãý0ÿ'Æ' )9AÝŽï/4ÇIrC¤†4–´rn Îý–ÓᥥZæ²/Ý ·¢6J°Aƒª&\ ÒQ½×ÓÕ'J9ˆÊÛÅZC/÷0[ß´+”á§y(iÛíâ–W2 |ï2§S©)f”õ|õÁ•_hWKœÞÈöqêêó Kc¢É1¢»ÃUÑ'~h Yýp‚;P
-t³®ÆرÁÇ÷œ7dŽÆÊ ïེó´O‘ïnÚàã²kI¾ä'Wúhzƒ“Ä‚Tƒä´ïþÆ×á6ñ®_½ÿWAǸôsÞ+è&Òœ H¸ÐÆ'üÆ.$ÏÓE{Ýõë°yÐd¬ƒ‡Ñ‚AÒXŠÊø¬AïÈ_XÞß™.¨‚È°æ·âE«Êù¬¿“‡4óüÙ©; ð†1œ¿³âƒS^%t؆§!4r5¾Õèä¦W×À fîbw¨Ð»6ý¬¿¥÷q7Uw%?Î?Ìå)_…Ûó+<Ç{|<ñ ¤+ê­’oV‹.$oÔ›øÏ+y0aýüêì?²±ì §÷ü¸-÷ÛILæ"Äÿ›Άn´^Ä2iá6%¾9ØMF®Ö·ù±Ÿ½×òÖãA„úŒI½üh9ì…­+Ï­ü/Û»;/rCÊϨ$ºvéJ|°ª—ÑÏä/ÿÔib»Ñøè‚J…þæ}í&ßhÙñ§íbö^"wQm¬úµä›A:ß^ —ãäÒîŪÿ2/^Xi~Jžó§xG¡w²ÃÓò”¹^õ[¹Çã-gœàÞ™¯·‹K—#‘R³Ïì¦Ò_4-¨‰ÙÆ^î)§‹õl»^ûf=þu´#§ÒNMSø
-iW .=‚¯iâ…ºw‚í-ÊÊ{‹k†kZ U”¡(?îº~ÛÍæWc—áþ»7öˆox¢eƒ›ÓšÌ€_@›Ä„*øl Q*–Å;¯Ø <ÿÔÍÄ,ØCY~ŸYêÀü匰3Aê:Ð>qÆö^?ê†Å»³Wçô2jÜ:÷uòΚO½žumC¯ñtêZè¶YüêõTÔ±Må­ß!¶»´ìW.ÕØnn´šûÎí/ÛŽùå›ô—oe×áÈÔ"üÎ9x[YûwÙ—bt^¦õ°Ç-ä)—³²œÒ>ز¡¸÷çR†–ןðR:á´G9¾t†Í^û궷·ép‹IÞÎ×ýíVßÒ PÒbïõêÒ_¿ñN> 1NA{pâí/ËòÿwpúTNV¢>^ÔhbÑ]õ«¥¶fq˜5Z6\¶›ö¢uÆz"‚#$“6­9úø_X?çûGßÞ«·'ûÞ0q
-áK“öÑrØMûgƒHÚ@{…cÍ•:³/ú­«tÌ%ó|>Û®énÙÿ^é¾$á5å—…;ªî7W/?à]Ixñ…w¼Õ$„íóþüå d|U¡àwÝlõé.ìãqöñ—Ôiw®Ì7YùUꎒΣƒ&ëg)ÙõÝÑÜ)5—þ8ú)“,¼T¹k×ëýêÒåTÔ°Ò&óêñ#æv{EÊôÀ[1¼ )Ex|Iï#'ý/>å9Êo~ÅòØmÿÑ(xŽï1âA )w7â›ÛvÑùp‹…þfþ›ì6Û3Þ Ž'Ùëéâ³Áj{5ÆôÔí£øæþÉD¾ga¯ _'TÙ;Û<=~C'™ëð=S>Ñc¯ kÑMö³áÞ&Ùåñ÷ÈÐT^$f½²åxG¸Ÿç¾fñŸ/=ås1tˆÇø€­Â?‡ Ÿ¿%{Ÿ»å¸–t]=nøuÙ‚ÑöÝôÙOÏþ|#žendstream
-endobj
-1377 0 obj<</Type/Page/Parent 1372 0 R/Contents 1378 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 102 0 R>>endobj
-1378 0 obj<</Filter/FlateDecode/Length 4477 >>stream
-xÕ\ÛrG}÷WLíÖó šs%¹/[¾f½eÙŠ¥”÷!U[45²˜ð¢Tlÿýžƒî0:‘lÙÉ&U¶»@£Ñ
-°‡F.Ï›A™5JzŒi!)„7ÖáðÐÎX‘ð2+†žnc=[ i Ùc°U5¨<ë0ØFÕÆ:ŒÇêx™ƒ)†L˜ì/ÀL9* ñ•ôÊ6cNk¬Ã4Å°;Öa*›seu¬ˆTO,h)
- :.3˜ Ï4ŽÑ¥.¹&ÉY˜"GµÓ7eR˜œ— °‘Ësî×ZIa8/¬k¬Ã`áèpeâ ³“´ì¡‘ ¾VRVØÉDЉËáDãÌH¹Ú<ŠëpXÏƳXÏ„¹žt@ë1Øšvp¬Ã`'ì6cƒ:£‘ÂJ€©¹<¯øP%=¦yéDŽu˜êp‰ë0D’àa¬Ç`KF}Ç:LeÇ©Äy«¦'o €ê8¸ÌÆ<zsâ梌̃…ÇÂÊ Ö¹¹o%À,¹à÷F†%½$º`%ÀF.ÇzÃ|JrûTy.K†¿Ê‚¨
-qè(¨|‘œƒKx
-…5àf4ª ãy`̪Œ“¬*q’Fç b O_ㄘÝHÁ6{¬Ã`Çœ’n¬ÃôHF1c=[5ð9Ç: Žá¥ò,ÂPg¬Ã`ÇUG*a_¤‚~f±}Yˆ«Û 0ÛG.[9e@Qå°È ÂöôL㤋ð”0Òc®Ì„’ê´ƒ­
-ji¬Ã`a’ TÅcXG€ë1Xxg‡uöË‹ŽÌ+JL(~̓.
-ÌbÄXÁÊÁíX‡¹²Ì'Œ ê ºê]0u"ÇVRÒcŒÔêë0X SŽu숩…c;fôq¬ÃP{N®Ï ;VΑ´cP°#'eh¡œƒxd5¤”ô8(U…2 S\F cƒ@°…&Pä VƒèÏ/’s“†§¤ÇWVÆX‡)[6qhª˜`&Päà÷PK91)â´TÒcŠ+AÖX‡)®Yc‹Óv0Öa°p ÏŠ2ô=áPe‡rf$®4ë:HqY Û@).Ï+Ç: Ï®=ë0½sˆ=cce³±’ÐÍ
-ÌôÚ±ƒEŽ¥³™æQÄ\ÀXy‰)tlp¤3º™Û„ '[!@úOG#=&Ë^§g C`é^ë1•âŽu,f†)T(ƒ²X;e©lÂ`±Ë¼ÌÓLm,së :nDO¨#€žè`¬kŒ“Ü:C!ïÖq"ïfGÌ8a?É­ô,ªel)Öc°ÐÒOì1X©ÜX‡a]d¢°®Îì1XIë0Xé³9Öá°nÉž4aÜeò$®órë1X¬gÇü£ŒE$ô2{ ÞãÙààÒ—‰Ç_Hå-F.|l¤Ç0#DÀ®’ïŠG0ãGKƒ1Bö‰ü¬“F&déJ‰,hâé^“ŸuPdäXQÆý€µŽRÒ Ø4Î`ðÚqp±N8$ç 8›„B:ñ¸²9‡Ÿ']rmÊÏœQÂidòa½£”ƒTŽ¥•qÁ¡Í+NÏ)'=;ã Rqnuå¤âì&g†“ÓAºµtÿ“,¢8’tFQU~VÅ#œJ)¡
-QÎ —&ªrÁ¡â@ëS9ƒ4
-“åÄ)qa ¥«ü̧‰_G&ôöø-_šea ;G#tŽ"å Åç5—qÁ!l¡É§ã ‚kŠÎ8ƒ°¿õ:ÎAp8'ÙþŠ²8gÛf‰3ê9Y§q:8Èõ-µ8§˜²11žü¬¦Œ Ú?HØø-1¥"t_x*c C¼1Šhbj¤”ƒ417ºqÁaÛ ˆHb8Hós»g\h¤qÎî=x†"h˜]HQ3¬³fTegçr‹g÷Ϧom¶¾È¯W»vµÛ~wö3FáDË9ꈵ†vÿñåôj×nø» 0Éùý¬ð# ðÇmø¶æ¨œÄç«‹õf9ÝÍ×+~^?¥çÓÝôítÛ†‡#áG|çx8Â`Áç”ä ò(Îœ~z}uµÞìÚsŽÆQ`Ó¾xòð„–ëú¬Óvó[»=±+ëzä|“ÿŠ’ò@¡1åï(Võ›]¶Ë©(€´}ÔDCNW¢)ökSVñ³×íB,»½œ_q
-ÿþök•cY¸§]?¡ér84¾½ÈÝ…+&â^ã¼ë^ý¬åÇm\®C=œ¯Ó9Ìr!h$²«évû~½9qKóœs3ÚÕlóhHõ¼éðHÓPHL׸îÆbåPÔf Ý=¹ˆznù}»K^‰—]ÒÆÊVëÕÑl½¸^®8R³J,ú&?dëE¿Ø¬—ò!:Ï¿ëÙHšCÆð¦ú:n €*Â¥«áøs±ñËxþ–R#È[¢õŸc ˜ájqýn.¦à H²gGõp Ò]^´H{ËûW œQ‡ýÀ‰.CO…·H Å·¤
-¦ˆÝrb¡Ø¶³,/ºXJ%2 âØp)U<_/qÞýô."}Q˜+K1lºhÜp0©q­.F…X% §rà¢Õoô¾/ϤleC@Ïñx(ã=™ÞÌWÅ/í”Ô98ÙÌ—Óy¸àS3?»$«è¬l>mÖ‹Eháý<¼ÆðÅ®^Ö|΃gÚN*|[„ˆbùýɦݴ¿^Ï·óøÚ°V|¿n§š4c¡‡ß¬=¸YƒnGxÅÚNeH»¯Ñ£éì—wè„ŽQªÓÎø­?Œà†ÜåÃx»p_…~2lÎx(Û7o÷] ó;tÞ¬6íúÞÔýñ5ÌQ†IûDŸlà•žÒŸªoŽ§³ËùJ¼“I´6WÏ6×[ Th#kG+»U'éßëù*U…>P<^ÌS_˜õ»†¼våQ{ c¼½¹yËPË+]OAH³ùVðñtu=•ˆb¾Lþž…r1ô;åâdá ,Ì x·Ýä¨|§%Cwé'v{µ:Âv8z¶øø7†=Þ$k æé+¯:vôo¾¾ýo–¡‘Q MÛß&ýZùS^{(4O¦uø>¬ž„·wdÔvÍÝ.tß
-ƒA*n¼ãc|<ÜíÔz¼^.£kã-Èt.e'›5ŠÃe(«+W’ê"?ÝlÖáJKz­sH¨¯ñYR”ç~g‹‡Þ¸«2O?nw­Ôƨ¯5Vg'ëÅ|–zŒì¦bà®0ÌÅ|’˜%å1_C³OÌY…¦ÞIò+Ûë7¾¹œ†˜ŽÅÖæÀž-ýaDz‹p—íBî}ØÐm?›®èìÌ]5%~.ÁÁuÝßµ»Ê–À‘“[GçO(x««Xü }ì&h½&ƒ;KœâÔ‚a_ï½u˜‘¬ž¯ß§]a5âäÃã§2^†O›èVjÜòË•äÖ½+!\î8×R¤·§¨õíFó9êÛM¨·ÿ xH›O/ÛÚk’Ÿw2†ëwë•Ø§úðŽ{G•¤ÞGü•ÊîŽ>Ô“øåN]ÃÍç&ײpm¬fx½ž.SÃúj„Ыj9ºI:!BN¡Û7Jªì•ò
-vÎíçzO^?|þò¿_½<{ýêÅ`Z¤òþP:d²°ªƒ±^`~Ê_žqýñ&Š]«ÝrÓü]&ðwÅ–Qã=Uâ7÷öZ‚ëì”Á=ÿ°ŒÑ?½#ð¯õ{ŠæÓ==¹m?œIÈD›Ý’㔺,”‚Ó >çéJÙlÇ"þSå*ÞÚÔDü½“ëM»ןþ>ÌÌì6­P¤å7ìmÛ›p¸Åá{='­¥!ã*à
- &¿!Qðì»ãÿQÔëÁ(­ö5ú ÁQƒnœÞqqyÏÁLàW”:ó‹˜ötÊšÞ5ªs•gl»t^ ¥ ‡2êU8\$@›g<¼ƒô?E–h›‚¿—æ²BZ§_øYpÐ|.;_‡$ÿŇžiÞàpD{X[¬¸1MavdAb…úþÐ<¼#ÓXz®m-ï3Ó®V0ÞÉI‘%)ù9×%e:Ú¯h˜~]ø沕$—qz¾ÍåÜÇûvZÝ“'á… TÚZ,­Úö¼=}p—ª=Ÿ£Ç­ÇDÅùJZÇ!úí“ø²¿«ËfáÕ÷…ÞJ+…k©‹Þów6ÀÆÚT¸ýžÒãJÍ–Å Ý?ÿÀŽ…9:®S+õÖÖ‹’÷à_èn«^ayxOIzà«^A±mà ŒK5~?ëYùðú<Jšã„«¿euÌôà^Þï"¢0®rüû x'Q^…<}xüè!«ìŸÛÙ.{²ž]óm+#òË%ê»n¢q5ŸÓpOÏîýpï•ztendstream
-endobj
-1379 0 obj<</Type/Page/Parent 1372 0 R/Contents 1380 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 145 0 R>>endobj
-1380 0 obj<</Filter/FlateDecode/Length 4477 >>stream
-xÍ\ÛrG}÷WÌcöA4g8ׇ­-_6mÙŽ7V6ûJQc‹1/
-/qò÷{€îÎT,Ç’¤*åÃ3}Ðíüò(ÏÆø7Ïš"›ÔÙlùh<ãûÏÿ’_²ºìðße6éFy‹ìÍ#‚ˬ8‚ˬ)Gµ#¸ÌÚzÔGp™åãÚF—ƒÍÛQEMƒ-†3[W£šÛ^fÅxÈ2[5qƒ­»@ŒÁ6í@"ÆÐo^ XÆ`Ëf bÆˬ1[Ùª”&¦ŠåieÆ
-DËe
-ÖHƲµ ê,aY‚‰¢ËGX–`2j¸-a°M7—0Ô8™Œ&Ô–±,.ŸÍ*[˜jV ¹®YmAL(Ø„‘ŒÁæݨ¤¦ŒÁNtÕ½-a°U.úw–0Xìl:g CÔ|<WvkÕÕ#îÖ
-Í#¸ÌºSuŽ fª»ÕIÆ¢ƒñ )c°Ø5iæj*„ƒ”<ìDÜBÕŠuÁñðHK‚˜®ø
-ÛðIP“±A˜J¼BF ¹n«®Œ#a
-ñKN†NË FJ*ðN#׎á*ã¢ÓñDÌÚHÆ`k•ÃØ0$LV6R0)>däZq¤•qeHiï$c°e)ª³¦ŒÁ¶ù€UVåš¼zè
-jr–1XÄEXk4;‘#iVk6rm#ó5Ž ˆ*dž“ŒÁª±K,–ÓµŽ‹¨­(ÂYÂÁíq[q{ ƒ-$ô¶AÔ¢$»Uà¢F.,±qETÙ†¥‘ŒÁ–:]g ‹0HÔ–°#¦³aº*QZ>ÝÈ5â-Jãjàõ‡À=AE ÅHÆ`½ÁÈœ% ®ºu–0ØNÎeb Cб®’µe !÷,[x‚%- Ë®#Ð=ã’P4|¨rˆvðoHž´!µÏª † *0jRàó›M¥#@ '™”s1œî|'Ëd*ì@b ƒm$» –°ØˆøPgƒ-s,/±„ÁÂ0ZbÕ¾&‰-> @µ'áZâÚ΀ªAÌtÛ1€·‹Gt¢@8‚s’ËrÉ,Žx¨ÈYÂ`¡ìA[¢@±[jKJ€OàžƒENÚ¸zž0^ËIqô<OœÊæAL Už9:E¦$gYèEw¹Ð‹qECr|F†NëS„Nx§‘ ½GP:Íe¦F†N«Á‡Nx§‘ ½GÖ9Ö£0RÍ®À^2ó @:ÕØ&q¡ýP8‚¢S -¼!c‘CB:b Ë„t=¬cÆ`;‰©-ar¨ÝÚ2ói`ñÄ–ºdÎíÂ3¹q)píF®GUGPD-DF2ÛäC–0¦ ?̇ !árÃTàŠ\˜q1¤‹…‘ŒeBâ6 Cjžö‚2rRÀœF2F·8›ZbµÛ!Š¸65Ü
-¼ÛÈåcÙâ‰ÚØ­céVÖÜYÝyMñt
-dش΋sv–°(Yb CXx>,µe,ŠRßf¬.ˆa¬V£aôh‰L8°Œ’ü¨ÿ
-õèm’üYÚ8‚+Ôú}biÒ‰+ŸÄ 猒!ÂDñ>QÁéžsΡhDN(çBb,/ GPt%™µ#%nÒ\ŠÉHAÃ8‚à°!HU0¤×,J\¢þYlÕ7‰áŒqÑÔ1EPT¢µRé\:$N pÞΡˆ-Ô8‚àP¢Ÿú$(*‘ò…s!6|Šƒã\ŠJä–È9‡à`(JZ;-rÈ]
-,H‹A’#XP±ŒqEJxjŒ£ H©ƒÄîD‘‚CQ†"
-ávÁÁxQ-³>‚ÃàR¨Hã9„"5 7Ž 8l</äC±!
-AjSër«BEû1Fí'2IP#‚˜"Â<Dø©Ã§ÛáHÊ.ÞÂA!óÇÞhÊìâJo“ñó웋éå¢ÏÖo³gëÕ®_í¶»ø­pšäÒê,6;+¤Ù7Ï®§7»~#߈k@èäꛬÉOhàwë‚QkÒ»uøbÔå“øÕ“ÙNÃé4éâoSYWUØOòl*õôt:{¿¿‘qa×æé³çëåt¾’ŸÔŒ­µˆµY/aÒX
-+|²TáÂħc½ÞoúÅï:ßfþfº¼ÔOafy™&fC]I„xe“â“{ü-½ Zq,USCÇRÁ€G¹j’5çÊDÜçy´‰]˜?—1QYµ9nú›Å|6ÝõB@%u‘ô¾»Öß$BíŠØávyy3Ýn?Oýí|ÑÿCú@å¨Ë›ðýèžÿ©Já,—ËÝj¨âH!ϦºÌpÙ®à#ñ5´»žãÂö°5›.*iòÃ|w-¿árw2n£~^<òZµ +^GMÞ³Žº Z¡ÍX ÏýÀÛüávlTg¶O›ë¶Ú“çoT´¯l›a÷ãdSË~y¶L­¨£ÚŽ$ºçªJ¦G[J‹d@¸ô
-ª˜$lñóÕv‡UŸ¯ÞI[\÷ù"ŸÚ›þ—ý|Óë¾€Ë+ÇiÇÜÀ MßõjR8ÿÆuàíZý#òdÙÜaÐçýå<X-ò¤®z ]íœÁP|áòè/¡„ú«ï¦êò¿Š&‡Jx¶^ÞÀ¹©À?šOðí‚ °ŠËzÏ–û©ÝÅum[^ÖòP¢7ý.œŒ¨z·æ»~_ïÕ"áÐü{Üïfßo.«Ñl½z+:@ümÇæ§Nïs¿¯j™Á™\Š²ÿG0(â³MÏ4Ü(”iÚ¹3,ï>+ØæEw]6ÍÖûU0Ä;&ÒŸ+Ã'´7q®êÔáÿz½ÝΡ‰zÄýX¤Òo6ë:Yë"*âæpŸŸ&yò1›g
-Ýõ^ô[Õ:rïÚ"“Ö¹í7¿†ãá‘ËÖì'žGªs½OAîÜWÕƒ/Ï2Ç“w(s<k:X¸v2È@6[Ì„Kß8SLIwžÖ=~hjèm1*ŒípK¾ZïÂ1KükxËC5Y(ja¨ ¢¢œ)„÷Scþ;Q¯.JYOÜ
-zNC\LYHÿÓ|U¼×mŸäq~Jjn¶ªyJý™¸je6\H$ÍÚãÈêßëùÊMÝó¢ø Éqa_]HßÈØ=_ñ ¢zbrr£øZ µ6O‚ L{EHW?¸? Ú9ËqYŽMMj9ŠµNOvºÒEõšMàjý!D”xna©®ÁT2Î
-ƒºÂ·¨±Õ_ä«:Qð™>Ò}[ýt­Y3fì‹Ó/dçm:ŠOæd—ý.Ûp(Û»ë˜÷ñé±ígûÍ|Rt¸‹¸ÿ.3EáÔ¶R8RB«ÉÖSM‘Ç)°ÊærÎÏσÅéaºøþf7_¯¦šJZb• Ðæïö›©ð"–\æuÑE|æ&ÿÜæu,q‰K'—«ý,M·úBÙàŸ”¥.TÌÒ$¸­ÌÕ…UKGÂ9*fïdYB.‰š§ïÙ—o¤WÔL¬no»ϲҎÍVýîÃzó>leÔd̘ëã“ý ~½oÍÖ‡ù´¼^à€5¿ÃÓÿÉ»~u•Ša)¾ù“Kñ Í‚PgRú#Ÿ¹%y5]jœsœ§ÂÏýv½Ø›)£æd!¸Õ½‚ z@ÚÖðD1ä^ž€ü¸šÿöøÅ|µÿM(¹€2'
-GðBüpUcÁp(ÂF–ñWÏuµÙ×KFuHxqÇу¬@8J=”¶°ÉW±äý »å.ÆÉëEŸE>2÷P8˜û
-eåùnvmó— ¢‡=}ÿ@ˆ8wy¤7ÔüQsÒ¨™;@?í‡,f¸M°¸m¿ uÃAáE¼zðøKm
-T³x^pmš ã‘NÜ,OîÁQÔ!£-àŽ†;
-q»zJŽ>/â^õ¥Yöªß==ÿ^=Î]³“z|6….$¿o¿œ5ԚԜ᱉Çìx-ƒ‰øâåwß¿¹P^[îHô¸ÇšTvû|ªŽ¡yŽ@,Ý'‰`ÑPßDÀ#{>I3à‡˜ç]ûl4ã9 ¾b Qt2$ÑóWº$¼z/ÖëtI¨öü]½H¥Á»ŽC§
-œ<õŸÎƒ8âls‘<¸¡î¾Ü†9µ^Qü¶µ£jô©‹ËË Üè¹^âí~¥ Cƒ©ö•Ê”¯ã3§‚vÃl[0»Âè:ä†\(ÀP,©âªÜ+§BÞÆÏC¶eªÍÜ*Ê> ˆ
-“o0 Üáñºö°>Ñ„<ª”›oVêQýûΉ[sãµfšªéÁö)ÜQÓ)GU7ˆìµ³{2“¯Âk5§.ɶ}¿\ôÛ`xfaÆ?OyVHåi~ë‰59‘—vª<>Ç~Ü¿ÍçØ'høDëDp¢þ5ÝãÆbµ“ûù”ÓãÁŠ/¨ü }_ÍDÎ(¼äÀqw ™3“O}9}.Áœ^Ë£¤Ç/ƒQÊóÎZ¯™ä½…EH'Tóyê¿ÕæéÞ7°Gûï”›£ß¢ê&ñþÝXøGÁÞh½&ì<C5C¾EjñÓËÝMéëýV\Ìp
-vMG×;{¶€ó[¯T $5©ñëý±Ñ<Õãä=%6ÁÇ.ð„U;¿ÐùñÕùÿä§Áñüºß,縩 
-±¡{º§ó;˃SK󣧕',)ÉÏ8ÜçúPt2x*fšžÌfÑOÊMº¹Z,€¼uÒÙá®ÐvÙ‹yÌßåo&áýן †šÃÒœ²—AMѹF¿œýwÞHç<.×­ rꌙ¡²û.}Œ*¾ùAÒµ?Ûº1]G3ó˜;;}ôžº>áºo÷óébýNGƒ¾'åÝkíAkgÒ„uÝmÒÕ©@éD4ó+T*k‹`Ñ‹„·ó]Ê­’û„ûò´UzäŠÕiµ½žÆBž*?X"ª«Èq6PXt²Ia·×Ie¬?¬úÍöz®O‘±—Õz¾uäíÒÂ[o})[üSô/õáùß›'/Ÿ>É^oÖ?÷³]ö|=Û/#X„ ÿß™ªƒ!5x܃Ïçó¹¬Ý?/ýçÑÿ¦hB endstream
-endobj
-1381 0 obj<</Type/Page/Parent 1372 0 R/Contents 1382 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 190 0 R>>endobj
-1382 0 obj<</Filter/FlateDecode/Length 3987 >>stream
-xÍ[M“ÜÆ ½ëWðƒS•³ùÍSj-Y±R–j#­£T¥ràÎpW´w†›™Y)þ÷y
-·È i1Ø*›²ƒm²EmǼN²¬,k1Ø¢ž²ƒmÜ¢03[ ;dé¢1¬Å`‹j"s^‘ óC`¦F™ÐÀuÒ6dB~8¡ª‹³i1Øl:­Å`디щ-&3•dDeË‚$Ì2È‚+H´ª˜6-È”´lÅž£¬L›¶$LË Në9‡mÚJZŒi›’U–[¶dqo\4-7p.­±‘´Ó™e ›×XÔŒ5lÝÂV†5æÍ‹EkX¸Éù@‰„ ¢Àžsi[•JZL"¥Ø5à .ˆEãXƒÁâ
-¢ ôA#r²g~\KUPä ÄzyC‚ÆIYCG•QÐAÔÐsy ’ìí9ê5
-©\‘ä`3ˆVðeU˜^I‹1-Ü‹FÖ`°ýv,/šµæ¢#@ œ“HZLºÔÐÅ°ƒmÈŽ†5˜¥‚ÈŠH¸?èÁÈD‘<'w­HZŒE º™Ö`°5•‘•E+¹B±ñ3qQÏùE”´˜ì@oj1Ù’GdÙÉ2¸:™
-Gƒ(°ç$FÒbL›;I‡Z  ,YƒÁâˆ`ã"k0Y˜Bsd-‹Û¼EDz:®‘òí/@Õ œC\α4=É6"áæZZÖ`R–:f¬Á¢¬3¬ˆÄgÐû¡È(’ç¼HŒŒH"k0…  ±YƒÁ"w·†‘ðˆ _±!Ähž£¦ 4UÒbL‹ÊšFÖ`°ØFËÊ¢pluäÕâß²¨çÈw*>Þù &M)Ä¡2-š.êÀŽA4¯ç¼ìJZLºP4‹CÙœÜBòµ6=Þ°…°ÛÐËs\\GÎ@Ür2žŽ3ëñ3’ƒE it¨Åt$¨J¬Å`j'¬Á`¡gmÇ ç~¯ëZ ; Ì·RY ¶l'3sÄÇ…ž|Œ#<ÿMÛ÷@ÓDíX?†ÿÖ1ž‘ë†R<QZ/ü·ò \ ÍÖpшÆÆIBw7P‚C0Eû1pìlØc½žðßêjž!ùÐì¡Çˆ2öÜW9–‰KÛü·Êî´¹ézåý/"’R„R‚Ã*¸ë…a,;îÎzæùo•Ý3ä‡ÆôË¡Ãr°‡ä“…ø0Î@pE
-ù•ûîòÑ·O)¤'—×õ^ÔEr¹â7øyùÍewuÛ'ãuòxÜìûÍ~÷çËŸ1
-¾éhÔ™v–Ñ°o¿éîöý–ž¡Ã‰ù0Éê8ò‚~C%~ùéųñc(+ËðãE¿]»Ý0nˆ‚ª6ó3|7ÈÒ¸f¥Míì6+zÅfÑ„_›ÕøŽÅDJª+zÓB"¼¸d PCd­ÿé|¹ìwü$imf M·ã-K‡„èrÿøÃ.¨Ã'êgðß&«`
-1Xš¬k¦ûçп674Ì_å…Ÿîz¸íY$lž®1²íPË´úÓjØöËý¸ý•gÀ%¦òÜ©µX‡ÁF¨ÅéþWW$Æ‚ÿÎŽµ¦`vóiP­
-BÇ-¡q{
-9Ðï›9(ƒ{K]è“Íôy2Ù´=ÔcæJåÅé·bªUЯ ¦ª”Sw|>®†ë_ƒCbkR/iòÕ²X©ß÷©¬_ ÕµxcÛLv¯šªü ‘kÛ-÷!®àˆêÖ½öohô¿rµÄþœÌjá4
-5ŽöëÌ!8A²X¸E>Õ$ŘVRÁ›£› xk€6슘ICän}µXâîoÞ<Ø66™ø¥– ôFÝGÏ°ì¨9Ã?Œ»½?¿u±H8œãª6øù°ÜŽ»ñšO$%Ø*0‡^›êÙ õ•§jÊW¿îöýš4À#×Êw¿í%Y ¼ÕÉ¥ F=ŸkùnüŸ ›\L¨G;kqe´Nƒ{ÎÔižmªî9‡†j3˜çóÜõëŽÎp‡žø>©1/L_Œûž•@áþ{Ç5CS¸55"I™ºµoãÖHJÁ¯éÖ½çþînÜŠcòÚ_„T†ÿ£)Ñ¥hãZGÌ玈ËÙJ<‘‡#ôà²ÏmÎêÚD_\ §iiñˆ'ó)ö¯
-;Æ~‚%/úw4 Úz¥^õ61ÞàÞl1Äàxa<v‰´Í)4´Çã›S¶t~ñš×ÇJýEñ }Å[ojüB:¿8z§=ZÉÓY÷>`ï¿È3’cQH†æÜ*ð‰Ã¾ã¡3‰«Öt÷
-áKÍG$d‘äÙš]•E§k¾Vs—ãx»ë9w":T_vEÿDMÞ÷XËW³3þf(ú¨Â„é×o:eD Së‡Cã*þWò:¼¶Îss}Ÿ§úÝ+ç?²PÈ¥ÖSß›…üY%m&‰æü3^털}Ñ-ÁZ¶ÉÁø:”ħ3%çaú79ê®ß"]qìÀ÷–¡ö;Õn7h‡ÏLà<üU· ô9ô6ŠÞv¨‘’Ç·:¬_³p¡7rTŽSüt;è³âíÏ´Î{2t7›q''ÞDüAj<±I+Í‚ŸLw߯Ì$ú§Ó’›oY'Ìߟ°o^|Ür(ÿ¼°{Ò_ÝßÜø8cYãË$R-ãî¶#^{­% =ÐE©åÖ2>d;TkŽFv¯K>é0¬FÒ¯©‚#&Ïèô=µ
-yÓ½í9üã !²ç)+´ƒns’½+7ÛÎyÀx_~w¨!cÙñïôI­¶KU2ü0Í@%_ØñD¢©˜· ¦ý`ƒvZ¶‹yyö÷ñŠUµ/3wŠñâgYxµ°™íúx¿¿“Ö2v9øÂÁvœ¶ zæemù‚÷½³Øó骢?Õmä’‚[g,ÚÂh}?l)ºšâ?ò›j*¯bl%ó²“ ¾²Òyå«åv¸ã|‡ÏrTþD:wüQßè«öSo]˜¿åÎ tâîÅT·f¶‹ç«·ÝféßOà+¸Â—WÉ…iU!\ú}aþðßA›™C¶3U^ö€†qŸV6Ã`›´¬>\è!°(cÞqñ÷äÈ'í$J¬5ÄŸ6Ãõ Û6éü8ÞŒ›c¢O^õûw}¿¡ÃHŽ/@%…$öÚû‘o2|dž|Òqô[‘ûOè>sf¥+|
-’¾ö:¿¢Ð³ä#Š,ó‡ªóào¢Ñ^PÚ’=vmÕbVäýqôðLúª¸ Nå?Z ÁñÔø:)½‹íøvXÉmϾøyˆÓi×ðŠÍ®º¤Ü¼ ¿¤œx™¹¹þ´óï2²EzâK«ýøß­o=vñÑšîÖ£$;&í1¾g³^Û_$ÔàS±ßå:ëuUå^°’róÝš¾3DcPõ|Ù¯ñŠB2^ì!Â)‘!ï·Ì ‡Ä$ùWa¶
-endobj
-1383 0 obj<</Type/Page/Parent 1372 0 R/Contents 1384 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 234 0 R>>endobj
-1384 0 obj<</Filter/FlateDecode/Length 3539 >>stream
-xÍ[[w7~÷¯˜ÇìƒÕáÜçi“lRŸ­ãlì4û:–äD¤qu±Oÿý~
-ì9#tI$-&‘
-XKdaûiRV-aÙ( n DC—’.ü&‘„3mé²fÔZÖ`´…gc–´­èGS3+D]<ç
-róHJÂz «Æ 6ôœ+š%¥!‡”ÐAlè9‡iÇ„(i1Í™½a [“ãDVæÖÕ¼d2™ hPin-Š’Ò0ÍÍ¢0ˆ =G‹€iW’d/jòi”P;Êã(9!LZ`ÜHZL3@#Ö`°ˆ=Ö`°ìn±-«YTù°Oí P5G"8CZŒnÙplj1 LQ7²2hI‘$ Ê ê9‡Y-“BI‹Ñ-æ3·¬Á4h
-K0m ÛUGVDÊ)ΑD‘<×ò)g :-xÙ””N³‚}L&—AìÔs^/%-&=É
-‹È .9R–ݬ€5«
- A9fÎ¥ M¿I¤Å4¨£É¬Á`y‡6¬Á`ò|ÃŒ¨Šž Žöl1XÄç̲ƒ…¥Ú¶<Ã9AÍW€ÎpàZ§ˆœ7-až‘´,o³†5,– KÀ“h0ØšV.²"nSFÃÏDq='ò)g Š«¤×·tpYƒÑ–ÃLâ¦X7ÃŒ¹G$‡2Ú³(ƒ S]&g•ñœH¯œªŒ’^ßÒ+YQ&°"|d Ve"+Êø¶”ŽBUeEø(m‡ìª9ƒ¨ŒçZZ¼Èˆ!3J$#i1XÄ ©ÝZ á)·¬Á`«
-NnÚ ægYQ¦ D8(à *ã9‘^9Ñ©(£¤Å`‹Œæ!²ƒÅþ‡‰ˆ¬Á0$d€–q󌸢ˆŸ3 q DÒPcy"g †t"i1XÞ k0 D!:²"“ƒ•HÀ
-ä9Ùs%-¦9¢m/²”d­$öœ
- ^ ÄŠÑq-r¢OˆšÒb°YcS‹Áb§°³šY-I?Û¼
-D%±‚#›0{T`"‚ œr(õúòè§wˆiryÍ;xŠ[]$—.ƒâñøÕew5Ÿ&ýuò¦_n¦ËÍúo—¿¡bƒ£VÇ´ñ£ÙqFÍ^½ùÖÝl¦+z‡Ö:™¼‚#Žè<&<ù¼œ]Ϧ~åƦöoþÒí—<”m›Ì?¾šnî¦Ó%½ŽÙÀ6៙-'ý¿_ ¦YQQ—üpÉãaV²ðj·äÑPû(´ÛÏNÿÍ"`IË Úv=[~¥§pÙÆ…æé
-ƒÑóŸÞÁ³Eý¬Â)®l1TæÅÈÐ.ÏÚR}%ôy6¯úu½¡öžê%=of·SQ¼®üã·³Õt¼éWpƒbÔ¦a*.¦«ÛÙx*s„„-o¤ÉèñÿkýصnGÁ|OÁÝ‚•È`ÎK”xQY9uÕ.îf›ñ7¯s]äO¦À=Sô¢l¶;X;±T»vçÛ¯_É x)`eaQO¶›op‰Ù¸ÛÌz¶Í
-‡]Ù³~²Ë:¡0›W~iï‘éÿ{4ÂáqW¡ro­>¯ÅE±–ºVÞ=°ŸTªÁûU¿½áe²þqú–ÁÐsu™“ù¼³€ºäSZ¥ÎTÛ’ Çtvƒ£ —±ÚÓúÓt½³ÿaq›°É›nüÍû;…¬ »òŒ¿}hOê#k˜…pº\oºù\Í®ÄÑ.å¡uD쾞}Ý®´XçQ0è–7».‡JþÞZ.7+xB£øª_AÁçwo—¦ll maÖÔÊÑþÓô÷-â÷"ì—Ø$BÐØëø9áÛlGôý8~9]o‚; d«º$‘-·iðç[v(õ‹ÂçsèÆzQÞ»ÈÅÿÕc~™-f6VÂ8Lèëå~¢.̦U#qÚVÍŽ¡JÀÇsd'Þ'¢Ó¿œìad¯ƒM éî êðeáK %¶™Ôðtq³êo%7D…ÇÁj%©»Z!ÕóÆI9T¬s¶ä %h¤¡òîº[\uô•.ÝЂ´OøÕ¤ˆ”!Ûe ñN—õü–2ºéµ#µ2Ÿ!ëj¹ðh0(`T^ß'Ôèp×^Ïc'ML ÁPu{m— ¹‰fãëíÍM¿’íØÄ]Éct%qn)ÂDê žªžÈRcØ/G9UÏ« â‚—ÇKUs5]÷ómØÆP¯Í0_l¡O ëºTup Ô²‡ÁæÞ•ëè$#[<\súõöj9•ã!¢q–¿Àv0ÂU1­À1jÓƒÅÂÍê^ŠñsχR–æ|ɤ—tŸ|´ÁÒU‡ç˜ñŠº4nÛŠ:œ;þ‰¿Æ®»~õÞtòwz‚úÞ£ŸàÂDdð™eÞI%/¦Ýïs?%ïÇÉHS
-Ç~`ö¬z–îˆ`‡ÎýLº¿=?;9ý@2¡H«¾~ôßPè•ÅGp¸øÍpÞõ«qHsQgRÿÕ͆Έz¼ÝôÔ+.Ôã®tÅÕ
-zÂ?±µ­;ð=ºE³‹)?¦ænzEÖ€¯ ÚôÙýXC%j/I³ýˆó4ß²ëâÆŸ˜¿X¢®ã¾zHª/çxŽâµ-_-º››pS€‹jýŠãçó/—ç¼®ˆRås×(QÚ§±Ž~ª‘“ºQõâ`ˆ½Á®_-º¥ÄY\í¢ê'+›ÌÖë­/iâ ˆ¿t|ÖmßîTTÀ¹2®w†1õM¿¸éV³µÿ_1þAÕërŒO
-endobj
-1385 0 obj<</Type/Page/Parent 1372 0 R/Contents 1386 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 278 0 R>>endobj
-1386 0 obj<</Filter/FlateDecode/Length 3761 >>stream
-xÕ[MsÇ ½ëWÌÍrU¸Üùž9¥d*’YeÙŠHG>è2Z¥µ¹;ÌìRRòëó
-P #¯ÆXø‡Ü!å¼(-š °vk2êqÒ`*¬.#e0yfÑ<g`B×ÐÜ'íRÉÉl—œµ \[`¼Æ9mo¤,Á`Ñeéš’-²V2$O¾
-ô,úˆýS—ƒ­*øˆkë0XÄÍÒ±<yYíò²
-¼ÚÖc°mJ&0ÖaL”me=‹Øë0™ ™h$évN‹=ìY34É\ „²¼£1Òc°ØÑ`µ©Ç2Qð
-eÙ²i#»:¶¬
-ˆ5ÖaÒ”‚ªc‹å°¶ƒmyY)K…6r4ù
-’v*³&ŠÂn†ÅzÐ>3´¡­\@”ƒè
-‘Ëq<5¨fõÿÖ‰ ­±4QŠ!æ©•øomè„ÓAú1†0rá 4R,›1;᣿U\`°#ÃÉTd ‘8Š“J±¸Bvællþ[Åã™'Ê‚89l!ÔˆÅñ1OŒå´?Wq‘ Ê€(i|´37Πt†DERß‚ÃRE:SÎ 8Œ‰0r?œ?:~†<?OÎ/9ªÍqj[ÉùŸ—ãóâñy÷öªO†ËädXoûõvóýùïh¯L©ÕC4;ʨÙã“÷Ýõ¶é7ä‚ äâ1:žÑ7X0~9ëVo;þœ¤ˆ_¯ûñrWÝzчÅeM±ÜlnúÐ=–LèÇ…mÝ`Tƒ¡+ô”s_YÚ½ê» –!‘”±£Íò¿ÜÿÅÞgá?8u¥ÁUÕD§bªÓ‹î«„£Í4z~Z-·ü«©åãCÐh–få!•Ê©J? ïxôóYQÓ¹ÍUÿ¡¿â¯ØdíÃשšêtÐõÆî#©ô
-ðGœ²ý¼v/ºõE·ÆÿÅè¶2*^ûe†b½ çh ]¤YKã:â
-;ý—¤*Dk-ÚŸ\_÷ë‹å'Yêx“RשrwFÃ)/ÜÁS˜‹Jݶ‰ÅA {›åå—øíÞ.¯–Ûšö>—“Ó âІÆëR0õ^™î&à_þú5qën*ò>QPçÇõ“µ…ÓãiÒ=;ù…”À]‰&™ä×õ2x*qŸÊľ£R8ÖšdÚt÷ãéϧll»Ž‡íjCÜ©í[¼ê/~ì8Œ£,µÃ˜Ÿ–ë±Î’â6?yÕ¯ÞŽH¾Û£ÓS²'ƒš¸7‹ÛÿÇ 4Y@vÚ…Xÿn â’yÞõØUq談dؾ—´ÉûäôÙÿ7‘Zd-ܧ±±–ü¶³BÒqJ.3cÕ}µ³,qÕ7]–/ºÅr½6ï©%<%EÒ—ýJPãïDÐÁi*¬o¯Ç¡‚nGüXÆ»s¬uƒýËXÜbZÝ+‡ÁRªâ¡~îø[T —Õ»Jí—ô?†ã„P-¶ÝšÔBf%°,Ló¼d1¬/—ïnF®.i7FþåìXf˱¼îFÞ¾ÂÕÓ&žúá¤yÝ/$Là¦-zu2ÈŽÏUôÓç eÅÝAÜ´t¼ÍÄ-ÆÇѵ+/Å/wm™à„š'ÛÑ:žñq¶80>{g?oðœjwþ÷7÷:ÿôÜT½y¼ØØ!ÙÙl°Ò›ïÿF“×M'ã U¦ù—8 W# ËñLZEuÀÆÙŒsƒ‹¥i€&:m\cx³Jå¸[žäYZÓûÛ¤'â¿4Ô<Ô® EeÙæâC¿vk®ü&» àþÆÁ®/2Ÿå>¾ïyY¡ø4o:8o‡ÎoìèC?n–ÃúÍ÷¤ÞÙn{)ŽÛ xh’`ë'ùÆß|þJ`ÿÆè‹,,Õ8½ûÿ¯Ž7`{þ¾¿¹;äïûF®;Ôd/Ú¼ {ÂÊ%“ëY&\AáÒRWèŸÄ\‘HšÝÄãÀi}5È Þ Y¸û8ŒÄE…9ßA{M²þÉn©>£­ó—ÏÝ62úªf Û¶‘‡ù
-½£óBö ºøÄÚçhßÆ_ò%ê•bmMà ®0¹^p{ä× ¯8üVt“«‡HŽð¶Mwç'/OyߌçêusÉfÛ-þ`£ûµx9+þèóÛ‹åb6Ã%˦.ñ-Nâ¢þ½œÜ€ý<ð´¿êåº<Š_g×åV,æV=íŵҲª» ë
-mº(w.©oÓˆŽíB@Áª–]ÍY?~XÊ;
-IZ2¼ŒÉ›Kc<e¨îî’ÜhÈþtÏC þ_žƒÉRuÙ«þ'aa•¨µ@ÿáæ»'½Ž‰;Ü/É_©Mš³×¹#1ü“7oñ˜…4Þ®·ãpq³Ø¢È¢éŠ1è+ èËÅUŽêÚX‘ftøÏûu?vœ-ð†±¬¢s.×—\^Ñ%\ó@”T£éÅ6\gçðüiÿöFnz}ÇEÄÙð† Ϙ9hËÛ•Ú –p´~\SáÒ6&û~‡QÔBtúYùà°ÿô#þ­-…£Ý[,¥©÷=Ù¢üz/®}u½•â@=ÌÚÛ~7k½ÒÇ„h©‡{·E¿á)A`-îðÁIPüø^ÓÊû3ÜdiWsô$O–Ξ¼øáI‚ øßq‚‘<7+¼!Áå½Dœ8Õ}õ¼¥ŸXÒDþãüÑ?ýÕëôÈendstream
-endobj
-1387 0 obj<</Type/Page/Parent 1372 0 R/Contents 1388 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 297 0 R>>endobj
-1388 0 obj<</Filter/FlateDecode/Length 1014 >>stream
-xÕXÉnÛ0½û+xLfÅUâ©Hº¡‡mãp7qY©-èßw8鸨}ià$€Ç§yš›~M”hà_‰V ãÅ¢Ÿ4²þùö1Žoüö©܋ëI{áœôWÁ^¨Æ³J4¬1°Fï±6NvðJ×EA´¬`/‚•¶âÐÓ&ÀXöAñ”¸äs_T#ƒðLÖ8zêd[³ÖÇ,U¶î…nÔ‹Qºà¥ÎQ&ÀQfN)Y/d2ì ¨Qz‚bHœRˆ2‚SœW‡ ×YЮ8„ÎC}{h"ˆv„4’WÈÇÔî›:”µë•tYâH†É³,³IÖ4˜×$‹ ÈG2LÖ˜e™M²ªÅ¬'YE–8’a²Æ,Ël’m Ö$É"(²Ä‘ “5fYfQÖ†¦”,–Í\’)d³la“lÛ–’YE–8’a²Æ,Ël’õ±=¨Á,‚"KÉ0Yc–e6ɺ8í²,‚"KÉ0Yc–e6Éš6•,Î&‹
-UÈ«Ä[Ø$«m*ê (²Ä‘ “5fYfqÒ[ô„V‹¢,.¦™kãÚ^¸
-¦H LT‰†ñ• ®‡Š½šM^°à‰Ù aQt·VÌnpgáÅÅlþý~)†âí°—ëqûjö¬$-ZMÉlª£ÙÅÛ»ùøÜÄgâžz rs!´‘qLy™G¾-†Í¸ZßÆq×H« ={µ»¥—Øü’v ÕÁË Tô@Σ Ödôe>.î–h—zz‹<“?e“´œj÷¯¼Ù§y{·šß®‡mNœ“FÊÁïa‡™‡–Ê Ûyÿ}Žå0Ò4=¹]n©J°£Cf±Jÿ=YÊ6) \Xå! \U+Õ~U?­ÇÍp³[Œ«a}r.u¥H¦m»ç¾Þwÿr»ÝõÑylL×r]þ{ª¼€ý؆UÒDåy5[nÓ”¯šêˆö³Ò9Ý’š) ò¢£‰}¤•ô!/*ŽÀqÁ=×48– “ {Ík¶×Ñ€ôù„9ž”šíh@æÅ”–ë£Ùó ›æ°Bî´–s/& tn8Z!ÿbjO«P{~á´>l¹î´€ºP8- <"ž×>„ëÔa…àÓKL~uÐßYñ¸§´tg±·*›âi›'û*\’N‹·±³‹§«oF𥠃áÜõ¸º¿áÁ¡§ ùp7¤+|Ó+g!8nïྷ} ¬–Ö?ÓÕààLDÅzý¡£K ¤½3Fhøçã•éúòóÕ¥ø²~.£x7,v=\Oçùª`àË ƒç§mâã«UŒéýlòuò9ÍI¯endstream
-endobj
-1389 0 obj<</Type/Page/Parent 1372 0 R/Contents 1390 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1390 0 obj<</Filter/FlateDecode/Length 159 >>stream
+1122 0 obj<</Type/Page/Parent 1119 0 R/Contents 1123 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 56 0 R>>endobj
+1123 0 obj<</Filter/FlateDecode/Length 3614 >>stream
+xÍ[ÛrÛ8}ÏW°æeg«ÖŠx©}ÙJìMÖ5“ËÄJe_i™¶9‘H¯.Éäï÷œÐhÅòLªËž©Jtx »Ñh4Ìÿž¤Éÿ§I•%ù$™/ŸŒGc<Ñ?Þ½ä“dRLñç2ɧ£ÊƒEröÄÀeRMv8—IZ¦£Ò6œ°Ó¼Õè´*G©ìÔ@4g£©!E˜ñtT ]1&%€íH•u.rVú[zT„F¤t¯‘2ƒ±u$¥Çr2š`°rŠÁJ:X>e ²Œ­2ËÙL9—É„=GÎÀeRW°Iä „˜©¦ZLSg0ulšÓÔeJ‹@‹šC
+ ¨b
+ÌFä \&Ó ûÔvbÀ¬å†t”2·
+à€è4@t:æT(g :…v0€’ÒiWd.rpˆŠQ§†ƒQ¤á28Nlh1‡¤«EÖ YUâk“²8¤˜+úaä D§ðß±!-‹~vXƒÁÖü+vìÂ+tº²à Äb&«Î@
+TSmh1ØlBÓFÖ`°EMûEÖ`Š;ÝiëÄŧãUc¸C!@ü BñuA9øz€è4Í1å‘´,¦,·¬Á`'ô¡Ø&CÇy%ŽY×H
+ì9/ ’S`.¢<²ƒÍÍ k0Ψllk0®0³†5˜öçJ‰¬Å`+º“a ÆV‰™µ=[Ì´Ü‘Ùb°ØžKÓ³Å`k¦&q\gd8w(´¬“\€9Bl&Üô#g ½ fÒ†ƒÍv›ZìL Uµ­D¦\vcv,³#ˆY V21÷®ÈË –¥,eÙz g –«XH^Œí/¹2°ŸCä Ä€²iFÒb°È6àûÚÔb°ÀvìôL].‰íS&@„ƒ2ìGÒb°“ ÃL‘˜OÖ`°ð涃Š:*”ÅŒ=Œj±g§ÎØe±’¾äÔ¾ºã®0ep@ì!•)²"ÉÜ.CÚÂy)&0®lg údב3}Â…JCZ Vv½ØT–CVúÌ™¹µ²ŠC¦”T^5"d§ŒY‘t†Y 7ÛL€t!¦"«’ƒE¤µM-‹|†Õ¶nPä,4z•SZ2h„ìV̬¤k§ã¹¢ñDi=—â¸5•´Ýܺ"+’Ý1çXV€t!,˽4rRVqmh1M@oM-‹ž Plk0ü AfX‹Ë c[±Q*Ù"c…–P}>9‰B¡ò¬‰ig „Ų+ i1X |±['&™æÆÅñœ_9Ñ)< D>Â^ØÐb°²P k0â Ö`XObHd¸ÈHéšN\Q\Ï9ù”3PÅUÒ‹ë[zq#ëÄ ¬/²£g„((£¬§cYtàT
+‘â\`ÄcMÜÙ
+)&oWÃïí|#ÏášÅÔ??æÛ%úl6ÝГeá,wäèaþKz ^½”qöIKöµ~i:ñzÌÚfÉvØëºxPùo[Ík'lœa¶˜cjž¯7«ÆO ‚WùÈ„¿­Ž<Éhí£\V]NGâB£qüëeÛ·«fÁÇ(xOr?5Iׯ7Íb¡n‡\3Ï«G¦úDtDm"ÎÖi¿Y ÛyX.eýÈdþzº*Ñbê$ýgøÌgYæ$O6!6—iê~rêf‡Ïq6®ÆáyÓ_HÓñ¨¨CóY»–°‚­!v A!µ¨½3|-ÚpM‘Ÿ¾¸+ž¼k§N¤c¿ø’Íu+FA=y]6 ±•MôÙMsÕJ8F…ªD¼’`{ ½îF4>ª1ç!h>ßv‹‹®¿’­£¨{}ÞõͪszqOǺtZ!Ó7›ÁÌÏî›tîVdîpî ÓÙ-o†Õ¦éÅQqr(5>­7í¼£þÄo&wöŒW%£çñªm6â’Ȫ°©ïóÒõòœú0ã®ý¼%ó¡¿ì®¶+¶¨S¹’ËnÑJÜÆa¡*`ïŸRà#H1aê²!®¤5Ò•°¿ Û•¨gƒSqíV—aÒ©B­B#Ûçnsí;ÈÇÁ„°›f% ¾N°¼ xebLp¶iV›°j™—… ½câ]CM@gÞlØ0n½ýòܽˆõpËkŒŠ£ô;5¾\ .¿ÃQÍ$íæbÄé產¾XUŸ¹Ò1e8BÚQèÙbÓ®z,¼Oí?ù¯·‹0HâüJ;—¬w§àˆ!"%l2;{tÃîpç Ö¸hÚ¥ËáyÙp(C½Q´0ž;[}¡xÈÜ5OÝZ5˜ÉŸF±ëfå7 ¼š{e’æSÓ-xbç¸},BúïôÆn§!o¤X·«O­ 8 –÷º_§’õ±i=|ŸeàÁ=g~¥#Äà¼?^íÉN¶}÷­‚4,¶ù¢ÃÙNc?9”K¸%áõOËÂÄô=nñ'Êï]ô·üþäÍÙ?DEgɇËWò +¡Èƒ£}èúéúX÷<~=sñ €¦xœ}¼ýö›³§™<ÅFŸíf­E
+c³à–ÆþX’aÇ !㮿½år”ŒínðáºqSiG8•ÐÇOjª0èìŽ$ñ×™ÑN†þoÁªÐVÿE±‘æ—•þ¤î,Éo9L9éš«~X‡EUd‹ˆKÑwzڼˠ÷ûÜ‹²¡]çgóáÆ%l¦"‘œž¸@ŽjSˆí÷+Ü·÷îÕ@fîøzÐ9@ÀEÅ6œ÷Ä ™6Ã|XСpÚ×yI~m?µò”WVa…}»hßýfð0«ÙÛUׇË0Q†5±7ê¼}ú_Y'v;Ò“s\e·¢Óq ÁÓѤÉéÛcö†ËCÍÒ¿[É¿ê Í9$ª…üÂNÓì_‡ùǘbÂ@ãk”ñróbÂÈýª¹¹ rÛBç{ìñ}³tÉ"¨õLýéÄ·åZÜ÷S“P
+’§|%Õ°·ÞÑ-‹:W«ÁmyøÎ)vpgÏWÛîÂU+ðzþýw@YAQMþŸÙë¤[Ï·ëµÿâ„uûGxìĪ%Žœ|z`Æ“ºáVIw@|›#ì¡e_Pýé*ônMó^¼ eíg}?lûyû“Ì/ÊÚE¸™Â­β>#©NÀÜì÷kóÔë-ÿ€Ë„£{P\üQ̉¯ªtƒMξôs±¾Ìò»lQƈþ#fr†=ÂGȱZò6©$/kC ø‘¢}__N±§/jÿ…¾E嚟È×òá ²ðÅXrë ±œª\ÎÕxʘ:zí¿gO~{ò'sGendstream
+endobj
+1124 0 obj<</Type/Page/Parent 1119 0 R/Contents 1125 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 98 0 R>>endobj
+1125 0 obj<</Filter/FlateDecode/Length 4231 >>stream
+xÕ[ÛnG}÷W ò°p$s®œÙ—…,Û/lÙ±´ðK€El&$Gá%‰ÿ~Ï©î®*JôE¶e#»@ Ã3Ý]U]]]U3þý^žðÿ<YÙdÓŽÑá¿è^ý›¿dMÕá¿‹¬hÇ̳Ó{.²º=¬çà"ëªÃÜq.²¼ÊkGzLv|Xî°†ÁŽ›ÃγCÚ²Þë1u)®)cx‘•y¾#rÙÐ ˜°…` ¨*€fpp‘+<bœƒ0CqX8ÎA¨’Gz ¶ì¨Š.é1ØzL3ë0TÒÀÆ: 3äÅÎXÁÍŽTƒ­ÄÀ:³Ç`»ÑŽºÃÀeµ#U0pQ`¹EÖÔV
+d}*”Ç`!£—Êc°pK¿®ÇˆU£Ž€Íì1/þ–†Òu%ž—Hy´L‚½3eáXž$é1 ÅÐìX‡i(:œc¦¡õ,b¼B× #õ‘ (gØ*‰PcY„)èc¬Ã`q•ÖžuËæ#.«c= ÿÚa õ°ó:6ˆŒø g§¡²ÄÆ!Òˆ ˜‘ƒ•AŽu,nR¨£{ · 6Öa°ï7cÃéA¸ãe„ë
+Ê Àb`ÁKÓHÁÂÇ1­õìxDW6,Š “G¶a9S
+à¢b`ˆ"JzL‘xØPÁ"Óô¬,Z  ûÃ&-"&uGƒ‰ƒq:GR „ƒ@ qZ
+”0X\q¥ë0غ€lÙ ®ä”تB€lŒAŠÄ”ÏH)ó7Ç: Ö†H:±Çpî-h¬8wÑ„ŸÑsœ$º:Œ‰ÕjÏ:ÌWíŒõl=Ú–EêGË
+rË&6,c¬ÃԇѧPÖc°pðܳƒm*z…u,Â)öÀX‡ˆá0•²akqb$•Ÿy'´âŠ¹ÃPÁ;Ö0bZd¬ÇA!ˆ¬c©`Â`áóØzc‹Z`gf‡yï0PØXyï0
+Çž‘ã BM6Œsj²¨4Òc°ˆpN]ÒcÇ: e\HÇ’l%T3œ–È!¤@/å„*ìQç „!±c:Ðc°’`9Öaì‰ä˜Æz ‘‰Wš6ˆª<Eò7õ0„ö “?e ÅÛL¹ÌâlØE7ÆÄÇ’ÛtR5Æ4Pü ™O¦@³›‹™Á’ŒÑÊ¢y½*å 8lªç ‚ëX„Û8ƒ´ ÝL9ºXu Ç¿UÄȈPÊJ"*DŒ£‚ˆÆ‰ˆ‰™Œ3˜6Y9M
+µ]ËLèPWy[ +ùqçÁÍÛÉRF£
+êÒŒÃ2ŒÆ¶ª~¹Ÿÿò£¬à4NÖ¸Z ›a:ÌI #¶Å™rŽ“HÏOe4æ¬ÒO¯gË ˜™¿3r˜¤“éÛÙ²®è<
+vxûÿ g?(:gÓÉ"§¼IÛøª_óífGu†öe4Ü‹ÕE¿â4x;£û~{Q¾Òˆ ‘÷}ô¦êì
+ߨ•‰Yø4÷IŸf)°æóàJo„ýÚú¯eÍÅ\>Q °ñwÖËU¿êßÎÖ³ \Ùu•‚Ä«~r+Üß媽©jPé
+ÚÌvç¯zÜ,¡ ÅW:­æ~ÏC‰$‡¾Y&ÕÏVÛµÄfHzM§Ã6Vͨ´X …27FK*«ôþ3Ì–iI¨ç³Tyóµ…æú/ìòÜ·ÎÔ¨+F1„ÞÚnå˜:ð—k¡âÙNBŠp4= æ %ªFó=ùXÝëò®nϨ/ÛÜNß^,`äƒ'ów?Ðø¦Q³4:è4w®5ú;uÌÔo½‹{”RÆ°‹æƒ”÷G|ÉÙ¥ÛrŸ“¥EØäÑûèö.Ê^Ð]mé>åËXC ý嶙I´î£Õò/WÚa‹P à]™&­ûŽóãÕj)
+ÊDÍÜ÷Ép‡¿%õÐŒÓÂöôÝzÓ/¸Wh(Û¶¾æ³é,Tƒy–|ïS–¸œÍãÃVé€ß¡*I\â§Þy_¿„pŒFt‘ÒÆ®rIß³{ÛÏ¥[ˆw vAMC+‡™¤&¨OåÄ»$ìM¿ù—ø<¾@é>7°¾G¯[ý\ÅRŸI8/v‘¯Sq$­\äoâ
+»¿<,3àkÐoØÔ¨$y=À›:ó甑hìEÒ8.R/ã)êÄUhA­ÿI‰ñ Ž®á“~ƒ¦›´¬Ñe·ÛüÙðfX†ò_†ÜY ]I¾{ ºº}û…Nû¦->Wýpß~5L1Û@sk¤¥¶w(ÔówŽ»Ôð_’­V±7Ü6¶‰^<?zzò¿ã'g¯^<;Üü%§—_œÛù Ûg­àì}Þû«¾ ïΞ„óÆYøAÌB¼å±ø>*µÀnuHùp-ÑʵDø%¶>•ÖŸPMƒiðݧfŸŸP÷±ä^€Û<å­f—ÕxèêZŸPO¿DÅ:=O8áGjVÍùoö²L8^H©
+endobj
+1126 0 obj<</Type/Page/Parent 1119 0 R/Contents 1127 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 140 0 R>>endobj
+1127 0 obj<</Filter/FlateDecode/Length 3757 >>stream
+xÍ[]wÇ}çWÌ£ó e¾gö!'L“²cä8¯«ÕÑî(ûö¿Ï½Õ_wÅ*`@Âö9†»wº»ªºººªfüßGE–ãß"ëʬj³åêQ>ËñKüÏOÿà/Y[ÏñßUV•³ÚƒëìÕ#«¬®gs᮲¦š•Â \e]w0Nà*+ŠvVÈ@Å`›>Êfâ´„U3ë!j[Ï:È \e}Î%íAr1iÙPÖH*Û–lSsɲœµXržsIœV 5™S“HV&k>‡=a3Ì9g?®È»Y“µ‘TŒ%«Š»Y[²™·P
+¤½iÓD*‹AÐ"uZÔ´´èñGcÀL“ <§€Á'fë¹b'fë°ý‰TLqèÂ
+;/Ç
+^eeÞÃÀi¬S¥ÊÝ.7É€©’ T©9.r±d9§ž‘TLqkÌ.¬`ŠkÛÇ:ŠÎ<¤é¨¨
+$v§3'N „eHœ@,XTÔ2Nª,N2ôL¬`°#“°‚Áöfù4V0,à¤3ÓÝkz†‚‚‹:@=â´Ï!nâb\Éã™H›±‹GÖ=h€s·b°³cQ0³R)qJ³'Ë!*…'MNÁ`Û U ¶ï±¶°‚aœ’‘1±æ5~¤u:z§\ÕqE9á%×4@N Å-q⩬[2U ¶*¸%‰ Ħ$V°;cP&²<sƒ…ü°pdqò¬Âñç¦ÍéØÎ×7x‚Ó½*C‰ì
+ÛRz1FJ$n<s/„ö.« ‘4 Vu“,è
+ÜΞ$©˜ñbV0X„¶^YÁ`;^¸2V0Ø9c«°‚iÁ›žXÅ`qÁLQfg_Ü ´/ìÎ
+†™\T$ÅÜ€â`¬b°p,˜8J¥,¢©*¤FÄ9‡ãXÅ`‘å©ÌŠabœ«VƺãQͱœ?ç¥;WæמëùHâ:cÏã@š8`°³Ä
+æðŠ±‚Á"ÿ‡™ÒXÁ0¢ T¬b°v—$Ö©Š„ÃBˆù°S5A,Š« âGR1YÆe‹;
+"¥±‚©NNu+,*‰ƒ±‚¡ ¼-ŽULSØH¬`°–EÉXÁðÌŒ½cƒEš…YgFDYf/ðSx“šQ ÔAÆ7¤b°¸~ lbƒ…Œ up´°q¬b°ˆð¨Èº@ž»
+ù*F ÀL*™ÓûË{ã
+kW«Œ §¬Ô±‚i…êP`Á`‘52V1ue"Ö5­KæaècÀÎF‚Øp›5r!®•i b°È®±dª˜Ê0Ø$V1غÉV0UMÚÎ ¦ªtC+˜±”Ulb3–ÒÍ…å…T`qëbð¸ªåCM yíArÍ„°Cä`Â
+7°ŒÓ&5&õœ›%r1)Î"ìIÅ`‘Sc[+ØÙ
+*Í“óN»Á¹X:°·FýI ^òI#”'Ÿ±NÏjÛ½J¢ÚCR˜ªöõk¨é)³Î'OõŸÓ¸ŽzÂ-#¼"ÿò®zzƹÐû¯ã!}¦!;ÅØ£ž®WEôò —½ÍŠ†EûP‘Ë儵¶Ù(âMŠM‹õ…ɇ26â—q}1½³ãÀWsѨs>¬—š³{ížö!o•fNiìÆ=¹úÝ„DÑÓ‡­M@¤yy®ÃÝ•ÿš×áŠ>vþêÄUÓÅ«swµ0wAfœvv;,÷›qg‹±CÐùíÍþÊåÿ›°º õãÏH#Ú¯v¿çÅGâD‰¦™ŠçÏŸÏ(^U5Ñ*?ÜìÆi½¸&½GßÚŽå´¾_ï7 òdÙ¥šÅ“/Ök
+t‚FC
+ƒÏ×»Ít±_q!É°?Ó_[‹'2rh0¼¦½Ý5‹B½r¿/_ÙΡ  ž«g¯cÃ9ÌÖÃîÝ´yã(òÄxÈc ÓxcŠÒ¸Ú=Ú©­¨‡†oxbÌŸ¼Ö.ûöŠß£(Ÿ:µSᤪ’ܧ‹•KÕ‘3µ!úiØN×ûèŽèÂÁ]]‚ëŠô\SÚdZw“oö7'.”—~^¿=~1®÷¿ÑŒ¬ºãAƦ_[dÇ×-óþ~óHo‚¢Ï“ »åã«iëê+¤ ¡ úT;ùqaçL¶èt&ø†›õvÆ GËâË„pо¼lÆÖ’´'ѡдv¹ñûÍ~/O{‘!Ñ¡¼ëíAhyeîRý|/‚|ä¤^Þ[ÏÑCm~5Þ8/-¼±ˆéÓ~;¸©e ðo
+ ORÄÌxÍM4ÂkVæ#|¸&P T_ ýÿ¤¬$Á:ó]¼˜BÅ…°Óa÷ôùv+i‘—E«¡S„Pøíbé¦`åÛ?H6tkë[ß‚À›¬(öâå÷?¼:3Åâëåè:ÈžbÔ¾µÈÃÁÖÕèøHJ´‰rã.ï«öŠÜÑ3NÐÿ·Rk¥ÜIãÊÙÐøzvj¶/C/åÅ4½q öÍ¿†ïÜ¡Cÿ°OòËs/?^­ÅÃ":à%_è*Þ1ïÃýì58lh}?½c@哪©ó ªCoNûå~m ÷–C˜ceæUœ:U»‰CR¡‹áæzrUŠ§Ð>ʶ;6rM6|¯ƒì±…0Iÿ8Þ:ô¡e‘Ý©Ê>(ˆ¾J*b~̺¿£žo]YZá‹'íDøŽw€adz»Bú¥ådå™™¯ñ6LJßcZ¤yCag¦d¹Ÿ‡£•eÑí~9Y/“Uc¬x·Ã°º¶nÛñ*½ r¡†q5c¯¾Š]NõN*‰f?oM@tgÒ9ú—ä‘ÞŽoâë íªüƒ¦Ðb&ûz7.Sá‹· ¢yìâ¢ðå{ê+mK˜›µ{ˆŠ/oœëC–:„öãûõ^%‘Þ7à#¼Ôã˜,ÓÅÉ‹×BvÄŸgò;ýZúŒxËu×Áúp( æ»<5^õXó"øxCñ63Oþ->Þ5üÜWû¡s6wÄ? ðò!lZ›&y¦«2죓]ZTü¸ Z„VöϧÏÿã|:ô?›Õˆ7E.¢ 'K¡ééèªM¾ÀŽ…°ø°µeðAÜÕf‰øÖ7¾×{²\úÀ†/pSl„Ñ_²6jÛtý¼}Å‹·µ]÷k°Îê>é””ˆz½ü{Þ…F7^“ÅÖ籫a‰~æët§p,Îoù«Ðú»‰wÎ$ovüš<ö^òH¾;Œ‹ëéµ­«Wõ'4•½N*¼U+KgŽäoaLó<´ÁbÇ,¦Îú†àNœ"`§’3jOçxðÙ^-|«_eÝï Å/­4dÞåNG0½[›íÕh/.Q×ÍWï×µðYϧ«å2½/ÆÍ°ÜMËGññešþ· Þ
+ßWÈáSþì\™ÎO­ÕÛ¿ E*²¦"Hšh8ÎñÍÌøþê•àçÒr•=»eq|5ä“Þ÷©ê´ù{
+›ÀÔXRµéb¼ü=[|'ü";~”>Ãçðe~GMòž°ŸùCç(ü¿§DY¾³Ø,âK|k×ÆíŠ/ôó€c7*;Tkë•ÕxeûFÇãå2}ƒ<+Ùðj±}c!ýïøÁÌÍbƒÞ<dt®l¾Œ½¼9ð•qÚø¯a‹£.µØí6ã9¾ ¢9²•Õâæ&x& Ý~¨4ûh§éüky|«é¿ªÂ;ã¶Å§t¸øYÕ“—OŸd?n¦_M³gÓr¿B‘K,‰³f^d']>çãã8Rö¿Ÿ=ú×£ÿÒ
+ãÖendstream
+endobj
+1128 0 obj<</Type/Page/Parent 1119 0 R/Contents 1129 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 186 0 R>>endobj
+1129 0 obj<</Filter/FlateDecode/Length 3296 >>stream
+xÍ[ÛnÇ}çWÌC »šžû<´hÙ "…!i(@‡årH½»Cï…Šÿ>çTßjH
+¢rI öLMw×­«ª«Ç¿˜$Å“ÔY’WÉ|yNS< þÈ'IU´ø{™”õ´t`‘œ(¸Lšrš+`Æ™4 ³p ÆËĔմQC5µ.§…¦*¼L2ÓNkEÕÔ*rÁu5^&y^ŽÖÍ+2)— F¶p¤‚µ˜VŠ¦ Ø5†‚Ë,h'Í2ŒAHƒŽ<¤rΈv`ÚBx(¾%§8PA Ì
+j>5œ`ÚHUÔš†T»lrü õTЬN—IQ@;‘¦à2isHi
+Rȸ'՘ܤ£¡Ø)Ý$N¬1¨Y=bIcP‹ :Rcµ®¡åHÕ—u›É¼DõU¥=¡=èD
+Z|4(ûÖÓL–rÖ@ÔÓBO¥¦*Lcr©±
+Cå&Q-KU!ºkˆ[–"„œ²f )H9¹÷â@AE¸ª4UaPaa&Öì¦ ‘jÙ-˜ u
+v#Ä´†.‰ƒZ0 *ªÂd)‡½UaPá|ÐoXVc0Œ 
+ŠD(œº¥;µÈÚD$j *Ü óFªÂ Ö õ¨vU¢?zB.@ cR$j ªdEU˜,13+ªÂ VY
+ËZ–$и¨œ K•-„Ñ©#MA.ɉƒ
+Ÿ‚zôƒ*EQFT0LB‘*ìf­-l1òIJ« ØÍã"MA,‰œž)¢ÆV£¨vIpEW±kˆK:š]#ÐĤ0QŠ”ÏY8PcP‘ZEµKVä‚® àH9m†}‰sÚjDµÓÊ.{VI&€Óžb ¶N£ˆv Š ٠€ȣ٠™"7MHÕÁ 1§
+"oFÙÏfË‹ßA@n‹Ì³± „É ÷Ì+ ÍB÷Íì<Ã
+qæðí„iœ2½aÿøÏ3²Éïx+
+Zêßûë ’GpXtÿŒ ÉÙîæfX[÷Äéû6ÚcÒwü«(¢}Ž‘©†Kë\|­Ä‘ü‰ýû1<~í+ÃÄrœë~hd‹îI7ç×û*ÝqŽÃ‚Úo×¹­HØcóž“üû†¾ö§ÿÐ(«¾ºÌ³¾àd¨q¨QBœuÛ J¾8HŽÖým·–MÆMûÇWVÈxµßA?ü Û+çxÔl6¯Éžó³à°Ð¸tø¬rN¡pj%d·ˆÚå4IHÌ’®Ðˆ•Òb¶¾¶éb{µ[^tRSŽRÏ ù‰»5¾”Û{™Q×à*oO¾ìÅFfÑ>¼¼ô¶ñ<~è>SCˆæ¥ñÇ[µ!ëÞö¢#ÔÒ¦õ%&ê\N0zö±_]ŸmnÃuTPȇsy%{xtxòQÖ‡!RW=¡K45'Ÿ ?¡ÌÿøJ™{יʹ ò r„ͨܚ½õ®^šF„c;IùÜGyœšìî;^Š/Z‹ ßä"Éù0,6d¼—œ>Þ]j¿¸‘ÃÎäNxúøi&|BÜ&óñ¦‘p“Jâeý+µƒÃZî7ø~…¯æE’j8æ»/¥ ·)*Ôèy6Ëc4¼Nfó_q
+µÖE¾7{< 8Á OÅ*—|“nº5 ¥Âá5écî9‘^gS=(êxtÂANÕZÉÛEó¿ÈÔLï$ìQŠ¸”7ÑøhzÔÏ®WÃÆn T{ÊL‘­Güjí¡»=Øá^}ËO^ïŽcÜ(ß9ê.v××.óâÜËCW!¸}ž†2êf= '¶´;7ç®äz„Êžì•VŽü^–èý`vb»£¢èr hèQù3vrÌè„àÓ춓Pž!îb^È–­œÙ'ì”*Ã}©"ÞÝÜK40ŸÉs´Šc«qö@N^æ ¬º¼m­Ñ(ÞS*ö‚ëùoÅȇ/´Ðæ±ÄÑì/Žç,óݪÕ=û»íí ÂžÞêOæ”ß>Q›“éIcby¼xhÓÌVö€“B,•è¶¾\8uÒt¯C„<ÙŠ>â+g½tèÎæëþF2.•ӉݻÒ&F©JÆo×ôÿ?¢-ÄV†·~j^ÞÎVs×d‡ÚÑ™ÒhSÒ—ŠQt'‚v·Ón¶£ r9J ¸[ÙÓy8rú…_V
+‡­äçÇÿ¢RqKÚ„îïnãœ@Q+]à<Ê·Ñ´iÛ§q’¶ä„úB¦R]¸Ã †Ž¹ì6öL^S‰22¼cby !ä^‘õ:›ˆŽù;MÄ+¸[pñg›ÕNÖÃmiONhÒ‡vÕHGûN¤;gö¡üY"4c~Þ¸F<>à~Uå{k{n¸ŠÖm‰Ÿ›–p³º£_°ÊÇaý«­ƒ°»_EÇÔ‰„ïdU^_g©‹¹ä´[âšDâba°¼ il·
+’pî]É[#Eb|‚ð}°‡]ØIe°”XfKÛôÄ—U•o žáˆÞÏ­Hº|ö¹ßÎ?‰¤h&®Þxx¹ç~ÚÚf>ÒÐ~w²ÀÙ‹_Hð¥Ã·Ç8~„Îï{\¡,\Cß:ìÍw,‚n»#ø$(X䡃ÅëÁMFiñøˆ¢óþ3dÊÃÅbˆŸ&àHZåÎÒÏm$?ëš—è:êZï´Ûì>Ô…3öÇü“/ôpaçíä'{©üTm ^ïê¶P¼ÞM2ÚýK/48÷æqcÕy« ƒøåbà•u\¬#;.§Ýo»~Ý-qh•°Z¾@e¬Ù€ZÛÜGAÃç]¼3ó'¶sú»M‚È,á[¸¯“p…â?ò 3ïý‡åÍ;|ü(%±{›ãÿw’xùMÒáûïd½_ºù69æ;$´Ks^–1T×iËÏHú[Æ©Îþyð?á }úendstream
+endobj
+1130 0 obj<</Type/Page/Parent 1119 0 R/Contents 1131 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 226 0 R>>endobj
+1131 0 obj<</Filter/FlateDecode/Length 2777 >>stream
+xÕZÉvÛFÝë+°ëô‚4
+3–žäö9rì˜r’-DB’`sì¿Ï½¯¦'µ:m«™IÎItqQ…÷êUÅŸ˜$Å¿&©³$¯’ùê$¦xþóþŸ$UÑâ¿«$/¦Ëdv¢à*©Í-NÁUbL>5j Æ`ËöÖPÁÖõmVa°m3ÍõÌ
+¯’,k§™b5[ÖA7ª£1tMÍ­™óŠ/ç%„Y%M5­….˦•å «
+¬=¯ ÛZ@JAYÖBqXe¡¼1Š,EiD?|o
+à¤
+b`JëDRc®8gˆ¬6g ; œV4¶òÐÙ# wÁ<Y!ú׌B 8ÐrP€¾ÓÈ\Ž\ÁÅA›Är"LŽ´!<©Q€Œ‹vŠ€œ‚4oàSq Æ`1a¡X5—” Á^&EYËÆêÈeÍ£ó<5$[@JA¬iXœ‚ø^QÁß"©1E­áþŠU՘Ñ,++òQ$Á"Åam#«0ÓoykfÁ– ‡8ÖÚÌpq ,Mž … [p8KœÔ‚Àe­KÜôu È5b sD$5æ6øddEœ¬f$Aœ_¶€Ó*(ù¹TÒµ‡œ”ñj EÓhVa°u ƒ«±
+ƒ…ã·šUvÉr¸Z«1XØßËW°²õMÊM&@VÕÇB|©1Ø‚­…b¦:Õ c%^2ø
+bÚöåc°’I«fp3b =½“=; Ë…sR´ùÇça\E§ÅD ¢ÃË.‡‡­“ûöìèÄ÷’[á‚èB^@¯}^Ø,»ùîÓ^ ¹)øœñfÜ.lr‚•êÊùã¸å»Ø
+¶&wúõ|ûy³· ™ÌdžÙ¸idzb¥îÃßÖQ1-?0É°é‡AçWý~ïÍK´דù¸<¬$x°Ã*J<É¢Ûwœ‡Y1¨{¹Wò§
+¹sÕ󙪭Oò{VyzNmU¥Ð~üÏ|òëÉ&4TÙ•3s¦þ¶FzølƤ\WU¸Ðýý2ŠÕâNFù°ë>Z¯ÁFâèrI´Y°A(^U*6ðÕk¶ïæ¿ûàYhŠ~>¹°(C;³‡eo“ º—æ1Â%*ó'áÄá
+i$\mìÆÃvîúÅiÖÆ
+°‡¨À1å\bP´œM¨lÏž‰‹ R?Jð"@ù=u<‰ß[Äý{ô‘V‡»}¤_J4L­ÁÿbË{Z+ ­é¸•ëH^ x¡³}Óל•&¸cÖ1§´1Sü0Óå™èWñ€‹qÓËý.qÛô»’{mAtÚü
+mæ׸11åwU%X9ÄQÈ-üU€Ê-Òv0Ôp¥ÎoºÍÆ]ò çàwk΄1¡Š—.‹„}—?p/f3~<!7ðrz„_*Èo¤p<{úæÙÓäÝvü ûòäÅ8?° „}Ž-}aêdRã ¯_s¶—ç'?ü•D¬øendstream
+endobj
+1132 0 obj<</Type/Page/Parent 1119 0 R/Contents 1133 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 270 0 R>>endobj
+1133 0 obj<</Filter/FlateDecode/Length 3205 >>stream
+xÕ[KsÛF¾ëWà»jIcðÆiK–×±ªâµÖ’W{ð¦@ 1 pAÒvö×ï×ÝóhJt¢d2»U‰>|œA¿¦§§ùbüßDe¥E4[žÄÓOü?ÞÿLO¢"«ñÏe”&ÓÌ‚Ety¢à2ªói¡8—‘IòiªÈ´ IÓ|ZaÒ:› xRæ’³-£"ŸÖQÁ€81ilh 'eÒ¸†ˆË(¯H4PÁeTVÓ\q<.¯‹iBãè_x\€Wã}“qUÊ–ÉÓi‰—àqb\ %'㊚•gÁr^N<®‚@ôCâddü)g@\à2ªb;p2.Kƒ]rá}–«Ø%p2.Å.dÏœAg¹Ú~ž“q¦d» q XÎ
+Bs²fàDXd–@’~iEö°ëO
+’†Yƒß@“j ¶Œá~Å* ¶.±Ô«ð2J ³žYc°A«1Ø2èMRiŒ8àÔÆjL,å@ÍL1dvd֘؊ÂÈ[Cc°H8ÚƒE$h}5^F¤Ò¶ÊYAl!”vÅ“ ‚c-'žôœ‚αc?ÛqÖ‘žÔØ;6°âX7VX…áœ8§%ãYÁ&´ƒ)Var,­Å* ïAô‡™†MAŽõ¬Æ`ñ® ¬Â`æú½ƒÅ焱
+ƒ-‹Ý™†cM¶c q¬‘ŠV…¥°c„óx¥{NA¸Ç¤ôJOj 6­ÉLUlQí²
+ƒE½C„±
+“óh¿ ¬Æ`3Ú"«0ØŠègÖ˜\Kû‚«0L #Â~¬Æ`BZ*Á¦´c¨±
+ƒå¢)°âD0Õ^²î„ug¹ŠÊÔs
+²ë`ÏÁu’ë8 xRc°(6 l`‹Í}‡U&d󄱃Şû™5+ 5°
+“s89Va2pN‰Í³¼—%(—¨C5™`<6a€0•Sª¢.ÉÉ~IPcRùŠ¤` 2ž4@LZîp
+bR¬àJ Ô˜^ÉÂùi5‹ý;Õc†…°1@\?VÄ-¤jÆ/¡'WALÓþHÁ"²3Í* çˆä'Ö,ìYhVa¸$ýXu:R\q% H`I$ZÔ,ïŠU/EìC`?±¼ÙÉ/¶„;•Š˜©ºxRc‰X…I$ŽÏJxÂ!<ðK9,g°%×¼_IìÊ@d^Aþ%ƒ0Ðr&¦­&ñ¤Æ'­ÈãU,Ž0o`&]¨Z,U¿¦’³DVbZ$‘‚X0
+cM ò3†Bhœp…4à½
+"`-D/'ãðV²’*84NA»ê'ãR9¡à} DÀ¾ÏA”“q¨Ö(`yÝ<Ž2ƒ@Œ£r>p
+òœÓC ;H~b%<©±óD*âÄr`âÓŒa@â—°ùñÁ›!ÿMN!Aª•=^eÈþžR¶Ø2p,ïç¬7º¦ô*fp’àåMç2þÛ38ÇP,äT8ðß,Õ XK¼P8¤éob°ï À…`ÈðŽyyuòâ5¸8ºš#£¢ÌA3¡Ì¢«î›àñìÙUóiÑFÃ<:úMÛoÖϯ~ŨšÒ¨‰6IhسËfù©¡_ y§uŽ† F«vœã²ég-q8"[®[¯·-O
+±Ò²”ÇÓCþÏ$™(‰¸%«
+ŠBjÒælX®š±[=Kviõ<¤ÌúÝVþ‰ˆæ¿fŸÛ i– Wf‰uÀ°ÚtV[il£'<ÜßN
+™<øà}ÛÜ°"X“ˆY‰²u÷?/œÖ‹ìÈ\"tÚP#Bió¶ùÆÊàx^¤V™oËN\…œYâx¨%HêÉ=e~né1ÚdeB-YZÿ‹öK»`‘Ì’Zž>˜ð ¾£ÍÞ@›¯¬âÇÙ^×\݆WªÂ8³AmêÜFßA=qÿåÞ3YXÿ—‹]@ sSØ(;[tn¢Ý§ÊŽ,Îp>à“«¥¿W,¡N6—¿Œb{^âÅ´òÿfÛw=ç´Ô+(Îù྇…­CT1C§Zx‡nH\çÿžòBϦuérÙéjÕö7Ý7©YÐD,Ë£LhÓ)NZo8†h¥.†qÓ|êÝæ7¢q,=¶úå~<˜¤&I_¼öõj1RÉ•do.>ü‡~ÁÇä£
+1¥ŠÕbÂBzÑ/ÏÞ±ä8ŸùUó¡ï¤ PÕšèð:U2•’_ýó\|€É‘­sm0':.ºt½ooÞ4\p¡%å/]¿Wàlä
+—è}»ü46ýÍfr~NΣ[®ÂîBú]?ào“Ʋ4Ây =•ÂöÈ <Gº •?lîÚ‘Ÿ¢t«]upvþúÒ>¬ÜÑ šíì´±9ì‘A±AHèÓ©ôð¶™uýfXßÑÏ24éüÙÇ*òw"èÐV0V£ šJw—¬'ǹ“3Rû.gµõ¥›çþítÁé^/¸7¶€CÞs…Z4kzrÎo>¤"Y`Ó̸ƒÑlèçÝíväBAuìøÝå 6} á–ctÝŒ+šY×TnG+£og²ÜÑ}òsÿè{ÖþÑã'Íè5èà¸ãhÃíɸ3RN‹Ô–¦v!9ùœû"4KظŠ(]uË Y³ß TgóÍ[}Ð<¨ÑÓ{öùø¬䈋,äË+ëšÏÿF?ÇÝm•8 ìuNÒüK¬
+oyÄ›¯Àê‘èÇ&SNìèU»ý¡Õ+ç·}ëʤüÒ ]÷ë@?•H¥ëÎÊŠeZ9ˆaJÝӦ炌ÚîEÑà“2‚ÚÕÏ‘ê™é}éë]Ë åkˆ›½Vûø̾ (ÜÓZ+}iÇ5ZAŸ“õ¨Ñí™Nb½Q׋ˆ¶ëÖµ`Âjy|Ìs$£•¹&Á>›>|æ­ŒvÿEöÍÀQÀ¥¢„Áƒdr+ý08ÇçÎh5b³ǯØ/À›±ƒhJˆÔÍðµ_ ÒŽÂÞ‚ž·µæ×aüì?:Éì ³½NÚÙœP•”¿»æÚÊ?qF#OûÂóºë!:ûméÐxÚ'Þ5T¹‡íŠNÍhôEVg;upÙ­Ú‡µtÿè}KpÑlÚµ$|}ç“ÌÕÙÅ‹ó Žr܆n[XošÙgv°^lóqXòC|Ûçû¶›Ãz˜óÜôÍÚßOj§4]*i­_µ‹Ö6u°`&ÓÕWé·¹½qÞ-l“ÝL ¿Ï4sèHa]5ë5‚—W76ØfwMËFÆÂÀýåSkÌ;êä¾ÆØ!v
+€P­_ϯÙQz«ÿ®2ÐåfÖ§)lô«æIþ@‘ˆ¸5Á#ª¶;k$zqê!-¢tYín6§9v* §¦¬gðñoåyÕ2Ü *Õ¾—h~ªó?Õ{ Wãé±ÿ£œê4ÁR{„IóLN”â¡ËvüÒÉe}oá·ø —`t.á¢ßÕOœBöéŽ{Rr€jÑG”`\ì}»BÃÈ.\þŠâåö–à Šû²`ß;ṳ̀ÜsU­#ò‡òêy¿‡›íŒîÀȸåuuä!åÞ}·Õb"Âù-üç¶odž=ná+ã
+Ù®Ÿséƒï¿LeîNx@äuQNxÕ~Úr—•¾³ßI„á[\K?éû§M²ODS;öÞ%®¶ÚqFQ_=ñÆù'51iI?Á‡#Ê%§CwnÙã^ØŸÒ7RVc£òý çÚqÛûÆ?¾·ôuÉjfíš u˜â¾É©‹$¿“.šÍìNj¤ô‡ït™•]e뢙úU×ÜöÃÚú ¹ÿ½…]J¿ [9¹°Î²G­ý§êÖ?Zcçò§œª<¬%ðõ•ìNßëìýE²7kq?{Ÿâ×eøöÂî
+Oÿ3kü‰¾®¼ÂiJÒØv½Iœäêv‚§PBs%|ùbè ¾ÇsÝT?Á1üácßôñGHôå`…ÿòŒ?ŸÃåäåéÛ—§ÑÅ8üŠVfôj˜m—¸þn\!“Òù€*2®é#Œ/iû«“üçV\dendstream
+endobj
+1134 0 obj<</Type/Page/Parent 1119 0 R/Contents 1135 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 283 0 R>>endobj
+1135 0 obj<</Filter/FlateDecode/Length 584 >>stream
+xÝ–ËnÛ0E÷ú
+.“…i’Ç´*ò¨»*ÐÖúÅUR–„Z²þ}‡‘ìÊÙUp¸suDÍÒÌÿœA@“C_0Ê0~|±¢e…¿=Q‚ê Žd_d²'ÆPȼLö„sö˜kt¥ &C•´K‚¢%.i­‚°Kf²'%§"ó<'ì3.œ‰ žç¢ç9VQ9'<ÏEÏqªÒøa=/"·xŽKžçJp%u )'<ÏEÏsºJuQN$.xž‹žç”NuQN$.xž‹žç$¤º('<ÏEÏsÀ²º8‘¸à•÷]EÏsÜduq"qÁó\ô@#¡¸ºàM ËeÏ‹½µ¿Ðz™ÄCˆÁ3ó±.¶»ŠFêWžE´‘¤þé^ îêæåØ’ñ•<ÃÜót_¿#¥ð¼[j°°ØÝs×¼ ãÔ oö2|wp÷ðåC‡üÏ'’bSÓ¿46@•K´=]Zwív'—uìŽ ƒë–ïW·ÓlI^ÒJŠ@
+Á¨p+º¦?•}¼ÐW²€›ÈB®: É>¶ê&²Ð7‘…Ywüc'ª¼‰,ܧlµ_ZéÁõ/-w_Žmj…GFw¢€Su¥cpwöVžÎ×Yû¹;m~ØÀA.­ÿWs ³àˆ[-}}>gC¦OÀIZjßðÿc{»³Ý•aBCqÄÅaJúeÿðõñ|;ïía&ÏãáÜãøÔÌÝ8Ø,
+endobj
+1136 0 obj<</Type/Page/Parent 1119 0 R/Contents 1137 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1137 0 obj<</Filter/FlateDecode/Length 159 >>stream
x…ŽA‚0 …ïûï¨g;æ˜Gˆz3Ѹ?@ÆH$"ÁÿoN^LÓ¤é{ïk_ŠARŒÜ sˆ"MpÙA[XŸËl¤Ç„f ió+”Aí/GBh„årPC8$›¸yײÀmÚ'œ†øîR?UÓsè·¡ýFÙ.Ñ]Æ‚õš ©ê‹ójqÖéùÀ?®õ¤½·òxyÆœƒº«•ã;Òendstream
endobj
-1391 0 obj<</Type/Page/Parent 1372 0 R/Contents 1392 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 340 0 R>>endobj
-1392 0 obj<</Filter/FlateDecode/Length 2638 >>stream
-x}YÉRÜJÝóoÓ8šjz›n0m?:0`W9è…7ªª,­¡žcþ¾Ï¹YRÞG‡#€£“÷æ3%ÿ}™ÿ"3‹M25›ò$ B<|ùxEI05“Å4Miâh̨0K®7“yŒg¥™Mƒô
-sÛ(˜iY…¹mH“GÍnÛ8EŒA„BÐàÏ€Á"Úðdz
-Sñ„yY§8Š°ÈP.H+ÌmcnëY…ÁNY8ŠU˜ÛÎéí(+Û&(©¤˜Û;äüñ¢BªY…ÁN˜%«0ê>‘.Ïj 6 ágQs–<‡ ä8äbá1Š©Ø³
-ƒ²µ«0X”î‘f…aTȶò²Óä„&û:“g‘+ÇxŠ '‚\=ƶiÌHyVaš<?f‹}°­—UFE¬8Ï:£&sW¬á”‘äâè1'SFʳ
-ƒ$(Å*L£ÒcÍ
-èXL5kÌ8Ft׳
-ƒÅÓVi v19²Ê¹+3F9w)wÕ‰`xVaȢОU,¶ExVa… ¬Æt7e†FÖ™Œš•ös& R&¬3ѳ
-3·õ¬ÂdÜV±Óä)ÝYiòœ]âY…ÁâH:’U¸4I$Å<Êj v"½ëY…Ábò¢æ<«piÒ0aeŒ¬Æ`“èHvÁÓ›Ë@Á,ëN*ÌtdWÖ:Öc° ³gvaF0<‹°¡ÂtEF¥
-3óâì(«1Ø„§·—•6ˆ1Ò¡H‡ GJ ‚ 9ÍbA’…ÁF DJ±
-Sñ³F±
-ƒÅý+Ö¬ÂLo^Vc°X)Ö™Œ€¸¶“)“Ö™èY…G“=ëLd‰žU˜éãXašBÃ}5+g®b ÈQÖ9„þt'²8$H94°ÎÏ* ‡0=©‘uŠ‘q¹Æ…)wä{ Q$sÍ*LÅSº’F:Írb*VaÈ.x}T¬Â.Ž¨ÇÑ*ÆqÀ`åxS¬Â`qzVHf”yø)Y…Á.غŠU-„[a´JcOÞ8<ëÂŒk‰4æ=¶$aVÁ@Ò!êY…*êð¬ 1^[á8Ô« c^˜<©17åô¬³7ä`éR)ˆz…Œà¡#:"Æ #g¦^îªX…Ábâ±
-#þxMX(Y·-&³+UÞÐ#A²­ÜÐæ¶!V)Va(ÆÌÒ¬SŒ%.9ÉT:p§0' ’ãY'šÎ$ü‘4|$ÈÇ ÇQÎn8I…îHLéª / —ÄUd/¹‚ÄU…a¶C <«0Ø™¸êY^ôqÓS˜»¿©Õ#ß4˜¬"㑼³¦Š¡ôÌX{ò7e¤ô ^§n`
-?ô”‚àpÅUb
-Ò+ÞñÆÍ' â9‡Š9W`+cÄmæu*¹ÉBÛ© 8¼ª'JÎCDJ¥Sz‘a9à¤X°_]1xTÜY&žñÁ§…£ŒG $/I#¥ 8¹£yÎCpò>æ9Ù%¼YŽœ‚àpX©ý“§^Nê|rx•D)á[ K/èSpõÁ·˜1¼‹H`>jHñî‚)/Ý*”€A#ŽÜ7eezÎCìæN.9á
-Ò9^«Fîburö£<4«>DMgs³ÚÊ÷'<Ùœž¯Û®É6Ý›Õw¬ÃȉܺwPcåéuÖvæë~›uÖ­IkNÍŸæÞnͲ
-@.4ïäH€Ôê1oͺ®üÎ̦.
-»éòº2õÎüu{¿ºÅãíâ]m–Y¹Î̶Þô¥­ºÌ-ûiÓ=Zól³¦ Ì•éšg.¶UÛ7TÖ™¬(ûÊ‚}3P›¾i ç­Y÷iëÒvyi[Q&ÆYó
-ÆxåUÛ¡8%ÂÔŒ/¿£¡Q`þªŸXÊWn•Éå•E-Ï?]œ¿^‰/6C«° ÖÈËêà ÌEŸÛ¼z•y•5¹[øN
-ÓÁ•6 4y¹¯›.Cq·Ý¿È[¤yßX´¾hlË5²\íò‡¾qÅ³Ë ;Ô؆(˜@?ÝyFR†+%éÇ>5Vtχtlð40Ë.kºÁ5‚ÎBÔ*üñÊè¶Ç¬(PÕ£À#&ÎÏ,/\>+g]kt5Uï8w:àmŹ…ŽÛWù/³)rÔ«­¯ÄvM]b
-endobj
-1393 0 obj<</Type/Page/Parent 1372 0 R/Contents 1394 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 392 0 R>>endobj
-1394 0 obj<</Filter/FlateDecode/Length 3570 >>stream
-xšYoäÆ…ßõ+ê)H¦§ö 43v¢À³d$Çy ¨nJ¢§»)³ÙžÑ¿Ïwo5«%Ã08stx÷¥Š”~¹˜„1ÿ›„å4Ìa³¿Æü$ýçó?.V«Ñ<,V‹Ñ8ìÃd6g´ ׊a—“ÑBYÁ°ëå¼Ób<ZŠ¬bØùz´VV0ìz>”¼³éz`W1,vU³bØùr4»Ša±36¦j9­<UR¶pS•±¥jnf3+ØR57³™L¸Óåh*l4KFfv:Áü‘› » ¶Ê
-6§Ö¦8Ë
-Æìd1ÐÍ ÑIamâÈÍ
-†%É´Mf›SS‹6³‚aWc3›YÁÆz.„Í—Ç+Ërb£Ë³Q":]X×8Š™ÊØœš YÁ°d†ÊgYÁV é€U ;/,I6:5µÂ˜ÇÖ= Gæ”bc½@ÂflŠÝlfÃ.|3+˜V{ð‰UlCâÉȬ`’¹5UfÃR!Ҝآ°Ãœ ÉbiÑ:°hî)¥+'pÖ ë¶Ä ¤6$ w©v²´ÚdV0ì|6” »ž$ß½c“àØÔI³b+ÎÄÒYÁVŸËÌ
-†]O^)&ÁÓb Y1,‹¥Ï·ù¬xŠÉÌz1Ùõ^œ¯gq•sþ?"W0ÉXYÕ3EN_<
-éÈD#Iy}ð|7̹^ÁVÛ}Â
-†e e“¨±@YV±•À6‰°‚­¶Á„ K(KeǨW1\æÜÏLú§y¸‚ ¨°¡VpLŠ³,ÉèqLNeÖwTÄ°ëuzÖí
-& ™ÆYV±…kó)¬`ØõÊJ”ì*&“ K7³Š-UCYÅ°óÕ 1‘ –Ÿ¨ƒ¹£Ø7îtn.gV0ìlJï +¶°ÎV0,ÃH@Y³`cm+›1©¢#UV±ÁN¾,ë»qÎñn'ùra’,Zû°Z[¯&N »Ñömæâ,k˜ª'AÅ°s;Ì… ».²±6Ì®<Ç¢Ž¼6‚-|2+Ø­è™l9šY«Md"³‚aW¶3]¦$¾†¢‹ŽÄåž.fVpr9³Ñå³ìÙÅÄ*N.g6ºÜ˲V 7±îrÁ}•0<ó‘»,§Xf£è²8Ý‘ G.:ÉÑÙŠÚ
-+¹” 8ÉFÅXë/œŽ¢OîEϲf
-ecve‡¢È
-ÆìÄ.Y™f‹Ul8ߢ…#7+Øâ™Z¢2+Ø55³™lN­l4;³crjgcá(F›1,ÇgV0¬7If£bîŠ^Zn׈:2ž
-
-ù|ö#0NàydÎWA/糟9xCv©Œ[ðHÃ’°±²‚aIØJYÁ§7SÖ,˜ªÎ즙ízìM*6“Ý#ŠéÍØœ²1V0,çÑ@V°95%\‘l­V°ˆ3«–ˆ•²‚a9ugÂÆ€Vf³¼~ᔣPÆ°œ)8•YÁ°«M,¬`Ì’_Ì&YÅ°~·ÉltÊ*Oì@9Š¥ÏØ\¶ãNXÁ°3[¸Â
-†åR7 Ë
-†åvH+fV0³™IqbÃrP0™ Ë:ë}ÌÏ/ðA:’€z–û;NeV°ä#YÁ°„ddV0NñŒâ&V1,wGʬ`XZžñɬ`®¿]ízýL$ž¶’#ŠáfŒË´õRYÁ$"+§‚‰°Š-\«_–U Ë¢™++–õ4`Ç7……ÈÚ›BaI³ú¬–«ÝLeó^ËÅHs¥–“¡·c™ä;{*®^ë3J-g;Þϧ±ÝÎ"òF”›ŠüYgÃ2Xͬ`2ÅÔS¿Ä*†-ìã¡°‚a9~©_– Ën,”l5°c$Ë*†å+…ÚU ˎЈ“å±íó¬Y±ÕÀ®™­NóôŸPìÈIÑÄÕÑ®`¬ÚÑqɱŸÎ¤bXkU ËÙB¯fV0Yäå—«–~ë=4§[}&ÍŠa™Eµ«˜û0Ûå%Œ‚°ç}%p+ì#o8Á®·EfÃråÈ
-¶€ì2•5+†åc.'ÍŠq™ÏI´cbÇ€(Bf °·Ë1¯šÃ2£}ô¯bZŠõÑk26¦Êï:„Ëw>;òT †õˬ`K¤}SYÁ°|H¥3²¬`R“‘XÅ°\ºÙ'™lEð½œYÁ°|†P¯Ã2P¤*Éz2â¯`pÙû$¢Ü7‰eÜô‡}†pV0²´ëTب˜í?XCN‰âžŠ2+Øòhí*²‚‰‡M‹Ù$«8æb.ltŠ_?ù;§*¿ärãɳ|rÂåÌ
-†åç3ecÖ¿;dYÅæ”Ý"2B½®L5ãñVj¯Ž$½g¹7c6³‚qÊ_„ŒY>|"«d9iV Kר]ÅŒw^J²Ša9 ¨Abc¸\¨ýÛ] ÏQ¬‡Û³1¼Ì
-Náf6†{–=‡—XÅ)ÜÌÆð{Y>i¬9¶ÍGój*ØÂ[@‰U Ë;}“Xz8;aêÉ£#W0ùÏ… ë… ë/ñÂ
-&\—“]Å–Œ¡WŠa¹äÒ7YV°U×î—™ÕåòßríåÁÞ¥Š¸1üWk[@viV0lœ¨$û´›¨]ñ'ŽbÛd£Åãĺ¨ÿ®IÿœáÀ3„c‹ÌCæ2„óc0sbÓå¼â\?¬¿ù%×Ìn&±2â%Ò=1YpF1QÍ ;á3—a {ž¹XcŽfY —!S%®„ãË[!rÚ |qWè¿“~›fÀ²ìá–a=Á›ŸÅíßÆdDlt_ê{Êõù;”Ÿ¬LÊ)žö…É…Ñ.¹ç}ùææâõ÷,ÌI¸¹³?_X¬–áfëº07›?³Gám[•]}¸ïËÍC}¨ÂM{:vár³iN‡îÊÃ6ü«©öÈÛ]]ÙϺ&tUx×ìËú𗛟/^Ã+ßõh£µÙï›CøÔ6·»jµ|׶M{´ÇO/FáúéØUûð©ÙÕ›ºŠO#zW流Ï/Gᧇ² .´á¡Ú=†MyWá¾êþþBûjtv—]ÛìÂ]Ó†Ÿêöùz ëo¯ß÷2€5Bß_^}øßÛn>üaÔ}ëÂ_“؇›çJÿ®Ëýméªø+‘” ‚ûgóÕv¹éBIháM¹ùrz|¦`G(õöÓ©­vOQ[ïò®ÚJ®‡ê'#’\µÕ/§úXwUø\•[Jõ,‹Ñtä†ï[ªº}1+ïœÔ_N宾óü†‡TÔê~¨º¯Mûåy²ù„Bá)…§"ÜV¿,áIùéÝ[W¤-Ä!ó¶m¨ë±ê +Ïzßôšš"Zõ_¾»[oΰ¯ö·Uk'oW‡cWîvÖØ•ç°%Õ¨¼§ ­SÞU·uù¢ÇyËúƒòŸ«í?ËîY9X„>"4xôûŤòºêû©9µáuÕm^ioç£Ms¸{ñ° œqålšýã©£¡Ê8Ãö¸f— 7
-7CîºUû+“åÓã ÍäÕž´}­»‡pÜßn| ¼Tʤ}hº8°¯4ÙR›7Eˆ8ýòûEâ6J«'6KÜ8Ñ•¨“¿Exæ4WïdÝÕútÌ_mEùç;…ûœµÿS¨Ymüç¶ê,ÝVÕæÔÖÝSøÿ´LÅne¦!¿ºº…]ÝÊ]°
-Õ÷§–­Úxãh.Ø,W‡®º7Övîuòï<TG Î
-“Ëûê°õE#[”s„ì—{›ÿc³;™é¸OÙ'áÇCýíõõáô-0¸;Ÿÿ4ñ»t›¥¤Ó‘i°²³™^zzÞ2ÚY\ŽâÜÞ¶lW ðîtؘ3q§?ÄU¸­wÍS`ú8ü€á'•Á$z2Ïjë5ö3^³Gê^*XãXîksž:ŸðcUí9gŽäë\˜X¶A‚˜ÎͧÆ<´8¯áÇWÿ Ÿªv_í¡ð¦>Ÿž}²ì8Uͪü(ú¡>v®L«Œ.ÊüŸºúj ´ãwCÞpÉ„UÈ~lÛ å)ðm]îšûç]Ž^šä|ýŠú`çk–Âå~Åʶz–fÄé’Þ-m¾ªöøPûÚÐ>àYaøl¶u[mº¦}
-ÂK+VÍf[ß=YhÑΖ¥L6^méMGɲC«Ñ^íö¼ˆ6qYîËã¶}ËÜ «*U'
-ÖßÑç^–]×Ö·,Þ°/qþe—PWJïÛÁ‚ûtùÞ;pKDÑm@AØpÉj9™žÐtà$Ú†òD‡®ÞüæRᛚÏ;–~Aïó´ò–ÏFì\¾Ð¨‘óBϽ÷zwÝ®m€t GÀ›+ex_oÚæØÜu£ßûy/{][UžK#=˜>sĶ=Åýñ2™æaËÌZ&¯OMëÇì@Í,ªaضQ«ÑH¹´æ¢¤ì¾þž÷T¿6ó22^Ù°úÝöúòý›K»ÕþL'sšlN{Ê’Ä^ÙïöìñWËñÚî—·T–f4³µZü-1ÄÌ~òÝÍÅ¿/þSιendstream
-endobj
-1395 0 obj<</Type/Page/Parent 1372 0 R/Contents 1396 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 444 0 R>>endobj
-1396 0 obj<</Filter/FlateDecode/Length 2210 >>stream
-x}YËvÛHÝû+°ëî…¾KÇ™$>Ø™H‰³¥$ÚaGÕ$e{æëç« É=§Ï±ûúP·
-"c«rÓP Ç+Hâ`0L³º k0XÄÒÚªã˜sR 2Ž'¶Èp›3ÏÌŠsø0¬Á?îÎãluÛ(u5 SAºmÊ®&¶ŒjϪ)
-P*\ 2Š'¶àüfž5˜‹8gMŽÇ)
-PoGÃ*Ç>aÝ)²¬ÁÌVn­Ø ¶(xãÙ`Åû{VE©&^E2¢&VExÖ`Í{V:¸b°•ϳ³(n¸ÞÖb°_<Ϫä<Ò’RÉ‚Œä‰U‰ž5ØIö¬JžlU¢g v’{|°Ñ‘?Ǫä”ï+¶MbÔV*H$ 6Oø´ž5,î¢ìYƒù@| k0KN¹lœ­Å`“âȳJN²Ã5àBO©dY2÷>ÃÌ’¥â¼­ÁØÞÚZ ½…ál«ŠaÌŽcž[Š4õƒE[‚cY+¬Á`‘Ìܲó¶’g«ÛâæÈË!‚4Ã1 HŸc¥›'U&ÅŠ_ )`Kaˆ)Òb> ccÊã!Aç’‚’1¬HÊùpl¹µÂÌiçÙçm%íI^ÒÎéW¤Gõšp› ê)„Jr"ŽC"HL æãd(Tà ¶âHÖ`N7 Ïj„S}ÖID¼«p ØÔ‘ƒÅ°ÇY=k0XtvdzƒEã¨,k0‡Mo«qŠõ©©O¨D+V2:<¾ð#Hƒè1+®8±ž5,TG¶«&„ØÙjC}Öám
-r´Khôœ‡è|¸<Üà„íÞÎ/Þ¼Gf"š?ð·yYÐ|%ßH„4_þŽë˜4ÿÙÐÍf×·Ûq y×­‡fücþ×EH—òÅ|Å Ó€Þµõã¶ÚÙK|Åáy°ß¶íCÛ¬èS÷ØmZ4ãsÓlé¾Ý®ºçnçToWôíöæí‡vûÈÌ$;;ñtµƾ^ž Iƒ8 ›íØw«ýrl»í©Rôè€îÖã䟾ôÝS»jTµ=îx@»g·ò¾ëɲãUï8Œõz]óŽrŽënûÐ>î{ù˹†< Oí¦…~mç" ¸X®
-=Ãq<yK¤¤{B@=âÇk·4Ô›E}1Œþ€îžšþ©mž©{p&§Âpsz;ùö»]×G~íÉñ  8z‹u³¡¾ºõþµˆcB§õ²ï††ýbÛŒgÁÄÀ
-hÖŒ#Ÿg¿£šîong4@zÓŸ«EÍb'€áÝ×??|½ûöåÜ ÁýG³wwŸ¯nnÙæòø¬e@ï»~ÉÂ$Ê4v(bq;6õ0¾&¯
-èsýËX`íªÛÔÐ÷O&QtÛ Õ‹n?r¢êÕî©^­âá•2Ev‘ÞÏûõØîÖ ²-õò°òèêp¼Æzù«FÊèûûmpMÖºòd!\Úk$E½üEëÍCÉ®P”ÆñQñ† ìÎT?ÕíZô4h,Ï?›¾‘àÉA®–8Ñ@3.pº}¿lhÙ­zjkºþ>c£›“#œÖ(¸dßg“käStý㹤ÿCß¡$7õnÇ)ýxw?¿;õ‰Œ«ÂrÐõ›z ™í0ì_‰1†6_òÍ®îÛ-ñÜôͺå¯f¤nÇ7ë•%ˆæצ^ÑÐþWâfkO8.ÀzA§9÷Ž›†^Lëæ©YËymQ+⹯ŸÏm‘û¾E™¾Ê"V³5úæõºm04ÎÍ9L¼
-endobj
-1397 0 obj<</Type/Page/Parent 1372 0 R/Contents 1398 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 463 0 R>>endobj
-1398 0 obj<</Filter/FlateDecode/Length 850 >>stream
-xmVMoÛF½ëWÌ-íÁk~ì.ÉS!ÇuCÐ43M­%&é.)ý÷}3ki—±aÀÆÓ›7o†”ÿYå”á'§ª ÒRwZe*Ã'×_ß>­t£j²µU¨.”~GÚ¬x¢<ËU•)[TK6Á`M©lªM0ØÚ¨<aflU 1ºTÅ+âžRÌÒlÁ©iP dn¸'A"M0'6ªLØ Õ€,+nIH Öœ8² >Q‘‰¥W6$.yŒkbAIâ k¹s{eƒ´À¢TP"½°6çEF6Á(ÛTìidŒŽ Yí•M1³jm¸˜ÌÊz« YÜSQi±ºHò^MçÀr¿‰RH¬3ØÏË7‚¨³”í¬¸dl .,6HÌÒ³D6H ×YHa]ª^0XËGdƒTgbC^6ðÁ
-Òˆ¹*G%l‚™m¸ã¨M0XXŠa#›`ì§O¯lh
-ÏžX\æøkqS²8“ë`qVrO‚¤ã£*\CÕÈ_¢¹ãšŠl‚ÁÖ5{qeCOx{Èý‡µ â²Bj(dX¬¦€"Yé`qÞ0)(’¸òð¨kÔÔ‚dT¿`t¤ù66Á`›üËÚ»íêöÁâíAÛ'~mÚº¢íNÞšm»ßŠBѦ==¶Ô;çƒóôñóƺcï†yú}ûcÙMÎOüvÇñ¹¢/m×ó8.ap\¶Câ¿6}”<oéRÑ÷~ØÿNô4zú>úŸ{?žŸ¥âÍ2•Ž±sû¡©ßæ31¦Èð½°qþ¥ï}m»ŸTpüÍbÔÿæžG?÷ÞîÎû·“–<éçaöãîÜÍý8H’´3x¢è“œoÔOã¯m•
-eîÝãyOG÷âŽRd™³¡†óR8ïGÿN f[ÏsÛ¸×y¤–üy<û±sÓ;«0ùÜœpËÑQò¾o÷Ã8qŠÿƳ§IN`‚gÎó «ô{F¤Shöa=MçÓ3ûô¦Í6lÝÎi©D3›¹?éоÈx8‚Ç£›ä¢nê×ÓmŒÊê’
-ù"ÂnÖ_îÖôÕ?\7ÓýØO8×öº¦oPÜTYÃw»~œfßv3§ñ*®k&@þäÏíêïÕÿø“çendstream
-endobj
-1399 0 obj<</Type/Page/Parent 1372 0 R/Contents 1400 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1400 0 obj<</Filter/FlateDecode/Length 113 >>stream
+1138 0 obj<</Type/Page/Parent 1119 0 R/Contents 1139 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 326 0 R>>endobj
+1139 0 obj<</Filter/FlateDecode/Length 2623 >>stream
+x…YËrÛH¼ë+:|YM„
+f1BÅÅT8žŒDËdŠ?ÐNÁÂLÅNÊvÂçÂ9!§ t†sŠq†ƒˆB±
+ƒErŠEÜ'ž!µØtŒ?ȦrSäI¹iL4«0Ø鈛Ê.tl7ÆÈ/ÈÑ‚¤ ’ƒ¦L®g¦ãCÖ:C¤§08wH@¿
+rÓˆ›:Rc°cɾg榋DziŒ"…pl‘Æc˜âäBÍ* 6ž#ÿÊVaT<<ÇŠÕlÄãñ¶VԜŎsÑR
+Ž™('Ê
+ž…RˆáhÆmÙ,z Ç0Ež<«0%/Y…)yÎm½­Â`Ñ]p>Žµ¢&s)ÔùŒÁ
+zò†hGìHÁÆq0Ӭ”ÄÞ¢l汋`çYcf1b°žU,ÚÔ«0ØÙ„%ãlm°ÒÙpy$:>Øžc"ŽÔ˜á°›*Va°è?ÖÛ* v1ãéxVa;áé8Ö
+F§áų‚xÁ=× t¤Æ2žU˜‚GÜÔ³
+[ÁÖ³<`
+f+ö¬Æ`§ìAŠU,Z>ÎÎyÖ¸Àç1ÓèXÁ"å¨7Ï* wN{Ö¸ž¨mm’ѧ¤‘H¥
+`’"£17u¤Æ`ÑüÇšU,¦,®·U˜IžR°ceÀÆ#Ö6†=g¡”¤ #i¾²’¤Æ”$9ô¬ÂV6u¬ä!ZDvf…cìj‘8V˜ÛNb¦ãÅ­u<㇠­#AÊñÀbäñg¦cÖ±b»`Ÿ÷¬ÝóÓN-ÎàHl+3Ùb˜NØ <kM'ö±Õ+¤,.ëÔDžUŽç!ÒéYëï,G2LYMƒ §ÔäY…Áâ½p`«0ØIŒ¨•­Â`ç, ÏZQxvØÇŠˆ¤D ¬áY…áçÇžU,öÁÙzVaŠâxW¬ÂèÈ/r¶V2»””Í£ %y`­DÏ*ì${ÖJl­DÏ*ì${ÖJîm)ççX+yÔ?Ä1þQ‚¬dáãÅêY…ÁâN ËžU˜Ňž‹›…3ð¶
+#ËatàY$‡s>ða*Â"+™…ïXt»°GÂ*LɼšÊVa°s>F«0D¡ÅÍkEÍø@»W4À]„[<!БƒòÊ+Vaf‚¯BÏÚM1d†÷<LÙLpZÌX'XåYéåáx&¥Šˆ•h© ¼a§ãð† cá©zRcÆÂçŠb‹/„8çXcDŠËƒH«1XŒgÆœEé}5ñÅè=ÛÆöÛ&¦‚˜ KÊ/ § ¢ÁžÈ„#5‹Ë3÷¬Â`ÑæQhžU˜™,:Vcf‚_+½­ŒkÌ2´
+xÁ=× t¤ÆN°g­àÁÖ
+ô¬Â°E¹£D<«0#v¬Æ`1£‘FÇJ8øvÌú–häß.˜ž±Ú¥ ÔD|A9NbúÉ÷TÞù·8tFÃSO)H‡<-g¦ 8ÌåRAp¨÷™²óœ¼¼Oíù/¼ýÒGÙ‘‚L%Ás‚ÃHç!ïÇ—³Sº‘ŠO’‰KÍ— Þß3þ°22L¦G×tâ)™ögg&Mib¿;£Aâ7!þ›=’î:ñ ª«Gp‡»2ó”‚ààk¡8™ãéà„›)Îþà5Qœ¼½HùM§ÿ&-e2&ýòP°ßgÙ ðj ¥ “#bÏyÈdq¬xÎCªäNŽ»\œä¬6«-~ß›Îæfµ‘ŸõðIzz±nÚ:IÛßVß°)´ëÎà ÂÊÓÏIÓš/ûMÒfv .¥¬95¿›Çlcþ“”È(¹‘9“÷¬VÏycÖUõÝàobÒj·ËÒ6¯JSmÍ_w«;|¼ÙÀ¼­Ì2)Ö‰ÙTiWde›Øe?²Ú´Ï™yÍ’º ̵iëW.Îʦ«3PIk’Ý®ßW1Ø7•vu ?ïͺkMSY›Y#ÎDÌ.©Ÿàü[µ¦(*3³ÏêâRÀ"É!"/³ÂöE…ðë,…CIMB‹øŽ¶ô‹“uf¶UWn T>·íþ÷óó——— a¤AU?cWQôîJ‡ýÎ쓧,0÷»,i2ÓdðÐIî¡¿:Úð[Vׯÿv.M…˜²]‘Õþ³à­c„ÚD#%›5#[8hîÿéö‹ù”•YìÌ}·Þå©ùœ#ÐõõôÓý篿¹„D¹Àï_yº8´#¡03l•—é®ã±¿äí³$À~Suušy%H³óÉCqù¬Ê³]ŽK¤bQqÃÉ«,o›­ä¸ß·9Úï‚öç`1Ôè‡ç úIC)ùü#†•«~Û`%'ë]Ƹ>Te‹*c?¸)ƒ‚ëÀå+/›Å)¦gü î„þU½°Ž¯í“àˆWŠlyqsyq¼ø!KpEX‡Hkã¸ê.»|·ÉË'Yt™—IÛ5g*7,dÈ1y±¯ê6A)7m¶?:¥u†;.~šbã,·ùSWÛ*Ùæ»l(¦!^QýŠƒë×.’ƒ=Læ©iß>© ûùÐd´Âe›Ôí¶ÇÅA^JüãHå
+]`‡zukŸqåÑK~$ùΞTiDS“Õ¸¯´ÖûБ•lFHš«Â®Ìšt—ã€ßØPYlëª@C»º[¾7ÛÇ'ü7/?åÏíJþDßß›»åyôÞdmÁÛ~ÙÀ®·h2Ò˜«ªüWk«úû¢YWÌu±¯«¸4ëºzi¨;/Ü{.Õ+ïò<{a½‹â¹|4ÝžÕpàKÕÌ}]¡ð ô¾¦ÚuìÉ¢K­pž’´®šÆ4ݺÌìýP«–Y+©îöHÛãõí]m8™·—9¿ˆ&wÿýôp÷åþ(å÷ÐàêîæâúöXìǪN™9Iï:Š½W¸
+R&JÌMò]­ÅåÙTœ
+¸„o,¾­pk’u…a³®«d“r`b¶!qÍ/×õ¦Ûµù×3&«·IÚ_V}ˆwyúÝ|œ.%§ÆExÞÎByª+$ÕQO]¾‘Ϋ}]åMÚ5œZÇ ù‚>n»µy÷ â¢,1³ÒŒS¨N07IÌF²f–¯eúv<þ£c¼ªÌíÝÊtPSTv®Û‰üõ4Ä„Aá·^—7KÞµ ®
+endobj
+1140 0 obj<</Type/Page/Parent 1119 0 R/Contents 1141 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 378 0 R>>endobj
+1141 0 obj<</Filter/FlateDecode/Length 3534 >>stream
+x¥Z]oÛH|÷¯˜§ÃîCJõqÀáà$»·>lœ\¬½½‡´DÛÜH¢–¢Öñ¿¿ªrº¤$@€C
+‹c'Ùh0<¶í•qO†bœÓ¨É)+˜ËZœ\V0Ó“s$V1ØÜ"•ØhÔ˜¡¥Å9½5dF Žþ RÂòÔˆ˜Šs&/±ŠÁN̳‚ÁÎÍygs‹X0«˜[„gˆkV avYÛ1#*ìO˜Â
+‰Ã”0@M (‘ŠÁZ V0ƒŸ1€.+/èfb3øÖ½œS3ØÈ00UfjF +áå ~Ò¬˜Áçl%¬` Wè js¬ÄŒ{îÚ)V²J ÖN5gMt‚‰ÐOµˆ(Iœ@ÜvÖ&È „VTÒ"8©,¶àHYÁ`çc¤Vd#ˆ9»ˆ³Š™€âDV1Xë@"+!ÆĨVEgñ·3ØdÀœuƒÇÜ®N*f(¦Hƒ°‚c(&ÊZwŠO3¬T‘ wF<…U vvjUt#·ë‚ûÄ€¹ã‹bk!‰T Ö&aƒEw@Þ]V0X\-fÊ
+&Ë(²‚Á¢
+¦Ê
+f(xò¸¬M¿ëÏè?V‹è¬@\!xŠ’ˆ[guçÂœŒ’“Šé
+¯Â
+¦+œÀœ™s
+‰€”¢EŠÁbô…bgƒ±Á+˜1â$é¬b°Ð„bJšƒEÐtÝh2†;£É†Ää&:+8™ìl4¹—íML¬âd²³Ñ…A—8D9±frŽ.e§3Ò—‡ˆÌdÁ0ÊŽ g£(
+ζÔÜ
+³NÞ?k²‚Áâj)+˜=‚ã‚kŽFá²gŒq¨wájaðÔ®£ó0<`°¸èä$ª,ο™²‚ÁZ‹¬`îÖùɺŠÁZ¦]V1XÜà¬[ʼnr<÷ý‚/ú#&A-ܱ'IÚÆñök3yäBƒ'ÒhOÆ(9fØd„ Ö^;
++˜žrôqV1Xt]7¦7üaóÀUC4*’¸ùXÛ1&Èá"<@ÚËúvR1Ø‚»NXÁ`q_…¯I±búÊÙFXÁÑøšdéÝ€ÁÎø2ÌÙèÂc%löpwzŽSLJ¤bºÃ‹ª°‚ipÆP¸¬à˜„-±ü߀ÁŽyX +˜îðZ"¬` ᘥu]s6¾®è§ÖÌYž&Ç1»èIÅpgÆÂEƒÅÕrÐd²‚é,s粊Á¢ÁŒ• [*WV0XŒá'¬`^Ù|]ż2¹Â
+æ…ÈYÅ`q"躊Áâ‚®šc
+æñžoÇßÈ
+F‘L]W1X´ õH1Xkg®Y1‚Œ÷(›äQ ²m’# ω±=ÖŽÙ~ØÀp…I˜ÄĆRM¤b°x­„ü8+lÁû¢°‚ÁbÎE]V0¢ˆë"‘XÅÌ•ª³‚ÁbÒu#Š¸”c['Ù'LqŽd£á˜5œÑŽa2¦å¬`°ˆ.–uV0Ýå /¬`˜ŒB’¬b:4:YW1Xœ8pÈeÃ]{ ä¬b°Å©fÅ,8«š¤9†
+l“±õJ¬»ÿzn”ÙI¤âFÊY„qÀ`q @M9+,B0:+˜Aæ a#P3UV1Xì •U 6¶Ù´n †^8´CÔu{Á`q
+c 9+,¦ed/±Q1j4ΦØ(بÈYÁPŒiÞ:+¬¾Â
+f,øu’³f2ls7¾ïóuO§X‡\“#‘sÁaT›
+çÖð0u9‡°å·pÎLÁuÊv+fæ_¸ô›Õ!—ãÛç‚ÃæŸ çËán+rž½I§@p6ê:ç·Ø){ o¬Äs¯½R0 Xòî9gî ræs÷Ýëå¢?Ι·‡œ_`Ã0ÚÂ)º‡Ð‰¾ÆLœC¸—³PgçŽ}ñ‡k0Ïvû?5:‚sø’_’ð„9î^Éð…sÍ€ßc œCpñeâÂüÄÌïI§@æ.~oÒ¯g¹ƒ*yùB`.Äw1=gwQ{Ð8‡0ÛâAÎTâ춇7i‚ ¢X‚ôœ(q¯–/Ĥ7
+Ë{þ„c:Ÿ…åÚ~¾‘…åê»åcÛ»}y8<­Ãëf»-wëï—¿_¼ÀÃ/pbŒñøw××—aù¼¯BsêÝ¡+7›²«›ÄBÒs¿ª6@A¸},[(®VǶîžÃ¦ú³Ú„ß¾»oZ|ØþYµ‡°k:è
+eX7Û²Þýö=•e®ë§æ)t LÚÝ×Gh»-·we(¹YNÂû¶Þ–ísxcâ|®k›Í¦jÏzßVmõDZ>Ô]>TåºÞ=œ­õª\}|h›ct]ŒV‡Hèªh×T©¶Bx ò¶\=Ö»*,Ûã¡ W«–èà
+¶.ˆ3âx@ý2¢8b>· Ÿ/ÎÍu×¢§Ñ›ûãnEb}Œ'ѺÚošç€ÓMØz8>¡„Iôh
+’×b¥˜‘òÐX O–B>6ñ̬¶èà„¤y<{E;ZÞjƒÅa´¹¦áþåæú?á}Õnë¯êþj EˆÃ‰ @ Ñðs}èL‘êùw]=1<<¿V¨§S¾OÊz~ÌþµÉÓu]nšS)V÷=þO(<¤üy˜9ô·‡ :%‚ƒ)&Ô<í0Q<Ö¶Ÿ¿úPÖu[­ºCƒØ{¦øm³®ïŸ­hß·Hq+´¥ÕL,{ºJAu´˜†lrYÅfµ-ÑY[Ô,d>ۺߢɜ.»®­ïÐò¶ÜïaðgiG.móÒ™÷Wo­‹¯‘×(¶+ -ƹgh١ׯCy„í»®^}qÏ{‚F[QâýF”_}¦æå¸HÚŠ»x6ç/}m¸¼½zûꊳÍïH:Úê¸Åúiõö¶¿˜e £Wwp±æê\Vçó ~  "ç'?,/þuñ?å>&½endstream
+endobj
+1142 0 obj<</Type/Page/Parent 1119 0 R/Contents 1143 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 430 0 R>>endobj
+1143 0 obj<</Filter/FlateDecode/Length 2227 >>stream
+x•YÉrÛÆÝë+zg!3¥lY¶ª¤D1©([lIˆI€@ ïëß9·Iô%”¤*å*›‡wºAÿuš
+nL˜³¹"5;G=Õxc¢0žEJ6¦¹ ¦søÇJ*®˜…šó&#ñV´ˆI…éÐ|–*QÁùèÈ* wãp+Yb¸¿÷7JÃ#§4†l–Ì
+-«0ØâØ+—}d6C"ö ¢S.KI6K˜¥ˆÙ Yò‚a@5‰ôÆÌ9µÎª ½$`„& '”äÉ “Âä93(€œ‚ÔzLj 6‹éí(*a¦Eì 3üëõJ˜iH˜Y¿ § ´ ïIÁ&¯X…ÁJ‡+Va”%ˆ+Ïj 6
+‘Å* 6)Žìj vžË*¼11R¡5»<esW¸ @mRAcmÒ4q…“ª:äÉ„£„1N
+"qJ­#I|x,¦)Yçl±? Îk*@ÔzHµ‘Ô¬ôƒujÃDJFìåTˆ* Q”áY…Y8ñwdâ€ã
+Q(B0‚¨XÈm,/¤C$¥ “y" DÎsã
+ƒE?hY*Ò*é $‚èq¨0œÂR MâY…é2Wžb¦Ë’ÄQVc°Qv¤Yc°)ÄkvErUtôØ}Ï!T¤xä„»QLwGRòcèd§‹·UóÈ•<à¬C$Å;Ý;§Wˆ ‡0 ÁT‘ƒECŠu¥îˆwÇA,ˆz5†(ÎÜ<«0SŸSñÈ:ÅH.BðI(V˜ŠÅ§‘u¢‘;øŠ€jPRAÃÁ“ƒÅÀšU˜ÍÀr{Y—_ì\¨ÇŽ 814ª Ôb­Ì©1²à^Tc y–xVc°YÆXG³ƒEÑd‹¶C°^Vaœ%˜-«1X´³ŽÈå?Ø_PW‚˜ !#”Á-JÞò$Ž1WtžU<ärÉbzŒDa_¤šUlNë^ÖYÅIáæ† ¢Õw‰†h”R±gvŠsÍÂЃÅd†šU˜ÕãBôš5‹ëR¡Y…ÁÊÍMÉ*Ìúðð¬  ‰ÍȀࢠWa°)/[ŠU˜áL—U˜Ñ‚gÙxÅ@¯"ZAbVa(Ƶ{Va°è¨#Y…a{X³Î,nèîpà rÅõŠqÀ¨g‹—djdb)ž„ŒØucá!£áxRc°XɈuÕ˜F9—ŠU±â•ጲâRˆ›¾42¾N¡€È¥ØãƒSŠ'GYhŠ´¬Ât™·%«0]æ¾W¬ÂpYFdzÎå|! ¹CAtYÖ&_èäXâô8@nî!lbmÂ#yÒÕÕc°¸U"žU,\È4«°‹F›etÌg{̓ÅjÍ.VŒßn°@ÊãÈÄ] ö(€á(ШÍHj W5ÄêY…Áæ¼yÖ%X¦ çR‚6u£G£
+B[‚ò¤K°Ç`±^‘þ‘uj¥˜P›bs…D­‡D,šÔl±.E¸ÏÉÇ3ÜD½BʹDoÉ pÎŽRxNÄäƳÿB>SJ~ƒØ3!~F(ÜÅh´…¸äÝ„¯hòY„FKî·>6
+¥îþ•óçùLÆ#
+±GJÜ튋CòY,±·öLˆ×Ü€øØh km†vÅæg-É¢<PŸ–'/Ðt¡Y>ðg›,Ÿ›åJ~² ̲úpsvm>·ÍCý¸ëÊ¡nS7¦ßÜÏ*|ùóòÏ“SüÐs*!/W¾µýP7¦4×uÕµ}û0˜óººú~7Ø•¹¨×Ö,ÞúÁnÌÐYk oQnîKjÒŠ.í*ìßY¹éêFÌ,vÛmÛ ï…‡®]9irwð(” ·|²ær³¥òÞ,ÛvÝ[Q­ÄÏëò±iûú½O·MýP#«ö.›{;¼XÛ˜»ºYµ/½ùeiÊfen¹üÃìz¦Ì=È©ïg÷¼¬¦†/› éî©ÚÌM×>×+ëüSŽk_ÆgîÚî‡< xæ»\¯]…éé¿%êªÞÔƒ<:U©jøÚ†qµÆMÙ÷«{sý¶øíÊl×»ÇZžÑEÿ´«×+äfR—ƒ+ï™[Éäv]¢döu0[Øxi»UoÚÎئêÞ¶ìºÃ×½_í ]Ô´ÍiÕ®w›Æ¬Ê¡4]‹îD3 åýÚþS \ÿÇ0nûòñ½¶ÅPV?hÇü~±0´íÚUO'FW_ú¨Ò9 ë’%X!l¥LUZ™1åsY¯Å¸E³¿<Ùîïl1nLêÍmo»×eõT7ÖœUU»k섇¶ÛŒû¡lÌÕùÙ F¿³ÕÐvotQt³ë¶m/Æ”k:ÌIPûIç€QñÂv϶›vߢz²›Rôݺ^îŸê­Z)ç÷‹Ï8›ƒ¹éúuﺔWù šÍ…l^êáI¬N\Ú+èÅÞ×®Ým{³)yc›éü.lµëêáMî¹ñ”}e^¢ë·¶ªË54ûÍÙä×h¹iì_^ËÍ]tu~ya¾`[ÔÖ •Gb“>·:+ÊŽ¦õÛ¯wË_Y^Û÷û<ôí®«¬©Ú•5Ïui>ÿ¾ 6]ÖiOUdxü õPfm'³~dY2‰Dn·ì:ñcâ´fk;é¹>Õ}¿{?5n[vu8B”3‹¶úaÓnÇF‘ßm¹2}ý¿i{^—¯æ›oâ6¾YÛg»æ÷:bÑÓ•/“çïÐÖì¿ÿx ”œ½x+ rü4žG8?,ή?q›ÿ‰2çmµcdÀÄ _†øøé<(ø¼>6¼åy‚ÿˆ‘ðñ/Ë“ßNþ”%æ«endstream
+endobj
+1144 0 obj<</Type/Page/Parent 1119 0 R/Contents 1145 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 458 0 R>>endobj
+1145 0 obj<</Filter/FlateDecode/Length 1033 >>stream
+xu–IsÛF…ïüssr „e°R”Ù¬²cF¤ã\ApDÁ‹,ÿ{¿î¡0-¨Rªbéá›×ÓË`ùo(JC%ª<-|ÏÇ•éçþý" =_%Y‚ß“Ê#O_D­¶ !O*S/Ðñ›MFÎxaA˜xJ&ˆ°cœ{ 3/¿6:I;ænW "Š£äxRI¿Ä"* ‰"/Ë"/½bvÃeƒ~@e°rÐOlTM‚Xî$ŒAB©N£Æh—‘bG+¦ qæs¦cU¥FXä¬%4§8/—')—™ÄHÈ
+Š+$Zc‰cBR%Á+(5%”¢ÍÎ*5h’Q1œ«4Ö¶·AFµ°âJ…†5Ž_QÛ@íÛÎûT ræNˆaaÏ Z#Ž#u>BÌ3fe÷tš¬)ÅuThP´¥NÔ´› ÌJ~¡ZSà‰Z+οKN¬„õ…Ú;*4¼ˆ„É9*4hN‡PP¡O*ÄI“^>-:Ëx88¾²‚ra})8ÈÕè”.¢?p²"§…I`ÛïStÍŠKÚZsA­UÓ)¡MéNÔ¬¬Õi²æ˜£ÖQdMB³²V§AÑÐTPk 鱈‘¡TVlšv¥g• BS`M;¯Ð i€Ù*4Í&{åµIá"·˜Ÿ*š%Ń‹rznàV¦ç®Ä„¤jüWPjP Î*5åKqÔÊ,´Ãá¡G¬hW “ܶŸï˜ˆ•ƒñ墑uÄÂ1m_YNù°àRœD:h«PjP<ï¥õz·¸ºKP¿Ú=Ðë-ÉRµ;ð«ÍW»ò·mÝþP7ueš¡ÿ}÷má«%^!ÖXô±=VÍœØõj›ª9’k‰È“oý§Vç³iÕ³a+Þ©Ý´ÝP쫺~’S¢›/ÿÎs¸ù¬¾4Õóìòí_ëùÊ{søP êcÕŒÏêÞœö]цåzÍùÉm¶Åi_(PÕ¦S7ë»­*] äÚOEY5CÛ?¾,øc–Éçmxiß |­šCû£Wm§¾¶Ý÷c׎gîÆRôøeÕ»<¾z—gÿ#ôñ5²5ÝSUµ)Êï*|SÕ½9£³˜‡ºoº¾n†®=ŒåPµ [EïMcº¢VUóÐθ5ûñ¨jódêù@DÓ5°™®k»9] CQ>R6C«
+Õ uîÚÒôóÅ›b(íIYÊæßVűi{2þlÇNõ<¸}0%*×Î õ­ú~<©òùÆ;Ó¿=õCU×ê±xâä1´}mzžúÕ]v¹ðÀñ3<kð%aï”Õ§ë•Útí7Sê¶-Çî§bjv€Ï
+endobj
+1146 0 obj<</Type/Page/Parent 1119 0 R/Contents 1147 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1147 0 obj<</Filter/FlateDecode/Length 113 >>stream
x+ä2T0
endobj
-1401 0 obj<</Type/Page/Parent 1372 0 R/Contents 1402 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 508 0 R>>endobj
-1402 0 obj<</Filter/FlateDecode/Length 2740 >>stream
-x…YÛrÛÈ}×WLíK¼UŒ ’yIéboTeË^S[Îþ@$$!&
-œÈ¯†r2 l‰JZ vÅS7¬Á¬£˜ F½³˜q,ï
-“)k0œ•ÕSY‹ÁÂwä/ÈJ()†·¬çüáAeâÄwå „C(‰ôJ±À±àsn2©
-R¯¸~®sR'‚Hò3È„$×LÃŒ¼£x§gƒbÔ–l“
-ÁášáÕk’WðžíK“y࣠prE9qe’CÆÌ¡‘SH7¹úÎ@ºÉÝN9…t“¯Ò»¼;{ó­9vwøz›/–în+mñ›Í«›fèÚía3TmóëÝ¿ñì {öJR<ýêî©êݾè·i›¡¨šÞ=–MÙ;W5­k÷Ô~wC ØÅnçú¢¾/\Ñl'‚Õã¡+ÝðTŠ®ÞµãsÏíÁ}¯ V·ý@/bw.=¶wÕ×r÷ìš²ÜFîÓû·ë·®+‹-ôT}ä]FÇ.sÎÑåâ~WÒÂ<.›¡÷O¢½NON’ÈýÓ;3:O·ïÊ~pë‹—ÄçîಹÏÞƒÒÕEƒhKÑoÜÆŽÜå¡Úm«æQb¾¬š¢«üƒçGOf‘»CR˜·ªÞ·ÝP4ƒë‡rÿ":‘»BðƒÏb_ßó@$¯Ð=T»Rrr¤ý iîFy9žŽ3øÊ xG]çëØá<rëå0…G¶rØ þqš/,Fà¡kkÔI9l#:#¾Dîb7”]ƒ ¾•G*F[ÕàŠÞn[”µ/×óã“Y ÒîÙíª^}{*ºBߊjçk¢ñ‰èËî[Ù˜_zp­)q+pxÌ’œà¡©~¸Í®B9ˆ­NÄ$ÎÂ]\¿v_¾<âïªYý·wò#ýúÚ}\¿I_»rØDQd”'Ë}y*wó€RS½»n›¿ îKÛ}ýÇiÆÙá"w]MÛ3†O]‹ûPŸV)žDº×›v_º›káOL£>¯žZ¯ˆ·ʆvÓîÜûò[¹;IT¢N?uU#é“<üq{ó/ö‡Â]Iþܧ+ʘB©¾o7_áòÏÔ¢î>û=úÇ×õxð?Rá~"œßÕæ+nJÛ÷n}¸G­¹Ë®ý.™x3þž™{ìÚÃ^©ÇCµ-_&Ë)3Ùo}?öHs¹ðªÑv¦æ—ϨL\Ï‹¦iͦü…­n¢š_„±öSIq´tëçfóWÂÈðhöËÍíúD7òxݺÛwî
-endobj
-1403 0 obj<</Type/Page/Parent 1372 0 R/Contents 1404 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 518 0 R>>endobj
-1404 0 obj<</Filter/FlateDecode/Length 536 >>stream
-x}”ËnÛ0E÷úŠY6 3)‘Ô2N› @ $µt«H²«@W´ùûÎŒ\‰F€«3œ¹¼¤ü3Aâ'«@È›@
-‰O–¯oA¬D Æ!¡çDr5ìƒÄÆ*ün ÔVDgµÂ8†¡Ã_Ê`¨WK㈭ÔÓH+´Gç©‘Ái´TdµNÕZ(‚*¦¾¬xª§‘‹›ò¨§P¡Á+õ5Rå.:û©(§e®¯Ðar±vÞÂÔ9(ΛÕÔª)Šb\©§É²¦± õ5Òù|Vêi¤˜£ßÙ×´!G)/kçK!éøñRpŒ,ȱ'ÑpÒ^èk¤‘¢¡ å$â„œ d³ZN6vr>ve±hV)¼ØJ|ñ|…º/álÓàöÁ Htdz|Å%¤ù'-¬€ÝÇþåé&}°`ƒ!*,a
-ØNU]Tí‘°¼¤JÀ}_f#R”Pdcö– å•R¥]{¨ŽS½W$àu F§:«Ú±ü=Â)†_]_ ÐõP¶yÿqËby|eJ,à±ÙOÛµ›¼«§¦e[p軆M¢Åšn.7ë<ãÀâ ¾ïžÐÅt¬Ú#qâ‘8‘¼Ù‘Ü>¸sîI,¤Óø:Ò¡a´û»Ýöžûî½ÌGøÜåSS¶#ÙñÈ ¿™¸`ceBõ_Û±ïŠ)ÿ[á-p.¿.„Ž\~Iƒ—à@ûendstream
-endobj
-1405 0 obj<</Type/Page/Parent 1372 0 R/Contents 1406 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 521 0 R>>endobj
-1406 0 obj<</Filter/FlateDecode/Length 1086 >>stream
-x­VMoã6½ûWL·6bÚ²ì-)ºÛ=´‹n|é‘–(‹µDª$µ^ûãû†”ç£Ú[$‡oÞ¼y£¿FMñ—ÑrFù‚Šv4S<¹û÷ùÃh¶¾]Í×bF-åë…ȇ_ Ýò~ºÊ×bNóÕßgø8EU\Èò9=³ÏÄâñó›Íhò~M³)m*`Z,W´)#<).~ªe”£LÐ/ö@ÁÒGãƒl’¦¤òn¯½¹þqógŒ“-SœqÄ°)/2£Ÿ•,)ÔŠZi¨“;åÓþ9eÙ°¶6ìßœï¢Rûàô¶ª¤ƒuºŒ
-k‚Ô†<ÙŠz¯ª¾!m*‹kdÀ^ ¬UÓ1â
-t´=·C A+þͦ4Îr…‹KkÞÚdY§L£¾CÌø w$o[jmvÔè½z—RA9ïRY .ˆøCZɆ•µÈ¯À08¦o·¥X=¤á‚¬£‡ážAå³<…1ÎVï£Ñ7j­SO‚²M‰"öFU^ðúx 8‹œÆ³ì'¤çZï
-9e2]+ƒ¶†$´ÕYm¸ t{ŒÅ¼•íVÒAmÉë .©¡{7™áyIX·KXÖt®‹HN&f‚nzÝ”L$kãFéôKÒ°Tr}µ¿¤J;HÏõ¨ŽvÎîœlÓeWß$&J¥wýSN >˜ò…Ìœ*‚uGA„'_Û¾)IöÁ2ô~dÑÝÇ:N¢d±¨ÙN9œARþèƒjOr£Z~Q(Aï{ÙQªô ÁDi¶òÍúšÙER)‘g$å¬ ß§Õ“¬ò+±tu–/Ç,ÿ´õÔfã´÷®æ‰D\é•¢÷ïT¡Ïv\w±P«2rÛ(f€ÕWUôœá„ÙÊý#>Û·@ÿË´¤!è“)éð5ê (Õ£ïcmÚN7P'÷9†#¼œ$šÜËô¸aßÑÑ”\æèu‚þPyÕIˆCñ?œ@G÷žÓû×Ñ|º¾œ Üüà À_¾æ7+
-¥éèÁÑYúÍm€›H¢›Õm{O_”ól?pøÔd\ÝVïê—›%úu´|ngØÜé{c9kTÞqRRš[…©id{š.’ÞÄx‰eøîûÚíà{²Øó¥è HO¯¡I+^¦o ­Ò˜½ìƒ§dA&¥„ݸïR„g7 L<½uÛY¤AËõÈ&@Ùi_‡tºa§’SõðÝJ…¢æŸÎ«¦Âí&<å³ ÇQé´ÙÇý«ºí›èŠ‚>¨í‘Ytüòò÷³ž;+š‹åæ–ŽcW·˜N(Þ
-Šýñã-Ñ00¶°©c4W˜DtœÌ0âÒØO><\†ÂÇQ…Ð^4›dÈñ½ÆûCœà(F›¼_ÝÏùyžæü¿yGš¯¦bµš§¾æZý¼ý>úí.
-endobj
-1407 0 obj<</Type/Page/Parent 1372 0 R/Contents 1408 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1408 0 obj<</Filter/FlateDecode/Length 1387 >>stream
-x•VÛn7}÷WLòˆWWKN>$iA.´F\Ü]j—1—”I®ý}Ï»•½U4†mÅ$çræÌ™¹=™Ò_SZÍh¾¤¢9™dšŸeç´8_áó ßNÒ&Ìf«ã«y¶>x¹>¿yNÓ­7ð±<ŸÒº$ØŸLh]Œ¦Ù"£WNŠ )Ô’|“SaÍFU­AYC¥eötý f4Åk6sŠ–04Z×q |{Ñlµ<òØ“2Ѷü¯xòm^*'‹`ݾ?,•Nå-ûÌèwªJú@{Û"sQ²…†Ã€óé<›±ó~7­Ö{ò6^,„!/%Õv=Ú-›óTY
-¶’0áØßÖ‰"¨Bft‰Ëœvƒ‡[QaëHh}ÿuLžS^Ý”2yÅÉ"¼ÖsG²¦muI9€± <+S‘V7ìNù_žzÞùH¶©û÷µÒ6ú¯>á
-×ý1~כּ©œm·ô+½¿zûùã—OÝåÙ4•æÞå¯5bð?±†»UËùØØ3öÇ~q3–ÃÀÞ_}@ù2»«UQw0
- žÎhT|hû…Þ‰½g«‡E%ÀÅ'Äèµ0˜nþ
-ƒ‚óî¤9Ò¸ÑÇQÝâ²ÕE
-endobj
-1409 0 obj<</Type/Page/Parent 1372 0 R/Contents 1410 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1410 0 obj<</Filter/FlateDecode/Length 1295 >>stream
-x•VïoGýÎ_1v?”(æà€
-÷îå—ùÇßh¾DçzÍžk•ç´”ª,“F–ŽTF[]Qe%]^Ü6üã-9 ëŒZTN¦d¥yP‰´Tˆ•8á€zÃIÄuvÿÔúž„ã8†B1x¶/¦Û—.é7ÞO íFôu 7e)•ž“r•6ŽâÑiß%«ˆ.2*µ[ré;fn)K)ì)‡>îe]S<Š†\|ìYÈï
-¬_H·–à\Uª´5Œ ô”Æ7Ÿ-U¹3˜ž1¢y{ÍÌÛJ¥²=B<«gtƒÕ9HäÀ9Ýv1µ8ºo] Ö?
-yBPvÊ„Ê-–‡ô¾‘A+~ì¤õ»‡“ï%6ë‹N"ˆyê%;ì–¦1©Æ Õ³õqttôõüúòâòw|£ÏÜÚ0g¨ ª+’D®PºÑ 8½£•€@ð£|Ý Y¢ "õB·‡úia9ªv· )0X
-Z÷
-Žb”8±þpàV©ÛÐÈïΰúÜРLõ‹_ÞÅ¿…Õºl`<°R/äÞ¯Î\ÓÏøúþÔ¾O®ÍfۂѬÌqpIndR9±È%nNç‹}Ô®.%ËRñvZñ nV}ª}sÏG‡xÜ)w
-endobj
-1411 0 obj<</Type/Page/Parent 1372 0 R/Contents 1412 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1412 0 obj<</Filter/FlateDecode/Length 1161 >>stream
-x­V]o7|÷¯Ø-*ÖI')úðC¤Ž
-ɳ­ŸYRgK–“ºEØ9‰Çݙݙ%?Ÿ¤ÔÅ¿”F=ê)¯NºI—†ýa2¤Áx„ç~­¤EX 'øøÂB¿›&ƒ—BŒgÞe'Ë¥)e $ŽG”„ÄÝ.ey+3´VeIÊ““º ?:µÔ¢$oȯ$m¬É¥sÒf·ˆöf­Eºšñ»&C‹„Þ}õôš;~-ám]j÷† ’­«ëìý9}XÐÖÔT;òNÿøm@ÎoKIJ3­ó²â%Þ«Ä–JµÆˆJcÖ$|Ø!¡ÒtK>ˆjSJ×qwvÐv^X_oaIÚOzŒÄåVmÇP%z*ª¹ ²+ÊG Ð¹œPŠ’rmÛýA$“&£„2ËàœWz@¹•°Ò‘¸ªsP2„EÝí´‡˜¹2#Èx¾+éŽÍ$é¿A.ZÍóRIí©ý‘âKý†2ªhWÆy-*yÈ´<ÖýO”Û­L]´”žæ"Gn2 ¬|sÒ4¬0úÇPzMÎTÒ¯˜´r(Yn¬•¹/· ‰ª7moŠ}e<·:ô ïóVSP.4‰ÒšKÖBÁÍpRÒ=¿Ø`‚Oji K…þ$´Xâ1ÇѬåê|E"¨w¯Ñ7‹›åì´AÔq'Á|e Tˆì–Jy'K
-¢»Õ}«=vû°-¨T#ÕSÃX*¤‡¼\Òl$.$¾ÎCr6É.uSÄ{…z×þ
-•ž<„ÿ®²3ŽÇšïÆk½õ]O;½3’>O’äÀ&MƒölÂ=ªL­ƒÁ
-åÖrùuÂ?ŸÏf7®.®o¦³ÙO‘Os&Ód²;”4>¾‹sšá'ú+Ÿ]÷>žG kcqÔÂ÷ÿ+ rãÓ0mŒ)ìÞ¨¯ý Ø+ùì¸.”’IÇ25Õ?
-)K9·ÂË3‚pÃõ Ó@м^â¸1ÖŒws%â’8îÓ0Mã]eúöÓ»·ô‹5·ð]˜¼®pl'ÞÙn6´GÝ _þëÅd0$£á8Þ;ÒÇ~Ÿüzòù2Eendstream
-endobj
-1413 0 obj<</Type/Page/Parent 1372 0 R/Contents 1414 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 524 0 R>>endobj
-1414 0 obj<</Filter/FlateDecode/Length 1504 >>stream
-x…V]oÛ8|ϯXä¥)¨þ¶[àpp¾
-‰›Ö:ä…–h› Eº"ÇÿþfIÉMÔŠ †e‘»³³³Cþ8éR]÷¨?¢¬8é$öúÉ„“1¾÷ð_JZó ,=~|û|ÒëL’ ÆäGõ†Ã¤[?iZ„@ƒÑWüˆú“N2úÝ‹q÷× —éɇÛÔSºØѤKi t(ÍκI·“Ðr+<ÍÖ”n•Ù8º¶æ§¥-Ÿþ~Ÿ~Çþu±÷_ôÆÈægXm¬çõ´ÇBGÂät°9/JOÞ¿|¢ÓýÖÒ¾´^òŽvJK²kò¥pÛSü& ÍÈU›t>È-bÈõHl„2ôx†ÐŒÙ»}Ð…ìáÍã{òJë°)º ÜîMR¯ìÀV¦œ€qj³õè†È9)­Çõlúyþe1[$þŇ
-øÕíôkÂlð.ö¹Åù*{Šx}y1
-¡4  Û²…ÑȽ۔¶Ú¡mí¡ÿífz}Ck[R.=B¸Ç÷ -D±´ŽVˆ]•eÒ¹u¥õAªÖ2'´ÉomåÀˆcòÒµò¢:ß«\ž“³TˆÃ
-%ØBZ#Ij'C’­
-d—´+íJË"ÏÙí³,3¬&åú d¶ÒH¬«Âf®`¹\¶r2î¹Ë„¡•
-i¼ðʲRÀ©³U™IÀÎ%ԞŠ-ÈF¢å;Y:lܳŒÖ
-y@‹NÉ2  “å÷yº ¨02Ý„®•ØëX
-*Ì\¹?4¥ŸÐÕÖFíp&èÇÛÌjº“ÏR3âߨ(ÅÂÅý%÷=.æq-„A÷”Ð2óQ«²Ä8€Íè'®Úílé Ï ÉrõåÛÍyø|¸ûgqNwÓùýtÞ=oñ†£¬yÚmmpÌzÆeHÚóŒâEUñ ¨ª4ÞKÙŽ“³×=úYñY0gÖ¼&”µE#žA\ óŠØ(IÏ…ønKåG¯l×13duŽƒí9#8V䎕÷Œc»¶Ut#Ù—EœEÖóÉLF¼Z*ºP¦ÜÛÐ ¤ ³Â:îVð|øŸÌ¡«P±{ìu‡Ë“ÄŠì(þ׳VáµiZ‘X£­´¥Ä‰eXÍ"Æ´‰M8Š›
-"©ÀÌ·µ+—U81¡l“ËõrƒîJ'Ëgö`ô' 
-endobj
-1415 0 obj<</Type/Page/Parent 1372 0 R/Contents 1416 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1416 0 obj<</Filter/FlateDecode/Length 1741 >>stream
-x•WMoÛF½ûW t©XŒ$+’}ÈÁ_‚:¶kÉI)Vä2Ú„ä2»K+ú÷}3K*
-íŠ"-îÎÇ›÷f†?Æ4ÂcšOèxFiy0JFôæÍqrBÓ“9ž'øç4åòâô4™ö?_¼~wJã)-s˜šà!#˜h™Ž“ñ(™&tçLLõ•rgKz¸yÿ7KŠ.
-£«@w¯–ß`hJãq44œÌaèpi©ñk6 …µ
-d<©'e
-µ*4=…÷¾\ WÊ댼vO8(Ž5•ùIkëmLXÓõÝ=mmƒ?Š‚*ã#µem
-Í!Œh8>N&ì:¬5[Mc„µ³_*úŒÛxUín›Êkr>u¦4À= xнVp[|Î5i0¶Â3›–#”[×ó\Z@žé€ }Ò¾›Ì€=²ÖxÉ
-óœm˜OÀ¶ˆ†^Æ6(l,…m[6ïN·v;R­4ÕÚ1,€{µåR}8oÉ™ÊH¹q %Ü œN­Ë:Cƒ^ú1^ÔÍnPvj Ä8LüàTõUs «m@Dà–"[ƒ¡9H]y8¨2öÅÕdºÚRi3íø‚âœ|­S“=sSJŒ±¶Üæþ·ø‘$¨L꡾ R|` â*d¹¥Ìä9( Ñ‹BO½½ðÉT’Mè£vza˜{Q-T¹R´Ò
-œÄïyZ…âñðñUì }Ð¥h›².tÉ!Aå(:Þ~=zžW:l4 ù•HŒ%ÖA/×È5Uè6 BÊ›¢ØB_fe "³Àh@= ¤G‚m™$’H
-Ž>Wièy墡Ž p(üˆÉ·¼`:´ä€
-ásòåxBPëäËlz„ƒJf¬K4$öÖëv!ÁôüJmu HÈ7um]ðB»èïZ
-ZÉ°ÍúÇW ·PxK±‚¶uÈ¥"XW¡…`àî- =|#H\W )tì’ö °Á>Ò„Û?û-ÑÚŸ
-ßÛJpcØŸùÒFy«æ©ªrýwÍ̈;œP©ò°çƒ7 P®1VTíJƒ½jÃKÄn!R)‹¦ëÐ!Êo7àš7%xª*mß©Ú`‚ÈNAgÝbµ*/£çñòêæó?7·7WG$÷Wg—íã§û÷Ë+žnòâìúzX—dÁÁÈåui®LaB»õÜ´K²Xzwq."•?.1ù쯡³„>
-›·ˆø……Ã?EdqéfX`¾Æ[ÝX¾»ˆ]‚«‡KüÀÁß ·žž› JÀ•î, ÷Ô`Ë[yǘîã¦[ä±r'X sž™T+ì‘Ü®÷¿=^¿;i?ÊÆ3|žÓlŽO:þYœ}8?çýÆ‹Í¥M^¢„A Ò°»0œNùüÿúœÎ§É|v‚oJ¾9eƒW˃¿þ®ÂÓÚendstream
-endobj
-1417 0 obj<</Type/Page/Parent 1372 0 R/Contents 1418 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
-1418 0 obj<</Filter/FlateDecode/Length 166 >>stream
-x5ÎQ ‚0à÷ýŠóh®M×6Õ
-z(Œô*Sc’Ždýÿ&—‡{ùྠ‹Ã¡2äv"Œ2H]P¡UìYÌÒc •!Û£ç0¸Œ7C±¦CDŒÁØäVž«ÍâÇÞì½ýLýÚàü¼1#Iÿ.ýÁ„SΨ Q¸9¸ù‰añî—ÓÁ£EýrÑ£©W-” Jêø¯é¾[WC®ä 5 1†endstream
-endobj
-1419 0 obj<</Type/Page/Parent 1372 0 R/Contents 1420 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1420 0 obj<</Filter/FlateDecode/Length 1631 >>stream
+1148 0 obj<</Type/Page/Parent 1119 0 R/Contents 1149 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 463 0 R>>endobj
+1149 0 obj<</Filter/FlateDecode/Length 580 >>stream
+x]”MÚ0†ïùsÜ6›ï#¬h‹´[í–H{‰”ئqRÄ¿ïŒÉ€‘¿ž™wÆNþ:>xøó! L ’Žçz¸2=~ÿ ˆóŸÏÍ®ÐÂÆa(! \Ÿi %$ᔄâJÈ7`q %ø^è†LäŒjä¹9S­SŒÏÐid³Z Š ±bLa“ÆPBž’›Icˆõ‚ÌM˜hë%9®ád2jÁNfF qä¦Lcˆ^R7bC¬‡3äI9“šÑÀ§’œQM7æ*ctëçwe9S/Ñ]]Ψæþ]f;…8Á|xR
+´@S`ˆS°†&¡ÄëGš4†Ø‰ŸÑqM"gTSÜÌ*cT3Ÿ.ì¬2¦)Dw±¶“(ÁóŒð<ðß Ø9ËÂyùžãí‡b‡¯K’fPÔö-Á•êi­úN×CÕ7Z}+þàÞ]{Ÿñθû©84Ne×C¥U_6ÊÀ^(Ñ•-4j§A+8è3ôÑôeÛ‚)嶄RÕ7wÍ~@KýAØ\ôîºï¢87&µéÉ…Ï~8Ön›£h/ „¨]øx[-6+l¬¬1OcÜÑrÊ,Óa’årÛ
+ªðŠŽ…ê͸3™wÞ
+ü¯¯ÎÉs!L›Åûrñ`f-Oþ'jØvúlµÇ†Ç6~Mu„×N›a«DË[ÈËuýKwÇ}§‡Ó,퇦©ÞJõ^*;Ë_|”ÆœuWÃJUÝåDÇF64ï±Åln1Žé Åi<žr”áÇ0‹ð> ˜Rܪp>ÿ­ÊJ£endstream
+endobj
+1150 0 obj<</Type/Page/Parent 1119 0 R/Contents 1151 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 466 0 R>>endobj
+1151 0 obj<</Filter/FlateDecode/Length 1069 >>stream
+x­VËnãF¼û+:›
+–>T]“2%­Ùº½þåæúÇõñðx‘bàuyù•UIaÇÔ(C­Ú²O[§4÷[' `ÁÖõù.*µNoºÀ%tØ¥8TX”6TÛàÉVÔy®ºš´©,¨€½
+ÚRÐRkµ‘2€ÐÍ1óV5EÞׯhBûa8<™—¥Ìºm²¢sIDrn:]—¡ÈâFåôkª°TJiµ¿¢J;Îu(Ž¶ÎnjRœYOõ%eCh¤ÒÛî9ÐL©BaŽ‹`Ý1£5®'¿³]]’ê‚•ä ¨ü(z{¸ëL3‰ð$zrd[v8ƒ¤üÑnNJ£ºc°ßùNÕd˜K/LTe£Ž«ß ±H*%ò‚šœµáû´zRT>˽¤Îò¥Á@”Ÿ¶ž:löÞ—;‘ˆž™Ò2¾åBžm¥ä>b+ T6jS³°Àü‹N2ü0µ"ϧÀbçh½À±L›^}1“ïQ£®€H=Z>Ö¦iu aJ‹ `˜ÁÐÁD¢µ½Nˆë÷=ýý(eŽ6—Ñï=*Ï­‚8ˆÿéä:z°›Î¿æSøz.ððÿ/
+cӏ
+endobj
+1152 0 obj<</Type/Page/Parent 1119 0 R/Contents 1153 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1153 0 obj<</Filter/FlateDecode/Length 1420 >>stream
+xWÛnÛF}÷WLòˆ©«%¹@’4 Œ"—Æ
+Z#.Š%¹$7&w•Ý¥ý}Ïì’–Â*AmX–ÅÙ¹œ9sfýõlJ|Oi5£ù’²æl’¬×tx±%þ˜ÐÅô2¹¤Åz…÷«urAVRÛ N?¼t¶ó‹Ùƒí ö½)Íf‹ÓVxŒÎ¼Øœ__ÒtE›.×SÚä!Ø„6Ù襕ÂKò•$פ”]¨²µÂ+£©PµLžn¾À¦8ÈÎg«d £M%‘’ÀͶ–';R:ø–ß‚‰#צ¹²2óÆîû‡¹rÞª´å˜ ]Á¦,¥ó´7-Š9{h8 ŸÎ“Ï·hëzOÎÃLhrRRev!¢Ù²;G¥!oJ –ãm­È¼ÊdB×0æ²ÜŠ}0–D]ŸÅsÉËdÑ•LNq±H¯uœÁ‰ªigÚ:§À˜‘•.©VwN¹_"žºd8§Éb>ƒÿ‹dߨ‹º¯ÏemRQÿÝ— &?†ÕÎػҚvK¿ÒÛ›7ßúÐϦ±A½/üþ\!÷o°)[®ÊÜÁŸ6?Ž ËУ~oz ÈyWÒ|ÌbI»JeU‡ ðEÀ2
+„þ¤{zo´¤òÞ“È2Ójd©ã¤½—öàf%ŒÐI¼(Kµ)ÑR-IÆöwy*~LÂ…†²´='t;zgë…ßD 9éƒáV_áéµhRAÊ")‘7/>¾ÿóúêÝ›Äóƒ¸Ì¢\z¡jwû´oHGŸ‡ üùøõE7S#pìPÚyàŸõó6,à¤6¾N‚¢ ä&Œäƒ›ðàO†ñ¥L‘–Sd(‹Ó®ÂlY'ëbÈ𷜉k1Ô<}Û6‚ÒGŠÐ-¦^Ò¶@•mÝVfªPg~$;愆IÞŽxsYˆ¶Fè–A_ÍÛÍ;Ê´ázàwÜ:;®M&ê1JŸVéxäöé°Ì×p×T©4<7QîDjP¯“Yk•‡°HïA9„“솈\Å¢Nb
+æ#T†Ë0YÛH=äħwWýsýêå§W›æL'ªY>Ÿ/:…é„Ïvº£áñ, Jx˜·#A¾òO ¸ÍÖX/0?¿Ü>Ò»µÊ¹4SpËì˾Íøbqþ¸Ê>ˆ©)­h ÙÅáCÛj7hÞûß9¼æ6×üPmDÂtÃé‚£@õΰT÷Ø0š¤µÜ0é„zØËe៣â ÍkÌ ÷þ±X½œÑ"ÅÆJ%ºVZ“aBÐì¡ïçõNì{=(Jî¸ F7«„ÆöÐòP>Šf'í!0¬p!á&ÍC o¾ïÆQ¿o½ieV*‚„PÈ‚Ž÷’ !Ì…lx'ËšŽHRZúA´QB¿ý0b]Ãn(5¾zD¯¢€A¯yw²Ñœ×ã¤ZqÇ*~€&j` ä+ëtøy¾Ï¸¸ÐäÑþÕòí
+ã ÏLÂÕÈ”}P鳱͒ :ß7p ¯Q>ºÐï´ã ƒ|º{KBVbÞ:*kk=`ÑA ú¥ {”¬בXy/ö¸ ycó¨OŒ°Ï0gšï=Ñ#‘Í h. hÖ˜(VL»£KPÃ# ò{è _ 'Á=ø;lsq
+endobj
+1154 0 obj<</Type/Page/Parent 1119 0 R/Contents 1155 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1155 0 obj<</Filter/FlateDecode/Length 1340 >>stream
+x•W]SI}÷W\݇%@@÷ÉTâ®Uã*[©T¥j«™é‘Ö™iÒÝ#ðï÷ÜîAc´j@¹_}î¹ç6?bêâ7¦QúCJŠƒn4ÓúaîðG—Ã8Ši0á}ÿ$ê“‘”Á¶ ï§GmÛ‹ÑimÛƒ}mº+ìi/Õ–ƒ!xÓ“;§h’¡ÚáoRŸ¸K“¤uë„qª¼£Ìè‚T)]%ºÌÞMî:Šãà×îà׺ú2ùôMf8Îs½`Ï…ÊsšJJU–I#KG*£•®¨²’®.oI~yONÃÆ:£¦•“)YiU"-bn#NØ¥voq­¿µ~ á8Ž¡P  öÅ´:Ò%Æûy¡­ˆ¾Îà¦,¥2ÃqR2×ÆQÜ?í¸dÑeF¥v3.}ÃÌÍdI"…=åðÃãAÖ5Åý¨Ç5ÁÇž…|ñ0uÅ€nª´m[[6¹ž×¶q:«
+• “¯
+BП…@‘FkGÊšN®‘w¬(¦¢3UeÇSˆM0v¯%
+ëç²+*%ä‘Xב#U:i2 ;"=wJso˜–^BÙÔÎe¢²•7¿¼æñ1ÒÚ-(x°€y!ìÈKÞ:tD7UN{Ò( –EZÝ…ÿ72µahjNuù»£Œ-X¹ê©Ñ"MЇú±üø|ÈïÁè\4I Wðñ,lg
+|aI—
+²‰QswìM-ïtîõÏ‚ßô/ø„þo·x{8nÐ ~‹ë1Í¥™a­Ó=¹•
+Yèz›©ã½î/GÌ{½¿Ýà(^›MK ½ÐÕ¦o»6)ȉjpÄúõ7–ÿFw7¦Ôç†øláSõ­ù·Ã°`g Š{ëþµÜþèÅ™+û_ßžÚw}ó|¹sÁkÖgˆ9%—2©œ˜æ×Pçk^+X‹’YÁx¿ }y w®¾½}PÐG‡„×ÄÛ.My‚ݘÉP‹/Ë_¦Cˆ¦QáÖj’È_eÂgãZÏã!¾Œû4£Ó>³ðöüó‡sº6ú
+Iuâg¬ äk7íQ-Ø¿rŒÑhˆ/&lw9õ§ÉÁ?ÿxƒÂendstream
+endobj
+1156 0 obj<</Type/Page/Parent 1119 0 R/Contents 1157 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1157 0 obj<</Filter/FlateDecode/Length 1153 >>stream
+x­V]oã6|ϯØ-ê
+™&Ã7HÃëE^)©=u?R|iØV íÊ8¯E-‹ì†
+
+ªíþþC;rS#ÀZ&”­ÐÃP£6(ÖØ5¾ùi£»‘ž¨u7?ŽU¼`›Üh ÑpÚ°tP£Õý®¥qmëìg•¸öÁ'Ôëí[¥' Ê¿í™l»Q¹¨ i#þÙy0Â>ƒ¨y[“=Æ×lU¨[B%Ü6¥1ŸªJ¾j†‚õ' ž/£K2Ú=Ñ ÍÆ %‡Ì+q+!"¨®Sz¯À–n; Tƺ¿ŽüRU,L=f4:'Ô¨â<¿iPcˆ/详„û›=¥tŒÖ&ÙCøBºÇ¶½€øw#žbB@`Éj!ËF¸â})«ÌåE|ŽJ‹r™ùØ!¿Ýȳ'ˆÚ ñŠÜë…t=Žã´JßßýMbOí¥55Ìx~5;!Oø¯ôô>|\fác°>ሬú~Üh®f½Á IŸ'Irà¶7{áöÔ¦ÑÁ[…rkŒ
+¹|¹ÖŸÏæóë—çW׳ùü§XJ»¦Ét·il¼_g4ÇOt9“¯Ÿ*®}Ø…ÖÆbo…åÿW@ÕƧÏ`ÚS8½^÷°WÖ°ã|PI.:ÒÔ²ÿ$¤¬äÂ
+/Oš ç- A‹f‰cßÆXÿ] pº)é§ÂÓ!Ó4Nfo?½{K¿Xsûйɛ§
+endobj
+1158 0 obj<</Type/Page/Parent 1119 0 R/Contents 1159 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 469 0 R>>endobj
+1159 0 obj<</Filter/FlateDecode/Length 1491 >>stream
+x}V]oÛ8|ϯXä¥)ਸ਼ã¯8œ¯Â@⦵Æy¡%ÚfC‘®HÅñ¿¿YRrµ=1,‹ÜòÇIºøëѸO#ÊŠ“nÒ¥aÿ"™Ð`2Æ÷>þKIk~¥ÇoŸOúÝI2 Áx˜ô© þp˜ôê'M‹h0òŠ_ÑŤ›Œ~÷bÜûuÃezòáö#õÆ”®v4éQš(]J³³åVxš­)Ý*³qtmÍ;OK[>ýý>ýŽêaï<ï‘5ÍÏ°ÚXÏëi…Ž„Éé`+r^”ž¼%~ùD§û­¥}i½äí”–d×äKᶧøMš‘«6é|[Ä;ê“Øeèñ ¡²÷.@²‡7ïÉ+­Ã¦Lè‚r»7I½²? X™rÆU¨ÍÖ£"礴f׳éçù—Ål‘ø*àW·Ó¯ ³Á»çBç«ì)âõå!Ä(„ÒL€V€nËF#÷nSÚj‡
+´µO„Z8ü·›éõý ­mI¹ôáß'´ÅJÐV8ZI vU–IçÖ•Öl©ZËœÐ&¿µ•#ŽYtÊK×Ê‹vè|¯rÙ!g©‡J°…´F’ÔN†$[È.iWÚ•–E(ž³ÛgYfXMÊ'ô/Èl¥‘X#V…Í\Ár¹lådÜs— C+¢”s• y‡ãêÎsÅMnwhÙth­^BøÒÃÝÍtqCNBY
+ʿโ¢®•Øë¸ñ‘¼ÐÖ”Ô3ÂÚŠgÐ{Ö¢ ®}Œ z¬C;ʶbçe^°Úl„Ç‹ê͸ÈìNÒìúO°.ÞZTÚתC_1¿´ÒëêÝ »ñÂàe³LLDj_°§¨ ü Pã›-ºg×Ǚ ²ª÷Ÿ`U ˜‰9 ’Æö ýƒ‡F„ïŒô+e]üŽ\±J2kÖ­¼vÇÒHhÚTðpåÞ ЙXˆÒ{n-g0,¤dƒz¨=‚êò#WîÏ͸ÚÚ¨Î
+endobj
+1160 0 obj<</Type/Page/Parent 1119 0 R/Contents 1161 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1161 0 obj<</Filter/FlateDecode/Length 1726 >>stream
+xW]oÓJ}ï¯åå©1ù(IûÀC¿Ð-miR¸HW{Ml¯Ù]7äßß3³vn®P‘c{çãÌ93ãŸcáߘæšÎ(-FɈ޼™&'t|2ÇõNS.NO“ãþýóåÁëw§4>¦eS³\d3£-ÓÃ;gª`ªo”;[ÒÃÍû(XRtQ]º»xµüÇ4GÃÉ—–¯ñbÍ´£°VŒ'õ¤L¡V…¦'£ðÜ—«áJy‘×î /Š#EMe~ÑÚú@Öt}wO[ÛàGQP¥ñ:ÂHmY›Bs#Ž§É„]‡µf«iŒ°vö›SeB_pªÝiSù `MÞO© pN$t¯œÀ¿çš4[ášMË+”[×ó\Z@é€ }Ò>›Ì€9²ÖxÈ
+¿‡ÚzoX^ˆ£…‚m <>gqHÌNÿl´ï§ŒF‚"xØ\JÛcº‚bÌa\u…Hµ?‚yÁ°/ *Ÿê“6V©£ èdÇßã€Ì†B ANŽ Õ1tÂóbË`
+P‘`è§9©{U‘œ¥ {ð·xºF X `®`î¡éÀYÔûhȈQLcXÜ Bk€  ªç»5 zìB<ƒi ³NJðq=Ó­KRܵ}"—€²ßÞȯmSd”®5ÏÎD‰jeæo™ø@ÈoœOy1c£IÐ3p.4Ð/C.3AöòA@{ÒÞX'‚«Õ÷h™â£Ä‹ ú­Ó>6AW§ ‡•ÉÔñ -JÞTÓܾ* Vy…x•ï9oõ{'k— ¼GD^ª`aœ'’ä
+q …·«g[‡\J ‚Õ¡qZîÞÂÐÃ7‚ÄuÕBÇ.iì#Mø¸ý»Ù]¡ñi¡@ð½­8†ý™/m”·ižú¨*×x×ÌŒ¸» U*{Þ9x“
+wÐsê0å-¼cJ÷1Ó-îX±¬„9ÏJªöGnÓû߯ߴaã¾üN¦4›âž½8ûp~FwÎ~ç…æÒ¦ /OÂgØÎG§ü­ò¿>úŽçÇÉ|v‚oFœOÙÐÕòàãÁ÷÷Îendstream
+endobj
+1162 0 obj<</Type/Page/Parent 1119 0 R/Contents 1163 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
+1163 0 obj<</Filter/FlateDecode/Length 161 >>stream
+x5ÎÁ
+Â0Ð{¾bŽõК´!ImUð TŒàµ¤­¤ØCü#"ËÀ°Ëƒ}š†A–¨ÌJhA!T]pp%S/S„™´šl
+ŒAÏ`"ÝTIkè Q
+m²ksjôÁ/“‰Øyó^'‡h½Ûè…ä—ÿ`Öë¢uÌÁ¯¸wDÝÓ&‡¾û*.y!…Jê1cü»Úkr!ßÜ0endstream
+endobj
+1164 0 obj<</Type/Page/Parent 1119 0 R/Contents 1165 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1165 0 obj<</Filter/FlateDecode/Length 1583 >>stream
+x…WQSÛF~çWìðÌaÁ4oÐ43<Ĥƒ;}(ÎI:Y×Hwê„ñ¿ï·{’°EšN&ÁÁ§ÛÝo¿ïÛÕ?G šãÏ‚–—tuCY}4Oæt}{“Üàß%>_â¯×TÈ‹ù2¹~q¿>ºøü]Îi]à®›å-­sÂ=sü&;}¨ï^tN©wÛ`소¥ êT­ÿ–'ËøäùÕur‰gO_´1zK®ŸŠ‡¯i±è_.‘#?}¹'«Û­óßørfrHQ­³RYjJw´-MVRVmÛ@™²¤²L>W™Ðr¨Ze¥±x ªáÎIžs:_\Åì‚;ÏTU¡¢c)IËÇ ­Kâe™³­26¼]Ù–ª% ½VùŽZ‡€…öT˜J“²ù…óHÝØ–׎ÌäL[jÏ•ï…³ÜšéŽ ¹r
+Òo)w¸Àº¥dU—ë·D"ÈÄž´”uÚjG*EÈ*w’
+`ö‚D}³Y=IÅlÂp$ÒÓÖi΂cêª*8b­z'z{]ÃÕ³L*æ…:Mp¼ˆª}> úíwϧžÏžÏ¦Œ”v»q°AEµ
+-Û
+<Yã<±à¢Ø=ŸQÚ¡ÕÒmž¯V󡼌ôÐè̆·™‡CçÃ5h{—&´Zß=ÉRò.ºPæà,XŒÝƼ";ôŠ+T¢w±Fm_Œw–M2Ú‰‘Ĺc‰`Âp?þ“»Übæ(Sf t†Z¦šhQFÑ×»e‰s:$yKìc2¸$yÿm;¹ŸÁŸÓ–®m a°_ÊÐçj¬Ž×wv¼° ªbWņ3CåÇ#gûáð~6ŒsÁúqCþã³=SžüðE°sÅ4û8.d.±ZeÙÁœ"GYÇC}ã2n’¦ ºÂh‚HÆâ¹ã`)k)t)¶dôˆ©;!Æ;ÛÍÄQȶ&]
+endobj
+1166 0 obj<</Type/Page/Parent 1119 0 R/Contents 1167 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1167 0 obj<</Filter/FlateDecode/Length 1757 >>stream
+x­WßOãF~篡J]â
+šÅðd|1¡Y$ï‡4 î­×äWÊ“‰ÉxŠ¬vÙÏž6¶x¦Ø´µe tÆWäV¶L"rÞ$ -4©E‚í–ü6çc49]¬uA™JñÒÑŸ§ÛÇ?nÉddzoC꧃|8ŠM¢S•©%Ö‹ìëÌãVeµ_×f#ãòDmÅPbœ'“Z+“ˆn¥
+íµ•ÑxpÆVž,<ɵÍáhlpg²%ÅØèD¨J'Îo=ǾRë*˜eb*¡Ãe©aL…¡-3ˆ=Ǭh­5ÏÃMx:ÕéBbºŒÍÝÃõOÚ,Ó¡76Ã3¼à8œ¼®ü'ãØ AOìö ¿*d -áŠxØØ—Ulk_Ÿ0®gq%V°«al´ÔÞ3( ã=r½¨@Î ‹§Œ³·–­-åª@r‘%GƒFH)ÞDnci–.¢Ž?&Cþµ?Ðl…(}aÂgXfpˆ³àrjNŠßh¸Á¨Ù\Àb|»3Oó#½üHýh„£×*bÛýˆFóã^Ǽl~µÂçô§‚kÿ¾6àt¯7ò:ä±Uqƒ“Ù ØRPjq“˜g
+“î
+`µ°k=?®¬ ? fQ™GÊkÐÇB^D* 4¸qežÛB€êä­ÐybB%ăA‘ Î<—êžã´€$Dª0áOh#$É®hëªR7
+WF‹Ä˜\5ª!•ájˆ´ ³
+…-¥ôes%—¹Bw4ë é Ç&DR¸}ˆxq𛵅A5¾ÞÝ?Á÷V‡½@œaÇÝ`7¥{í§w¿>I›qoŠ=I솵¬½ŠÑk‘ne.©Œ7èd¢¹0²¼US®mú^êbˤC5u½4BÛVGCb䘵Q»
+52€Ï@ë9^Õ6Jí‚ÌåξëX•‰‡Â£;ÿË蟱}—Cð«°©x'ñ3"kÓÂ×TM,‡õ2é œØŠS´áyE¾53@mRwZžDsÛû6°ÐUgt ³‹èU¾Ú ª—6äo:qO°”b–={
+ÄéuÞ©zcãP]‡;[úŠ)#]ž÷v×÷³. ‘µJ§*V»Šû»Ñ¢ÅEk?¿K³æÞ'ôH9¯ þçkÔ§ÔGuÑrK•tPáöj–%Ê•Œù“þ^ž‹&á
+Ž"
+$ª[WÿCas]x(Y iÀ DQAóyVÇnçȦÈ'Lš²ªU3ø Uã“Ú™¨DŠ$ÆaKí ­Ãu«}¼nATŠç‘J¾Q{‘ÊBÝã©Ë+“ ‘Q!†§ÁÔ®ùâæ!Þw<UÄêØ1ì‘}'LÙ.0nµÂøƒ al’2Ù—¨ÅËÎÔdªf¸Š‰Zr_BGœÇó):¾‚Àƒ ôP.~Õ1ÍRQµ<ƒ´Â^M06£rék Ò;Pò
+endobj
+1168 0 obj<</Type/Page/Parent 1119 0 R/Contents 1169 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1169 0 obj<</Filter/FlateDecode/Length 1779 >>stream
+x}X]Oã8}çWÜ7@j3¤-mGZ­DaX¡]
+ Œæiä&.õƬíÐe5?~ϵ4 eŠÒؾŸçÞ{ÒR:Á_J“ Ç”­N’锶ó„/'4¥IJ£é÷§ãä3IKìÅÑÏÃfe2MNÃÊì!º¹@ЧËúLKJ“Ñp@cH;Oé!÷ÛNè!;¢Öç'‘­¥t4h=Åm|:Ü>ýyüðãà„ú) ‡<ˆéø‰§>\o-¼“
+“ði_ã—(´Ylßìlygé|ðýŒ×™¿žã$¾\lÒ|È;øù7Å;Þè?xzAï,­W·ÿ¾]Íïyë§Ë¥)§¢rÑL|N»s]Ze*ŸH/i£méñ(íÑ GÃÇcÊtYÊÌÉœoä6šŒ®œ4¼é»îØÓ'·’VR®©ÔŽ^„µ´0Zä™°Î&tr›Ö¦“§n%,ÒZd+UJKº$åzuÊÄË£f¹Yv:³¶Z¤Ú°´ÖkY:Ü
+G¢(‚mÕRtÃÅ¥zª |tš’TéY©mžŸàó f V­_
+•)§`²Ïòñ8¡ëàÍÓïçìG„mJÊv·tÁ½ ½Pv0IC3£7ÿ”L Ú(˜Ÿé¢Nz‹Tì I³¿…;–
+ÜÊHÙ±#¤€Œˆñ‰ÚCî6
+ÚZ ì…rí<Fip¼|9v–†Ôï(…1]ŸK½) (t&
+øïƒÙxŒÈ¾ãTV¸ó5”3¹4$䯢tâ‰ÛÑ
+³J®klähìSÔö“÷p€ˆEØñ}/8»‰¼ÙuB#gPÚÞ6µ¡ß›^.#»†e,ªÌcÀG<B(e¸ñÖq’‘é%ðáçZDB¿pÛ%©Ç‘‘™T¯¾È¬F3G9§g)ŽnœÐ&¯Ñ¶Yì8íRgcž¨½cË°À5̧ƒD?$j!Бk©~kB—ÚtLp,-VŽ¡¶{^m|ø(ìu¸­öÕØÔ¡ ú
+Ý ft”³ý]0ÀÄPƒ
+ÕCªš²Ç _ù"3lU”ouÓG»Èœë ÉÅTµ¦w&d5ãâÀƒ= Ôãqoë¢^ÕˆzÌPç3–w¨Að,Mö­ÌVF—ê?àì¯Užžr%tå@À1<}¬ÿSIóëy‡ë=q¢ÀÛ#Ñ «ÛŽ^‘çè8‹µ:Sˆ]îuxŸæ-¶Gßnîþüãîæëíïéì·Øf™Ò¨ibxu@ Œ¢£k—ý ¤³0Žy¤W¸CS·ñFYIà‹ÝlÝ”`„ Mb®FkíT$ˆ‘ÞtÔCª“EáÙï 
+w–½™Dü:Îðà-ñ·²Ì9ü"òû³²Ôìòo'/"{Ó‚‚¾^Ü¢áGépŠ>à >›Ð‹W‰m޷掴è2¡ý’5!9÷žÐ)«õ
+endobj
+1170 0 obj<</Type/Page/Parent 1119 0 R/Contents 1171 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1171 0 obj<</Filter/FlateDecode/Length 1034 >>stream
+xíWKâ8¾ó+ê+H“zo<ºO;­] Ò^ZB&1$Ó`ÏÄÔûë÷+;&êÕ0½§Õ6HŽŸUŸíª¯Êßz>ñ÷)(Œ(9öÆÞlFmQìÑÓ4Œ¼˜&³u?ðQ/$í0yLAz÷õÐtâùWCÆ«Eº‘Åš×AmS@ÉÝã„|ŸÖ; ‰f1­S;>¦uÒ7¯*É
+­ò¿D™k)ßNÒ”Tj*3IFªT¤wh‰’¾ŠäE–Íw%z·ºÌ¨#À
+7«¶¨¡…Ú# 7 3º–ÅY†.9ìMUDš lôh-Ni5§2ÓE^Â’Ï’”8J㱨ÖþGµqÅÖÈ`(s˜z–úªsUÒÉ°¶Ì\í)WlÃyA0¿‹.^ðÍ÷ÙV™Ö)ÁYŒµL×Àw8Àc$ |÷8à˜Ê¾2¬¯ ò
+Ê_‡6à¼ÉÛLôNbø•“AÙ‰=ó° ®?àåeãluÇèlØ+d’#ÊXÇÜŽŸŽ±©âh*¨4²$
+„ N¤ˆsˆÙØò6‰d¹«s*YÈ£>#\ñ&²S“çU§¬w;ì…aGËRÃÍ ¦½ó&×lôƒœ9Zur×ÛiõßE¨÷fÅ·ã{7íß=Ϊ£M½hêSß{÷‘{ŽÍ?-æô{¡¿È¤¤•NNGx¸}=2ŽüÙYH£xŒ÷\Ú_ðké@$…6È»\ÒÌs'ñÄ‹#<‰yž?㮇uïÞßcGè#endstream
+endobj
+1172 0 obj<</Type/Page/Parent 1119 0 R/Contents 1173 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1173 0 obj<</Filter/FlateDecode/Length 1626 >>stream
+xW]OãV}çWŒxY¶Â& ! •ŠË"ñ°YZ¢VU·ªnìëøîÚ¾©ï54ýõ=3¾NŒÙjÕ‚Ž?æãÌœ3ã?Æ4Âï˜æ:ŸQRâÅ‚õ_F4›Mâ9MsŸ_ÄçTkÊpïOï?½ÓÅ$¾÷Np¿Üz³::»Ñ%­2ÇÓó Í`ìb¶ U*&F´JNè[?ËÉןN¾ûôö”pxs8|w8¼•Ã·«ÏG#Š&ãx'º~Òµ£gãsR$·Ê¼®Éçº$…(+[Eªñ¹­WÞ<áŒ*µ‹ÙÔÙÝ”ÆcŽ>jÃ&sIƒmïª$¯meþÆS¶r´ÖþYëŠ-SjKe**•c_ëÚ>;üWUJ…MT1¸À%¶ò¦j4yK6Išú”Ö)Ïã §äsãÈå¶)RxDRð Òþ)¯ÉßH8>#1‹§üØ}F ˆÚ6ÓOc²øœP¦Lá$èÌ…}6Õ¦ GBøžÝ£Gö†– Ù Ñ–[¶„/i•äpžj¾Â
+dlý…²ZmJ]ù/Âg”<þtJÂQnmarÜ¥% ñÚ´xèŒVÚlòµmêÜZÀkœok¡phã˜Ø0Îìó¸ö^—[„°|¥χˆÝ ¢?$*Ub¼¤0m‡\¨¬çŠÔº´OœOmKv¡
+]ŒÌ‰{ò:nÒV{˜ˆ¢+’ÆþL<Kp¿Ü/ 
+ÝšäèU&ž7U
+ZÓrE­Ìì/—J
+Eæó€Ýé°£L áv¯;±~Ûv­
+÷;žHÄjç®@ò-VA{
+á€05Û­­=ý@;-MôÖ F?C5D2QßÙm­ŸŒm„ãø2FñrÅ9¢­·ªÉX³R©¦žÂ|LàC’+ˆ¶ªvd‹w±âël[_€OÕ{"‚,©Z¾5\³Ùhˆj*¶›í¦V5”#ÄÅÅ_ƒá§ÒÐÂåŽ
+ÍÏ•Å©çC0ô¦²o¸(
+š[¡7¡"­põ0ýÐ6\`Ç/±?ùâ'Ç-ã¿hÍ ÏÒÈŒb·}~:tƒkºFÎ2)Ty
+a²@}Õ & Ëõ +Éó+*æT`‚eåù¸|'Ü*¢K1ÝZZ~\u¸ÑÿH2ô>--:”£bÝ?x ×:ÙŒluá¯>ƒ¥1* ´PÌwÁžª&ÑáŠnm¹„’Ú¤á9(“ZL5¦`–^ZLqѾž¾ˆáVd òÈ®ÖÛÂ$<ðÌ^‹
+endobj
+1174 0 obj<</Type/Page/Parent 1119 0 R/Contents 1175 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1175 0 obj<</Filter/FlateDecode/Length 1403 >>stream
+xÍWÛnÛF}÷W òR'iÝ)m»¶ £ð¥1ƒ<4}X‰K‰ ¹«ì’Võ÷=³KR"-¥íS#4dîÎåÌ™3£¯'êãg@áFSZä'ý O“Ñ
+u,!×Jl¦™B£#[]æ ;pXÓ½°4Áå‰ßŸNQ¸ý¦F_¿C;¿ëxe –… ý*èɤ¹0Û
+YúÌ1:ˤé‘ÈŠ•.—+—Œ¢~×mÎB-7ëLl­ïe\–öÓ[G„Žc~åyãË깇‘
+Q'Új ØŠ}%|"të´$4¹nø.³˜ù!ÒÕœhLÏ•J°z8ð¡míÙçˆÏÐK@åõJZÀLÇ/£°Æ¬‘ÊVp·¢¬@åY‚~ÏÅi‹ÒNÌXÂÄ.̮ޱzIV¹T<]d¤Æ}^Bì‰ËÁ:/çÐ!wB«lÛI—¸&‡³ZP7'AŦ©ÚÎ|´Óëøä¦ä\°ScÊ/ëéSñæ÷e¦ç"ûÝ‹aA«æd{x~ÏV÷÷‡f·ƒ80ïöfwtS ‚_"³EF&ÒðiË0sð‡šÇÍ'ÞôFíh…øM $ ÝÁ÷ ‰6r[Ã1Pl½:ü+TútÁb>Æ£!•I0Ãoè2UÿŽ@`ØóöO¶òl°<p°Â=XIÑ·c–gH=Ã62øBÖkÜYtè‚çar´F¹hêÑÒÐ×ÛSR¿(ùµLìö݃ü³èùMÊ׉ڠ±êÔ$ôšX¯,ûµ ¹³ ´/v8ß-ðj ƒtˆÀ|jú, KHÓn™ ŠˆÜÞ•žÅÚqýmÉmUõ
+r1©ƒ±aÍÌ}ÈW!Uw%ƒ6.ÑŒFÎ5Æ*§‘²Np²G }Z|gÝ´µ%dWÐRë˜ÒX
+Õ’M²a7 ´S¿Ž
+endobj
+1176 0 obj<</Type/Page/Parent 1119 0 R/Contents 1177 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1177 0 obj<</Filter/FlateDecode/Length 1410 >>stream
+x½WËRëFÝóVPtý¶I%©Â<rYðÈÅ)!‹‘4ÂIãhF8þûœžɲÀä®”lI=Ý==çtþ>èS¿}šh8¡(?è³m/å3nz4M‚!fS|Ç×>•’Øö°º¹Ô¶Ãi0õ¶Ø{Ó܇ƒÆô¿Üö§³à´ëv¾8ør5¢~Ÿ ö1™MiÛ”z´ˆŽKI‡™ŠDF¹ÐF–‡´¥È%¾’È2µÖô òPQ$"CB“ ö
+KÉ2 ëkUÊD–¥Œ‘¨´ÔÇ‹—ƒô‡Á
+Za‰0”šN`½TUÓ:-àwó.®¼ý`Œ8Ñë„6ª¢¥xCšÝ.°¯h™’3ä¬tÒ¸hl¹Nõ’wJûú£Rñ‹Âºà2Nµ3ÙÉÓ=)UO‘ÊÓâyOá)ܪ`Ø‚Jß©—RöÊ/þ|ÎT(²¿`íkœðóN`‡A¤Š„’4“ô¿ýrÕ£SÆO? t23|¢:äb• Dq¢_¨PµW¥m¸SŽOìº0úÌg Øô\º§ÔÌÀÍ%<ÛO$üà XÍ·\&†]ÜÝœ]ߺå[ºœ ¦Á¤ªŠ8æUî€
+g–"ÝÓ÷Vþ kV²K'^¸ dÎì1 ³ä³ L’â•Ò¤»µR>§ÜXP#`ÐùïlµíVšùõÝÙTŸŽÜÉüÚŸÿütŒPfI×·85x1) bº¿8ïR÷
+Y;vjRn÷ਠÀ_€Ü
+»=.K'1‘­ÅFó õûfËwsÕcÁNR#^ù< p  Š÷Ãßv6(Œ²5s;A?$kkïãë¾éû1CÇ`;©…ˆ¯VkÄî6¦ôÏð´E¨Î€„"ŽœÐd".Ž®Õž0. WaKC,«ãã’¥£Õ5øÃÝf~ȳ ”% D!*4<\•*’ZSe1zŸˆ#ÈPç*«±ëœÁJD¯h¾³ -*F«Q¯KË>šà¸‡ D…"˪óé(L…ÆP´TÏ^Úâ$S'n¶£¶›Â^,qáÐÙph‡qòµâ‘ÁFµ«^XˆPU¸žJ2ÓrÁÖ¢0>zÍ)¶|1ò­·zp´Ô²Ó}^2ð›©
+endobj
+1178 0 obj<</Type/Page/Parent 1119 0 R/Contents 1179 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1179 0 obj<</Filter/FlateDecode/Length 1586 >>stream
+x•W]oã6|÷¯Xø¥9ÀöÙŽ?’}HР͵ˆ‹ À½ÐeñN"]’ŠëßY’JlƇ¢¸\+wvgvvõ÷`FSü›ÑzN×+*ÚÁt2¥Å|9YÐâfßçøo%UƒûÍàã§Íf´©ðÈêfM›’pûtJ›âꎆÆQ#_d3$SÑœ¦kJjÅ7IÊÓV
+OÏÕóŽ„.éYéÛ制'm<=nîž&t~RiZ¡4F{kšFZêœLGØ|Li<»žÌýêz>IWæ+ Æ•M-òÕv-õxH9š/—ÙMG¡=9ÑnyC•±…B’,¼2šðå¼°¾ÛÈן¤ç_h¸·²’ÖJÎÑyi‡´kÌV4döáIäàÚíyT8:C><J7œÐS|PM¯Å “kÔ®ö$Ê ;Iæe0kio¼Ô^!N K[kNZ‡Pb²¸¤¯è²ÀÙCúÓI<‰í…­D"tP¾¦'H8R±Pš?ªóŽ¾\j
+Ý.ÉXp™EƵPç/¸¨\B|”Ô˜¹¸n«QØ-r .”…Ò%2öÒ*S*œÐ
+ô±$EãL(Â[þY.ñÈ!ÃMÕ
+R2¢oªs,,÷è¡6 Dˆ¶ôëÝ#Ê‘…|ÆE(!Âæ£Jq±F̯‚FÌA³:EY A®i„G¢‘ëw… ÙçÔ`wŽÚu4Ë.ö(„ŽV€Ö ïe»G3žqv±è!Ѿ}àÞD6`ºRãá‘£nf@s‚PÄÅÃa\¸#6ç9Èðè̬¢'B»x.ÁKí‘–ÔBÐ^º é1â©Ðj§
+]Gäêàð\˜¢ƒÂHÏÎÎâ&Ÿ¢Šðß>~º¥¦“ñõ"øoâ›Ò»”ýîÈÓ)4ž¯'«Þ÷ÏîŒÝåöFG=±Ô Œdãùàˆ‡Åví·]ãÕÒ‹út„. =nä§
+ S ×<3é’GC01õº˜oÃ/2#
+´ {t–mÜëUæ? R: ×O• Ý©”•
+€=ùƒâÎÂDãC _Êy;ꢶF+øô©øòj|o¤pÎXå8š€c·“ð¯³áÁwŸ¬d56
+’¨
+~À1£2á­ÆPRí^÷‡
+Ì&åB¨ã{=?<>¥Ç9O+1u@ì£ô÷ŸŸ²lY©h×XpøC:•w(£¡x(¸Š#,8Ç»3ƒÞQ§@O*lSzçb;»ø‘Ãb½÷ír¼´]¤§8-Ò ^Ÿõs¿ôÅ-µ~€ŒGcØC³\ÓÎuºn"ÆØèûQ8›?…+¯P1óE* Õb¿—G"KCÉÆÙc0,N•µ#x‡gÄqGwQHƒ»d2¸ñÉ^<…»zôêkg%éYe'f£ë
+ï¥x`¼žÞòèÿïa±^LÖ«¬¸}>çS~Ù þü Iø÷ªendstream
+endobj
+1180 0 obj<</Type/Page/Parent 1119 0 R/Contents 1181 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1181 0 obj<</Filter/FlateDecode/Length 666 >>stream
+xTÏOÛ0¾÷¯xê…"-!ICZŽ  ‰lS#qáâ&NkšØ™íñßï{.…Òí0Umª<û{ßgÿš¤”à“Ò"£yAU7Iâ„Šü*^R¾\à†¯•Ô„Âe‘Æù¿
+ù²ˆ³ÓÂM9¹¸Í)M©l½X.¨¬ ’„Êj6n¥&AU«¤öhRIõ"ÞÔ¦JG£ª%­­¤V9ÿ…„®Qœ´$¼—]ïyC¢ª¤ã[ã<)M~+üÛåÏËçI”P”ÎA±¬g£j[ªŒö¢òX)éñîaEÀ|,Ьt¦}‘¡ô ýÍÝ÷iÑI2͘»Ä$µFoøÚ…Þ[á¸ÝQ7+7 .­¬Ií'ÀQùmhãþˆÆ—ð6è lגĺ%žÌ ò‹  gr¶,&~uq{E)Ìn(Ê.)*ĉêƒñ d϶Šº°KÔ5;ˆä Ù".xÛ]C¯f°¤¥ݱÿlö4™ÒZ8û Œžf±$‹®mÕ@;I];GPòtÎ5ÃRè¼U;yb]o Dw.¦G¥kŒ1è#(l¬z‡9m<›Òs†¾7š(9sÇ´07ï½n¾RÔàåIß0rŠ£E=$߳ㆣÑg¿v¶nÍó}÷CëUP­{#0šûµ‡“päìJtk#¹=sG¨¶JCWŽî
+ßð‘iÔfÀe€ ]L+Lâ¡þ4»D¦O-½P­{ógùvúÓwÉrNYŽàêúþæš~Xó,q¿šjèpîÊ<£Ãòh‘\ýßàæ‹<^KÜe|
+æŒò­œüœü‚‡Çendstream
+endobj
+1182 0 obj<</Type/Page/Parent 1119 0 R/Contents 1183 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1183 0 obj<</Filter/FlateDecode/Length 1658 >>stream
x¥WMoÛ8½çW zi
-´Š¸qºÀ6í°MÓµ‹6{ %ÚbC‘Z’²ë¿oHÊV” ÀbH$r>Þ¼y3úçdJüLi~N—T6'“bBoço‹Í®æøýÿ¤u|1½˜—ã×Ë“³ïè|BË5l]ίhYìLð¤<}_‹6HCô¥Så½wÖ{Zt+#];»óÊlè,=µü~2¡7ç3Ø8ýfÝÃÆÙ®=Ûtª’|èì㌦ÓäòÍùUqΖµòTÙ²k¤ äkÛéŠV ˆŠ”¡Òšï)ƒ²†v*ÔG»ÂTÔˆ=âAžB¼…œ@ÜÑ5›Cœ^$ŸªiµdœÅªOG”1K³ôÄæÏÈ:ÊÏw}fžîOñ¸²PÆß¿*èÛÍí‚{_Iön­¦µu#¿Nz«»˜Š]Ó­ ×7ŸdD#q×Ò͉ª’ÞK´yûy ¶VoeÄ#†+I+¸©£æäR¶V{Ú‰ýÈ)<±v
-ç>*çƒÞ¿&¡5}ZÐ7e*ƒ@†‹C,+á;ê·øt ìÒmA®OˆDl$]k[>ܿʧ
-$?LÞÇ¿Šíˆžíâ%ˆÝÅGvp__&NÜZ× Ì(¶5zߟ¢£qŽ.Ygêï„«P 5€˜€ÒK´Ç '$ºËX´µ|A­p 'ËÍ“>õͪ@ÿ¯©–º-‚2|
-/=Ù¤#¶ô –X7L&>Bøžhƒq•U=1á¨ö›%*êØ„õµï©õ"‚á›!+Fi¸ɸ·;2e­´×HÄz2øƒÜ8(´sÅÙ¥ñvÃ0þo€yÔò|Œ,YyÝ~â
-VLqÞ¨óÇꀨ˜°äà×þfZ[
-!d$‹ó¸hhú–e0xãÜeÑ>v$”›i·f
-*í†X[‰ò5ÂD9 ì#ç¼sŠ
-endobj
-1421 0 obj<</Type/Page/Parent 1372 0 R/Contents 1422 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1422 0 obj<</Filter/FlateDecode/Length 1680 >>stream
-x•WÛnÛF}÷W ü¨hR–%'@l$)Œú’F
-Œ¢.‚¹"7&w•]RŠþ¾gvI]h#@ãØ–Éå\Îœ93üq’PŒ¯„¦#:ŸPZÄQLãË8šàçŸGø¶’–þÆy<ŠFý×ó“³OcJš/akr9¥yF°Ç4OߌýövþgbzŽ GãhŒCjÿYY™Z’ÐÚ4:•ô;‰h¥QvöøðåÏ?¾<|ýLÿÈhåQ±¿ô/EQLïÝG¶¼)¤•ïÃÍÉ.6Ü Ž[óð˜Qk÷ØÀ&çH¶”#©j$ü Û»kzÜšT”t'\Ë×Ölœ´Ooéæ3‰,³Ò92áø‘¥®Þ__z3mÊZÖcŸ}ñKù~ç îEMÉ»Q”L.£$Jâß:ã¯Ô4eF I¹ZKMÂ]\GÄ¿J¸gRŽó=ð(œk*™QmØÎhL U;$ŠÇ£î;~zÑc D¯h•Ô5ÌR%2ÉVøHH õu½†ɵ´[* @Û¨²„£T"/2ÝQ„½¹ˆæ<â¿6Êm}5¹Nri¬d—ÃI§¬X”ˆ«©ç–3Õ0Cµ¤¤ÌÐýÃœžµÙø+z-xÐ’¯ã×ð4;âþ’WfU+£Á$&b*4GÔr³5MLÜšfŠ*˜£8:ÑÍ’¶¦¡Æþ§ýÞŠ |Í?¦=Ê÷²¾¾y˜£´P áŠ!(b)yV:§R=÷]Á
-#[Üö<@È;÷¿Á‰'Éér¨>4Œ)†‚VÖ B8G®èˆ-ÖFe2kG DfIñóVLFÑyD_a²MîôKP•Ð4Ûêô”VÂ"4íqY€Ôh
-ÍC·ÏÁÛÓ–Ûà/›Üñ£ìÀUÐ'£—L>¤áûf'_ÈZh¬W‹º
-Œk^4[.¬Ñ
-^TýÆQ‡¼‡¥T¾êÂe&ª…`ƒÝD=ÜßþÍÄ…/
-÷¡Ch\€ÏBÀp÷º/Ž#wªjÊZhiWn½–7”ÁÓR‹œÌ¹ß:‘êD”‘Bµø¹ƒü׸)×*òËIðòÁýxYª½Äwƒ‚³9é_u-÷‘,pF‡ÀKð^¬zRÝC¯ô“³O!Á£=Ç;:>ÞÜÏ^fÑ®¥,ŸÞ¶I„búk<@énFJg #ÝÏiŠÌ·1tG¡ò„Rš
-¥âN¡,£½à;zumeŽI eöyÖÕ&—ž» =þâ·z»’´eƒU€ñƒ0pѹX®¡`|S/صÂW}Õg:ŠµP%kpD2ÏD~-„L!“ ñÔhõ~Ÿ\-Hü3>Gâ®oQ:óª!´Æ‹0
-é妇´o?žÊ®ÆBÁ¨@5ÍûD¡’-¡ov¥å¼¢´T¼y(6+ 'Wš‹æ >½lÙ)¯i|ÂGÑ2„{O`èb. LL håKRG-®)QnMAK=,O=¿N¬Q€ÝÚFµË¥J=Ós.;zRþ\ÉLÕ8‡DÂÄæ
-ØF4Îk_ ÂÁtç¼0±ôûö©5Øœ;An%–Á|ã#郊ùÉhÄ„µ ‹ÃšWZ+0óÂɹƾ^öå'¸Ê‹§NËŠ7NwJKU2 ™½<±¨ƒ]ŠŒw¨(ô2,Ábá$§ŒÀ¸N¯2È«“/ ›E¤]0 Ï ž)“²]4|a÷;§%ë;Æ`~ƒ×ÿ
-íöÑ„eŒúþbçüëKf* ð*À¼óû /]žo…,W!Z^ÀU@ kµÄšÌƒV"ºöpž}ºl߯’ ^/Ïñ8
-oY³«»ë+úlÍw¨9}0)Þ0°.p³qù‡ÝÃiŒ7Ãlðÿ7¸ñtM'—xíÄãÉ”­~œŸüuòLÇÆendstream
-endobj
-1423 0 obj<</Type/Page/Parent 1372 0 R/Contents 1424 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1424 0 obj<</Filter/FlateDecode/Length 1576 >>stream
+4Ší8qZ`›v ئéÆEÛ=Ðm±¡H-IÅõ¿ß7$e+r±ÀbäÃE¾yóæÍèï“)Mð=¥ÅŒ.®¨lN&Å„.—Åœæ× ü?Ó´Ž7¦“âêøÆõ5MŠþ—ÛàÄ.Å4¯œ^‹´ÇÍ’·Á‰û_X}þá Í&´\ÈÕâš–U¼+åéçN•ôÎYïé¡[èÆÙ­WÏåë_­{Ü8Ûµ¯–ßO&t6›c‹Óý²M§*É·Î?Ìi:MçœÍ®‹/[ÖÊSeË®‘&¯m§+ZIÀ)C¥5ß;Se mU¨Ç SQ#v¼8ˆGiHx
+5˜>Pp¸ãÑl♪iµäó8ŠUŽ(c”>F鉷?'ë(_ßöQzúvŠË•m„2þÛ«‚¾ÞÞ=ÂàÓW’O·VÓںѹNz«»Š]Ó 7·ŸȈFâYK·÷$ªJz/ýaÏ»OKÐðdõ“Œ|D¸’´Â150jŽAþ(ehµ£­ØÅI|€ÝÁƒµ¶ÅcEJÊš.rR.æ’ò^ù²óœ§%ü- @,ù œz÷š„Öôñ¾*SA…0SŒ
+Œ¬„l¤îáã h{îI:úb#éFÛòñÛ«¼
+,à*ãâÕ£(ö7y×}þ°w¥˜¹Ä“¢Y‰Ã¿gÜHSŠÖwZļ«@–Á,ßÝŸßÞˆatdQëlÕ•ÁS) ²êåVyYöŽQ"ïB–¨Jã<'a½–%rŲKyÛrXžPA ]»Îæ³Ì
+ƒ ù*ÉáκiF²­Ñ»~6gtiwVýV¸
+™ã0… Ô¼De¼p²±A¢°ŒEEËÔ
+ebÅq‰úfU ô×TKÝÆê@¾ˆëwažâý¼{Îy¹I·ž”"†DT£´p
+vD~2§ÇïL9ĉbÚ#Û«0¦ºO& K³Â ù$ÍÌ)³5æõA"ÄŠÀèBm¡‡ ßÓ¶–pý,çd-‘|.$ŸÊ(Ȳ6VÛ ÊžW³š[µZilÔ¬ªl§£á—̬Út.Õ¦5µ9E!6¢¬>e'¾–ãBi ŒõH
+¿cKIbMΗttœ4OÊY“ô|»Æ“e݇Ùg‰‹z€)ú¼
+/=Ù-¬#–ô
+ÃzUiâý¶ks&!.C1Ø«:
+¿éà›‘ dŽ¢žÙïÒW
+Ž9Ê„2·hz^
+/Õ{ï;¼“íßõæ‹y±¸Âk)o6›3öß–'ŸOþ¹ÅëÀendstream
+endobj
+1184 0 obj<</Type/Page/Parent 1119 0 R/Contents 1185 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1185 0 obj<</Filter/FlateDecode/Length 1725 >>stream
+x•WÛnÛF}÷W üˆhQ’%9@l$)Œú’F
+Œ¢.‚¹"7&w•]RŠþ>gvI]#mG–¨å\Îœ93üvSÿbš h8¦¤<éGÓ)í_l†}_L¢KM'x£ YIKœíãîÝKsvtÙßà|sô%³ÃÿavØ¿„ßÂÎìõüäüÈâ˜æKä1žNhžúú4Oξûåõü+Îôé’ÄÑh8 Þà"šâï<=£æÇÊÒT’„Ö¦Ö‰¤ßHD‹(‰ÒóLJOüþéáóGú[FË(‹òý¥(Š¢à  ¢×¸ˆGÑ ¸ØäÒÊ·áÔxjo0ŽFAã®Sj[D]zÀ܇«IUÁ á…nï®ééìÖ$¢ ;á*\¾¶fã¤}zM7I¤©•Î‘ ÇÖˆ4qÕþúÒ›irײÚûìó鸔owÎà^T_¢x<â(î¿i·¾S)-$ej-5 wp|pqA oþJážI9Î÷À£p®.eJ•a;ƒ-Tå(nÚÿý§×=æðÀ@tªWJ]Á,•"•l…„äR×Y‹ÑKX\K»¥Ü
+8J$ò"SÛWØ›‹hžÃ#~µQnë«Éu’KceÇe­S锋aÕÂÜr¢¶𧖴‘”º˜Ó³6ŸÁaA‚ ¶ôêrfGà_Òʬ*e4ˆÄ<L„截q²f£‰Ù‘YS¯BÍÁsGK ºYÒÖÔT; Ÿw³ß[Ñ¢’/™àÛ´ù^V×73`”äJ$ÜãB-$E,…1ÏJgT¨ç®+Xad ƒ¯= òÎý8ñÙ"]Õ‡ƒ~1EÍPÐÊT¨åáÈå-¯ÅÚ¨T¦ â—Cr–äŽBK†µ&¯ÓOAXB_Òl«“SZ ‹4ЮÇA &јEaÆž6¬sÑÒäŽoe®„D½dÚ!ß1;CÂB@`½NT9’W [ýS °åÜ­àEU¯µ {D
+åÉ_å¾3Q.Œè&€éèáþö/æ,|Qø
+„ÆÁøÌ!Œt§ ß8r§Êº¨„–¦vÅÖ[aaC|0 «ÈÉŒ;­•§V>)$P‰ï;È›rÿÇ‘p
+ã±­##€8°ùA á7¾ ±‰$ÔTS!uVå<4ƒî¶…´ÊOE`}"ƒÁRò[6ÝÉ ‡/jG‰•@ 𠊱ʶþšr\é­‡³,„ÜX„ßu7@‰öþ=×ÜJ`27‹DÇw|2î|E¤°-½ŒÄaLS >)uÚâ͹$”K¤c4Ò¾ýxD»
+Ë£Á84ï„^C¶„¾Ù•–;ðŠ’BñŠä¡Ø¬/œ\a2ˆ.Þx˜ƒðt²e§¼²ñ EÃî= ŒI2 0!0 
+Û¯ÿÛì¢ /ÊõýÅÎßùG™Ô”à±€;3xçgÞÀ<ßrY¬B´¼"€«€@Wj‰™¬Dtíá<ÿ0mžµâ1žZ§COFÑå§óìêîúŠ>ZórNïL‚Ç lÜm\ÿ^{GoÒÇSczÖŒBŽóß÷¹ÜLÆx†æ;lðýüäÏ“P~ã¢endstream
+endobj
+1186 0 obj<</Type/Page/Parent 1119 0 R/Contents 1187 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1187 0 obj<</Filter/FlateDecode/Length 1570 >>stream
xWaoÛ6ýž_qË—e@£ØŽc;ö!i’5@bgµº®X‡–([ Ez$/ÿ~ïHÉNT†¶j‰wïÞ½»ü}Чþôi< ÓeÕA/éÑptÆŸ“1>øg%áA2LFÝ—éÁÉÍú}J ÄMÆ”æ„8½¥ÙQ.‹R—¾4šüªt´)•¢±d´zÆñ­&A®ÔK%Ó¥5õ:¡©ñg„LJ¤ÜT/VÂyiiaÍÆáçJ8šÎÒ÷·Ó_~J¿ô踚
-xAD¼F!J±BòÜJçHóX¯Ix/«µw´@e@ªmHcýqD¥:‰ù H€dN¸WP­ ‘e*6Öuu‘š]i.ª…*÷k "7¥väêõÚXO?Ó³t‡­D]µHXT°ŒÿX*³ÊýÉÊgÿ!/hhiÛGZEÐ@ˆ‰“<
-¢Ÿ›C ȼ†Ù–y˜
-ìßè&qàè6^ƒ”7îd¶u<»qZ~0 \@eð½Öåø¦•A»ºôµiCÇÀ•—?àÙÊEÀ-VuWˆVzž¦,QÂ’ÝB¤ÈÒ½³rX˜z¹‡µ?$†dÈ­¥À0Ù ãmù´ôaΗ "“Á}?»/“(:t´·?ÿg{©íh MÚL1¾ÔíÃï­ Q(þ&ìt¤fjò+m•Ùe‚ñloÚrž‡âî=Žb:`÷š+±^KíÞ†-‡Ù”ñ“0’ѺûWyŽ_çM)Ê™§$°6ñ—¿mÉÝ’¯È˜‘ö–I3
-´YX
--°ga (y‘DAŽéãüšfÓ»Ïø¸¦‡³tönv÷ÃþŽ°òÞñA:£ê0ŠgìñÈnùÝÚê‹£-ï.aÜÍ
-8¹äí:î=Çß
-endobj
-1425 0 obj<</Type/Page/Parent 1372 0 R/Contents 1426 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1426 0 obj<</Filter/FlateDecode/Length 645 >>stream
-xTËnÛ0¼û+>)@LK¶üH€´¹%ma½hŠŠ˜H¤KÒqü÷Ý•b´ij[†@rgvggùc!¥o†ÅÓ9T;HEŠ<OE†|¹ ÷ =^£\ƒñMŽ,CQ!ùt‚ùr&fó%Š–¦(T2ÖQkb¸„ QF£ÎQK_":´ÒØHÏ9¤-ÑHõ`e«ïãa«alåΊÇAŠQ6é|FÐÉÇ»U%ñà\ U;£46»ø®CÐ6Ùü$iÔg:š,Ä’2&¸[i&ꀽ´‘“ò:DoTQ¡qîi· ]~ÇòÙ™ïd©dˆG¹f³ˆ^V•QE­1äzŽULEGÚ}Öp¾Ô~ˆ­ôt&jϹ
-^ˈZ7[úóºÇ Rê…·ãµç<sÉ”ã›Ü Rp’‹œ ætÞâöÆ4m×(lº¢ø½Ç8v™Aæ qïüýÿãû¬ݘÖXÉÊ÷Œlf]Ÿ½ÃËr–º’»&’Rÿ®ð¯ùµÄ¾ÜŽô&=+!G «Ò>t³ø”´!Õ©eµ+vA“Ýö7k^!ê–­dÚm£[òc·ùÀ!n܃uÒ×Éæ~µEµ³ª3’MÃ]';ÐÏ:ßÒÂÊÙè]ÓôtÇô#økÒ«ÞÖ•œãÔiÂÞDUŸŠ`ÿù-Ñnª{ŸŠíFm|³<Þsº9–SLfK‘MÙ@««Ûë+|ñîQó˜9µcHUg™“¦½-R²o™LÄLÐ1Ü}.Xm´Žzkiá¬Æ:ÉÖgØzr -áv…ïÆ–nè†Qµ±:0n¾ÈÅ‚.(º™Ê$»à¥OÅàëà'ªƒNendstream
-endobj
-1427 0 obj<</Type/Page/Parent 1372 0 R/Contents 1428 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I15 15 0 R>>>>>>endobj
-1428 0 obj<</Filter/FlateDecode/Length 1703 >>stream
-xWÛnÛF}÷W úiÝ,9E‘K HœR`MVäRÜŠÜ¥w—Vø÷=³KÊ£ E`DX.çræÌ™áÓÅ„Æø7¡å”f J«‹q2¦ùtœ,h~»Äï)þ¬¤üâ‰&Ëd¯óIr‹¾‚·®ï'7ôÁЗ‹wë‹ë»74Ó:ÇåÅò–ÖÁê'éåûBÔ^Zš%ôÕá¥sc+á•Ñ” /6ÂÉ×ë‚É2Ú¸šÍáo]Î’IB÷Ú[“5)¿oÎi2énN—7?—í•ÎÌÞQZ*©½#'uFu)”&/¿{ª…s{c3Gæ‘øBâ+Z‰j#(šÒB¦;~âäÑõMK©mk¯ô–ÓÕdÄÍŠܤ¦ª…Å~¹"o‚ùB¸‚œ7VfH<5Z}§†‘è³O:›ÓE2çTäOÏ&#uˆÖ^rùvéÌU*ʧ…®ô°&ö.ݷק鎉óRdƒTL~«„ÖÀI#&çÈîUY’Ñe1>Ç`eŽLŒA)®ÉŒ¨Ñ¥tŽ‘Rïo•ó¶%…“½;™ ÁBp'¥B_yÚHD£È À}
-ººæ
-uá¥Qaö(¤ òb²cªJYGщ] I®€g[+¹¨8¬ñ&ëZzæ'qšù¸eb(#xFˆ‘Eœp×[œ§‹¾5$,2=ø>qý¢°½ç j­<e†1ê`ày² MëeÔ錞EɈÂo¦Ü®CÑ…~!>ío­“è¼0ºïw¯ò©Qp^¢1þŒBÇI«X°˜
-ÏâhfAÛ²,‰4 jÏúŸ€¹K{¬[ŽÉ@ËB|¡q#ùÀÚi³ÇÔÛB·5$¿e¤ËùïY
-lˆˆÖÒæ2e!­s
-r‘pEpë‹…¶ƒ€ßÚ%
-§„„8Už×<;0«M˜oE)3Q¨jÝS‰Ñ,˜R¦ÙÌäÉjÍ3 ~¤È‘ƒ%û²¡JР{l:ü"êàT f6ʲ“54^¦Ñ8žØ|ß.cÜYž—(
-XƒŽ)Û^ûÕä>“¡Ô{lNªRí˜ký
-½í*œÉ\4¥ƒœ¬T$#‰Ñ¡­âÜ@áÜ0OTè0Ë®ï‡éÄ‹M¬c@›U™—à5~9S6a3Gƒö wEĉži1çg¶‘r,oØÍ®Ž°9,w°`å•Ô¡»Y Üô áWƒñÊF։ǢÄN&ÑCeÐQÌ–š,&3$ógdé“J­q&(F5ÈÒS"Ò8è¯ü^¨MH‚ç´æYÁ—ÒiÙd2ôÝ$™ƒ <H;F|ZчÏ+zèfQ'}3P"ð’áÀÇJÑ'qZá+j—bZÀ0v+^é{ÉxqÃ_=‚ ãÁÌM Ùâ½ä?íÜÒ_NþýS?S|ÇñÃë;|ý…¯®«é,YÌæt5Ÿ$“9Ž²ÿý‘7_Γå⟉xiìþ¾¾ørñ/®“Ùendstream
-endobj
-1429 0 obj<</Type/Page/Parent 1372 0 R/Contents 1430 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1430 0 obj<</Filter/FlateDecode/Length 1510 >>stream
-x¥WMoÛ8½çWÌa¦@¬Xþöb±@Úm€ší6ö’ %Q6k‰TI*®ÿ}ß’ì¸Åv±‹"h’3oÞ¼ùð—«”Æø—ÒrBÓåõÕ8Ób¶HÖ4[-ñû?VRæS>þÁÁl2Mf—o6W·÷ JSÚ”4™$“qJ‹Õ<™/V´)¦ÆcÚä×ÆKúõõæ3®Ïºë×wUEyk­Ôþ+)œ$SÒ•[ãLééñÛ۷ïï)¯.9rmÓëI´~‡?¨\xe4=+Aøßgc¥Ód
-K^~ýÎSa¤#m<»ù)”Ã[PˆLUÊ9±“7Ô ȪàBi’:·ÇÆÃýËp’HÓšÒ³:êhM'Éj¢BpIšÐ]ñ,´[@‚/‚Ipò’ê4™áåh²
-ÿƒ—¦@"l„sc G"@lÀé£â4¸ƒ–Wö =šZ-©uÌ“ î€œVe)-åB³…Ï­ã”æ0{‘“·­a ¥Ë9iŸ¥ ÑjÉx1ç$þ­ôƘzýÊS¥öàYTûî¹èÂŽð¤Â9‘<xN轧ƒ‚ø¬,[(2küÛN^à HÅ\öŸÀUå 'ï-UòYV€1sâkS@M½¥icMÝø
-нð¦»{ÁàÓë¾7ô‰Ü²­>0bÅ„ƒH ¿ŽcÉ›aÁZ6—39üev'ëd:Çöô½Nú§£pcPÓŸUj¶ç²Ûyzsi:KÖÁ߃ϢjeXB_ý²²Ò·VwƒJ; m×à¨34,:½¿ß#üÝY`ò}ìæýO‘i<È.l¾{â?ÉFbôþÌÁ"MÒ>t+G!úÁG„ݯ†è÷áò@ëû8Odõ‹Õ£ÃMw«ddÏb‰‰èX
->(‡|ôÍ/¡^ýÃnºCƒ”¬¢!qG
-iCÀùNæû
-7endstream
-endobj
-1431 0 obj<</Type/Page/Parent 1372 0 R/Contents 1432 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 537 0 R>>endobj
-1432 0 obj<</Filter/FlateDecode/Length 1718 >>stream
-xWMoÛF½ûW |‰X”H}Qzp¢$5Än¬ 9ø²"—ÒÆ$WÝ%­èß÷Í.)Sª´…aCô.çãÍ›7£¿.Bâ'¤YD£)%ÅÅ0Ò4ã>Gø5’2w0‰Â >w0Oƒé™†ÍŸ/.æ³`BÑ<ÆTPŽ‚yó”ÓýE8 ù9žÀwA£prxâÓñ¢I ÿÅŸà³ÎcAáˆSx>œŒ‚Âyä^ çDàŸœÏYÌ(œÍaœ#š£æ‰OÙP89“Yˆhb
-‡1.Àc² ÷äŒvža4bãϧÝgœŽâãÓÎ3N§C÷`ùÍòbð~LaHË e›Æ3Z¦â!-“ÞVX»Ó&¥'‘×òŠªMmIä¹Þ©rMFëŠ*MVVÔÞ´”iCµ•ÆÒn£i#žPkmÖºªd R™çËÁë倈š
-îMY&²A}bú²÷Gcú(t— Tþ¬Ž±ç4fàÒ¾ÍSñ„"+]"‰Œ±_ ¸¨Œ’O( 3
-Õû«V°(ÊýIV"MÁ!]ÂV¢ËL­k㪊p»†`ÓH¦>¬"_V‚Rî@[!q÷†W…Twý}\\ßý
-•i@|ÅÃÖB X¬úÐeÇÆQ0 €nÊÊè´N8Ð32o]´©NjDX±Ž$F­¤¥Þ±H°*
-°Õ ²»Eƒ¢’öŠ¶¹än?R°L·ÓÄâM¯—Ø‚y»•¥Ë¢O›ªÚþ6ìv»@ã¿y*¶ËÀ×:i ? bÞAPí‡h:k½îð Þ
-RWbxµQîéÞÃpp¦¶îF€[6[€ÝƒjÿÅs?ŠƒpþœØg]qï¢Ä·¯¾H÷žîêU®ì† ´5Ô‚ÖµJq]{nrcÝïm% ºN è»Õ@/n.ž¾È:¦ä %ŒôU€Z@d3’Â09k4­¹¢h8Œ\+¢ªíÌZî4uÀ·
-¬k“ ÌÞe±»5cAböld¾ÍjL#ã†l·¤KPÚéß-Þö¹¸ý?n¿-o1ÍT‰©È“}µ§›u)¥é­®·RÔ@üŸ2³ÃÏK*ÔÚ«qÛsC¸Ar³xwýñ»/¢¥5áîÓ<]y¶r·{6¯ bámÃÖ@Yœ ësrd]hΡ³$å9ëX6ϧ]):¬mµ®åÎxü,xÑ¿¼®]¡V˜cm(̳Ëf–†›¥ßi/í%gézeOg%Æ*Ú tZó¼<öœ†]ùÉÞhã @]ñZw½ÄÞvE? P¤Ã‡7N4Ú4ÙˆÕ¨TÁÿfqi8ËÅΛæJJ§ýQ:Ö]üa[8¬N†ýa«>#q’‡"~-–ƒÈC>} ë
-endobj
-1433 0 obj<</Type/Page/Parent 1372 0 R/Contents 1434 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 544 0 R>>endobj
-1434 0 obj<</Filter/FlateDecode/Length 2088 >>stream
-x•X]oÛ¸}ϯâ
-Pµ7Qœ d£*ÀëÜ&Míq4éQ þU4¦·ÁøïíÁ5ø…S`œ)œ,ß1
-z”9>€Öw)¢P™
-$<¢Óªõx7[]z–ýPíþ$ê]Sû=W6CÅ5b¤­sÀ1R™ÉDÉ?ö
-ß=ÇÀY¤Ž
-)JËH2hª\3“ÌñÁ}!Ä;Æ1¥-Š#Å™r]Éô{1ß5y€SU8‘$Ò¢0<Ga9I8w¾Æ]ºÌw8“¦)xà[Q¤1RJgµ¾jUF>+P,ß$Ì‹G–€!\cØÎIÁ~„ƒƒ>ž*ÏÉj*EØÁ oþ^3RZ`Ow%…ëGÐË+’¥ˆsÅÖU¥ó2#N܇Hc‘<I8Zµd´Ž:÷÷U×no•Û´óTTXþ–ë-æIxuºÞ¥ñ·ËW—ÀëŸĉuQyá
-¾éª¹Š
-¸ahB.µãÅ©û2õŠyâ¿ÑOvÈeÎô°ƒñ v°ÙÖpÏ›µÍ ü¾J¸~ø5`ŠE»yñÿiÃB›ÒWD·{}÷s‚ A-„ß)”ÆFU솳ùx{ƒ{Gw é´êeôåô Ýo€´7Ò¦ Ü! µÍÄ_~ÇÑÞRD vqÝò×—–|¨ni;L§N8f0ñ6€–?äѼÇ<öË›xIÇ_1Q&9:(w¶5¦Å’¸7xqíÜvéº)Ÿþ0”ÏñŽU‹z¨¥^ô?CüŒ{£÷bð‡>M>Ðű³ Z|ž¾ŠËÇÏ7ËÏÓû}ö»a$þoöaqC³&΋ï­{ø¼XBg¨V)“Áïp»àóÛ{˜þx]RbY^ÌùêÓó9•îè¡Ú¦÷º…t¼L¯u¹äùæü{®}œäWeYXFO*yÒ‡'X»å ®TkØ <>`ð=<C Ým.Öö§öSeÑ0vŸ¸øÏyàùƒoçþ20óV¼õw¹ÀP7F3‡ÂÓOÇÅÐoã[ùŸƒ¾@D0Åðh…˜ø\€˜®«»^¤º€ÖáÓk¤¿/¸³ù Ž¡ï²"ž<(Ü_w3Èk»ÞrOA×â2 4XJÁ­Úßè áõ—g07—ke‘@?àù¾ª1Fs< f¸—6çK0›nÂD=c¿pøÑl/¢4[앇‘ìÜNšòëðÏ“ÆÍUr1}ø}Js£¹–hv<wñÎö~C{ÜE5¥­í@Ãñ0&èZXÝ°‘˳ÿžý_\cendstream
-endobj
-1435 0 obj<</Type/Page/Parent 1372 0 R/Contents 1436 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 547 0 R>>endobj
-1436 0 obj<</Filter/FlateDecode/Length 1476 >>stream
-xW]oÛF|ׯX –™ú°#Éouœºu‘º©¥
-á“'ò†¾*kw¿8‘Å"2vs¾üÚÑÅd
-(KÙÿ£tžp0—Å…pn+«0ÚQ¦DÎ1œ7
-ëÎÙÝ€œ©A/Á@!sÀØo’Ä”¹'U‰ˆP: íS‡g¿<Üÿ
-endobj
-1437 0 obj<</Type/Page/Parent 1372 0 R/Contents 1438 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 562 0 R>>endobj
-1438 0 obj<</Filter/FlateDecode/Length 1352 >>stream
-x¥WßsÛ6 ~÷_‹o‹sË–ÈöƒÜ¥i{×f]ã=Í{ $ÚVK‘*)Õõ?
-tüfô6ÛUœ”G‘Ç‚‚ÜOÎ",,æd¡oRæÀ Vä²”Öq^Å‘)+L¶—ÇA‚vÁhu„CVîÁ[ÕV{ý>½í«TNäO]öà€yÍt¢ªT¦¬Þ$xŒm‚H°ºE¦#HŒÃ ôb¤dœãº î“ÚiÌiz Í(šÕš@YØkÞ‚´_¤õàþ·‘昑Tÿ¤Wm·Ùן4²Íì'Æ–?b „‹SqFØ’Ô‹©t‰Íb¬qÝX o6½éær¡¡;Ü«Sp‰ hSB,qÀR”¨¹—VðÚ$–ê
-% ΄¦œaÀ ‰-Tˆ‰‰NÞÞ­ÞŸ55Ε‚(ЃÅ÷±¶3©?šx’áœTΔI„ ÛX T_ „z¢üµS&êïg¯¹§L°Ë#, ˆÀך~zèÄ‹âÜÁØÔáÞ£dpg³·jYÆ™q ±?q×zõøzýòÕï—£¥O;qKxX}xx³ªw5Ô vÛÁJÅ)/Úο¼9•ÛLKž”wPŸë½ÔãÀ£®ÅwOç(åk¢yxhî4asíÊ}æ
-o<@<“üxò ¨¡ðŒ£Ù`>]P³zBØô~Ýôðª¶ü¥ÂRöLüY’(œ³žòõ%‘ÊÌ´ÜÏë Eá÷ù"¼,ó½äqõîÅ
-Þ[C&àÎ$]Bq ô…þlHÛž¿„}{ó'žÔ&³I0‹æþæ2šÒ«—ëÎ
-endobj
-1439 0 obj<</Type/Page/Parent 1372 0 R/Contents 1440 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 565 0 R>>endobj
-1440 0 obj<</Filter/FlateDecode/Length 1696 >>stream
-x•WÛnÛ8}ÏW Ò‡u¶â[m§@Ü{‰“­  䅖蘩$ª$e׿gHÉVÔËvı-j8<sΙÑ׳õñ; éFŠ³³~Ô§ƒq4¤ñlŠ÷CüI¾€¥Ç—OïýÒÑ„oÈhrM?¤´<k|ÌhÐG³ÆE^4½ˆÆí-^­Î.Þ]Ò`L« ²šÌð&ñ{öiwFÑ¿4c]æÎ’ÈzotYXÊD.d&s÷|õˆ c BÞpŠ ¹¥ÒJƒ›ŽwãTᶄÜÖ”x‘dE¶Õ¤×2vq*¬íÒA—d·ºLÊt¢6ÿü¦¬SùïÚ§Þ`Ü°›H2•ãŠN霜֩Å+%R¤´Wnût#áœQëÒIU† ƒ@7"Þª\þ$mé×i?–ÖQª¾ÈÖñ#ú ÷r'M—”ûà­# [>2þY§dŒ´m&¢r 6Ò
-WÎÄ—6ª¥…¸œ´á1nr:¢wÚP®÷>@й¦Åªçù’«2:é ˜<¤z £-TSãûP¨
-‡¦ž{£A`5 yÑRÆ¥Qîà¡o*Ãþ@ë-¨Fn¯Ie…6N€z…Vl ªdkih¿•9ÈiãÒZ”Ò£`ëí€Js7}µC‰[gJ” hsðe½x7©œnÙ«Uº`!=Mºƒ\8êÉ¢ivÙkƒšswüt”>íDZ" P
-ÖF]ß\,Víü»`ü‘sÃòÖ®o¯?ýs·úx» x+PhSëÕÛEïÃíçÕmïµNS°®<šLͺUà{rð©l”Ó9®¬-ep™s¶+²6='›­ƒoÂÀžyËDnD™Öò¾,±š¨ÉWñ®•ü}'0íEÅÃN½ ]ÁµÂµºÔûç U-ÃjC¨Ö8>ðJòr…—:“Vr=
-‡2EDŸYÔ!2¼-dÎÂh%ÆóJ¸;{ÜϪu
-Jhf·G«þ¿t¸Õõ2H “y¾[ȪuW¶{;å—}ôGlt|‰¦4cØv˜ئÀ!íû;ú ,Ùó…OˆÝüX²_BºÙ|‡©—[ƒ íi®ÀÔô‰Ra´Ó±N‡D°2h#a§Ûˆœ¨j¼x7¢#ßqšZxó^u)0h¬0\¥)o¾S TlËÂWúñ¹ébDÃH¬áÆÞ™Q÷XgY™+$ÉcÓZº½DÉãT±â[³þC¡¿›šVÈ 1µ_QõöÒÇ ¾Øñàr´¾j^ƒcû¹6Fg´àžñÚÚö×[91GÞVݺò¨Dç¸f÷²Ö{þ4}ÍõåÅ`ìçÖŽME‘x­† G-½¬^Öóí84ÕgÏ(x9'4=ÉÏy¨Aûè†Lð ?w¬§$ÓÓDÖǘÎÓ«_Ìqw²W§æÕ=u®úäÕ=Ä?ë%ùÕyœ_…gÎcpÃZñóam à茭`rqüÅÖÁYò1‹ªÞXÈX ñ±Zb²5Û¼çϧŠ'ëš#Ëœ„ƒ°)„aêT¹ÓfÇ¢„ê5gƒxíB™Î7óʼn[ƒIo}€Ž¹ÿÕ“·À¹¸E¸#tcXÇÔ­ZцD]Œêñc‹Ç’ˆdhi¡ý°5×O+Á¡æ_êNó´ê' ;/ýÚ}êCTOÿ?520ýz¾™U2ŒfÑìrD“©ZZÎo^ÍéÎh~n£7:.ù‰ÐÃÄQ{ƒ žhg#êMûPO Ðo=PŽ§ãh:™…9k8á`oWgŸý _žÛKendstream
-endobj
-1441 0 obj<</Type/Page/Parent 1372 0 R/Contents 1442 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 568 0 R>>endobj
-1442 0 obj<</Filter/FlateDecode/Length 1805 >>stream
-xÅXïoÛ6ýž¿â``˜
-Äše»¶ Ò8i´ëÖxh‡ih‰¶ÙH¢+JuóßïIÉŽãnÉ~t-8Å»{w÷î‘ŸŽ"êáDã> F”äG½°‡oÚ_ï^ñ74ˆFárŠzÃpìÿÊèÆ>‹úQ8¡ádŒu}ü”’G/gG?\)Šh¶àG“1ÍR»qfI`ªRËðÙì#ÖÁ»®GÝhö±0XoÒ×ÂT7²rKš­‚Sš­$©¢’KYR¥rþƒŒLt‘2ªH$E'ãmV² 
-kïÛ²ü'aÌF—éÞÎ$ŠtqQ^¼ã©¨ʼ®¤¡Dì܆?•-ñ±uÇá$¢&¼¸?ïٲϻ}Æñ‹$©.3±4{Nž’CŽô‚7NV¢I%K„^—¥®‹T¦4¿#ó©pfŽ§·²2ôÛïÈ˺”F€'ìÅ-;™:Y‘0ô ÅAmd?;¦÷q
-퀹XÛ¿üxŽ²¯VÔ¼gÎn¯J™Tº¼³Õ¾ÓQLY÷öÍ?ÍåÎ 1¶¾ÐeN§æ/4ðRÎ-ïÚ~ë¤s*¤wra}åîèî˜å•Û;Îz~—"—™·gòyê\ÄÁóøB,°diÝ \þ*Ø#Û×[¸á«¯6Ôà$qÇ™¤Tk°iµzÐÃŒÎö1­K½–e»— ¹ŸYé{C.4÷ê1…ço¦ø}ñáâ˜tÉVv _žÍh¡2ÚùáI4A¼ÈBQg™ûÞâ¥Ì3ê
-“@‘‘˜a>ˆ¾Zq6°®i›Ãà1ðO/Ï=kÿ^±æó+Ðo¿U1^zÜkôÇ+¿@iC Üá¶jj[t{A*ÍëY³–šÈ «VvÓ¸Ë/ÇnykÓ¬t¦¤Ë[Üå §þrBªeÅS¿Í«nËR1þ!†Ï±á¶ˆã6ʃ•³(w¯£Ã5Á!?½&þ’²Fú*e=ïCÏ‚²8Cï·¢çA5´â«Ñd‡EÈAÞ|œ
-)Õ¾H=µø7ò·•t– ›ìø&n9L¥,ú0àJºw×Ó¯¨±Ç¹´.U.Ê»WКëëéL¸:þÄpã¢ß…–¼Mó¥í·ãŸK¶æ0ÐíOÂè„ZÑ̃$u©0=\©¹y†P¤¤ –‡‡î„p#ò¹à! m…1>ÑOÓs~_PªsI¥± ÿ^Ûºx¥{õöýì­mðTVBeÆЉž"<dÕ²†Î"ô5ì80iêÌœë¢*u–±ä>D <Óör¡kpêöäÑf ?84}¹0Þ™û(ƒòŽ”ëa[¬’BÝT.DUŽìÍ)Ljc[ -tÂUˈˎ;Ð4‚z;àŸ’áû{ؼgÇ–FŸâÅ:C]ý‡ð‡tù@ÁÈ/"_g#טevvs5»xõ–V(¥E6—8ð¶e–ò ÎU2ƪ•ð'éçþ@xùĈРb6ÿî5~j‡LÓcm„=„îˆ)ÔŠ*Peè …³¥{¡9ĤÜßÇ©¯÷|,Ü€%Т)uæ2¹½ë8w vârwl‹ØíÔowJŒýÞ7ág§Úw‡S€
-endobj
-1443 0 obj<</Type/Page/Parent 1372 0 R/Contents 1444 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1444 0 obj<</Filter/FlateDecode/Length 1123 >>stream
-x¥VÛnÛF}×WÌCÀâ]$%ÔºbÉ ESKr%­Mré½Àf‹þ{gIJ–h71P 6dîìì™3gÎòqà‚ƒ"üÒbàXxß
- ˆ#ó…m³à†®¿µú¯ŸÏ7{íÀ6[<"ŒñK˜Þq`“+Á
-"ê‚ëêj9×sÜ›û#×Ád›l˜·DÊ'.²)ŒÇÞÄñ߯–«Éj=›-ýyàçc7p‚Õª·µzÊ>©î¨ÂÌ~¢‰ë½ œïx¹a‚Ó[âÉ=MÕ"Çó§ I‘Yšr]ª^œfˆm§©T^oå¥|»mÓ{n±Q/Š¤©Zçd‡§üþõ~þè…¤?Í% wâ8ao7’± åbOÊÝ¡T{€ë¶y¡a{³Ç.ó<çO¬Ü“@Jø´¼Z-•¨qI€–f)áj
-£OyÁè *.ÙsG´¦†B*§Ò‰F^€
-ÃS³r
-Hâå.%BQq\_V”W9½ÈÒË*'¬¼çÍw.v½º~пŒIÜ[ßÓÜT<ƒEsB?ÇÿÐØÏ|&£Svz(ÎâNiíŽS.ZRñ2:§¢®Ô?óêÚ£÷ñ—‡¿PL½¼­ŒÛ¼^ºÑEBÅPZý9I±}?¤—ïXy·§y>;a¥¹ïð.qïXv€á¾Bñ¾Y{Ã<¿_Ðqˆú {^Ð%è
-\ÔXŒùßVX¢;nwòíUöÆàØ®^k©sùŸQª—^ÆQ¼Œ7p±œy“0ŠfA€vèúc½hìÅ^OÀºÙö›)ó­È‚ëúîó'ƒ° ÀçÆ–G¾c5ãoB\ æšåNywj˜M‚Cb"šù¯rݽ
-ò@Áô»Ê’?‹Z>æ–lD÷b<C`e“¦Ý‹—PãGCɵH©}`Ù{àÛÖyð‘T‚%Z1^Z&ËñÂÖWn賺€”W5œB
-endobj
-1445 0 obj<</Type/Page/Parent 1372 0 R/Contents 1446 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I15 15 0 R>>>>>>endobj
-1446 0 obj<</Filter/FlateDecode/Length 1443 >>stream
-xXÛnÛH }ÏWpŸì
-¼ú±*Ų»œu(—ŸJã}9ç\Ìp ,éZv•óÈ[Ä€ä ÔÂqÖ,F´Ýc¢ùÓ
-Åžúøåý{·°DŸ«YžîRõ„ª·ÇgÔ5wlОU’cnáÒ/q{†Šì€ÿjÇÊå¯]Sc¦z{˜e€uá8¹¿°<—ýæw€7Zå°a|Û7dßL@¥–‡ûÛv*
-çm° ´µ°9‡‹4„ÜÞzU±ÂÔ×ûÌ¢À5ÓóWSôt >²!òƒÒôéÌÅ7‹y§´9h@w6üYDu>t7ø©Uƒ˜ôW.žZ¾j¢q£8Ž
-endobj
-1447 0 obj<</Type/Page/Parent 1372 0 R/Contents 1448 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1448 0 obj<</Filter/FlateDecode/Length 1043 >>stream
-x¥VÛnÛ8}÷WÌ›À’oŠooI·YHzA\ì.  %ÊbC‘
-/qü÷;Cɵ-»E""‰äÌ™3ç óÒÁF0Ãd
-iÙÆC˜&‹xÉ|†Ïcü5ò°,øzaa2ÅÉ¥…q29?q»ê î`•cöé|« 0óp«´÷þ•+ç™”»>ì´‡”)¨¼©–ZÁSoùt,wÜ€+8(VrÐ9p–´Å—ªÛBà›-´—ØŠ§"ß…Ýõp|•1ǯVß;CˆF“xŒ(zÛ‚«zE¨M8àØZòþk0iõ€J»‚ö­9þÉöñcDÏ*|À$ r£Ëð– Ž€¶BJÀíäkÞ€ÊbZÜ-`”Ô$EbNâYœÄðÕRÞJ2¡sP1k·Úd´®R³«Ï~|®Ã8ÆÄyïXg´ÚÈd¦Ú¶á§·Ó úPè-åæÐÚŒõ–˦žñ´Æú! ܆&HñŒ»vÜ|1¬åº"Ãæ dÉ,%S%µ+kÚÚ†,ïQuåûõŸ˜­ûñëý}5³ÅàBq/^;nID­p×iFŒq,2zn$”jåþF'­Ô* =E©µØ!>Îfû@|Pºãz/üe‘1¬
-aAØB
-ñœyé~­¶ëþæÎQJ«¨©þTÖÁ$”àØØ{‘9L•¶V “H{EÛj´4Ú ¯¬B)Ù3å´íÝE²­cÊuÛ,Þ‘ÞßXYI~d[J¹—2Œ‰|—@±î®›9ÔƒwŸ>¾»Y=õîmïw¡Ûô&¼<]××èüz¡ÍøŒˆ@à{y^LKýiäG^Ûña÷øå2úý¢BŽ•—‡3eãɸ$ãSgEŸÓ&É~~ÌcøŒžÊÖðïÃ=ZÑo„ª›a<­ÇÍ<Åpë…Ì°ç@Ã
-+u汿†¿xa¸)Öo¥SÑ8ØõOJ^¶#¬p™¢C•­¿á>¯Îšƒbà°jÐ슭>ÅÒà Á.&O6;¨7àõ.šžÅñ–òAëØ©óI;Ç4i‘ÚÓC„¾©'6­ÓýÓ b7h˜ W&6…ÃNm™ÉЉµZiã‚êû4 Ï*Å0<¢öÕTwj9ðÖ Ûeåšñ±Ì…ä$ÛS°=~§K¼Y'„í™FkÔ)ºhÃd [K¨Zô§ÝåïV uýf,Ro ª;BÚ%üCÐG„²¿ª/–ƒ%Îê«ø0¢hœEߊ, Õ`ÞÈd4Å{渞6æ~¼y¸½ÏFGYÁ_Ç$@Ñþ@4.þì‚NfI<›ÎÑ­tÏ)úûUçKçzEüÑendstream
-endobj
-1449 0 obj<</Type/Page/Parent 1372 0 R/Contents 1450 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1450 0 obj<</Filter/FlateDecode/Length 115 >>stream
+xAD¼F!J±BòÜJçHóX¯Ix/«µw´@e@ªmHcýqD¥:‰ù H€dN¸WP­ ‘e*6Öuu‘š]i.ª…*÷k "7¥väêõÚXO?Ó³t‡­D]µHXT°ŒÿX*³ÊýÉÊgÿ!/hhiÛGZEÐ@ˆ‰“<
+
+.¬©àN£RüÂkh[kA°`­»·FÛàêªè:€™Jy;›·I^<Jb~‘‡¡
+êõ°Í¨…¯K—¶lù =̈\â+DˆVnl! ó>[æa °u£‘tÄ£Ûx RNÜ\¸“ÙÖñXlTÄiùÁ
+3ra–ÁòZƒã›V ìêÒ Ô¦ 
+Öþ’!·–sd7Œ·åÓÒ‡_j0XˆLãeül¼L¢èÐÑÞþüŸí¥¶S%ôg3ÀøR·¿·2D¡ø›°4Ò‘š©É#¬p´Uf— Ƴ½iËyŠ»÷8Šé€Ýc^®Äz-µ{C˜³f|PÆOÂ4Fëvî å5:~—¤(gdÀÚÄ_þ¶%wKj¼"?bFÚ[&÷ï-s h³°
+ýÑŒ Aº®Ñf*L“ƒëô…Šö®*
+Õ‚)½Jú—^ËW뤰ò-£ï'ÃÓA˜üÄ,à•æmPÅ‚Yôƨ@
+/Ô£¤7:ã—îîßÏæ)Þ“a#Éšæ³Á.y?gki«³;xÙîpoÙ[}¼Â DÛ2pž—0Fñº˜™5Xr¬¬ø
+£±áx%v0ßìˆÛª•:Su.]¸ûÉͤÙú#ü†39¥Ñx”œ‡Ýz~qyAÖ|ÅtÁ/YÍÉÃòżŒxäxÜ;gJþ× n.øÑp<LÆ£ ¦? Fœå:=øõà_żk7endstream
+endobj
+1188 0 obj<</Type/Page/Parent 1119 0 R/Contents 1189 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1189 0 obj<</Filter/FlateDecode/Length 695 >>stream
+x­TQoÚ0~çWœx¢R1II¨´‡V[ßÚmjª½ UÆqˆÛÄf¶)åßïεl‘ö2 V°ï¾;ßÝýÅá7†<y¢E¬(à}±üÁb¹d)¤EŽïñœå`%Ôh‹'iÆâá“xÉæC'‘EÇ刟æño”QüM9šÝ¦ÇPÖ³tž@V,Ø"+ ¬F¥˜Ì¤³Æ8ï®@9pž{%.¡á¶o ãJ{|.ë
+Z.^hÞÉ'ØJPº6åó(‚iœ±([ ôäóýC€â°1¦Ñ%$¬wþè.“Ú+ÞþÄiÚg:MrV`ÆwÇõœòÒÁžkOIYé¼U†‚Ö˜—ÝÖ…üNüÕ¨
+ÖÖðJpçC ò2íÎ+£Á[^×J0( cºÏés‚ÛW ÆVÒŽaË-Úxi‰"SÃÆJî¡‘í+{w@¦ÞèØŸPû˜Ã8WrvÁò] i²8]ŽJî>Á^imdƒu¸"½÷ˆ'Í?PIâ#•OÆ>ý¯¨}z«‰lU§4'yúD¨N(™ÕÅp:qÊ’>"¿’5ßµyä#NXÖŸññ!ðHHONÈå_ 0Ø“|0&÷1‚ÖÒº )ˆ—R(êÞ˜ÊÁÎI,©C8~Ôê ÜÁyÙQ=ªnÛÊ‹:nÈÁùõ¤[Mz¨CŽµUï´U(xÛRé`MáOÛáÆ„ÑÞš¶íÃôêûø½]šÕçœ\µvn¯¼h†<¨kÎ}>$FCß C¾¡_g·ÅiÄd8ÞŠ9$غq’R½=\ßÝ\Ã7kž%5«;" i5š‚âÌè]¦y„M€“ÃÀý×’˜†Î .¾áŒ–°šÄ« ØZã0-nÁÝüPº2{‡#J4JKGiž²'Ž¶j’ä´õ¥}ý¦¥rendstream
+endobj
+1190 0 obj<</Type/Page/Parent 1119 0 R/Contents 1191 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1191 0 obj<</Filter/FlateDecode/Length 1547 >>stream
+x­WÑn7|÷W,ú°Ï’ìHr¢HÒ0P;m¥Â(š>P¼•ŽÕ©<+úûÎ’:ɾ¸@‹q
+QÌËÓ[½+[-§ó¡+÷‡F“b,‡îyËž¶Æ–nH׆m ¸œ±¸¤Í>{ÄéX1Þð|†BdU’[Ò¦Vˆ(ò—x<^ÐG- B”t>¼ÌÁuH[S×äl½û{LáÀó² LÑåc/QkkAÂ3o¬Lˆ~G&ô ã–ÕšËbÿ5Šv%L T SÕʾŠ´`ÒÎ"ë
+ W2— *õ˜sšú!æ(JOÁ5¼­G¸\ÐóÔऱKç%²8ùÂÒé¶AíÓפ®$¯^ܼÙëæ4ÑS.h¡ôZ$ò]~ÞéJž{ÕpdŸØ?•eâù¶Ù8¬#Ý»ˆ¨ß&¬ëÖ›¸{~!Ó åÉ )³»w‡Juužˆ¬+k>·BsCÁ4¦VK¬…Ö/•3óÊàD~PhäŒ*·eÔù¬ÇVÖæÚ.™7YÑYºâäí6F«z/`i!àó>8¶åˆ>^Êd©v«•±+tQŽ¨‡ŒªÌˆ’ð¾%ϱ­œ:"©>c?ƒþyšH¥Ž:=õ‡cZì"CwÐUIªF[š°Þ³‡èT\ñ¡Ú}¾èó天蛮Çz¨ü¹5€‚¿)è·Ü7Ö!TöFô/@¼
+ÇÒ/½käAsF’>íЮm Ë‚¶l4©0èa¼XŠc&·|bC+ÍÒàYö#éð•ø˜Ò:Y‰C¼ÀÍû´·év/±"XC0ˆO-àY|Э­ÛÖ\®`R©z Cè¥+ù¨¥“|ŠŒnØ/YGˆiãB0¸53ª«…ö _‘·C³HT–´4ÀW"×®*©/"‹HDLë+ÏI}&w‰rÖâ6>±
+ºÅ kÒDhÚÌpÍ›F´ç˜ýIIðûAöƃ| Ãìe R1àøz×7ßÛ’S©¶˜,)ÕÚ¬E+T:Åo+£+LXñøTðöÂðéš-G0ÂN½½˜~3Œ­U‘Áz_ÀŸÈN=*x‡ĦI+OBl5Úø(¬4¯vͦ)çÒ·.E&ývŽM O§ÆÞÏûÆò°|X]¿!ŽúÓëÄÉhTŒÃd{ÓË4ÆÅ%jŽ³iJc!¸Âz1ƒ.–‘…ˆ.IWÊ®r½Ñ2KÕÖ‘›hª1YL¤ZD‡¶ÐÙæѾrq’DfOè\9uq3>Œ‚d>ùË£ÿcq
+P˜|¥ÖÍB¹ô~^D¬4BdÉè¨:ù f…D[ædúbþ˜$pg´wÁ-ÁJ
+€\¼¿½™ìv#[P¿!JjÆyx2¨Þcˆ`4®ø⌦ˎ²&4PfÐÞ,Ðü²ýø•
+endobj
+1192 0 obj<</Type/Page/Parent 1119 0 R/Contents 1193 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1193 0 obj<</Filter/FlateDecode/Length 1521 >>stream
+xWMÛ6½ï¯˜C8ÀJ¶¼Ž?Š¢@Ò&@Ù¦]ía/´DÙÌJ¤CRëøß÷ )ɲã"A°X`×$gÞ̼y3þ|“Ñ?-¦t7§¼¾™¤zµœ¤Sš-ø{Š_+© ³åôëƒ7ë›ñ»e3Z—°5_â‚`g2¡u>z]< íÅV:2%=|xCoun{¯Œ~¹þ„·3Ê2~
+ø!Œ£º£Ç«jTÞ˜ $"ðS8(‹•Ÿ‰A€Ëè;ß ¦>ZUs…~7Lqt‡ö¡Y1v:­©ãf…¤ãM{7f±±¶´ƒ‚® ÙFz±bÄ#‹¢ŠÃ‹ç:ùã^ÒÏçXù)ž`fj®Ò»WXZ ´|鸛„=«þ¨Š -].[G¹,›¥«Öà/‰ÁƒgQ5’©4í@-+}cu;Á¶¢Ñ†p&­¡~=éüýú¿ÝËC@ö±]˜¾‰LãA@va³÷ÝuÒ_r/±|ËÁ<K³.t+“}ï#Âî&X’ÅË}Z¡gLÛS²xE
+Û^-<Vàtc-³-f[€Å*÷  cúÜrrù*+jïÚñÞÀk_4Å[£ð9L©[~Õ¶Kv\­øé-¾9à+ýlž€eÃ; `q0"‘°Ÿ…uúía€áìÔ™¡íÀ <0ÝŠ]‡âŠGîxcKÖ
+ ½+¤S[bÃ7kd? CþwÞ¨À–R`öª8|ÿ¾ÿï
+endobj
+1194 0 obj<</Type/Page/Parent 1119 0 R/Contents 1195 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1195 0 obj<</Filter/FlateDecode/Length 252 >>stream
+xmÍnƒ0„ï<Åébr5Ü"µ
+/à˜M±ÄÛ×äçVíq¾™Ý_/s!Û#N!F¯¬½]õ‰(BÝ:%Í3Ô XÈC-üuš¸1KóQ_—¼8B#W 7!اaâŒ~¥gŒz&4d¹ ´ÂÍHÕ=Þ‹|˜ñòòL-Í°¶'¸˜xGXz)z,rÀ‡…¯z µRI+“” G©]•¿ÚFi²<F’?;ž‹SYà{ÖW_ZÜFR–[©ÕÖ2xóAÆÛMEsçNïÈ]Óâ|*qTb^§·!É’0Ks÷=ÇlË8ÖÞ÷Ä…iƒendstream
+endobj
+1196 0 obj<</Type/Page/Parent 1119 0 R/Contents 1197 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1197 0 obj<</Filter/FlateDecode/Length 115 >>stream
x+ä2T0
endobj
-1451 0 obj<</Type/Page/Parent 1372 0 R/Contents 1452 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 609 0 R>>endobj
-1452 0 obj<</Filter/FlateDecode/Length 2971 >>stream
-xZ]oÛF}÷¯ôa‘>˜¿D©Àb‘8ÉÖEâxc/òR`AK´­$:×ÿ~ϹCÎYIQ,Ú¦=>sgî÷Ü¡ûõ$uü•º*sùÔ-6'“d‚Ÿ„?>ýód–d®œO“‰Û¸<KŠ¬ÝÕ‰À+Ód*œÀ›aGán\šV‚ŠÁi’Š¨b°ÓÉBŠÁ΋d®²‚7.KÓ¤V1Ø,?PY1Ø<Mr• ¶šìlœeÉ ,&TÉ
-[QeaƒQeaÓ%¢YÅ`‹®Š¬UPQÑõ¨ ’œj,æÌøH* ¯¥Ê
-;O±”õ‡N© Zª©k€‡
-„`fÚR1XëEdƒÅÕ?ÖZò‡"6x¨@Z¿¤bªÄ%¬`ªTðа±b°¸©á‡È
-[eôp`½Â9¯l„†÷\aÀB!UªHÅT)g.QÅ`Q¿¬`d J¥YŸàŠ%8º$l5DØEG ÑÌÜXÅ`1MŒk)«,ÎA"Y,†»{ü1†äØŽ ¬bll§ˆ¬`*Å›IXÁ(ötBOYÅ`ó‚YÁ`Z$M`-´ù|fÀÛ~æ<òE̬à•+¬`¨Œv™ «¬µ («¬ÍNÂ
-†Ê評쬘ÎàèeƒE^«,§²|ÆÊ $5@cbbËá¥È ÄT6#'ÕÌ2rÑ^8>FN |‹yXƒ-9ÆDQÅðžu‰È*f\Jz ˜©,2[ÏU 3×+쌇ì,ÞE—VƒEk/DÖ§aÅáæÚ¬˜²4 ÖfÅÈzÑ’íÁ‹BcCõ$f5Ö«õÖÜ
-[Min”ŒœÉ¬ÒëÍŽ`“$~4äÍ¡"B‘Lsy+¬MÂ
-†Ê(/8#ììƒåS XÂEˆm'Ö/©,Òˆ¬`°vÍ
-+ì”OCaCá ‹,²ŠÁzÓùŠÁNyyˆ¬`°pÌ\YÁ`çÏd3¶³5œkn¤‹Y01ù™#DS#t~!9ö ΄C¾ŒæÓÁ|ð+,^)²‚é~ºAdƒ…©°–ÄYÅ^ÉcY³ù$Ž˜Ç²W +,¾*Ê
-‹WùÁ΂Áâþ/UV0s‚Ý ž«˜Qç.²Þ Ö„p­!<†Ì Á8^…#+lÎ6#¬`°¸Š¦Ê
-‹»ã@V0XäTŽç
-†AÖ#Ë‘!C>²ËØ—hŽÀáCNäìCÎ(‡AÚ&”ˆ fkŠœ@hŠ„€ëƒ bú€¾Èú¢Á½kc:o¬Ì
-ãÙÂ*÷ˆ
-Ü ` …#ë e½‚‘ì ð ›aÖ€±õ
-ÃF{£òÍõ™µ%$Ñ¡’}hŠ¤œøÏC¨vdƒZ*‚“Œ¡ ¤b°ÈYdc`m[>œ˜œx¯föŠš™>¹-kد䙊ÁbÀ¨” ßsa­Âù°Y-çáÙÆ‚©/ÇÚÈz}íûíp;ú·æn衵îr
-&q?}ÜžâŒÓw맟þ¿Mà–Qo*ëu?Výô0$ìY»Ù@áË®Erm¼Þv]ÛYvøoŠ4xÚõÍÆ]¶ëÕbÕøÕ½]­›ãõUâ>ß×½k¡Qçî›õƒÕÖ¹»kú9b–<K"ÇE–-ÛÇ›ÿñòÃÛcç£wÇ|ð¥w¾Ýõ/ôÝ/îÂW¬{ßÞµÛcQø.Õô–/û÷©­7Ì «,5ú™Sç0äã‡Wçÿ9ûxqýéãû¤ÿ£w¿S.®Ÿú7ŸÂ4ï`/8ü×ö‘Q|µè+º%»¯ßË}׬Ÿ†‚`—°Z\þ wñ†üK%‰iñOJ †8E ¬n--¾£ ’Œ™9´P‹¿&#·:´wÙ2³ÜgvÚÞõiàV(Æ¥ï3‹Ñ¶îy"q¨ûù¾Ù:´hyùæ Ç6Ëfi‹Ÿ¹˜]ß7¸›ÿÐÇV"~ØÑo%õárTߣµöqª‡}_‡[OôC¤kPU¼u¨ônsóPïvKÇâ:¶…Wü>l­×k÷¸êïÝû7¯.½~øŸ3BF9Jõæjtæ¦ÙÜ7ìŠá`1a[¦=•²æÝ5KÜ|‹/õÂÄ}Óܬj»UOŘ•ÿ¢ü§fùkÝ?k˜¬X™›Xïõ>Z€È¡<áå§vß¹—M¿xù¥»)$ÇíÑb¶:6ïÝ6Þ÷¼!}ççr ¦0+Žv·[ñÒmBG<È ®Ü ¦‚¿OûýÑp?WÒ•$xa7 W:­ð¢í}G=8„„ðà"
-ãû±´69Þ>…‡bªø=ñK‡gJ[wDý½Süd(ðç¿æeí=ùÒCNÞ ÂÍý=N 3È߇ÉÃrôå; Ø6À˜©ø¤d³Øó­ÀäZMgí0 å5}{}ò¯“ÿG@jendstream
-endobj
-1453 0 obj<</Type/Page/Parent 1372 0 R/Contents 1454 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1454 0 obj<</Filter/FlateDecode/Length 1884 >>stream
-x•XMoÛF½ûW t‰ ز-»¶[ ‡¦©’¢°Š €/+r%mLî2Ü¥ýû¾™]~håŠ$(’óñæÍ›Y~?¹¦+ü¹¦ûÝÜQQŸ|\ž\>þL‹+Z®qçîþ–%]ͯ®ðKqúûV5A·t;§¿=þW¶¤ç­j5y]t­ {ªô›®èåtíڳ巓+ºXÜÂÆ)Ó­'ëKŠJW+c_Îø©ËÇ[º¾Ž>/ó¿ñ=þÃü]UžÂVSQm©@>¨6t í¶¸˜F0#?žÚÎZc7sZn5ÂäPÃΑk‚qÖã-‰^‚ž¥x¯o¢NnÖqšñöœ¾nM±%·æ8|44‰¨Õ…6oÚ“Z¯ub´;µŸFÇ-…Öà©àHu|L¡‚Îœ›àuµžÓS
-åF w[—™«¤
-®:¢ªÊít9O^ws!éÓX,µ/Z³Ò4Ö~¤÷Ú´> $ä<¼©›J·’í{OY
-6Í Üâ]ïaج÷òõ¥I|JÑAlÙCmÍf‹¶®s0’Cæñ8£èÇ@ /œYÖG]*Ê®*0 qh$îtŒ0?¡ü¥Óê®
- š¹¿wÚÏ’žÐLâÒjß8[r{ÓFÔeôÓÁ”3æ%râdYbFIçGHhï·QìÉdŽe'"w1õ‘gž3ëÜóP}Ñeé;Vý—Ó¯Æ~ú$*g1K-Ž®i*ž6×N&¿ç0Oë$…¾ž£cwýdHØ8èEóÞ»1åæ$^Ì°8Ó`¡Q-†
-ÿH¿ÎÈ׫9Äsû=°D8=bL I ü)^Ó»]k3ÏjÃË–´´ÿ}ì0Õ$= 5`t‰\FÓœ~R}Ü8 [œ™içÊöˆ•‹·!ÌG9ÅsI&É“[ÃvK±w†9׸VDAî¥hDeb{€ŒV–öaOÌ/MDöhÁå¤ú­º„à·8Âai^æAõ;:óÊîŸèFn ž¿¨}ºnbf•Û a×(mÂ@…Ñ›áÐ!mÊê1)'+˜Ì|µQ‡æh¨Â.+ÞEh*78î'¬Qã„f:÷š–•[H—¹h“ôOZ3noŒ)3ŠO7bñ°è@PÂk\…Çãuæ˜ js„XÎÇ\ár]ØyƒÝéA@þâ1]9®Îg2>ˆsýÿãx/CmÀ)ÒNˆ™…jìù 3Gß ´xÇwM亶E»—ƒ¿”·ÒúÚŸ1cî©!d0)ÂQŸ+2×3±öª÷É%R^‘4a3ê5®úB
-RPèY='q«Þ
-endobj
-1455 0 obj<</Type/Page/Parent 1372 0 R/Contents 1456 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1456 0 obj<</Filter/FlateDecode/Length 605 >>stream
-x…TAnÛ0¼ëŸ Q$[µÜCIÛ
-e%q‚wy¯­s~/x¬DÝÑõ}†4EQ3eµÎQT`x’ (çR—vì½2R‹m++x7ô½±¾Qµ~°òBWÍ€F¼ÈÕ ¥=œì…^ÂuÛ^8·¯P«Vb¯|ƒÍÃÝEñ%¸J—ñ‚ðsçG>± 9¥[¹Ÿ=ˆ9‘2;+úF•¢mG¨®7Î)2 ÐÞ
-íÚ
-=ùÀÊçAºœÐ&¨òªðfŒ"˜#+ËÒ‚6¨**ˆ–µ¢“>džf{|¨‚›Ù¡ÑÞÐKS‡ÄcUÖ8£õ–ºü;
-endobj
-1457 0 obj<</Type/Page/Parent 1372 0 R/Contents 1458 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I14 14 0 R>>>>/Annots 618 0 R>>endobj
-1458 0 obj<</Filter/FlateDecode/Length 1719 >>stream
-x¥WÙnÛF}×W\ä¥6`EŠÚúæ%n&Îb¥éƒb4I“fHZÑß÷ÜR› MDEÎ]Ï9÷òk/¢>þE4Ži0"•÷ú¢_¶ëM"Óp”ˆ å ø®2zèŃHDÛ»ñ$>¼»wÓ ‹éÞYx¡ápˆÏd2ÆgŒÿNÓ¢÷•ðd"ã/Œ&Ó¾!À‹»(¡Kzñ(CJúc|ÂúhÄ–üG6MDBƒi"¸›Ä‰µW|wÿw“ž
-Ïú»{׸;š"€ÝÝ«YïâvJqŸf 9Oh–úšáur½’e­ =È|.IV$é~–uôÙñ½w&—ns:ûÒëÓyœàüÉÍ¥)èÚµ³Y¦ße?Ñ8ø9$¨
-ëµ……Ò¨êÈs÷uJC–šB…
-[ÀÊ«
- :UPæÈï>'C†^ƒ¸ ;”Ýi”t%Ÿ‘9iOÌâp‚Ëìdrá0`íÈíÅbäItkO ¯Þza¹hYf×@Ê.‰6/ÏÏO÷wý}wÿ0»|óF¬ê<ûŽ9…¨9//–e¬•#¸QÖ9ð1ÛÐ<è«´f¥t‰ˆV8²´6ø*XA£½¢Â­By]`!€-ª÷˜2CBN\’ƒä©ZÙ&K}IÙ(PíÙ‹{0— ÊGàx¨‹<pÖ·ªUŠsPŠG7Ì<Æ£q«kòû›[B—™T Üboú­…‡Ö Ñ”ég tk¯ý\ú9_N×Îèçà.ƒˆ3ÓÙ  ]aÑt=d‹3"`°#ÁôÛÅýì õŸÏÜYÉ㉳3eùx²üTúyË]´A{÷©Ú€™9•6ƒXh?~´ŠçñDDÓ6¡Uæ:—òd,VL,S¨¬a náËÚêé ÔíG-÷ê^»¦ªÿS¼‡{¸| %ÒƒÇïûŽ Ïí Ù q%6B à2ÁÏÿ-îgG\¿Â#à oqªd7µyѲïR££àeÊbÐôÙH¯LŸ˜oeÆ;/ô!ôÿQŸK¨"tWOîEéjò‡vsíl` ‡@ßV3ë6ÿžô÷ÄàZïÃœnÚÍ®‹h«
-<v°
-endobj
-1459 0 obj<</Type/Page/Parent 1372 0 R/Contents 1460 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 665 0 R>>endobj
-1460 0 obj<</Filter/FlateDecode/Length 1427 >>stream
-x•WÉrÛF½ë+ú’
-­2A,@ÆåJÉ‹l")/)ˇ!0ac30­|}^÷
-°ÃsV”“ç ±P /z…
-kl³¿±Rí’WK,}ÞârBM¶/ ãn¿?1ýdÖ¢#u¡–™Nìe@n‰6*Í$¾åšN¸¬Óæ%†%–N:OÛkÌû›·Ÿþº[\ßÞ8k“gr˜\Åí~GÎÌ£îÊóà‡Q»Ug-‡—…Ù<ÀýŽoýÂýåo.é®.¿bÂà&ox<‹o¬yì…xñ™4Ž\ìåä_ùm&
-g¸R‚9YæûÅÙŸgÿ
-endobj
-1461 0 obj<</Type/Page/Parent 1372 0 R/Contents 1462 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 670 0 R>>endobj
-1462 0 obj<</Filter/FlateDecode/Length 1753 >>stream
-xWÙnG|×W4”
-¤Ã±õiçðå]Fo+)¬šK؇ìñI˜R7–~‘n£Í{ºeŸ¥zD(ySÃp¥V!¯šB´)Ý
-––ŠÒ:S.ÿ‘µÒ‰²²Ù)Œ†“lü LÝá,\S÷jˆB¨K÷¢^ð`ˆ˜¤%¥é%§ (×õº’H¾äÿ÷áê%=ݬ©ë5g³@zRªz¿Ìà ¾î­ÈWåÇôô¡ãsEºFŠªÚÒ‡¦„;ï·dØ R~\WL%ü`“Ë®E...i«¾ÕTÅ1ð¡Ô-×¢¨a#„nëE–kµ¤µ0¢F’¡þ¥Öu¨
-ÒÌ—ã Ï_:ß° {NÖm+I"Ïu£\*Ã5 ÐK´;‡\eãŒî’•×"_•JÒÜp§Üį}sü¤KÅŽî<ñ,òŽÁûÁÓ)jž˜ghø‰¯&
-8ï †GÀWÄ:§[n%ßolÀX4°¯œ+èŸÌ=tŒÀsÐz%¸øÊ<\ìcL}Ç1>…VÉèÇ=)
-ð8_‘;†xß+I…B)oqüÚ@ò@²ºQœ0w`l¼CˆÚûN+gtUI“Ñœ»Ó#ê •nKK„M‚«k#ŸX8
-tçÇ‚t, ·?¾¹'ÅK£ëaßERp"Q¼XHÑ ÌSZ¦JzÈué~ÇBÛì°)ùãaƒ&Ô×—¿å2z„¨½$(ÑÎÒõÇB³bdôƒT¹¼DE’€îÞa¬@aAQIµ¬¸ÒË–g‘²XÈ\ *yˆDIZkk9×gJÏHÍ­ µ+^éVÝw°ŸÔè@*o‹q7»|Þ¾¼CÓkƒx$šlWÐ#œX¢¸V „ßä#Ëø6£›Ø0sI+½a@.£Á_0¿É„q( ]‚”˜(ß² Ìæn’þä.² z*R|ž|~°1÷a‡‰C? õšÛHBÀw@WÈú¡ƒ¶1àvµeoû1~Ð'UÿYÞHÕy¸à¾IÚƒ¢XSØf—Á’VŒ`;€“ƒ.ÉγûÀŽ\#v»ÖªàÆñ3h‡Û®!<~|=JÇ)vzÒ当©e
-²>¼w´Ø¢qUq²Ìÿmç;£º`NwYmÏBÚÓîdR^ɇáγ9pQe”°ËpЕPlÜN“"ÇbªÊ÷ƒÐxv`­L£b?øø#yIÅ›V•.PWn”–³Ï`X‹-¶¯]И8©ÀqíKTmO›Úã °Â`w\BIâ¢È',Š¼Ç 2Š¿ó ¤CøõÉ&°3
-0–Œ§ÚsÚêzü~¬Á'ÍÝ0)ü…ÀvGç[-NúŠ€ µ­áÕ=¸Jgz*×›ãl;8O:’úB^ÙÌ ¿o„!6/Å{&ÂÇkn+ä؉JnŽÔ
-óüˆºÏRÆ›ˆÂŠ,xE÷û ŸKÕ|¤N#ÅÑ:æøH¸ŒÖî«vf½Æšž]”
-¿HÙti€í¡[P¯O=Õ@çºyÄt” 9O†íê=¯6~ë½ÚcÖµÔc»KQÙxÌK_ôX4ó7›hÅöu¸Ned~Åñd&A¹©[µCý²‹C
-Go}s{ÿ’ì$®1ˆý!æ¢xyx‘¯Øù ÂA®Â®K0‹X &8„ÏF4™Æþþæõí ½5úÌöýƒS"§ÜMt§ýëÔ—ÿó|áãÛŸ(ÆÓq6Ì {4eoßÍÏ~=ûl|3endstream
-endobj
-1463 0 obj<</Type/Page/Parent 1372 0 R/Contents 1464 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I15 15 0 R>>>>/Annots 675 0 R>>endobj
-1464 0 obj<</Filter/FlateDecode/Length 1609 >>stream
-xWkÚFý¾¿âv“*¤Z i+e“¦MÕ$M–(ªšªì&±gˆÇ^–þúž;0䡪B <û<÷Üëg)õñIi2 á˜²ò¬Ÿô±²ÿyý3¯Ðh2ITÒxœŒÃCA×g)åu'‚ÿ¤É”†“)þARïYzIO ½rÓq’Òh:´¾•¤åÙp4Åßt:J&>tÒýKo?cW'á¬Ûm=—4JGɃÖ.='—§¯æg½§P™Ò| »ÇÓ ÍsçoŸæY§2¦¾sþ‡.áeë°–º‚ÎýÖ0n•"[+-ÿÖ¢”'·îýßþlÖÇç­©>ØZÔÊèc)}ê¦C„lžw¾"oÖËåMO7E1ëÙ…Ò=m
-³R:˜4Ú»ÔŒ“ ›¯%yMÑßNOÖYÙæ~'^ëÔuµ£­*
-*”­©Æí`±{تׄÜ='±ÙHËü‚¶Fß«i-n$¶œ`Sñ2‹áUÖÒòO;@v-ñ+tNÚÐÚ@x®*™Õ¦Ú%ôÔT$oE¹)XfÛ„œîåf³Ù݃ڦȃZýŸlâ½-Ô G•Å8=ð°èF>†NßÝÙí첉oÈ<äKeè‡ÝvÊ8cKQØ
-4S™÷ÂñÊ–5<"ºl³eÝx¥;é»vòÿ {4Á«ÞxŠ7/Df8eé?ÍÏ^ý )”v‚endstream
-endobj
-1465 0 obj<</Type/Page/Parent 1372 0 R/Contents 1466 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1466 0 obj<</Filter/FlateDecode/Length 1618 >>stream
-x­WÛnÛF}÷WL
-‹Ö]r
-´°åP€¦)¬"( —¹’6&w•]ÒŠþ¾gv¹²ÄØE Ä7Èär.gÎœ~=ëRß]÷¨?¢´8ë$ê‡É„“1>÷ðk%­ÎnçgW÷×ÔÐ|…GF|ÈÇ;š§­a2Hú }0J+½¦r#iš+©K*ÿïÎBé·ó/03 n7˜i÷Æ0ÓšãøÖšTf;3–¾Ô†¥'f2o†ž„UÒÑN•oýIZ§Œ&³¢ÏJgfç’àjT»BvíÞ(á [õ ê!ö6R{Ó•“–d.ÓÒq.˜¿þ— Õeô͹[œçL„&‘¦¦Bg´ÎíŒÍØq‡ÚÝ~Òã˜Ê(I9<©žT.×2;q$tC¢X
-Y ]iE©žäÁÁ¢¥™\’ˆÇjÇÞúF¸†SkLùìÑ
-¡+‘û {gʧV* Ìœ‚kHE!u(üKjUÑ¢—´¬J44iôFº‘é£/èÒ|£ó©Ç Ý5E{W躩¬Ö„;¯NÉ9Í8p8¿§¥‡‘«ür‚xs*‡“AOkE¨)éø¯°Á*ìµúÿ ôXã~lõ ht·W]/?2dšii „Ü@‘^,ïqoª d®Únóý³Bž)»bFUŽ´ãaD]f‹·õliп;ÁÔ„”5
-r1Iº×°;¬å~˜ fQíüdÍ2—ëAFï­5ÖëôÕ}l?»ÆɈÏ@)ÍÔT:Í« ÒOo.ð>D†0ëckuÖ ]ôÏ.Zå~‹ŽAAðCWþ¡l;39D%¶[©3™%to¥¼}¸k”rÑâ” *j wÉí] ~C ;£/бáüöÓþ/žR–¹e8ÛƒÊ#ÕhÔ»nPÔpmEqè®B<B?q¾–|£S 34-Dsú#YÚ¦¾OèÁBjRå¡|°E. §‡Ðaœ<ô¤¶»p-Ö§Å)3ø<
-Fd¢a—‚±„þ°Ñ;ÚmL^Ç0Vø ífâçê ù\/X| a2•V_+IñŽ3»£ŸBT§Ä¾î…µéˆ×‘™µ°w†‘œk?¡1­Ïÿ†846‚wJÖ
-% -Kn€àì¨xî]
-ÄHÓw‹ÅçÙÇóÅâ×pè™ô0çI÷3]5®#÷•·-ºïtþ{,½õ (d±e¡?ÂwéÚšj{”ÃÍýáXŒ¼"a[à P|¹Œ _|ßX´–"#•Iù¦ßl=­yžXõÄZB»ýZáí2HÞð†š8SHŒ -sÌÿ†K4yf°‘°Š¢ä5b‡¸/±b.±c{Gi˜Zb7¦—gM\¥^ïÉá$t휡ðºÊ“Ã;ÍÍÚ§š,ZSLÉN÷úS _¡h§ý÷»“¡6©u¬ÛÇÀ»îÓhT»z¸ùýö†ÇÙt9Ý™´ÂÒUú5Œí¶»#¼QNúÔw®ÙæÿxgŒÉx4Á‹'žë_³¹÷ó³?Ïþs ¨endstream
-endobj
-1467 0 obj<</Type/Page/Parent 1372 0 R/Contents 1468 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1468 0 obj<</Filter/FlateDecode/Length 1858 >>stream
-xWkO9ýί¸ªZ5Haò M_VPJU<‚ÐJH•gÆI\fÆ©í!äßﹶ‡„
-ÙÞ
-ž ad©‘7J5U…$QåÁÚ—Æ#Ù2ÏÖDíÐK§2Á=ÌŒDL64 µ• ]_gØ¥X,¸©ÈØMµqó­`Ré–Õ‹ · ±dÔ¦ÉÅw†#üûÛÑ ¥FTÙ<`à¾ÅM52Óe)«\æ÷» qÛu…°–b(mùÉ´Áû8´0:-€Ô 3ÒWÝ×B5S•(ÈrOPÈjE,g…’•£©ÑåXŒ/qÎF2<:§ÃXÜ ØrÔ¥Èæ PX[°"ËtͶáØ1^å¢f¦H…jĆšsä Èñá%þ'A…Ü¢¿¦q¼c¨žyÀ#wŽÍ'#~&E:65þQh[…ÿÿ@?$t7î3è`t5û+~Á—ve¢¶àGŠ£nW'_}ÞsñÈ8PåÒ»¢ MŸÑY[OÔ #ÓþëΈ<'xƒdF-G¶–¼
-äæú¦# š¾S\bß¹¥® fsÂ8f›p¤ÍEè×R›pu«`ß > 'ØàˆÕ&Æt çÃH¡9ÝTì¨
-j°'«/SÄðkTŠªötŽqË„6pãR¦f yz
-«Æg#½çâtA#CÖoS`/PŠÈ¾€éwúòÑYk— –%è5Œl( 4ÝÐà+Ö 4´ê/sM%5SàBÆÖox«*”[µQïU»ÉogÔ¸¨D)½„àYC éŽÏ.oÈ·]ÊÏ?”ÐëÃ
-Ä_KÊ«=áMÝtutŽ©R@P „õŒYâí'<;1¡þ =á-¼Áßõ0žQc³œ]akÑ%ÏV+ମpœ$dçè––
-ð(e™²*úî[6ΈRågv
-]z‰d·|Icx\UqµÂ†‘ ì‡ÄÎS@¹äOIvˆO?cÕî[ýáø~—ó>¤Û‹—wôíúúòÚÈ[r¸åæëö§øðY1R• L’Qc5å§À‡¢OÈ+ÈË:§/6¢H¶=Ikë¶Ú¨ªïç±)½ªæØ‹ü¶É<¿0²NmefG϶6QŸñFš³ti=ðÛSNžÜm3s¦jÖÌ@3ÛZÑExÚì->ãŒ.hZFSøºÙ<7ô)ªM™äËûø¶°Ht¾ùÖ7…Wؾ#ð
-2K0ÅŸÀü»V¼öÆîýBšR¹Äú5n]`XÙ&žâq–/„
-µÁŠÆÛ;ïšKaxXJN¥^Öù²ß.Ÿ¸Ó¯ì÷¢«Š7Q„p6J²Ðaßbï]æé«<Z~]…ÒùE™„n¸æ‰ù¾ÁºRO¯ "Æp¸’Ò¯íQ2VÚLì5ì9XÆ|©A,Æ,÷/î\@÷óM‘í†["{@=Üÿ¦èñ8éð¯nèõ—dˆ––+]¨Œ7Öð+£Ù¾} "FÉ(ñÖÏklûñú§*Œ¾w@…*‹›^(‘âû ®
-·>¯‚‚î°é饅PÒ
-endobj
-1469 0 obj<</Type/Page/Parent 1372 0 R/Contents 1470 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 682 0 R>>endobj
-1470 0 obj<</Filter/FlateDecode/Length 1938 >>stream
-x¥XÛrÛF}çWô™”¼Ó/[¾H‰j-ÙkÒqv‹/C`HNÌ @ÿ~OÏ
-Âöhë9¥I8 æíÑpŒ)œNa/¥é|‰sû'wÞÙïÃÑ s0:™4O<
-Üh5 ¦4ÅÑF4ÆO.iß{·é o§†´ÙîùrA›Ø¡<¢M4(Ž’NGUHÊD&sºK³D¦RJèsnö*‘–„Žé³IT¤ð 4}S:6'KšÂx*»ör“Ò½Šrc;~ØüÖÑõx¿6ñàg —~¬IñG«B-Šeìž?¼WÞ‚ÍÒoGQØ™²hw>é™ü~õËY›ÅCQ.ir’˜L~*Ðu° t½W‡ 3Éå.:›’ÒÒTZI ½–ùÀº0åÎê= {±­@>Ëîž@<:’²üø¸°¥£¤ŒeL'U[vveáw¨‘6OøfòG[†±c# Í‘áVˆÞ¥£d4^=l?lL@s°_Ç[ªÂÇ 9ø@‰®L*À¸ñ·eÈò+Iq4åáè¬é³šu<‹„¦Cëœ0–ÎqÝ9öÐÇâŠÏqRIâ9–DÄÁw'#Q1—e‹üLò Ÿ„;ýu˪£©,hÇÃÈÞJäˆdúÙœ$Hpå†}š8ö_RĹ”—šŽ"ËTr&© ²–II@ÿß´Äi=˜ G[tº¢È¤©ÑˆÓä.U;+OJë╹ݹ؃ûOR+$=†2p‚ÏPœ ïÓòïGÞƒüQôŽ•èÍvë,m·Jï»nÕŒ‡Ø0+ÙÀNi
-endobj
-1471 0 obj<</Type/Page/Parent 1372 0 R/Contents 1472 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 687 0 R>>endobj
-1472 0 obj<</Filter/FlateDecode/Length 2011 >>stream
-x¥XÛrÛF}×WôKŠrŠ¯"¥¼lÉ–UŲ³!w]©âË°€3­ÚÝßÓ=
-æ³ÑdSq°ÓÎwÂi¢Im‚Ø#+ö»Ëuá(s´VÅNQæÎÓˆ~·õ9n„;JÈ–>³¦ÛÛY Wì‰ßð/HÕ•:ÎÒgäƒú Bâ¹~Òù€páxÈâ?VÕ&¢µFuà¥@Ö¥ÚkG(
-[²»Q'}±ÎeÂÝ(¶&%Ž °(Yfðk¡8H~]<J–!pцë.@$ÁJ™½¦´²M{¹m¹Øx!Uuî·o8Ú鄶—S
-´â`c_å#•ûQ¢síµä¹·|'±GÔ ¤Örg¿1#\¦YœiãÑt`6×Êù!c«iK§²!PŸA¸p_aZBxöÚèJ±s|t꽩‹MU;¯“;7ˆVZ¥^WÃ~ʽ4Y><þsÏÀMm
-—˜÷Y
-÷[†6·O2ŽjŹ@kô‘Æãíw™ud‚„88]=éê¿ßçd4[D7ËÕyXÜZ?¼%md>!Xt¢Ž˜q™ÔEÉ0WO*Ëù ‚ïËŸÆããñÉCed«ý8¢÷'•s³DÒ8¶ö²VªøÐp&KSОYýO“}8~ÉÌ|F G7é™|¹U ‚ î8‡N¾*‡Ê}Qý
-Ü}À´Iâd”Û U¨ö5Š âu Þ³Þx]6Rjyþ³®S¸‰—zÕEè"ýku<š/n†Í^ʾàõLœ×äÀk2N_=Ówó²*x-€°]0€êˆÀî”в <aï:5=E3yº,º=o2&Fçe±ý+Uih°õ¼by·/é‹Ù=hñà“‰vöàÿ\h#G ¦Á-¶
-/ðá@O<DpÚà­&sœ_w’ýlazí†öYxw¿¾Ãä¬lN¿*£s|o1ÊUON(¸x›È‰¤C…ïœ|kŒü8ìs}¼NKzžÅÌÁç_}~§ówb‹ 5kÜ)ÉÉÿŸ^
-¥rÛmÏðIGš—K‰¥˼ªžéîãÇAü>+U¸ÏŒîEÓ,$¼ë„-³@¬J_C _E ­èl÷X²Û£LÛ>a\ÀpÖ?ém‡ýaQZ‡C‚HK‡Ül¥eG×—ÍÂÒ°\v$~¾c¿¦>|dÍæ+üÅC¶ÒÓºnZ>_G×7sZ,áëÛ‡··85Ù¯ÌÑ;×äEcÚt¹Š&×s­&7ló*ZE$9Ÿre¨Þó¡MfÕbµˆVËë°/flæýæâÿ¡Í¢­endstream
-endobj
-1473 0 obj<</Type/Page/Parent 1372 0 R/Contents 1474 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 704 0 R>>endobj
-1474 0 obj<</Filter/FlateDecode/Length 2189 >>stream
+1198 0 obj<</Type/Page/Parent 1119 0 R/Contents 1199 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 475 0 R>>endobj
+1199 0 obj<</Filter/FlateDecode/Length 737 >>stream
+xm”OSÛ0Åïù{ Œãÿ>B)míÐƽqŽ.‘Me' ß¾oåD^‡L2Ï?iõöiã¿‹…ø[QQœQmaâ‰ÿøõ…ŸPZfø4­‚ä(v´^i( ƒL0! e¥/Âû„4´
+³ÙF©Aã0X‰²Rƒ&åÌÔ E”r¯Ðè% ƒ\P©¹ÓhfYjÐ( b¹WhдœUv QPp‚!¾R'\‚“4GܪgBÊË LHô ¯r£Ô QÂn|Y©Aq
+2š¨Ð iÂw3Q¡AË„3š¨Ðè•"A¥-Ü(ù½.#ÌEæ3rbÊèÈÆP<è2òLHL »NÏ„D¶î2==b:Ñ£‡Rƒ& ÷8Q¡9Ÿ˜§s¢Bó$¸{ñTjÐU<;WjÐ$S¡Aóœo|ª,4OY1ó,5h–Í<»{Iùê–<*N¸{™$²x>=ÒPê~hž ‰ìc0Ï„äìݯÛC©9û|¶Õ9MbôvrêÄäôÈFkž yrêÙèô¸/8Ï„d§.S¥f§.SOÓ˜g#)rÜ#¦Õ´]ÜT‹«»“AÕ¯å,/¨Ú¸·1žÔËoí`»Í¾š®½¨þ`m‚ßþ¸öÒÝjµY®•yTT«–ºWmÕ ©ié lÓí{Z¿¡Vo}骞›ž^•¨îÚA5mµÛÎÅ'þñ|Û<ímÓ>Qï
+Ÿª±….1¨l.u{hl×Ý}0ÚË…=Ž
+endobj
+1200 0 obj<</Type/Page/Parent 1119 0 R/Contents 1201 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1201 0 obj<</Filter/FlateDecode/Length 1871 >>stream
+xXMo7½ûW t‰ ز-»¶[ ‡©’¢°Š €/Ô.%1Þ%7K®ýû¾r?DéTÄ9ì×|¼yóf¨g·tƒ·ô¸ »*ê³Ë³ëç_iqCË5ž<<>Ѳ¤›ùÍ îçÿxÝ’²%½lU«Éë¢kMØS¥ßuE¯çk×âfû®[OÖ2–ÔÅòûÙ ]-îaé¼tµ2öõ‚o^?ßÓímttµxš/ø…?èåËÇdƒ‚®*Oa«©¨Œ¶T Tº†v[\Ì#˜‘OOmg­±›9-·ar¨açÈ5Á8ëñ•D/AÏRx·wÑ?'7ë8ÍøxN߶¦Ø’[s>šDÔêB›wíI­×º1ÚÚO£Æë–BkðVp¤:¾¦PAgÎMðºZÏés Òám†°4pª}r
+s
+gCëª
+—«}æ~ÄõRÞåëäªP–œ ̉I(‘ð¢Þ•©ÔªB¹QÂÝVãcæ*©‚«Î¨ªr;]Γ×ÅÃ\8ùù,–Ú­Yik׉ÞkÓú€ ðð¦n*ÝJ¶§Þ³
+ª¹+ÏoçÄ׸¼êõ?ªAycSö|#©“¤fÖ¯[WXZDKW‹_FÿŸERúêÄ¢~EÅiBBFWúgÕÆ8+´RµëX$!Û×óÎs8½÷IÌB«uÄlšA?¸ÅºÞðYïå3êK/’4ø”¢ƒØ²‡ÚšÍm!\ç`$Ϊß{<Î(ú1è g–õÇQ—Š²«
+ h‰;ÇêÑGþÒiuWƒÍ ‚Ü?:íƒgIOh&qiµoœ-¹½i#jŽ€² ú „é`Êó9q²,1£¤sƒ£$´Óm{2™cYã‰È]L}ä™çÌ:÷<T_tYúŽUÿõü›±Ÿ>‰ÊY ÅÅC‹£kšŠ§„Ƶ“‰ÀŸÆ9ÌÃ9Iá_o—èØD?’
+z°§² Ip™_|#È@¬,ÏieŠ kù(‹szq)<œt‹¼ªÉv†AØ¡ˆˆëë’‡lÔl ž@涯£'œ
+p¬øe~6v±.¹ ¥iWfଧkß1_Xmc3““žx¤‘9P{¸CßJYäaïm-C0Ù|W•)3L‡òó¶†AÛcŒª g°8b`´ànx~UÆ ífƒ–öÏýl¢1±Ì-b£†
+ߤßgäëÕâ¹Æs‹X"œ1¦†¤þoéÛ®µ™gµáeKZÚ;LuIh ]c"—Ñ4§ŸTÈgfÚ¹r†=cåâmó‘Vé\’IòäÑð„ÝRìaÎ5®Qg)Q™Øࣕ¥}Ø“óK@‘=Zp9©~«.!ø-ŽpXš—yPA½ÅŽÎ¼r ‡û§:‘[ƒç/j‚®›˜Yå6HC˜Ç5J›0Paôf8tH›²zcLÊÉ
+&3ß@mÁ¡ùj¤°†ËŠ7AšÊ Žç kÔ8¡™Nǽ¦Å€eåÒe®‡€Ú$}ãÛƒÖŒÛcÊŒâÓX<,:
+endobj
+1202 0 obj<</Type/Page/Parent 1119 0 R/Contents 1203 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1203 0 obj<</Filter/FlateDecode/Length 597 >>stream
+x…SËnÛ0¼ë+>%@£H¶k¹‡´zHÑÂ*zÉ…–(‹©D*|ÄÕßw(Û-b¤(¹»3;;ûœäÈøå(æX¬PõI–fx_dé
+ËuÁÿ9•h’»2¹¾_"ÏQ6LY­ ”5že(« ©+;^ ©Å¶“5¼ Ã`¬‡o•C#…V¾ƒÐ5FЊ£z¡´ç€“ƒ°ÂK¸~;çö5ÕIì•o±y¸»,Ÿ’ Wù"þÂù‘GlBN)ÆÖ.ÅgbN¤ÌΊ¡U•èºªŒsŠ #´·B».6ÖôZý«¢±!ÆýšQl«ó­ »–ÝJJ&xœéYY(K`Gd‚öB‹ì¥öpUˇíˆ=éM‰ð{ƒÊ„®ÆVâ§üY˔ɺJ×óUºŒJÌœ¬‚U~Ä E´/ÒÎÐK6G6Âc#ú­à ã4xEˆN‘ÂñUMZÙ µÒ;aX½©å Ûà!*&õ¢ÀdlšæŒ_!;מBO>°ò9Hw€ÚDU^>ÐLQFsÄ`eYZÐu­bÑq VôÒÇÌÓlÏ€Up3;4:ziêx¬Êg´þÂR— "ŽàÄ|Rðmlcÿã‡ÒµÙ;|)cxí€h1 Ma^$½P‰!îu|ü§­™F|}¿>î\¾â>®Èç·“#ßÜ>ÜÝâ«5O²òøhª]5iy^®ŠìCŒÿgwoÓNÞ<¦“ä„Ç‹†}Äqยj·óñ2V\Ë´X­¹ý¬¶XÆ«Oeò-ù Q¡kÂendstream
+endobj
+1204 0 obj<</Type/Page/Parent 1119 0 R/Contents 1205 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 484 0 R>>endobj
+1205 0 obj<</Filter/FlateDecode/Length 1686 >>stream
+x¥WMoÛ8½ûW zÙˆ[þÞ[Ò´Û`Û4mÜí,hŠ¶ØJ¢–”âúßïR²e·¶-‚Ø–DrfÞ¼y3ú·7¤þ†4‹i4%™÷Ñ
+œò,°fèþæ9yŸql|2ˆ×¦«Yw·lxI/¯Þ=‹èÚ Õ­=X\]*ëTtW»€ƒ)”½¿gÍC8a-qŒYp¥´ÚX®«ãØ·T$
+°Õ…Tpw­¥†3·ñ ìÇþ®ý¾«v™:Á1ñUM™ÙpÐkkò“]žWíAñ
+…žY¯,p–¬UÚ?­E)f;ZéCb¥R,’]Á£[6Æ$ ŸÃ)H´×A ܈“—Ö
+´ùd0AƒvÍDÁ"Ë6*Gâ` OŽ$`"„> ý<‰ª„Î0É×2e>ûæÑÊéÅ©^ªdE„· 4¼VÀ¼U´ôj‡ù–ÓáŠ+•Ô˜¹üv€…Mæiµó'AéDÅSÅ¡‰@– …W‚0Ï`$ª 3ölu–'dñ“ FׄLÁyD[ã›9Û òóÎ+Õ$š&Ü}ìý®#l~<G³é<dy4á[/–½w½ÿ
+endobj
+1206 0 obj<</Type/Page/Parent 1119 0 R/Contents 1207 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 531 0 R>>endobj
+1207 0 obj<</Filter/FlateDecode/Length 1463 >>stream
+x•W[sÚV~÷¯Ø—NOHÂ’h&Óq.NüPÛyéÄy8HP¢[¤ƒ ýõýv„¸éÔ™€V{¿/ßÏ\šàŸK¡G~@q~6q&D3gJÓ(ij‡ÿµ¦%#@ºÿøôáÌŸùÎ%Þ$9M'3'l¡ŒΆ0°—¾ã±ØpêD¬áNð.'¿X, ftõŠm¢™ëÌZƒ§aMb²çué³9Á›¨XŽÅyãºN@—ìqSxÇú&±@‹XrN.|æ@1Ô#CO„‚Œô¸ÀCkÌT€çÍD¨U(ÀçÏX….ÊB=2˜ö
+}zœïŠ!Á`ó¢H„Fl²@{/|ž
+½÷–Ò†LI›"Ñ`QE":+U«\¼¢BǺiT½cIM¾pbØçÐ mÓ,c#&4r¹d¡º( )ct^Zë‘þQel7;2ºÖh4Ík½#…ç¼Ä‡Y+ð'úûFí(.Ÿ@—°bæï”S®Š#Å•Zi‡®Ë<Å“.R]Äúå‰Võ¤i¡uAYZ|ƒàmjÖB¤b³QY¯!ÑM\§•IËÂiU¡~¦ìãG6ASé*¯2M6‡’ŠóÎNûºËÐ9-aI"ÀOˆþo댓ˆð=y¨|C×çUV.Tö¥5A†^þ^ÑÕ¤15ºFðeXpÔ×ô¨#.´Y¤%òˆ„2öœ^·{$ZÏïï>ÜØÁåé U\/«ºÜTϳÞ^}º½¹:`Yõò¹·u‹ì­ËM–p
+áa «êr™fºùýÔv Ëͺ3ú¿Ü>>vL€6Œ{Ö «ûX4ýÚкÌ5%ˆZ ý˜J(KKÔVnjXØ †l.xxm
+΂2ÿjgR§Oûöû(m?d}a†¾0lÛû§ž4•ŽÓ% ¦•.t™`ÅÙ fÓŸeâåqXÌaHÔ:âÀ¼¸xw÷pq!áåIÎã÷3&‰Hþ‚^F™±©‡ý9ÔÛ9"ïœ8OøÅQ&^ –‹ˆcÛÂÁ lºA°z;N-–ÃxÓÔciàqÃ+tœ¥‹qç³dbA&TÙ®3ûtblÑ׋£‘28¢…QIžÊb_ã²ä~âoï%9o‚ƒ2?²êsWɲ
+6g¹¤ªL #7Ά5vÚßX¯vá«
+endobj
+1208 0 obj<</Type/Page/Parent 1119 0 R/Contents 1209 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 536 0 R>>endobj
+1209 0 obj<</Filter/FlateDecode/Length 1754 >>stream
+xWÙr7|×WL)©2•——DRy“ä8qÊW,¦ò¥Rà.(®½ Ð
+SêÆÒ;éÖÚ|¦öYª„’75<Wj…òª)dAëÒ-ñai©(­3å¼ñÏYËa!(+›Ãh8Î.ž©;œfƒ+ê^Qh
+Xס*H3G\Ž3<}è|Í&ì)Y·©$‰<×r© W4@o,@Òîè"Ôà6x+òe©$Í 7ÉuüÐ÷ůºTìãÖsÎFîÄ؇ý`(øåN¤‡ôúصœw##@+b‰Ó-·Žï76À+0U97=0?™»ïç`ôR0þøÊÜŸ!ƶÌö@¥Ð%½Þñè6^ßœzÃÿg¥×°ÈžÞ‚i × “¦ô#—g0¿Ö¢‹
+ðߤ
+k ŒJªe=Ç•^´<‹”â\æ™PÉó#ªÑJ[˹>SrxFjn •]¢ðJ·ê¾…=
+ìàÈ5b·+­
+n?~¶Ø¸Í
+2À“ÇØ£t˜b§']Þ;šZ`^5¾ýôÃßBLªŠ`P>–qk`sÝ= ” ²ëG‹l¯DÏ{#àoJi³û³áábô @ÒÐ]…Yr@±°`–Z‹×‘ÏqøŠe`K#ª8µÊèFûÍe[h”õyà½óà° ù«Š£eþëÞé{Õsº‹jsºÒŽvG“òJÞ8Ìuž}̽ˆba\ú=t¯€®„bãvš”9ëPU¾„Ƴe»ÁÇïÉCH*^ú°},uºr£pm÷œ}ÃZl°xmƒÆÄÙKŽk_¢jsØÔ{ýƒíkãJwD> `GŒ¥¾õ› 4Ó÷íÑe&Ð2u>’òIÁ/ã‹ÒðÑÀÉëPŠ,ÖŠÇÙs¢ê©yø~ÿ«®n!—¤þB`ÛcÇó=G|)²…ƾÖðº \¦s =–«õa¶œ!-
+/iæ…_4Ât
++—âÝ’™ÅãÕ¶rlA%×2…AbDÁg ãDa-¼–ûÅFЛR5O4Ç ¤8ØÃ|ç(v*½ÑÚ}×ά×XÓ³óRái8“î °6t êò±§\7˜Ž$§©Å°V}æÆ/p½W;̺–zlw!*véë=¾G3³‰Vl߇ëTFæW\f$›ºU;Ôÿv±Oáèâ½¢nî^’Ý€Ä5&°?¸|E¯ /ò%;A8¼UXc ¦«ÁïéˆÆ“¸»ß]¿½¹¦F’¹Ãºw2ä”»éƒî¤Å :<8Þ†~¤?Sì­¸“‹l2ž†õhÂŽ~šüvò/{r/öendstream
+endobj
+1210 0 obj<</Type/Page/Parent 1119 0 R/Contents 1211 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 541 0 R>>endobj
+1211 0 obj<</Filter/FlateDecode/Length 1618 >>stream
+xWioÛFýî_1uRX),ê>¢@œÔmŠ:icAÑÅŠ\I“»
+—´¬þú¾ÙC—c£( Éâs¼ysðóI‡ÚøëШK½!¥ÅI;i÷U.ðЦÁóNòœúã~wzɈJIsœmãööëÝO¼BýQ?éQAÃa2 9]‚»Ù ‚»¸ìäöúcÖ3$cÈé9Aþ‰í?cFá¬ÛÝ{.¨ßéÃîÝÝcîW0b܃ÁÞ¹Þ
+ßFÇæ^LOZ—°·CÓ9ÀŽG4Í.mš¦Ò˜êɳé'„C J—+a-5ú­^Ü*DºTZþ­E!n=|3é´;ø´'“6þ>˜òÆV¢RFJiSaêÂŽÆ#ò&­LÞ¶tç“–)ÝÒ&7 ¥ƒIý­KÍî0é³°éR’×ým´d•¶Ø™uæwâµI]•Z«<§\ÙŠ*Ü滇­jI€àé)‰ÕJêLfç´6ú¬¢¥¸•Ør‚MÉË,†WYËž‚زK‰o¡3Ò†–Â3UÊ´2å&¡KS’¼Å*g™û&dt–™Õjsµužµú?;¹gˆ÷6W7Ž*;‰8=gZt’~¯KÍ.(ÿ@Òi}:¹› Ú|:áx—Üñ]ÔTz³cB;ìîŽã6¹ d‰è7£Æ‘Ó /fæVžϺ÷èv (JQ…¦PÓʤMKµª"ãÂ7¬Ó4WpþœT"“sºVx~iŠU]É2ñ@D{ˆÝ§æN¯˜Y“ãz¾¡¢w`«z#«‹×o¯½~3ßSO•áCŸ ’'ã>ž™B(пÁ²#êDÁ‘{ñÖ#Jàñµ(fÂÓQ›
+Å"5 ­þñQ'a÷V•0ýH©HSSëÊ¡,bf½1kX,|’¤¦,¥])½ ÷ZÝQ¸‚Z¸)5¥¥ç û©å]E¶’+R–½ð›nË›¯#dGöðu@J®
+k¹ŽG·¨É…Ô²ä(Ål^šÂ…èýNÄÃœ ±ïv“n»æb-ú9ãÄ$©¢™‚ùæ0:ÄaÒ¸ž] ]‹Ùê¨ÇAßÚC¶DJÀ¿BVK“E¬äçZÝŠ¥ƒayHΑØFCá¥3³ÖSúíÕËùèôZ–·²$X)²<EKˆV
+½y·^ªtéPˆ"•=ÒR.– wsw-€Ç9ˆØûâãzRºz!ýrÌ–sÚ˜ºŒ§î)»­sþ - ñ@Vè¦u'X¼݃*ö@w½•Í°Üi÷KZB/ž#ç”fŠë
+!tñâè3YÚÈÑ=w\/¶ )™º‚Ò\” 8,¥ÄÒÈÃN¥Qm
+7° ¶N—G:=d6¡?Lí[¯+mkQ¢†Ň[—ß0zÌÁ×ÀÛ^7òöô­nÂÃæe¾9¥—\1±ú+?CÑ”ë/½ð×E³uS”“›57ÓXqT™ ®5\ÑÁyžF>>£µØÐ1N¤¶Ìa«0`
+endobj
+1212 0 obj<</Type/Page/Parent 1119 0 R/Contents 1213 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1213 0 obj<</Filter/FlateDecode/Length 1610 >>stream
+x­WÛn7}÷WL
+k­‹uq
+´°åP€¦)¬"( j—’ï’
+¹kEß3äR—]ä!Îò.9—3gÎŒ¾žu©ƒ?]õ¨?¤´8ë$êɘ®Ç#|î៕´<»›]=ÜP÷šfK\Žñ!#ïth–¶>¥•^Q¹–4É•Ô%•Æÿvo
+¡ôÛÙÜ¿¦n7Üo÷F¸ßšáøÆšTf{1–¾Ô†¥'f2o†ž…UÒÑV•koýYZ§Œ&³¤ÏJgfë’àjX»BZíÞ0áh[õ ê!èÖR{Ó•“–d.ÓÒq.˜~ˆKPˆê2úæ\Š Îs&B“HSS
+¡3Úç¶Æfì¸Cín?éqLåZ”¤nªg•Ë•ÌNœ ÝÒ£(‚DV
+÷^ž’sšr, q*,~ÏK#Wùåqsªû“APkI¨)éø¿°Á*ìµúÿ$ôXä~lõht·W]/?3dšia „Ü@‘^¬ï%qgª d®ÚlòÝA"O”´á*JЖ‡Au™ÍßÖ³¥ÁþîãR~Ä JÌ·%Ôbœto öƒZîÁŸ²ùÉšE. V‚ŒÞ[k¬—談Ø8~l’!Û‚LšI©tšWTŸ.Þ\à7|ˆÜ`×ÑŦ:Òª[º8>èïÎ[ånƒ^AAëC?þˆF6$ˆ‡q¢›Ô™Ìz°RÞ=Þ³eîï8ðæ-ÎÙ ˜–ðšÜΕ@â±5ú­{Í`?é÷ ã–²´Oö(ÅYØ$U§F£Ôuo¢~++Š}câ Ò‰óµÜJ
+ÆúËFï|h»6yw
+' a‚ŸsÌhk ·ß¯B{{Ýä´½ ‹Ü÷Æ1‡|++È$¬/s•¢j¼òXå)Å
+åaç¼±5\ZY°„B
+HË’ 8;*ž{0Š
+q„ÑäÝ|þyúñãl>ÿ=:æ<é~¥«Æ²udࡲà¶E÷Ž~@…·^? …, ,Hø.]YSm.
+ü ª‘/W‘á‹ß5æ­…ÈHeR
+ß–^ž3q‹z½'ãе3†Âë*ï47+Ÿh2oM0 ;Ý›;L4ü„¢ö?¾Ô ´q­cÝ>†ÝMŸ†ÃÚÕãíŸw·<Ͼ ËéÞ¤ö­Òo`l·Ýâkä¸OíQç†m~ø/Š×£ëd4ãk&.ôoØÎûÙÙßgÿšÙcendstream
+endobj
+1214 0 obj<</Type/Page/Parent 1119 0 R/Contents 1215 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1215 0 obj<</Filter/FlateDecode/Length 1904 >>stream
+xXkO9ýί¸ªZ5Haò $¡_V´”]TñXH…VBª<3Nâ23Nm!ÿ~ϵ=I:-« ÂÄö}sî5?ÔÇ×€&C:SVô“é”v?ÌϬ8™&õO’SŽ’2’æXÜÇöí,Æt:IŽi4àíß~åÇÙAïbDƒÍæli<Ð,÷{û4Ë:—ô]«Jæä–’r]
+U‘­³LZ;¯‹bCiíHÌ4T¯FäªZÓ$¨’k<|–Æ*]‘žûîE™
+Êt.é’ÒñÃÃÙ÷ƒ£> Ž“!lwJœ-²Kof°i7ÖÉ’2QQ¥zA]Ž|ì|êã58ýøxØ¥ÛB
++É™ l/ØMm`¨²uáx‡‰'±µ=c"/U¥¬3Âió†ÖKY‘p°¸r1XÔUÒ89'#vr¶T–t–ÕƆM{ù¹¿<'‹ã5¸Á;{¨”OqgeÔ³p²÷ps÷åÏ»›¯· –‡5M:„³³¥¨2OèqÈQ®
+Ùm9ω0²Ôψ©š«B’¨òpÚIc‘l™Æg; ¢v(¦S™à"fFÂ'ª†ÜÊ„nŒÏ³
+±E{Má`¯AàCõÒ±³o>ðèñ–]éØÔ8ø¿\k%þ¿}“ÐÃR¸÷ ƒÑÕ⸹ñÖóe¯\™¨-ø‘¢ÀÈÛíù'÷R<3Î$F9ðŸÑ„.ç[tÖÖ5èHïbøkeDž¬A2£VŽ=Ûi^ rK Ó‘MÝ€)N±¯ÜZ׳9a³M8RŽ–"Ôk­Í¸ÚJØgˆèÃ68bµ‰¾]CÁy3Bhv7;+€”
+}– ‚ÚìÉêÓñü$•¢ª=£ßr¡ \¸”©hž‡žBÅÆÛÜ×Þ+ñ¾¯" Œ?‚c`3ŠH¿
+ĺÕY k×P Ö%6ie(´TWÑ"àSÖ@4Ôò/sQ%(5s%àLÆÚïY«*”Ût‘Ž§¶½]dPc¡¥ô‚g A®¥ûxysOþ³5è
+P¾ûž „^§.
+ªì“Çସ÷AUXÜlVèµ¥°OæƒN³‰P¢½éëEQô禶,zRD:'ÔB NF'æαçãŇÏæ(ƒá(qY$îÑ$™hp:å6û8Obm$×|4 ´e0öl. 6k!Ï !¾ó0¶x‰t=õ†_<í¬¿tÕÈ؊¥H5æšrÓ
+»AL*w¹²¬Q÷;Ea>5$~]öÝž]¡©Ðè`½`· ·N´AˆƒÿÀ‚B/X…üÙ
+Üï2sæjÑ´@ÓÚ:ÑFxÚŒÞãŒ.h^FSø¸<÷ä)ŠM™ä=Ëóxûœ0Gt¾øÖ…'ØS¾# ’Ññ
+Ï ¼ÿ~Ò|á²ÿ2l¿n%V<­ˆ"xµßW: _láµS×yúK<?»B÷üÔÌr úE¡ws÷|ýÀºR/¿'ÃæJJ?Ãï»ÉÐé2Ïw,`o™¥?0&³úÿtظ¼¿ÕÜáhšLÇ'-Ý=¥®„s”|š NùîiaÕ}˜anu¡2@XÓofögP±$N’1}Ucø×AU¡-ð5ªTÁ[\üB’_wp#pô;wÚ‰_Áó­=£(ølzîQÑ9gˆA}ø=º$7¥­©8J ƒ~Â%Ы¢  ~zm!œ4ÂÅ9˜Ð? ¾]z±Åý)^±¦± ƸgOi<Á5=¦ëìêã;üï/ç:«9B=»|Ôl9šôAµ¼ó»Ð÷Ó;šŒ’ÉÿàÅ£>Ÿñyvð÷Á¿MMÇendstream
+endobj
+1216 0 obj<</Type/Page/Parent 1119 0 R/Contents 1217 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 548 0 R>>endobj
+1217 0 obj<</Filter/FlateDecode/Length 1933 >>stream
+x¥XÛrÛ8}×Wô›4[6%ꮼlåbï¸6v2‘rÙ-¾@$$aL‚´¬¿ßÓ
+§SØËh:_"nÿäâ-ñ>Í°«“IóÄ«ÀV³`JS„6¢1þä’v½7›ÞðvJaH›àž/´IÊ#Úăâ étP…¤£8Êœî²c*3© ¥÷ô17;•JKB'ôѤ*VxPš¾*˜“¥‡ MaH< •Šm
+{¹Éè^Ź±fW¿l~ïèz<‡_›dð«„K¬ÉðK’¨B-RJdì+Þ?¼WÞ‚ͧ_¢ ±5eÑ6î|:Ó 2ù?ý×/±6o ŹÒä$±™üV ë`è"6z§öÁѤ—§ èlJÊJ[Pi%1\z-ó'€uaþÊ8«Ï$œÅ¶ù,»gñø@Êòûk
+ŸUÀæ
+4çº÷ÐgãŠ9©4uÐœ€Kƒ"2á©»•±¨Ó˜Ë½²E~¦Gy†Oâ»ðQeA[^F}ð!øU¢B@%Яæ$Aƒ+·ì Åñÿ’$Î¥¼ÔtÇ£JÏ$µƒ“àrÖ
+”sÐÀ8-­³ai‹PW›,3:IÖÜkçË“ÒºøÁÞ€î\òÁþ'©Êž
+CG‚c(N†Ïiù÷>ƒ|¨HzÇJü*Šœ¥(Rz×u«æ<ä†iɶJ $À!”óH; •²cáLŠœãM~RVÖrRW˃AE‹Ô|up?•ËbpfN÷*I¤î×Ö:´íš¨¡*³\¬°ÏõÂg^Ö"»Ë<S±¤"~¤ E–EæBýâ\9³ƒD2 ›ç"±‡ÖCXÚ¦ ^dÃz+GÑ29|î ¢2páö«z{ùú¡˜Úã\`Çó>u^V øc.œN°‰¶]@òw”!a¬„µ&VÀUÅT¼‰ŽE€ÌBß­$é¡Áfaé$Ó´"fF——£±Vq¯SÑ„tj+&í”heIõa·CæV W{µ@Ïdví=j¶Ô4{ iqze85±\¦Šj¶ý_™zdJ³ªøõC‘Z½~Ôÿ¨Qoãªw\cì )\-¹iFãù¢ª´ZýÝòõ8 1 `Ç[h&¨-ML#ÄnÈɭ駜ºÈ÷¹)5pd/E¤ŒøìÔ@&ØÓÚ è=,DŒƒçÍKzûEãÉZkVK;¢¨0&µQ”Kû¨Š(ÒhúŒWUÂÖá98P9ziÚ·/ï_œ:ÑÚž;LIL Š\c9~äIæÒ«;VƒïuŠÛƒ;Gé=÷7æK‰ÑÈ1FeÕLd%úë®
+ÿ[Hu\¹t> Ïð¥Fm î½{;.…ÄhÑÄå\e!ñAáµS8ô/ë“Ñ1äØÏ©ÁÕR“ñ]'}l¦vÉ]’ æò§,Ùr¿—¿ FÜÈÙ-‰+äh€!*y徨¨àÇmau<BŽÜ˜¸zv"Sù¢@¸tö¹ØnQ¹®geÝqÎ÷ïj!äÙ÷gÕ€Û€1͉«àŽ þghÝ -ö2ﻄöYÄ[/Ùãö|ÜÉú/qŽʵcNPyÆ1­É œ×ætE‡¶]í¶«(?)Ù¾›:HuÝrÕÛ*Ùf¤¦„åEanc
+B±ý*ã•kŒb?-iù\Zg[ùJò²„ýMffdÏ
+mkÊÔª·A þ0 $«fèÚM{,¿DÓƒÙ¨ôi4™àÒáò6UUXèÕr3ü¶“Õìÿ;õƒMA_”<IGϳþÄ¿ëñ4XA{ß²šŸ^^z@‘£BŸ˜Ì¸/Ñ®8¾ñ3Èš«æµáw¢Tm‡÷ë÷·wïoÖÇ›oŸ×ÁÍ·›Šu½2øuŠ0 ðë2Ó?¡×iîn]M+êïòÒFOJp¾.ÿr(ëO_6>¼o¢iáì»Ù’oµ—¼¢·Ñ:Ó2Wø+\ùŽæn{¾ëdzŸµ/éNWã
+Yà
+cYu¹Ì„>ã†Yæ1J oòÌS¿
+endobj
+1218 0 obj<</Type/Page/Parent 1119 0 R/Contents 1219 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 553 0 R>>endobj
+1219 0 obj<</Filter/FlateDecode/Length 2005 >>stream
+x¥X]oÛF}÷¯¸/…œB¢>#Ù}Y8qÒ5'ÝJ»A½ŒÈ!519Ãr†VŒÝþ÷ž;CR4Ý<‹ ²ÅûyιwüÇÅœfø7§Í‚–kŠ‹‹Y4Õîã·Ÿ/›M´¢åÕŸ~.»o9m/–¯Ñk¼{-pwµ^Eëæß}³»˜¾_Ñ|N»~ÖWÚ%ÞüŒvñå¡2'«t½Ú}ÁƒëæAD2Y¬áf—\~>
+G¢’dM!)Q"ÓÆ:[rÆä–î(šj+ñy¨3rG<h
+¡4å&3šÊÊÄÒZ:¡ÓQ¿sG©Ò {žÑd¾Düp‡w‹„hÎawÁ|Ò’Lê¤u½pšhRS… 2dÅ~¹,,)K[Q)gežFô»©Ïq#ÜIB¦tÊèA8lï`Ü‘lqH|üšAª¶”±JŸê3
+‰çòQæ#Â…ÓQÅG~¬ªuD[‰êÀK¬K‘IK(
+[³»I/}oË„»QltJAaP2¥ñk!8H~Ý{ôY†ÀmD;®»ï€Ä'X IJ+SÐ|Ûž‹RQçnÿŠ£Ïh9
+²aöï·ÈçzâÚÇ¡ŽÖù6ŽA€
+(Τóž{·Øb!<lm*´ŒýZVlìª|"r7Id.ôyf†ï$æ„„ÔRÌWf„­ÓTÅJj‡¦³¹Ö[M[z• : àÂ}ir°À“I-+ÁÎiôÁŠwº.vUmLn½Ø‘‡h%Eêd5¦<H“åÃá?÷ Ü”
+—˜ö*~¹¦fÂlÍ@¤ƒt'‰øÊ~3€2È“oFˆVÄ®f{ì¶Ïx÷TrD°ƒ*ÈC ÚØ×™e’¡Ù ”Ñ‹*8¥k9$â–å2Ì$ á 8 ƒŽððÉT §³Ÿ8Œ¾Ì;Ü+E%
+úŸ—¾?}7´œÌçÑl¹ÄDï¯gî·mnw*ŽjŹGÖäM§ÿÕÒ”±¤‚„6XY=ÊêÏïs2Y¬¢ëõæ<+n4mïßÔ*Ÿ,Z/Žq™ÔEÉ(Båü@Á£såOÓéétŠüCedªlÑ;&‘s³¼¢ql=dªVŠøаZ¥)XϤþ·V_=?+½\гю½ò‰Ì½ÜˆÁyî9‡L½"‡ÈÃV¾‡]W‰8 Ÿ~^àºWqe¬IÁ¬[(ʘ>€Pº7Z9¼  ?ˆˆPôÂhàôYþ–Þg»·<Â@·ª³úöv„ŒØûÙ'&7˜‚”AŽßÞ¶ŒDG¶ø:
+ãhPÄ^‡Bp0 á±GU²®¤ü¶×gFšÈU…·Õ„~"äìgJ 1±ÈYE'Úe¢ÌÛ"J®†/TEV©ˆy ò‚P(צ¶@}"1ßüí *Ù~™0ËÍ ?£¡>|Xó½àà÷Ö9ºÊš‹½¥‚„0ç&9O–ff93‘ÄÐã®õþ‘?[`9¢7½ïh¾œ-”Ãü—"ì-§JAš›²¹Ø$8€#Ùz
+|éØóyAôL–×k¾ÿOLÓÄ`kÑ0úø#ž)P2ä÷ù<ýˆGb‡©ë¯œû·7¿»€4®g“Cg“ÛÚLThö5j Úu Ö³Ú8Y6ëQjxø³.¸ —ÅEh"ýg…]<Z®®ÇÍR¾Gë™6/©×ü,}ñÌÐÍó¢àµ
+-s|o!ÊU
+Ç\¼Iüq¤Ç„ïœ{[ ü8,sC¼LËOó\ÅLѧ_FC~§ó·Þjv¸.ÉgÉÿŸ^
+endobj
+1220 0 obj<</Type/Page/Parent 1119 0 R/Contents 1221 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 570 0 R>>endobj
+1221 0 obj<</Filter/FlateDecode/Length 2187 >>stream
x­XÛrÛF}×WtR”S"xEJ~ÙÒ%vT»²“YWj¹C`HLÌ0˜hîÃ~{N÷”DÅÙdåR•$`fúrºût~=P?š )SVõ“>Þì}|{4’S:Œ’U4LÇÉ`÷TÒôh2Lú4–1/NFXŒO¼8èO’ ÒÓd(«ý$Ý=ñêpÐçÝC–PQÚó^y’³ãs¨õÏ’3^…ÚöIÎöOñœžŸŠÞô|IñIVÏÆИŽ†ñ츿ñIV‡c¸’öS±*=•UyâÕËÙQï͈š-–ñÙ„f¹@Ò§YvüÖGÓ ê@]šêŒ]yü{ål¨]I”Õ%žßé°qõlªïM¦yÓEž¿šýÙNAw0HúiŠÌòãùð´Oq½5`·Ü°±Ø2ե΅BS§Õpë¬ ®¦‹•¶¡CÊ攕&»#g©óþïäe*¯D b¬¹UüÄåj¹±^RÿÉØÜm<½›Ñ' èƒ
šGHcñT–tuM›B[Z×®ZÿEåÝá(9Ohë;·¡Ì­·¢iJk ÑÑÛÂ\ßëÚéÛéÏÓÙ÷·ß¿Ÿ};ŸO·>è*ÎçV‡ÊÙùü»ä;
Žï?Hÿ3‡vÐ>v˜éu µ®+ã=0ð¤<m]C¹ÖÕµëÚ¨ i‰lÀ¶š¼ :¡Ÿqbc
-‘ŽK-¥¾¬á÷mÒE›£I¦!!‰×¹ê%‘Ù‹RW Ý,É»2"òŠíÅ¥"äÑ
-ø° z™YúÞË2MêÚU
-5.îüdÍç¼-  œd‹A’¹ª÷ßò.+{6äøÿeZßÌ>Äg]™ƒ¦·—ä×:ó¯i)ußIe²Úy·„ й«ˆº—׫£ó§¬è¦Ãd2™Ð`ÄcœŒ)hÑþ¶Ü'ÉÙ
-í‹iìëŽ=“œÿ[”Ò2Ãã#¼Îu«È6ÕîÉ­Ö\b9=•Ð[²k±ß“ÞÉÃ,$TÂŒ§½TããôÝñ!³,HÖîEO÷¬6mÖkW?c´ÿ}Nhùw-ŠÁña·}ƒÿÚÀdéÿ"ñƒ«‘6gïÞ¢œ¹.”ÂêºÁ®˜÷{tÕîÁFð¬Ö" ø S>ï{¹³ LzÕÂ5!jì²F¨NK%´ªvæH\}
-¤· 䃇æQ—Y5ªV|–MGOÊ›Œós»€ÉÀû,´
- 'mxú>˜
-sØ…Å€‰ÿv.°âΑ¥âë;¬íqN²-0¬àpW®Ö_hmGúƒ¦•žÇºÜaÔöÖ ·J¸É£%——DŠMk<+f#dŸÃŠ¯¼L½Ò70$Z¼:À©± ¤8vz4ž2g°jQn%ÊU$²¾˜˜p³˜Ú0@*Ýle—2¥0”œÒÓrëxIø¯U å¿!œÁ_.ùš„>E>VìËÁ»Á›çF¦’]úï°Ã@Ü-
-¥KóÞ(ºúçt?Ëpšç<ŸËÝ…+¢„c‡Ne…Îî Ã`>j¾BSœÕÈqD±Rwh³|+hË,Çó/.j£—'˜›ù*°Ä_»s:ËÕÂ\ÛñBé9‚‡·a_ht#ÔF[Th9(ç vžÍétÊ=µðdCÚf.‡ô#xšïÌ0Éùx×Í\ £Q+.qãFüæXÍ篾B˜c(ùú³g'Œ2dÍ2l©sÓ©xl-\i04ùÜEø‡ré(PÑIÜ3À¾¬8ÁÍ
-k a'ô£¬ß Ë=mj|êùTþÆÔˆ8^èw
-Š-Ig…5™*ºU ÃµvÈRà
-endobj
-1475 0 obj<</Type/Page/Parent 1372 0 R/Contents 1476 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I14 14 0 R>>>>/Annots 709 0 R>>endobj
-1476 0 obj<</Filter/FlateDecode/Length 2153 >>stream
-x¥X]oÛÊ}ׯ˜·*…E‹²¬Û¢…}o’
-¨ßHEZÀ/+r%nLr™Ý¥ýûžÙ]Ê4Q (Š$Ž)rwgÎœsf¨£”¦ø“ÒrF7 ʪÑ4™â“˯ŸG‹i²¢Û9ÿ¬(½½½\•´ÍnæÉ ÝΖÉwg·‹d¯ø.ö¡ùr•Ìh¾Zâ÷þI‡ÑJ—øÔŸÍ¿¤Øtž®“9‡p½Içô›¦ßG÷»Ñõ§9¥)íâbµ¤]îÛÒ.´9 ““r¤kÂu›|Ø}M¦4Io°ó.ÿK·T©cáHÕYÙæ’¸þ´ˆûŽ©Æ)Q†»ãÆTê#T)-ŒrNÖ$ Êå¾=R)_eIV:rš„¥ªÍ
-þ6Mè©”ÂJÊuýÇ›öb±²ÎÉ’dí à3ö­Ã¥nïuT¯Ò?‘éÚÉŸÈìƒü*i­8J듼þ”Å&išLon¨Kùyv;¥÷ùÄ'&³P*Ïã'm­Ú—çç´90rTœ-(ÓUSJ'©–®°ÎˆLÒó˜FW>ÝÈZÕÇ.¶F5ˆY÷â|þÀ§÷«Àûg¢d?&¿Þ=y€·“,Ëÿ?©ˆ¼+Tý‚ÓŒ<´ey¦½7™s"í#WQgm…"øòÕ$+¡Ê„~ÕµU¹4 „uü —ÊH[ÔÃR2k,(óÞëüÜá«”ÐË­¨ö‚xÞ°T«ŽÀ
-´¡¢=å¶ÚãHÔ¹‘À_!¸mÆ™DY¢"2÷jüa
-ØÝ^ÜbÛ66ž oæ4¦ÿ²®/…­gh%0xb8¬ÃpœÐpQšB4Ê‘THãí«‡nßm¨ÑœI4‰N’
-4`§Å¶ÑÄ£ßj£Žª%ýöåánó˜8X1wä)_•n-|%ö“œNÊ|‘zྷ¬PoƒFCÊÒ"gž;Ïéž•è—I'Ç1m™ñҹ☯è–Sð§¼Ïz|Å×}¾íÏôUewÊ-~62´È <¨E€ç÷
-Ú†¦
-’ˆÌÓÑûl ,¡»ÒjOÏ,ºø ‘°•/`ÒÜ­ ˆ£÷A´VX¾7¿3ÙÖ?ZL/f$pd:ùa!à‰6Rcõ«4ƒÔŸÇ»xÇ{ˆFîðô³u ^hòö þ •½âÖ™kŒ( O.0‚vŸ©Ö§ç3^¼
-Ø>ܳ»±"0°­ƒR¬m‘½ü Ö¹P_7 ='„賉M§[h Ý–ài† óBœV,?U£;Cø=¡Ç…èÐÖ^¥¢TÎ÷¼"Çt EUð7¬ñ“\¯Àü$n#›u ÞtÿõË·íæñ3ë:¡£9
-^k”û*µc²g®vhÁˆÁ¸‚ë 5³XÚP”!Úk[§³úè©,RNÂÊN3•Î1P²Ð †¬µl¾¡#òhTI,nd
-a^ÆÔ…™ÇNdS
-endobj
-1477 0 obj<</Type/Page/Parent 1372 0 R/Contents 1478 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I15 15 0 R>>>>>>endobj
-1478 0 obj<</Filter/FlateDecode/Length 1966 >>stream
-xXkoÛÈýî_qᶨØ´$Ëz(
-?·ÖŽ7Vš- /#rhMLrEÿ¾çÞáЭ"ØM@âã>Ï9÷Ž¾ ¨¿š é|Lq~Ôú4š ¢¦|â_©)=úFƒI4ôó‡A4¥óÑ9þÇ[g÷ƒ º±ô›¼qMº¯_ÍÎîF4Ð<eWãé„æ Á]¿Oó¸g*¸‰µù®Ý mV&^Ql‹J™ÂQµÒô¨««ûÏT¨\“MåZf_lAN—ßuI•¥Úi2…ÜJm™«Š\àÏóí§ÿÜ~Š>Ì¿õétpŽðçIo³qftQñ+û+t\ÁŸÅ¼í-Ÿü8‚§E/±Ú‘*èùáÊiçtU¯_|À•ä ÝqxÿtýWr+…z.zµ3ÅKc«‚kØ‘
-A.lB&%@_R[ã+_ŠQð¥<TrÒ Ï…Äü³ú‡ŽëJ'´ÜJ¢¾¿]¦c^Nv®Sb\iZÚ\î¡–;±¾Ë~ôóì.¤Ã]á†ü¢«û"µUZâñ¥[xn! ñß4det)WÓÃ÷¹ãI
-K TØ*ò:^uœæàe>2¸–8¾˜bö{C/GŸŸçHÒ™¤e( É11`~eËm[ê
-ÄÄ̕㉰,Ñ)]vZ.œFý‹YÓwðŒ¹¦(Õô1g¾Éž«WQ4tÌï •¸¬É±xü]žIŽ´BKÆ K+%z©*l3‚m˜õƹZVÍJã{I†ö•Õ<@J7e“"ÝXA)ð^•6Ëð&0»Wh[d§ûZƒIëÁP6µÞgìNþRXÞz’ ö¡l»oµYÛ¤m¨0*A,Í:^&VP¬8ÇDï¸zþ÷å§ÛŽ/i_Û3äXß{óñáòþ±k‚ÛÝu% a÷AG0Î"Ö Y~¤ÓwU/Ðl€2)ÃR•µ…$²b4ëÚe\Õlƒ5}OñA`gÀì32ƹ몹×vÏ‹œCÁ2$ú>{$s.;c£ÁµH…T¹/¥2a¶ »Ö¬ƒ¼€2­n®#ú²‚3¸r…ˆB»¼1÷Í·÷ §:>ýPc‹ŽÑ½è)Yºþ‰ç™_xJ|à²qÂ=ˆõå] Å\­(­q…5zñ!L†V×õ‹µX­8Bg#ú/¶[Ù:KÐÄ\çKf'ïô\8(µÔ±Ô/ð)wpQ°ó—Árï¨ÁX7¢»
-–¤…o–Pmä uDT¸Ì·4ú§ÐäX&|£îܬ,0’ž b½fåc²5è‚"Z«¸ßUf®3o-l„q<â›uÛoü ÝñË4¤”g‹?í±d{aÆÁW¡h¶ƒE¿¯Ãˆö!ã
-ƒÃ­7ç¿sæ ~œ‡¨=9®³¿]¼ªŒW·­Œ¼œPi^VÕ¿š@çahñ°‹¹¥ý$«Yƒ1‘Ÿ8ü%:5…ðÐõwܽÂ^§8r…:BâšIí·^ûQÙFmw0*Àh4¢ Rµ¢ëCk–“i3QXK§Ó!ñÛI*ÛÉóåÃÕ%=•ö+‹ŸQâš÷ 5RÕÁ¿ÄLÏétÒ—…äO-´£É(šŒ§~]°áÛùÑoGÿÑMÇendstream
-endobj
-1479 0 obj<</Type/Page/Parent 1372 0 R/Contents 1480 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I15 15 0 R/I14 14 0 R>>>>>>endobj
-1480 0 obj<</Filter/FlateDecode/Length 1498 >>stream
-x¥WkÛ6ü~¿bà `ë,ÙçG€~È¥I{@êæá -â  %ÊfO‘Šsÿ¾³¤(ûì4 ÒÈ6ÉÝ™¥>Å4À_L“„†cJ˳OO¢ÄËq4¥ñhøÇË›øŠ~Öôúl èj0‰†4šNðœà-)ÿêþáU]µûGûýÃáðt?f§?\/Î._Ì(Ñ"Gzã)2ÂòÁ€éÅU4’ˆžé*Wë¦VéŠn*cë&ågó„ÞJkUµ¦fKo´(ùñ‘5½ªu®
-i/þFˆ1Å1‡H’(ÄÔO¦Ñh˜ ÖÅü÷Åó~Ѩ]tÑ´m!Ól·º¶¤ e*Ïe-+K¹®éUÍþ$Qeü4_D|R?Dçq³‹k‰Å{MÚÃInôŽ¬¦´-MRÝfböH¹x‘ySðZ#¥Ûv“ÒB!Wé€úñ FHUn Yržv# º(…mji\ŠX—ŒÑ~¬ó§µg J4—–QüEÚ›*× Á§Fœ¤ù0,ª?b|ZKw<!Éú‘¡;:uÍŠèW½“XÜã ÎA†Hf‹- UÚÒF|f té°´èº<=˜r%‹¬Gº*î\Nm]"¿¨eD‹ ÚUJQ¬ö(º¯»Ë;P&˜¥R+3®m%¹Oª:9>SµL­®ï¾å|Úq
-äDÜ
-èžñeÎÀznùDz1öã5Kq+ÝZ'I2[™*Ð8 ½=hªm¤XÒÉ*xh2‰¦Þ©ß·iAÉX4ëÙ˜ú´ƒ²_°©jX ×Ç9á„⃻¥¢‚ΔSƒAUË)ïlGÙwÈ08å•´;)+¨m Ézüï/b3…‹®½é¯F_²ËÇ1g¢ž5˜NNÝÜHf¡f/+ŒÀ + ›‘¶µøf¹4‘•ëÍCߦÁC$VƒcVÖ½uMßöæjGá¹ú‚J aéa%]g^úƒxÏN×·†pÀNEÏIe1
-´îÁ1¶ /òÉ¡mH˜U×w-#™~û¬÷IûêN½|Ûø[`¸…¬,L/7;NÌ=ÌÓëÆÒN(û€UÇt@aÄãâÖÑŸ©…s:õœÓ7ì r«÷žÆùÛr©zÛ:éý#
-UyRÝsZ¶"@Vq¦áÎ4±SEAYcn0 ŤPu ƒé7«6`wÐ}Àˆ]EfGêÒ‚1ÛMÃsî–m1JÚ¨,“Õòññ ã.ÐNv¾¬Ó#pvìzD.kQ€‰Ì1,‘©À¯œšWÎÜ5M±à[ —@Ó0f÷¥ÛäùQÊ:÷3”¯Bí8=ªŽÍ.IÄåFw/âÛ ÷;¾3âšÊF¹(ì¼ÕE¡àŒ@ñ(öÞ!Ýlp½u†{(×7ÆðÐùÅá½ô;Mã/Ø>9 ä@)—ÁJcTzu÷ÝŽ$˜%`¼»‰»u ÇaÊ-ÿÅQÅ섶W}±Ÿßÿ[ÓÖ[ã1^h¦C¼aÄÑ0ž² p+»~Êï cà&mø¶ì®­œb?léO¸;„+Î}$àed4E“ño;8s4æPÏg¯Ïþ •gÑendstream
-endobj
-1481 0 obj<</Type/Page/Parent 1372 0 R/Contents 1482 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I14 14 0 R>>>>>>endobj
-1482 0 obj<</Filter/FlateDecode/Length 1947 >>stream
-xXoÛÆüߟb! H´$K– xHêWÀh󣌾‡*(NäIº˜¼côÃwöŽ'©tRM`X6ÉÛÝÙÙÙ¡¿œi„ÿcšOèòŠòêì çÙ$þ–?Œ³kºšÍ²)_¼¸OéÖÐÏg£lDWÓYvIÓë9>Oðe%­ÏÞ,Î.~Ñ -Ö8äê
-ÂÝ£-òóÒlŒ¦Zø-½¢%þ}÷ÓrY[³V¥tøéþÅâ3žŸÒxÌL&Ùd4¦ádžM/'8éüŽ¶âQ’6žò­ÌdA»­ðÔ×ÒSã$]lM%ûTé¡Þ-p]jêÅÈ|±GÊ‘Ãí‘X™G™Å 7mÐaŠzy™]OGq>Ë®³I6ÍèW¥ ³stó?ú³¦Ò7õ_Ó!ã+ †'åà‚3³´VÖyB"Ž”æ䎧 ÈoP·f·¯œen¥ð²„T^SÒ:ê}ôÂzz+uÓplD_¢[ˆØ»•îÁ›º7 rÜXQ¹ ]Pïô[cŠ^F‹­V…²2÷Æ*`Å7 e)7ÚKííTYÒJR%í†qVè§Yš\”¨HK `qnFùËårñ:í1C¡E%
-ÇqøÍ¿¯㊒Pý÷¥
-C`,½U¹5ά=µ—ýÁ‘†'€Ž,ˆhPÿ'³á‘CÊÐÄ[Ã4í!ÐPÃ5ÏJÊ@}°ªvOx ‰ýcÝ`ϱG£®à¯0óÿ䓈áp2£ál‚=u»×<fGÞ Ž½¨
-ô8(ƳbSÖȳËÚoN*§wX˜·|?¨vdrÚaa" e,n¹Uµ?¨h75Œ¦M'~dY²iì‡Úùýf¦ÔO8„>}5¤á]P‚†§¡£a§hA+…ý¸a‰‰Œ€àäÕüefâÚŠB#ÜvEª"ur1Иž5öÁ‘fÏ©ÃŒƒ4®ÌSXCAâ~cýÀ4D ÉLÞOÐPç¥(8§Ïë|ç±Oàú¾–,¼Üu'ª !ãÝŒGRÀå9Æ,ˆ3n´éÒÒÓ#Ÿ”óQVRXØ‚rR#'à€hp¤ö*ç­~‚/ƣ̀ÇåÀ¥.eâë0¦ñþNè–x¡*,׺Æfîñ˃°!bƒÓâ}Ñ‚ÚmÚ{t;àÒßÂ)­$ŒŒk‚¶¯›²ÜÓ£(Uí #š¸xsÐòX¶âµS…Mï/póáX(ëóØm`€VOÂËq¾à– g´\KKͱäð© £ôý§]ÔÇ¢ï³Â“¼ó(³w¢¦Fþ­ã)¢¥„ °Ä›²`c$VðkTùÄ[$æqpO`%òê—מ\-sµV¨´edëPÙ÷‚PwX`
-éß5 C`ªö5mjÍ6hËÈ…4ìèÓtAÖ#r­jáLi€TÁ[IÙ8™ð¢ {‚Ã4iùtx_ ½ß6™Ç !bÞ -ÅîÞ°žõ Ü!ŸøÊËÖ¯^üpݾe¯ðgƒëKºšÏ²Éì’½ÝÇ×oß¼f?÷™Íý­É›
-ËRðÛƒ;L ç#þ«BûVί
-kµil¸‘î`
-l“‡W¾—ürîp5ýÒZý{^ÈÂï%ÁìMçÓl~u¿VàÌéœCýwqöóÙŸÎë¥Ñendstream
-endobj
-1483 0 obj<</Type/Page/Parent 1372 0 R/Contents 1484 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I14 14 0 R>>>>>>endobj
-1484 0 obj<</Filter/FlateDecode/Length 1975 >>stream
-x•W]oÛH|÷¯hX¬H´¾,ɾ'oœìgû²í‡(0FäHœˆä(3¤ýû­žR”¼ûp âØ29Ý]U]Ýóýb@}üÐtH£ ÅùE?êÓh4Â×ñlŠ¯Cü3’Vßi0†þqþfÍh8æ¯xëêa0¦{M¿_ü2¿¸ú8¦Á€æ+>r2›Ò<!ÛïÓ<¾T…-¥HH¯(Óëµ*Ö¤
-ªŠD*SI_*+M—¶ÂÚ½6I— U|¥D ¼€ßi-I‹­ŒÞÍ¿]ô G'—ƒˆøgüØŒ!>2UáN5r-UFò‡ÄzmDÞ%Q$ÈAoÀ-¿Ø§Þpù½ßþýá¯ÿy÷øút÷þ·‡ç‹Å‹*½·‹ÅûÊY”ÿ•Æ*],ŸŒ^©L>*[žsÐíU–Ñ
-ï"á5sèÒJ’"NÉ ,ŸD™Fô¬KéÒŽuQâËh•©²´‘Z\fj#³•š–Ò!€ÌëŠãÛÅb_gŠR93äÌ
-‘ËÅ».Ÿ\P"3¢ð¡­ø.;¦ÂÈï•22qY:¨[}ùðC•5¶¨ÜˆÖækCÊÍЃ9ô¼\}œY8†ú×Ñ„¡~¹ûãùáùW®ã(œKê¡6À$}¢,NéüùÅz  9 Uh‰Ÿk—³¸tнsÜþ?Ø„ÝðÙ9)&˜¥b'AêT¾Õ¦E ž6Yd„\´ËE”`7¥ÞXWEHÍN¶¦¤\UÔfæŸË=-0FHÐRÄ›jËr^N5è]Nê,¬
-Þëšs®-zžÄþtRp—q?øl?aøû-´ÜFÅrÔ‚7@ŠMÀ—Îڧ™ÿp‰‚M`6¢Jb‡q¯;ûÀ$Ù‰ Zöäyø]ÂWoÂX`Ðf~d\G³hAéaèr/ÚlÐé%f.£>‡>Œà/ ¦pý0^Öu+pÿ‡5ÚˆÖ¨NȪÃl‰h[„œÎöä‹AìÖª÷d·2V+ËÔèj:[9é¾­€Ka ‡Äp ûX^†Óh6rëË—lg4è‹j}3ÅHTÀ„HÊÚ‚]gCQ üqÑóªZ,Róè{òecô9ÆWÐnæÒSŠz]»¡ŠX
-à 8Ë)˜W²ÿ¼9cL˜L a¾¿¸Ø_ÏP²©EªÐ^‰†F^ ]¾Âä4â`·*˜¤¥ô Ì po#Htì œÏtvðÛÚzl¾OQ°Êãüøp^‡jnietÞÎœ\®a—yK ”€q·W௣)ð“/vð,±Dg±I0Žu+}
-;ÙmmĉQ;Ùauá]›ê*KXBl¨¶“ÞvΪ ®£Qv ~;4fó.â¹UÄ|«
-ÏLÓ‹…Üס™¥Î±‚Ú@ê-UúµŠhC´^Ý€×f {Eé% áéè»ϧ2ƒƒbÞ„ºyËa©0ÀKgæY™ŒnfuC‘+@` ߆…a/æíÛ‡a:»0%žÊL¸U`UpTç¼{£°ín¥É•å÷Zß׎õU•egáC¾@ÇMNžŠ¬¿Pí4ì:o{våZ'ôW§Ö3>á,vƒ¨ëE‰[‡Oqm:IªÊEQaNC­+E
-*¤­r¨fYyxÎÂ3‹¥ä}šmÑ;=1D5‰‡.”º4¸I'öo 8&'® ¥¿¿¹Æ®Â´ñ΀„ ȺàÀôp^”X·NýgÄ¿u9B
-¼ùcä0žÇX¬±”Ú¿jžO?ö­Ý~šÖ´7työø<,å|# ;%CS`I‹è¡lèÜm·™
-Ãà^”Âo¤®W±Â·Ú³š;÷þŽÀëìóq³ýìîO¸„Íîá7Û“i¼­ÌVŒy¸{
-endobj
-1485 0 obj<</Type/Page/Parent 1372 0 R/Contents 1486 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I14 14 0 R/I15 15 0 R/I14 14 0 R>>>>>>endobj
-1486 0 obj<</Filter/FlateDecode/Length 1861 >>stream
-x}WÛnÛF}÷W M
-E`x$U»×øZêQ±Ûu2C—àîB®º°†¿Íþ2Ï´sÔs—ú#½·=éÍb±ÇÂS¡œ;›8<>j׫šÑt|
-w?,Þúr¿¼ýsùg¿zÍEk;W¹¨M×íø–Ò"RI4\„‹Ð!v±lÞ±]—@)‰èC*Р!ñ?¤Á¡Wi–¡g™qxÀuF'êB â˜à‡ßÉB阻\/8Ã>¨&)úG=¡
-6ÀµNÁÓa˜Ò‹9)šŽeF:Md÷Âg«¿–Á„ÖÇnH…¦qAí{ýܪÃ(6©;vÝQö,bëÌ$µæè€BÍ™7*÷‹£Pkåcà¶{Œäk®l'°Ç}éü# ›ÁzKŠŒ=u-ºý¤7•åóúD*äqñÛU5Wú]ÕZ4‰æÑ(šFô9Í!+Ò«"ÝN{$53b‰.‘å†á2¢?1‰
-V[r…ŽÓÍQ”)?¢x~‹!kü0Kw˜´ˆ›‘àÙ!
-d¸˜î×0S|à$z/v‰M™%µ§`½ íi0bB|?ŽDáâ
-­þp÷®j ³Ì ˆšÄ‹g·¡IÈ•Ea,ÊþEEšNxó`‡ÁpžEô°U2ÒîÃÐt(°?hÓ竉ÈBGÿÇÑ TbR±]ÃÑ”çæ½ñÜÂ}ólÊi^LM[
-½zÍ!ŸØÖL>”/nT™ñâu€ ‚)³ÂŸ_øù+âjOÀ 2˜{h%¸[tPÙf×éªÇÆDnú¡f« ]óŽÔ£tÓæ*Re66Ñ€?±Ð’wËŽã¿à…î‚‚u9Œ×€d®÷Kh Çí ŸÕ¾È
-BÒD6úö.!<óé^_°$bF¡Ë0[Ò b²ú¡"²r³>Hê(I®ùâR•Ž†´Û{,˜Ü¹ø¸¬ jì0˜ Ë:®Jihz>nLmk–'ZT4A$€Û¨·ŠÍ: e:n±­ó,öô˜í°R[•» ¿¨hfê©þõV0¯Êp<ŽæóM§ƒh<œðx¸¾{wM÷ÖüË×­—¼éȸæ
-endobj
-1487 0 obj<</Type/Page/Parent 1372 0 R/Contents 1488 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<</I15 15 0 R>>>>>>endobj
-1488 0 obj<</Filter/FlateDecode/Length 1645 >>stream
-xWkoÛFüî_±ÆdZ[Vü¡€_iÝÆ–cÑ0
-(NäѼ˜ä1wGËì¯ïì‘’iÆE‹"€#ñq»;3;»ú¾3¢!þèhL“)EùÎwãæ*3šŽƒ¾¹9:¤sM_wNÃýÏŸð,… žÎFÆ4 †Ã!…Ñîað) óùÕÉåõŸgóëðvþ%pÏŽŽé^±^[ºqP.TAgºpFgÃo;CÚ*Œw¢…ÈW‚¯î>¤ÎOh<ÆÃíMFÁpŒÐñî¶V­²šæ•‹…“1]á¯QŸ·ÿù }sGfÁðð¿¦Ê’(KYÄê™ÖÂ’6êA"ÃI¢r©68iUÓo:-èW
-¥)­3‚tB.•Mj¸*rEL8LQVÅx)•F¶¥Œ&ÀÑm¨Ô–ÓruÐT4Ýäµ)i|Ì&þñëyxAÇÍc›ôw)DXœÓ»×°eÒ¼óI i+ÉÈÌ£à4)‡o‰4„ϺdK©DE”K<s-\ª,œŠ„Sºè¥íRá(UE, SÐâê”bOè}Eò°T…Z¯ÃòBš'$1 F´6duæ¡}x¸²½ ‘ÎKQ( z
-‹«HƽpW*2ÚêÄímÑY‹rH(V`\­*§Š©²ñ1‚ä'ÐBÊVð^è̹|y™¡ô¦zÝjˆñ-…ªäÑx32’¿¼ m_ °©`qþC"d£Tæà˜^X0ZøRºôœ\yIrëM›ÖëÞmÈã,WœœuhŽnI*Ž@‚ÊŒ»8Q™ôœªÂ°bÖ—»÷óÛß¹ßÝÐZ›G¼ÏJC½Ôšç—¹z.6xv
-|fje`-Jœ+p•<ʨ*uÐ%šQDnÀ·þc¼Ø Ú·aÉL»´±>Œè©ù–‹š
- @Æl ÿ£ß¥AÄF˜MTëqæÏFúR
-»¹±wlÅ™iL£ÆõYÅäs!#ÉsY£^NN
-endobj
-1489 0 obj<</Type/Page/Parent 1372 0 R/Contents 1490 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1490 0 obj<</Filter/FlateDecode/Length 917 >>stream
+‘ŽK-¥¾¬á÷mÒE›£I¦!!‰×¹ê%‘Ù‹RW Ý,É»2"òŠíÅ¥"äÑ
+ÓÛKòkù×´”²Çï¤2Yí¼[ÂèÜDÝËëUÑùSVtÓa2™Lh0â)N¦tÎh[í“äl€v7á);~@]€"oh…îÅ,ö@õ
+Çž9Îÿ-Ji‰áq‹Zç²Ud›j÷ÜVk®°œžˆJè-8ÙµØï9ïäa&aÂÓ^Šñ1 ïèIk÷‡¢§{R›6뵫ŸÚÿ>'¬ü»–?Åàø°Ù¾A„m`²´‘ÀøÁÕÈš³woQN\FauÝ`WLû=ºáB÷ #xVk‘ü„(Ÿ·½ÜÙff‡½jáš5vY#Ô'%LZU;s$®‡>€µ¡'ÊDëÑÞƒ-X†³Ò³X”¤u©•Ç»…‡èxhŽ«Æä¼Ñ‚ižõ¿‹r£¶îUZÒåKmàÞ• ]á„ŃödÖÁcÎÛr‹Æˆ9CóˆãVªŸeÓÑ’ò&ãü\ã*`2Ð>æ
+­BÃIž¾¦Âva1_â¿ ¬¸³@di…øúk{œ“l +8Ü•«õú@Ûþ g¥ç±.wµ­uÃnòdÉå%E#‘bÓÏŠÙÙç0…b‚Á+/C¯´ ̈¯pj,)N}§Ì¬…Z”[‰²D‰¬ï&Ü,¦6
+Eó[Ù¥ i' %ç„´ôC„Ü:EþkUBEùogð—K¾%¡M‘ûrðn0ã湑¡d—þ;ì0Äw‹€‚@iÅÒ¼7Š®þ9Ý2œæ9çruáŠ(áØ¡SY¡³;È0š¯Ðg5rQ¬ÔÚ,_
+Ú²ËñøÇ‹‹Úèå Æf¾ ,ñ×®ÀœÎrµ0׶G¼PzŽàáíAØݵÑZÊ9h„GsúrO-<ض™Ë!}ÇžæÇ;$3 r>^u3WÂè] Å%îÛh‚ÿÁô£YÞüÕWˆrŒ$_~öä„I†¬Y†-un:­…+ F&ß·ÈÿQ®&:‰x{fØw`>ç·Ya ,ì„}”õ4¹§=O=ŸÉÿÂçÀ ûâÀŸ$˜Ë1veß78+……äÚÁÌÆÔ¿œd'å_àz©-8Ó$`2é>µÇ ¬H%]u¢œØtVX“©2¡[2\k‡ !À¥¸²-±øfá³Ú,˜k1b'2„#$V³©<kðĺ ²å,¤†>Õ¶œ zP `bÜàÞ/ƒ¶¬á1õz\¦X¸Ì¾,é¡k±*º\ðP£!8عÀ§ D0תÄ[¾wÂ!Å®ë‘ôûálÉyÏßíÀŨdœš÷×Ùn¤ø,vžâ³ãïB·—ô¡v¿0ñ]ï.XråçãIÒ?K©;éŸóþOL“ñ>)œÌk2“ðo2>‹_¥F)Kø~vôãÑoê†endstream
+endobj
+1222 0 obj<</Type/Page/Parent 1119 0 R/Contents 1223 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 575 0 R>>endobj
+1223 0 obj<</Filter/FlateDecode/Length 2130 >>stream
+x¥X]sÛº}÷¯Ø·*‰–dY·vì›z¦vÜH´3~HDL
+ ÜÕ{‰:·Rø1‚»DqœHTJ"3_¢ÖŸT ÙzŸ€-9‚ပ‰™RŠ¥N›Ó_.éræÂOºôª˜ÌÉf¹¢ÉÍš_þ¦ˆ‹¨
+ØÝžíbÛµ­6ž?ÝiDÿeÝP [O ðJ8`ðÄpXá(¡Ï £4¥h-¤#©”Æû×
+MPì°èpzc*|y2ËÜL±ZX«KÆcÎ&Î=PÐ.4TD¤ž‰Þcc` ÝUVsxˆòKPùÍ
+b( |?h¡³ÒÀî½ïÈvþñÐ^1#‚éä…€'Z<JÕi.N=íâo¹ÃÎOÖI€z¦Éχl°
+¾nx zNÑgûM¿Ð–º«À Ó^6Ë3qX±üTƒÎ mà÷„ž.(Dy×x•ŠJ9ßîBˆ8Ð3UÁß,°ÆOqvñ“¸l*Ô%ØÒý—Ï_·OŸX× =8Š‘£àF¹Ç¨=“=sµC÷E Æ•\O¨˜ÅÒ†¢\¢ý`m‡âô.픥QÉIXÙk¦Ö†IÄv–íÁ÷rD*‰Å àÊ3÷/å·3úc€©Q­cÂ
+·0ZÀÁ ±PØ®Yè¯0ØFÙ0 ‡n.²Záfe \wìʼnl
+ Ì<ã€:5ß<Xó€W—u]«2 äÈ85Ç °àÖï£õ%:#X ƒ?ÀwG)/yÜ P‰Lx “lë0? o2§Ÿe†‘eˆÉ)Ÿ:–ÔVVvÆ×SÕB·¡ ôcÜÕeæf=$`°ºÄyé–¾w
+©öÍÍ–_4•´Ò8–»íAãôèüÑ.Ú"BE¿Èúõ»y-^ýøh¢ýYF\徧abJ9(á% ¨ý),í‰n:ðó¢¶{á@~?!™Ðà°c”}/HVF–¦‰ù1œŒ™"¶HÔ'“öÕi4]<¾žåšðJ Ñõª¹ï3•€?ÆFÏá×
+endobj
+1224 0 obj<</Type/Page/Parent 1119 0 R/Contents 1225 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1225 0 obj<</Filter/FlateDecode/Length 1932 >>stream
+x•XkoÛÈýî_qᶨÈŒ$Ëz(
+?·ÖŽ+ÍЗ9´&&9ZEÿ¾çÞáЭE° ˆ¯û<çÜ;ùýdHüÒtDçŠó“A4 ñ|i<›â÷ÿJM©<¸˜FÓîý«ÅÉÇ»1 ‡´HÙÆd6¥EB°3Ð"î™
+ßÇÚ|×®OÛµ‰×Û¢R¦pT­5=êêêþÓ3*×dS¹—Ù[Óåw]Re©všL!R[æªâ—øó|ûù¿·Ÿ£‹o'g:žG#8ï-`7ÎŒ.*þ¦`‡…Ž+8´¸Ï½é>Á‘#¸Zö«©‚ž®œvNWõæ·åÜIŽ™ÐìqÏáýÓõ_É­*µìÕÎ/­
+®aÇGˆ…G± Ü9MPì#Aûˆ¸>__]¥¾ æ_¥.¥þ½Ö®
+Õ,uUòJ}öˈ²•wœ¤-:»¸4›ê]Xç?ë°–Ò?–OŸ æ´*ã5B³”áÂ&dRp‘Ú—|+FÁWøPI¿ Þ ‰ùwõוNhµ“D}#ºL+ ¼ô÷îSb\iZÚ\ž¡–{±¾Ë~üóì.¤Ã]á†ü¢«û"µUZâñ¥[xn! ñß4dmu)WÓÃ÷¹ãM
+J÷ª´Y†/Ùƒ
+@ÝØb—¥ÀcÑ
+–¤ƒo–Pl¤
+endobj
+1226 0 obj<</Type/Page/Parent 1119 0 R/Contents 1227 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1227 0 obj<</Filter/FlateDecode/Length 1471 >>stream
+xWkÓFý¾¿â‚´b‘“×&Y¤~`)´H4¥ÔV¡‰=N†µ=Áöß÷Ü;'ë”vÅ®vå$wîóœs'_Ά4Àïf#O)ÎÏÑ€.‡ÃhL“ù Ï#ü•šR|0ŸÓá_¹Á‹MÆóÖt8ŽfÁv
+¹SfcVD¿Ú½†qrsŽ2D2;Ìm±º¢Â:Úª¯Ü›Koí¦®OSjt–ôÈÙ­äÔd°µ9òÛªRG´Üb\¹VE å:Ñ}ÝmÆ82,;pmkÍs2ʼnûÄ”:v¶¼ý—V.–aG­|÷ì·×vè¾}ó<ô²Gû­‰·
+À¦ùráXSºŸ‘d‡dd$}óyú‘O h9]FôNf½U,Ì{”ŒzSó T¼”£‡…îJ*|>ñŽøÌÞ–7ÁÁ^gYOv¤qØÖö ‚ØYà€§úwrhæÕõmDFÝ!ëCÒ¾ºS!ßÕþŠ€6¢¯|L(¬.Y'Ê–éuíh¯Œ{Àdc 0â]q#¨gDÁOKšSyúQËʃ²1.î%^’°¯ó×^<¢P›GTPÝSAB N<Ü_3ö&Ë(©ÁÒ€Æ1FLðÃ=ƒ
+endobj
+1228 0 obj<</Type/Page/Parent 1119 0 R/Contents 1229 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1229 0 obj<</Filter/FlateDecode/Length 1910 >>stream
+xXkoÛ8ýž_qa`à°ÛyØ)P,úØÅN»u03Z¢m6©!©¸æÇ﹤(y”¶Xl‹¦IDÞǹ÷ž{ä?Ïæ4Ãß9-tqMyu6ËV+ê¿Ø=~˜Ñõò"»¢ËÕß/.ñ­•´ÃÙnw_ÒÙ‹«l™Îâ|8úr}vþfF7´ÞÑ<»¼XÐ5Œ]]¯h]3ZçOJ³7š¦’ôœ6øóÓÏøw»Ùdµ5;UJ÷týålFÓ9"ÄÍöB-üáäB:ËWùüù›KšÏÙób–-¯ohºXe«ë+6ð–â^’6žòƒÌïdAǃð4ÖÒSã$s4c*Œt„ØÞ¯ñ\jõ¡ŽH9r8.‰­¹—YtzÓ:.Ùb6‡×›l…Äáõ¥ sttó+}Œ‰Ñ'é›úïÑ"ÏÅuv.°OÁYÚ)ë<Á¿#¥9¦ÞÚ„ü…PáhöúÅšƒË­^“!—Ô…´ŽFŸ¼°žÞIÝŒ& Ù‹,„8z-Ý7õhB#ĸ·¢r#º Ñ{éÆ£ŒÖ ˆ
+eeîU€ˆ e)7ÚKíUYÒVR%ížáU(‡Yš\”¯÷K <a‡‘`þl³9F¼6›¾´ …h
+ ¦º±ø CÔÝ
+ ÷;ÓÏ„ê–
+~u˜Òx~àºm¼vk]c±aÕøÍÓIX1AöÁañºhAíªp
+á ¶:Æ5ÚwMY>н(UÕ #šzñ¦£ò˜¶â­S…E¯q¸3 b}œ‹ ÐVâ&Ç‹ÞrÁFÛki§9Ö€ì>%Ô3ß?Ú=@cìùñw3<‰;, v‡jjÄß
+ž"*ªIˆ
+“táÒ †A0UûÈ*5ÐfëmË…È…4,èÓtÖ#r-ká¦4@VÁÛJèØàøüͪ}Õ_ã‚Õ>.˜gË ~qýôâÝˬ®¾°Ò~mò¦Âêü*Å©NÓér†ÏŠ'¯ŒÞ©}cà z‹Ýl›<¼x=ãWdâ¯é?­à¾å½ëüv4×åò¯øøƒ].ÙÇ?×gÿ>û/¥3’
+endstream
+endobj
+1230 0 obj<</Type/Page/Parent 1119 0 R/Contents 1231 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1231 0 obj<</Filter/FlateDecode/Length 1889 >>stream
+x•WaOÛHýίXE:H‰IBH÷‰R¸¢Žks‡N¤B{/±½é®ofíÄ1ýr­ª†`ï̼÷æÍ죞èâoOŒúâl(Âô¨tÅYw Å`<Âç>þY%æGŸ&G§·Ñë‰É¯ Ç#1‰ïvÅ$<~ŽU&òX;Q8eñ ?fê=‰Y8¡³6}µ$b¦Dn’ßÈÜ-.t¶À³¢57|„˜këðˆNU+8™¼!ÇN úXg.W2f^µÈ"^¼P"m±’ÎmŒÚ"2©ÔÙwi‰XøUÎ åB¹R|zÅ¡˜è¸Š†;½³ O_Ù‚ÊSÀb¡"ê]á
+Òsõr¦Ç 4ÞÄíÿÁ&Ý’ÎN…&2€Y,×
+¤n…NWÆæ2Ë¡| -2B.†sÑ%¸enV¬ë¬”HÅNÂ.—6©ÊŠ ÎÌ!ÿõr Lå’’b&Ãe±¢ )/V \€’j„¥ÖÍ”ŠT4=iR;!?à–ç
+ O5Ÿg:ЪԬ+:Ê‚´èèŽÉ ÉXG<ÄmÁFÊ‘§'^?Ÿ¯&%;Ú6’)eºg½‰ LÿS|¨UÙj‹V¦òؘˆ>îÁkqO·pu¸kAÊ ŒÅí$9ºð¾p¶·ŠJ¥NI‹Ž¬<ŒæW'‚§çûuBô,ÕNˆVR«5ÜAhø²Çà;TðΧûà•
+àl
+$Ê—
+¾ee¸› 5º2 Ý…«¨H¹k!¶Ôd4=jSƒ*¦.SÖÒñŠ<À+­f“(„†€·Š0¤ÑÛÆ$xœ »¦Yg
+R®£â(êZàD¨fÀ—NÚ”@¸HÃ%0Q¥ á×Ù=ÀüZ&²'ÏÃÏ ŸÞ^ì–“NìF9i)ô³±KôwŽA+A—"î§D g^d¤ßb<”€‰6†[üüD†¾ÑvZ‡ÿ‘Ø0P1ý”<4ê%SâÄBð‰í(3áV*Ôs ðòØšb³}ôÜJ›0{-Ðïý.6–þ(ŸñÎò’,ÃDôº²X\Œ05ࢡ¼2^îgiŠ?Ü/¦é46)Íû2cÏY¤]ˆî¦™T.o(ÛªQÑL… ”ƒd`8ŠuKkXŽÞ‘1š2ŒâyË/ú»p1“k´Qd …×Ìä¯ð2ãx[©iûTFÍ”o["€:A‚}ßà|îŸÅþr_«t£B¯
+=žøŽ¸—k8•œ¡ŸÈǪžÊ=ì²rßÈê5–cˆ ïºØØ«¡ jTÛŠ/[œK¯1( û½]¶ãî]Äãõļ™gf×™ÚT¡‰¥Ö¾‚Ê6ªýUú-u7 х輪<
+£ ¥Î,®BŠÅþF€c^â:
+º/2~H8ƒlÑè  ®
+´ícОŒ
+ëÁ.·¶àÞs—â[iØè_Ëþ7\åtà`4Fñ¿ÀÆôÕÍä诣ÿ
+endobj
+1232 0 obj<</Type/Page/Parent 1119 0 R/Contents 1233 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1233 0 obj<</Filter/FlateDecode/Length 1881 >>stream
+x}WkoÛFüî_±P4,Z’e[
+N jÕUEU'òd±"ïØ»cdýûÎî‘´Â<ø!ët»;;3»üïdL#üÓÕ„Î/)-OFɈÎç—ɘ¦³+ü>Á—Ó´‰oŒ§É¼ÿÆ»åÉÙ‡)Ç´Üà®ËÙ-3Â=£-ÓW·†ÂVSåì&/4e¹Ói°îpJ‹%¥N« =•–cØ"ÓÎã¸24¿Hè6t×UUä©
+¹5t£‚2Y\íü))O{]øùzùïɈ†ãód‚4^ n´ß[ Ni°ÐakmÆ¿>åÝiSÇ{÷Î>9UúABË£lóàu±¡Ü“GÎ:£Ü")d±¬½vÉÍõ2éÅ\ «Ü<‘ª*­¸Kk}tÑÜß<cÁÅ Uµ«¬×1­Ó&ªÍÎؽiãL.“)×ö—­)TÈC ~8ø KúÅšàlA÷Ê肃§¶: 릪èú€Côª\ã»vŸµ£Õ+¯5·åW]T ›¦ù7È­W$T…ÇåªRkôÕn
+4‡é/ ˆ T  §Q%G~i —ݼº»^P¨«¶tQŠ/ºb.¢V-èN&Éd4¦áä*™ þ.viA㑪ŸæW4¤œŒ yʈ«ÀX}²nçC$f
+9hiâðH ³Nc5¥ÚA‹½š™Ì»Çx‚£s‚’I¾€.¾*Uœ1³½W˜ÓÞŸuöOŸÂÝI‡®Úð‘”Yþ¤=€yä+k2mR.ñXy°‹Úd( ÊQè £%•»Rg§½¤Y-›Y4ø
+endobj
+1234 0 obj<</Type/Page/Parent 1119 0 R/Contents 1235 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1235 0 obj<</Filter/FlateDecode/Length 1675 >>stream
+xWkoÛFüî_±(ÆlZ[²ý¡€_iÝÆ–kÑ0
+¨NäѼ˜ä1w¤ö×wöŽ’)ÆE‹"H"QäíîÌììòëÎø3¤éˆÆŠòA0 ÉtŒéðxŠÏ#ü5’’ópçàã! ‡&4£Á&ÇGÁÑä˜Â˜ðÜ`@a´»J%îW}Žµ´Ÿ©2¢°‰4t@u‹JRit¢2i)ÒÆȨʚ?ƒáBÃ)¿ßž¿?>
+ŽÇ#œ¿{9»9»¾ý|1» ïgŸ‚ê[E§ô¨ŠX¯,݆t©s¡
+ºÐEetF?ò4ùñ¹È—Â9Ú®at |Œ;m­Zf ÍêŠ3éÿ%2ÿäºzœ;œƒÉŸ¦Ê’(KYÄê­„%mÔ“*D†ƒD]¥Úà eC¿ê´ _(”¦´
+t0K(Ó?ù
+õ6Èd¸Z¶¹mÉ›©ãÒÈ'n¦¦Ó.!"l.3AÐ4…>åÞgÖ{‰¥ÐŽ® £*X¼úË«I`&÷Ÿ™#F•¥"œµØåjä×’!
+ êÙ|‚ÁØ‹7…Èñ¥L‹X,Ág¦–Ö٢ĹWɳ ÃZ]£ETíñOÿ‚1ô¨ömX2ÓUê­c
+€ÔNZ±~ ”N{? ÙÍ„€‡ƒ#-ðµk@ºúeïj¬m½û“cÐ;ÊkÛû¾¿mÊðô%Šyª1ëa
+ßeä>·v3œàMìxŒ×­AptâÞ: Äó3ì&ú `ãˆjž!›Íï'þ‘ýéàäÿ¼>ù’Ó8œS¼ãáå.Þ=ð¥«pç÷¿ w´Žendstream
+endobj
+1236 0 obj<</Type/Page/Parent 1119 0 R/Contents 1237 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1237 0 obj<</Filter/FlateDecode/Length 914 >>stream
xmUÛnÚ@|ç+ÎS›HÅ\B€ô\*Ej m\U•"UëõÛÚ^wwÊßwÎÚâTIL°÷\fÎœñŸÞˆ†øÑlLS’yo ir1¦4™ÏðÿVѺw÷Ÿ&4Q¼FÈt>£8%)–gw/Êîé».R³s´ŒÉíW9=ŸíŒýí¼ðÚ$íT–ñ§S!Ïç´Ó¸±/Š´wdvêm´óvæ{
çÝyü«7¤þè"£þ™ß
O¥°^K]
@@ -2964,3108 +2475,2819 @@ O¥°^K]
oMSCP*¼H„SbýVíÉm0"Fš<G›}<«.x–Z®âNYîRˆHU©p)<­+Àh;?1kN£-ûÀ¸‘ïû‘‡4)•YÝ03⢦ÖxMb¼Uô lsjGRd™J95=-ÀòíBJå=ˆBl¿¼\ ¡•CàÚXB
þb;ØD…¬}3²ôú)àéÂ+Û§ÒšP¸þ|¦#‘7¤
Wå–õ
-­:Ouû¹¶¹©Ã#óÒÀˆ(Þbîk!kTµ WJ*%…ñ”(RÂél_ë°t^f*gi3R«Ê¬•ÖÕë£Ø–$FÉZßXS•îÃa›¯.±
-endobj
-1491 0 obj<</Type/Page/Parent 1372 0 R/Contents 1492 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 712 0 R>>endobj
-1492 0 obj<</Filter/FlateDecode/Length 1504 >>stream
-xW]oÚJ}çWŒÔ—TR©ªòÑÜö¡InAÊ•’<,ö{c{ï:”Ïì®Á8éUUµª÷kfÎœ93¼tÔÇŸM†t2¦8ëô£>Vvÿüü«38™F#:L£>e4FÓð•ÒŒÏÓéx i4àÿCü-%-ÝÆàlßÛ˜ðHëÂżs|}FÃ>Í—ði<™Ò<q®`%>º\‹ÂÊ’Æ}Ó²šÎcK  ?W]éL¨üãüßNŸzÃn]êÜ–:MqOå8yW•2ÝÒLd A»Í¤q•]L¼ ½“âÂ3ãhÑ])KùR)£¬¤ŸR$*_±±ãë áÆp‚€qãB.5`ØêŠbø òJw‡=±ke(öu©H¥0’2ñ,ÉÀCl ëî
-|Ä:Ã[V,RIe×üàR­ªöI„p'ÞSÙÝÕ%#“H—j!oRú¸{Øí}»½ŸßFÞýÀnãh9XW¥®òä·aÞ³£E÷˜–_è{ØÊD¼VyˆŠs$ÈŸÈ͉IõJç
-¯%^+Ý“l?™t'
-a l$»²Û§„9 Ë#šÃ•×ݱ´FEª¤ñ,
-`e°„źز߼Ԉ²|Çä°OkÔ2 ½ÈW
-EÈá4òùÛ}µ”4«®Q8ëéÛ ïؒò*4)¾å`[ªàj­‚ÐÒX@€=‘瘥38ÎÎå¨
-ñ*TÊ2Ñ•×IF¡¯U¨Ð¼†Õ!\Î +´1L›†²Ô
-â’Ûü]B=rkº¨Ç8­êþÕ(¹Z'‡}  ù?wÌd jå/n¶¦Ê ?ìp°(À&„„©|qŽóni'òu“¯º-DŒF
-Qâ6Ê =?ý°JõB¤O=eäØC©˜lqïFgÆHû‰_=¾îÓY݃G^-XÙ¹ôÙûV›ïcø€š„BQ~¦­ÜQäð„ã¢Á+áÄaÇwý~Æ­G¤¤
-¶¾5 ¼æ!iŽkµž•r¥œ°2D7Ò^|¿‘Ï<3³…–»úa{ˆùÊý÷› /á v °HG©EuA“õʘjô)
-1íÞå¯vÁGË`•+Ì6;Ç\÷ N,Þu¿íÎñ¬@ ¯lhó\ö¥tÎ&5(-{‡¼F‡*&a–d;
-HÀ4åBJt˜)ò­_Ô ‘ÅÌ‚9h¯º¨Å.-€ñCÅ¥6zi[Ö¯¼)ž9˜L~0q“3ünjG(¼à`(耵áñ©æ·?¤‰;;¾žî¸/ÿðçA£[óXò'? F“Q4Oñ›¢q:d¾Î;wþr­BŒendstream
-endobj
-1493 0 obj<</Type/Page/Parent 1372 0 R/Contents 1494 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1494 0 obj<</Filter/FlateDecode/Length 1666 >>stream
-xWËnÛH¼û+ØCÀ¢õ²$çø‘ >¬“…µðeDŽ$ÆäŒÂYÖ~ýVÍ2MÛ»À"0"i†ý¨®®nþ:Hÿ2Êh"iyÔOúr:ë'CϦø<Ä_¥eÆg§ÉøµƒáÙøåó£“/g2Ë| '“>dý¾ÌÓ÷“d” ùjw’YíDÉ[Ý;¯|n,s“IîÎJ•I­ñ•-
-]}ú0ÿ Ãc ¢áÞp
-ÃïÏåf.»– <å׺1p{þûÅ9~P^vÊÀ°’¦ª­Ó•x+ -j‹ŒÏSåu&kåø{ˆäɽ÷¥7!ax}ŠK–¶’à%‘ksòëÜÉb/¹YÁãö×ßnŨR˯­®öá)Z_Uv»‰ÁÈoƒ”v:î”sÛ`…<´J×b—!ËŸsƒ“ÜËJ#½…JïeYÙ2ÓWÎSæýRQ
-%<оù@7÷6zu¾ÁÞš® Â
-nc)6Îø–mU[äb( £ãÌÊÝ}Îvh%pÚÃID꣤Xâcp)y ¶¦·Í½ZÐo+…6(5û!weѯ*íœÎŽ;1òqg!ˆ±¤†ÞÌÇr.tÛÍÆVžHéÇMÔ+g­éO–\Si#hÎ%§,©`gÇJä?É_šª B†IViåÁyw|~ÕƒÊ µÈ è*FÀ²zÝQÊcmëNCR-r{ö{vÈ€C´ 2ˆ |ÈS…l‹Ò.»Fdà£ã•
-…Ø2»‹Pe{Ù?§Í@8µ;UtßnŒ[j†1fV5Óg­] ö“uf-÷×W-¥#8ŽÃ7@±ÖüŒ
-Z”¶Øæá1̸çí gÈh8-ÑÆnWë—ï8«o‡ÀTšbœ„÷’ðÚp("ßPXÌ ÿÌr ßVÍ®ñœ2§ÃdÆmàMÊL²@¾D9,2mÄ3HÐA ÊE]î'Jý{y;É> $Të½—Þïol@£=¾¤ÜL^m‡†­Üfu¿ F³dv6’É$¬Áam”ï•ý sدR¼Ø`É£eÆÕLðþ9IoÚ?kÖæÿý¾8žŽ“éd†e¸ŸŽèàóüè£
-endobj
-1495 0 obj<</Type/Page/Parent 1372 0 R/Contents 1496 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1496 0 obj<</Filter/FlateDecode/Length 1126 >>stream
-x•V]oã6|÷¯X Éb¥8¶óp(ò‰hÓ´6PMQPeñN"’Šëûõ7KINâó(‚ Nø±³³3Ã<bšà+¦yB§3ÊêÑ$šÐYG š.æøœàÛJ*ÂÂé,Ư’ù,Jö.W£·SŠcZ|ûl1§UN¨0™Ð*;¾Ð[ÒÒWfm4¹R L)yC©DͦR™ð2§Âšš|)éáúŠWùãåõUD«R9Ê„æý¹Ñ’j¡[QUÛw«O£ ãS€ZåÇ›Rjù,-¡”B©ÌªÆ;â‚Y)ôZæ'd,)ÿæ2ÑzS ¸u×…-m”/W§pn“ïUs[•Öhõ‡ŽxùÃmÖó0žG‹˜’Y4edÉlN݆¨q²ˆâsŸ%˜¶Ü*Í
-UÉ»[½³(8ŽïÿVÅÂA¦ÙIí”WÏ ìο²B°ÿÎç«C”pC #˜½¹ =¼Ê†¨`K-(8r˜
- Dåö5YÀÞ°®• Äb=l¶’/ 4
-endobj
-1497 0 obj<</Type/Page/Parent 1372 0 R/Contents 1498 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1498 0 obj<</Filter/FlateDecode/Length 1014 >>stream
-x•U]OãF}ϯ¸R¤fˆ'•ö!¬Á–mH[­„Tã±==“õ)ÿ¾çŽm4¬Z
-±ïÜsÎ=ómàÑ?…>Mf´-c1¦©ï‰
-æ!þ÷ñW*JÜ‹À ÄìÔ 2ÁÛ—›ÁùÇ òÇ´IPdÎi
-Œñd;¼Êä¾V%…‚îeI’IZ,ï)¶…Ô†
-UDª<Ûü…4y^›fäÏ…DÃM¦+¯¤Ò6iFi£cEµ¥JÕµ6)5û.ñ3tÑN•Èhq¦©3ej½•µ¶†dŠzUThÛCås7Ë+ÁÕÇ4òg5¿hµU=Ù†ŒR1E*±@‡¿G*ÕægŽ÷D0ñq&s|âÔsZ`¼•*UéRÛ›‰ñlÊq•ƒ»µ%e:ͺ¨WAhœ>_oŽ³ÄêQåv_`ÊuTÊR£Å‡¡ÂÄ€—“yNIi âÃ2²Š*Û”<
-*5Ò^nw2Ug‚6ˆÊ”.b™ó<®ÉI ú±ÀA#©±5l¹ëq:ΕîöÊÜ._èd‹î Ä ™ÙQÛdÚÃ
-OÐuÛ>óÉ)Kõ­Ñ%ïÚ­ÐREZš+%„Zëé"ŽÄA&=0œ6±yn\¤Ï{šIŒ¿+£éuÊ8Nì^
-%«úô@®if"q«ð0d@wÚèúáìôŒ
-¾ægY¬NçÇtÑ»z‡Ø±JJŸ¿¯þ¼Y_NÉëÛ ¾@†¯"œ½¸ˆ×w„Û{@Šfb«*ó£cì屎ý¨æò
-endobj
-1499 0 obj<</Type/Page/Parent 1372 0 R/Contents 1500 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1500 0 obj<</Filter/FlateDecode/Length 1296 >>stream
-x…Vmo"7þž_1âK¹SØ°¼ßI•J.œ]óÒÀ©:5ý`v 8ìÚ{¶7Uýï}Æ»B¸–ˆhYÛ3ó<3󌿟ÅÔÆ_LÃu”ägí¨Mý~õ¨7⹃¯•´ n?O,ÄÃîé…Ñ(긜]|nÓš-à{0ÂCJðÛnÓ,i9™”Vù-ýLã«é»ÙÓY›Zq;a–¥Nì¶ðTç6Ʀû¶Òñ¾‹Ï=ŠãÊn«3àýךá$9‘ÏõOžjY“)=mMiIÀ†“öYZ*ÒËê­•"ËI‹\žãµ$¿’•~í£ypðµ÷&™Â+£Iéj`¹|%F/ŽN~ܨéiuzÈE
-Šƒ¹¾‡¤V:GfQ•ÇEc=;XJŽ€Ô… ¤;õÑ\ŽÛ¢ŠFÁåðÙ‘–~® æØ¿ƒ'zl*…_+ã|XÝà ©n #ßÂ{‘¬dúøŽPuHƒDÛJ«QŒÏ2Ûžô¸0Ü·h¯: ßc6gˆI
-§¸.6Ù2í@)·;÷_1hµ\¡ËR‡j Äñ;ðèCQp‘0ÊÓÃø2…Ó‡,A9BFÀ Ñ‘{XÖA…‚âñ"Š¶R"i­±J/8pPžPÚ! “Øá ÒVY:ÀÛé4J½(Œ ®¤–-UpÜZä¼8s^ÔG7~î2aF#=¬åozòÌ¡nØõ¿¬/p ¦¡÷¥çJ§éé[?¢O@é«ÒKL^”•\&¦Ôžy=sk…£uƒŽ¤z…±±ÁH—„îË•s<ë¾™†Á\XõÌ^^ø±YºDnÉãQ¤¶Ôµ¾ `d9 aÎH Tã’/­.ßb09‡Q?Š#º7ð;ÏP˜œÕú¾0x̨{ÚlàʱOÏ ÆŒ™b"4^ãÅ…i?î*;•Á©eç›VæSµÔG wðp
-xcmþ± 9ĦL†6ÌàÏyàç æeÂþ[¬Éµîó›©9‡Á•âx†¤Öä.Á£k bÚ£. b\¸Òæt|s9¦{kžx´^™¤ÌÑzañ
-endobj
-1501 0 obj<</Type/Page/Parent 1372 0 R/Contents 1502 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1502 0 obj<</Filter/FlateDecode/Length 650 >>stream
-x}”_oÚ0Åßùçml¤OU[:ií6‘iš4 ™Ä!.ÁÎü§Œo¿ë: ÓˆPÅ÷ÞsÏïÚ¿ÆtEH'˜&(¶ƒ1#‰6Aœ¥ô<¡¿¨º³8¢×|ˆ§W,¾üp›>|¼B”"¯¨H’EÈKPñy1LY ë°×ÞÀ
-ó,ÂÍùömþD¡1"Š¡£ -¦àágŽïR•zg1 ‰ŠF
-åà̾š‚†PÂÁ[wøI¿>=ÝknÄyþ!Ãíakí›+F¯×¢„TØIWc#ÌJm»7í]ˆ&MÑ”L"MJˆRª5œÆFé l¹µ;mJ†O\--*.KBÁxu©tÓHrÁÉb#œ}¥m.ËàÖÔ?¬B¥MHwpís-,䥴š? p¡
-ÝkÜ·ºÂü~1º»½=Ìg¸î+þ5šÆ“:KYÚ
-íuVØíª7ü\å9¡ç‚oWü•è{ÈWò”:†¾uêæu”·¡îKIj¤|aÁ‚€ßôÉJKä=oÞcål+
-Y‘òk´nÔŒ¢Öšâ^ørVt%NøÄ—ŒáQ;qëĆ0P[OT‹š«5A(·ReÃõzp‡FpZ¦UA‹*G;`~G“goH>yUÁèĹ®Ý9ÌNA¨›ôÈv“ Jšõ†úb{‘ayì•-}ÙvŽ.›’·léŠ6 < JQqß8‹ùã¢ß‘ |O[£’¿»qaÀ(©ƒ–{¨ì°£„ΑlŠÉ,cY«ÅÍÃí ¾ý$
-G“[ø-¹ÞyÒŽŽ£t|ÕáŠ8YšdtLPîYRÜ烯ƒ?wyAendstream
-endobj
-1503 0 obj<</Type/Page/Parent 1372 0 R/Contents 1504 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 723 0 R>>endobj
-1504 0 obj<</Filter/FlateDecode/Length 1402 >>stream
-x­WïoÛ6ýî¿â€a€;$ª%ÿÐiÓ Ðt«½ò´DÛj%Ñ%©¸þï÷Ž¤lYn·$¡IÞ½»{÷ŽùÔ‹i€¯˜¦ '”–½A4À'Çï~êÅñ<šÑx8‹FTR<OðÛ¯
-ZôæÓ(¦qœDÞÍ£yXñf{ÝÉðx–w§£(¡Ñh®Ž+õ´ÆÕñ^ýY·;N¢)O€Œ1ÍàÖ¯Ünk]R2ïƾ›LáAÍ£qX¹»­5îÆããYÞm¯±›8¿Îï¾\öžßÍ)Ðr¬N¦3Zf.™ø$í¿ÚŠ•šf-D¹$ zXŽHizŸWÉGÊT)òêÙòCo@×É×û¥,WRóGl;žzÛ×CN¶gQÑÏ*¯òjC¢‚9ºuFhŸÛmp4ŒÞÀˆâ8
-.“ ÈRÝåÚØâpåŠUÖÆ’ÌrË+ÝõmÊUìëÇþøñY×î:/$YEV ­£"̘­ª‹Œ*µ§ÚÈ&F¦µÎí¡‹d®6’û(§È²ÇgmIÉæ6½èb(òJR^‘ÝJúsS¨•(þßR›«ŠÉå‚j¢`°ZŠìGoeÜbqHÍÉQ«‡žß5|ï£ÅÎïöÙ™‹Œ^
-µ7
-¤üŒú#8ÉðÓ ”¬i¹)ñ‘°ÜM™’&¢%ãó–Hâq‚î\iä;Æv§+º à¹þþþaA™°b%‘¦®œ¡uŽÇÅe•BÚ=Nbƒ7•±ÝêÝ·›ÚÚUˆß).o·5j!÷Ø@©*K<kBvjeL+e¿óùŒÃ¤â9Æ“C¼‚„9/׋¦k¯ó§‡ÍؼÉ@ÐX ”ï›j—èÚÛlkõ¹·Â`Gþƒ±N°*ºâ„ô=ö¹zªBK4 g(jÇO«=Æ?ú$M¥aýd¶y³ñ½`dqóæX(ˆ"RåU‰+1ܾ%Ä~3x
-µAYÜøAæ;šô¸ ðRUCNCÆXIÆÏ*·Óù@x¼€C¬å!b7NáDtÏ*„(ðmjþº.:Î]ó$雺d/Ø1k½TFþ½ýÍÿ Uš—ÿÿ*M'3O ñŒ1¼^ö~íý 'c²endstream
-endobj
-1505 0 obj<</Type/Page/Parent 1372 0 R/Contents 1506 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 730 0 R>>endobj
-1506 0 obj<</Filter/FlateDecode/Length 1734 >>stream
-xWÛn7}÷WLŸì
-W)céÝïWÙ«åg¬˜¶+NÈyJ·ºMº5Ç·ïoþStàE•_ýsóþõoWÇO·ÒÙxÄËâ!v®ñµ¯ŒU%m-Ü6£[­)n4YïNw¯¨R–ju¾¿r ¾ÐQ™2¾ƒ-—¨ö.×!Ðgdd£ ýƒF ÇWmv[7®‰´QÆÞó³ÀcŠ\©|*(ú&DRyîÉYÙíúÝ[Î aG\bd²Ò
-ºwšñx×Üod§.L V!l/(Ç^H™D—»ò”߶´õ&ÊLÍ–îN<vuÕÝ«œïnËôE¦èVU+E--Æ"yEkSjBM˜ù *pl¼Î£ó;¾»Ý˜|C¨C¨V³½È[×”­°ÖAIgd¯TYîèǤƒN7E4ÁJ—«r€¸+5¨½y@%A£$1d±X¥ÅKÅôÐV°
-¹â™²;rHØS22úù-fà‹ÞµziÛá¬Ôºìå „ Š²aŠ˜Ã.D]JÀ
-un5¨½=[^\­½Š a+ó ¨Ñ4·EåŠ}qº¨KÉD×Òq¦uÚ2é}\N¥4‡ì îÁå‹”O2ú´Aññg¥#Ü¿¹ñ:­ýÔ&ñówéÛxÚ³dzåæ¬ZáÀŒìq¤µ‡ÛBºøáªçn(}IZóMZDääu %"
-ª®»ãýºÔ*hD_³‚åèåVð´7ÚLLÓXJU
-¬0D1PÛDØ §‘Ü2˜{K~üð75•ÇãÑõàtp‘c2ªVº²¤Õ¡­UÎŒ³Y<`˜Ç
-'l¾ÌœeÃÁÃøÙi/è
-³ÄÖ”%Ÿ~Œ UO"a¿OpÎö‰bQŃ²‘G0•´œœGAˆ'´zfÔâÈ/¬a­
-endobj
-1507 0 obj<</Type/Page/Parent 1372 0 R/Contents 1508 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 735 0 R>>endobj
-1508 0 obj<</Filter/FlateDecode/Length 460 >>stream
-x]RËnÛ0¼ë+æè1­W)¥7'NŠ
-þþ^è“endstream
-endobj
-1509 0 obj<</Type/Page/Parent 1372 0 R/Contents 1510 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1510 0 obj<</Filter/FlateDecode/Length 116 >>stream
+­:Ouû¹¶¹©Ã#óÒÀˆ(Þbîk!kTµ WJ*%…ñ”(RÂél_ë°t^f*gi3R«Ê¬•ÖÕë£Ø–$FÉZßXS•îÃa›¯.±
+endobj
+1238 0 obj<</Type/Page/Parent 1119 0 R/Contents 1239 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 578 0 R>>endobj
+1239 0 obj<</Filter/FlateDecode/Length 1515 >>stream
+x•WÛnÛ8}÷W З°ß;Š"išmÚfkY Í-Ñ67’¨T\ÿ}Ï”íÈ ‹¢i%‘s9sæÌä±3 >þ h2¤Ñ9¥E§Ÿôñf÷ãÇ_ÁhšŒél2MúTÐp|–LãSN3>OgçÓdHãéÿ⯑´Ä‡é†šfÅVq}\Ä££³dÔœ}æ4ž\Œ’ɱÙ>!”ÆÆÎÝÕ¼szsAÃ>Í—Èè|2¥yæÁ›ôä³ÞÓt™:–]‰ô¡®èZB•ôQ—Îè<—†ð$ÞÎÿíô©7ÃÄÉmmd¾¥™(b0‹Wù(ûL‚ßÞh (øš‘F>ÖÊ*'釙*Wáð˜ƒxx8IÎùð•\j€¶Õ5¥E•µ0þäÖÊRº•“¦KU.…•TˆIÁá³pþ®ÀCª Ørb‘KÚ(·fƒKµª üï2ŒB!©Ûë J&mjÔBfÁ¥ )÷ðµ÷ùûÝü{òR®"set]f¯fxÇ1" q ùú?"]«2&ć9 TM”vƒÒäz¥KàòXKë,-.h£ÍƒuÂ)]ÚÃÚ5Þ©2ÓKßæÑqBwkYÊ'ØTÛ`–¯²:8~··ÜÄ@sÿ‚A-eŠ ø' º4.9%Ê
+/o=]BYÛI‚áGüÚˆ-© Q˜â[N¶¥
+¾×jÄM´7ÐuNY5cà\‰®OBå,3 ]‰dZù:…-X= àÌ°J[Ë´9P–`„wx’±¤=z]› 4hùCŸKõbm,y±‹Á·É>S%zŠf¡‚ÀÃ8¬ôr©R[̉ªÂT€È‡çAƒ„‚§CZC\J·“¿PÒÙ.ú1Íëft´\£“Ã>7CþÏ-3¨:ù›G¬­ è=
+°‰!c*_]â¼µùf4ƒWÝ"V£•0¸¶ðBϦ®r½ù}ÏB9÷Ø*¶X$<ö@c†Ñ»±Ò½c«§7}ºàñ;HÆ£!ë þ…f°¾ó«è}ˆ° K ‰ÄÖ|O[¹#ÊóÜ݉ӛfä÷§ïFg<‰DNùðLÀ”¶”+ŒvA?×HÛÞ{|ñTJç-ß“]3ïDn5„b˸";<kŒx?óñˆ%–¸ÀŒTî&£8þ¡wëCÍf”æ×ÔÇdc]7Šõ-o©FÐÍž€šg:E¹K÷ú†àÇÿc-rµä¹ôÂÐô²äB|µj€ci»Ò'øÞ"ïÖªp,Ñ»äcá<ëe3r¥¼Ä2:ߤ»úò}F¡úÌÑPþê›AÐå+w_¾Í€ºA0ŒÕ)p^ F‹ :ƒq42טXsÚk½/]‚o“–úTØrvù9ƒX¼D°íÏñÖ@o‹ qø,
++Š_Ÿ÷¡ŠÄæ‹ÆÖŽX[^¤^ð D™xF±³Ó›é~ëž^$“Ñ·ôÿú­€þû7ñdœLÎñk?²çOóÎß?­3I
+endobj
+1240 0 obj<</Type/Page/Parent 1119 0 R/Contents 1241 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1241 0 obj<</Filter/FlateDecode/Length 1672 >>stream
+xWËnÛH¼û+ØCÀ¢%Y/çø#>ÄÉÂZ ø2"GcrFጬ(_¿U3¤LÓvv±ŒHâL?ª««›?ÒÇ¿L‡r<‘´<è'}ÏúÉPF³)>ñWiY†£“q2zéÁñxôüÆÙüàèòD#™/ád2ÇLà ß—yúö“ÝJfµ%ßluï¼ò¹5²ÌM&¹wxVªÜHj¯lQèêûùwXÉ`-ö†SX|{*×sÙ¶Là–_éÆÀÍéç³Sü ¼l•a%…MU!§+ñVZÔŒÏSåu&+åø{ˆäѽ÷¥78F¦ðú—,m%ÁK"W>æäW¹“Å_rs×ÚŸ]}¹£J-?6ºÚ…[´~WÙÍ:>Fþ¤´Óq§œÛ”
+* gè4ãE”žóßJO2 5ÍA|TÉQ»†Éð-“1гMmB~ÐÐuAyá1ðÄÛÔ‚€+…ì©öˆ
+4‡“G4¯¨B¡h ðwI%G™•œð[‚‚ÿ k*
+jT¾ÒÊ!~Úq¼‡ÕƒÊ µÈ häqÙ‰°&I”¹OMFp”beœ߃ì¡S¢EÉÑWЇ‡<ÕQQ°({²mú>:^ÙÄb[ó:Å✓«Æ“ªã
+å1w5ObÝÙïæõxâX«ÓÍÕEKˆ‹ã̸ F,#
+’*F©2»ÅåÈÆ K’± ÒÈÑ@Ç«"‡ˆw ½¶[•©]lÿVj°ÿ<D:…BW˜‰Ï‰ÜI» ; ù[Ï;þö“5‹” BÈŒØeÔ»ý“­ÝÈnP(r¾¢Hì1ô@{“uüXÔµÊ3Ì´ò
+­š‘fè™ÀÖ—›þš[ÐÒcžC5`ëþ“ø9€ìÏÜyfNk,z
+endobj
+1242 0 obj<</Type/Page/Parent 1119 0 R/Contents 1243 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1243 0 obj<</Filter/FlateDecode/Length 822 >>stream
+x•TMoÛF½ëW ÐƒÝ bDJ"•CQØù@}hêÔz(zX‘Cqr—Þ]Yå¿ï›%¥ØJ.…Y¤fÞ¼÷æãq–Ò)-s*»Ù"ÙlèÛ‡ÛãaAyž%­6¾/×É’SزÏSìz³IÒ)6Cü)”VË™#Èù‡ÛíìÍǽ¥mMi²Zf”£Ê:ßжŠØ Ú–×Gë¾î=ôô yÕíÔÏÛ/³ÍS0Eàue;¥ uÊvˆ1öÇ­Ý[ã0°—ˆ7W”¦R{>ŸgE$Là…†éï}kwªýgî¹ Ú²u|ï»]RZSŸžoß¿KhÛh_ÙǼ#kÚìu¤&ˆFuL7¿ßÞü”–'žË$!Gš˜ú×ݧòìžØM°@6–zgw-w¤Æ
+/°!Š>q¸½ûãF¿b@hT;V&P8›3Ýñ™ W´¨³h’ Ö0ô”6,4˜zå@_\¾úÞô+ª­+Ÿ‰7VÊÑ/ÄNìèØè²IŠF?ø,"ÒsÇÑ‹J
+Dîî”èýØùwÖgÛn}}KéJúŠ!Y¢µâíoöH•¥;€õ­.ULhd¯¼?[·üë˱@zVHòŸSÎË x–(þz6^ý¯î5Ò#Kp· F;©„±{1ÉÆúpüîTÅ‘¼ÌõÔ™ˆè
+!­,kàÃ7MüxÐOªeükÒºƒ˜÷ öÁÖ€Á`Sº¡Q+6JïŽÚ}ç™L鎑}TƒˆõŒäþY›Ï±Ìµ³]DºÇªN ‘­…:<Áøøã!èV¬±L™Œÿ¨Tæbž%ÜûiƒSÆ÷Ö…$¾ÓÁs[KÒ¨(rB U–Üz%gâÕ„SkH”k` wÜ©'2‘ëÐóu6tZƒÍtÞÒ§{³¤,ÇÅÌ×2ÑqûèÞÙ/8lØ£òÐÁg%7NP秔y±Àuþ?ë³*VI ŽÓ]]¯W‚öa;û<û5 !endstream
+endobj
+1244 0 obj<</Type/Page/Parent 1119 0 R/Contents 1245 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1245 0 obj<</Filter/FlateDecode/Length 991 >>stream
+x¥U]oÛF|ׯX ±Šæ—>\ Ž#F’&uˆ GñH^EÞ)GÒªÿ}g¤èØr_
+Û’%îíÎÎÌî}Ÿäã' UHÑ’¶õÌ÷|Z„wIñz…ÿCüYI¹{±·<õ ŒÖ^üòÁzM¾7¾ØPË_yë14ö}ö· 
+nút›L­dòAVf_£ªTj…U@x&Ñ°´Ä}‰ª¢Üššø°H̓¤Æt–;A¥®Á—´Û(äý¹G ¢J©êLTÜÎýQÏùTà T›–Æî^ö•>ï¥þ¸¹úB'!º3lŠ`ÅÂÎÖ¢ÅÈÚmœ•älV~ï”çÒ†@=mdª„~鑬 J?ë!b’ 9á´¹©*sà"cÞÓ¢óMsô2xbÎ=
+endobj
+1246 0 obj<</Type/Page/Parent 1119 0 R/Contents 1247 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1247 0 obj<</Filter/FlateDecode/Length 1437 >>stream
+x…VÛn7}÷W ôR;ˆV÷‹ ¨;h:qeEP÷Ú¥$F»ä†äZŠþ{Ï+Y–•Æ„Ý%9—3gÎðÛY‡ÚøïШK½!¥ÅY;ééÇ.ñҦᰛŒ¨?á¹7Hzd%-°·MƒË!^ãJ§‡M»ØMÚõOmeÐë'—õÞ.ÎÖ[O9ìw»I·ÞÚ&ÝÞÅ`»6Ûí ’áK³H«;ÚÙû{3;k½kÓ%ÍÔIú½. ‘Ö`8¦YBnÓ,='8yA?Ó—OŸ§É‡›é››é§ûdz3ùíöböõ¬MÍ`Â!ìu2­¬ò[lŸ\ß¿X–:µÛÒS)œÛ›9ìÛJÇûZïúÔép,ÍL1sP°û^S*œ$'Š¹À£þÉÓB-+Àf*O[SY0æ¤}”–*§ô2~±kQÈ×ø,ɯdt6¨|Æ9™Ò+£Ié¸
+µ%9nÎPäл†*(T*K/³]u/Á<ó᥻mˆÛ‡ë·¡jŒü0Öêã§ÙÍ1þ±­‹
+Î%Ue)- Äñî‘;Ca§ÔÏ‚b kP ˆÃõÇ{ÊYƒ óþ­šYé™Ð+6ÄE}v°´%RS™î ×F Q:n˜‚Ëá³#-ý\GlŽ]ñ7 @çJ&ámeœ«DÏ!ôBDiâÊÖ
+ïEº’ÙÃŒ(' !Vƒ£2ßžô¸0yn6h¿ºßc4gˆI
+§˜jª!eáNô+NZ-WžëŒu€¶„Æâøxt&€(™$œåiˆqøU…Ó‡(AK¢zeAÚŽÜòÚtŒAÚܤèYi­±¨ 8„P¿‚Ú! “¹ÃKïßÒÛ)6¨^–Æâ›f ŽRÇ–b
+Ã%Lz¤S+³°s…$ç®Ý9§
+endobj
+1248 0 obj<</Type/Page/Parent 1119 0 R/Contents 1249 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1249 0 obj<</Filter/FlateDecode/Length 730 >>stream
+x}TYoÚ@~çWÌ[IU;æ²á)JB"õ!i+¨ªJ‘¢e=Æì]wPþ}g×v$*ðß1³#Hè=‚l “x=HâÒtB×é<£ë˜>¡fÙ4N?z0],âéG&‹,žŸ?¸Y.ï§0ÁºðmÓyë¨u’ÀšW¬Þ0¨±°AêΕ,ÄÖiÌái¨±V¯í1g¼Ä§ `2u#ªV³UÈ$°ª!¥»,,j°%^¬_QÑh©ýp‡zƒZ¨ÄÆ„‚%²5}'º˜Ç>ïò~#]@Dø£É”ØS‰5äƒr êWjcк¦MèùRÇqF*Rø7¿„ÌÕÞÀØ“ç•@iÁêC›4ëD‚D Î |†'zµåé^¶ÓúÃ~+¦T®Ê½~•ÚnI!a/l o4ý/å¬Ï>RA"æBnÁ*ØIµ'€ 3f¯tÃׂt
+&*ã%” <Gº«©`ß¡5ï°-Eî‚-ña]*8Ò©vK…Ä9´’‘ïä'J®ZŒ‡A°¼[E·7·ÑÃrWmÇÞbvlŽgT0õ¦Õúà©9ÁÉv;?ɯ IJrÒ—`_p® "ﳜñ}ßZ†Ùêmãt¤ÿOòø(ÒéŽU_`ã,˜¹(A‰í@5V¨
+ø1
+KÈK&·$}^ IÞjf‰f?À,К‘åJr
+
+ëµ¼íæ‹—‰kdn-¶¥=µ0 ð}Óv‹öãä4òQF¬Ï*<÷4ãg—7AÌç*gMülyãÇœ¸ 9ÌUÖÀòqÕîa ì@ Qˆ¿a¼õGÊ{1hß™nŒæÝþR: ç˜$I‹quýps ßµzAni^¹«Ið ·/õ Q–,þ2LéLÍÒ9Ât"Ì2Ÿ}·üü³·«endstream
+endobj
+1250 0 obj<</Type/Page/Parent 1119 0 R/Contents 1251 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 585 0 R>>endobj
+1251 0 obj<</Filter/FlateDecode/Length 1413 >>stream
+x•V]OëF}ϯ©ªd$bâ$$áê¶_·¢ÐÞ¤}iú°¶7±Áö¦»kBþ}ÏìÚ!1 µâ
+®½ž™3gÎÌì?½ˆø‰h:¤Ñ„’²7x³ÿõý—^4ž„SGÓpH% £axÑ<4ï §³pDÑ`Žq::àÔ?ñéÅ4Œh2g8‹Æ8s|tðˆ³É¨ýÏ®½³o4Ðbx“錩C…7I0e,Hô°SªJ‘WTÊ2–údñäl£©·íÆÀ½Hƒ_U^åÕšD#ºñ6ÛÜfäÝ Ã¡·S5¶Ãi8aÛKcêRÒNÕ”‰‰¸­Í+©_¤&ç x¤½º{œS%ð½Z‘w †Ë`~ûýÏè8L
+dd¶åZ|¢ªbG¥H²¼’þ˜%²Õ¹…ã$‘Æ€AFqPÁƒ óË{J…±0ryB¹iò içýðÿ¤°P¨5Ú×u ²è héqI¡wTÕ•=9»¨$ãzG¿ä…\#EE"MÛŒ99Í÷UHw+<þ™Ú¥¿ª‹NpnømÝÉ”IÌDYËÏU²×Áâ#Ó¶ƒîÙ·¶ÄÚBú…¢I iˆA«TmCš7q÷n—Á äC©´GJ© ŠTZ‘¦Û( ‘¢|…àxü¥òEjSJp˜¨ÔÑă³¢™8<ÉTmyÒ±hK´‰# Õ®ÑWm1”ë¡y¬ÄXB‹2CYY&ÀáB:J3µ‘`šŒ¡¿ q!É(8- ¥Q¬E•d#®Šâ}†Î«k^Z+|h3­êuv·ºWSLào£•U‰*NùëÊ7ƒe%·´ ¬,O:©µ]ôέï< òû¡Ù yÅZÄ,B~Hy4¼Ò\Ë3`ÇoýÔFa÷µvÈ[U)3†‘¦¡®>UJ—m;ú\”gµÑg…Â*9CÜXœq“ ¢ìûC=ÞUû7_9ŒëÑB©gCEþÌŠÈM¶mýUå=ûxy÷@—÷·?ûpû]Ø´Ck|õœÍý>}
+endobj
+1252 0 obj<</Type/Page/Parent 1119 0 R/Contents 1253 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 594 0 R>>endobj
+1253 0 obj<</Filter/FlateDecode/Length 1673 >>stream
+x­W]oÛ6}ϯ¸ËK½!Qý)ÛŠ!ëP`N»ÅE1,{ %Úf#‰*IÅñ¿ß¹¤äÈrÖ§¡­Sšäý8÷ÜÛogêãÏ€¦CÅ”ägý¨oþv6GCŠgqÔ§œãþa•ÑýY{ÝÉ(×gýîdM)îÇÑŒïÎgѼ^ùÝÖ:§a<>Þĸ;‰§ð‡»ñ<šÔ+·µÆÝÁäp–wÛkìÙo°Ä»ÈŽF£>dz)>‡øg$­ýÆ`8A°a„(Fc„9@0 ïëeÉ{óã½Ã{Óy4z¹w½<{û~Lƒ-×(A<›Ò2õÈ÷i™ôîä³£d+Š$·•ôãò+Îëó=Úió¸1º*é]ØjLõ(S…$Uøko2½Ù?deâ”Æ—¹Šôçpirð9ŒQºeÚk¦Û‹cã}:œ”%üåø
+‘KÒkÿÿTçþw’pýªU¡ŠMÄ–Z÷ÿÒå•u$2«i+žBž¥0°ä¤éf,‹ÄìKG¥°1¦ö8²2tœ]øœöÀööòä BÃ}xXkC{]ª¬4HC“¨KáT"œ¬ãpé v9Ï»%}º½é&ó^"Ëö$Ò”z°›ëT­÷?’è&Ò$€€Í¢øŸëwbž«ˆùÇõíÍ þ9<†¯U˜åVÚP9η4*fO¢Hi%’G®.o¢ gt–1t÷"_ Ú©,#áœÌQ'àÅ'D☋ðï#쫵m98nÙ‘"ÙÖC„>°¶~AàÊI¹ØÓN>pݘº‰ÀÔLpÍ…ÓÛ’{ƒt…»È½ÅnLcOäºØ¼A—W8\§ž$óB­}h>,›¯Òšlh&¨C)“>çÖe×>P´Ómh¥6Ö
+¬¢[·:½ ÝV¡<;è‚bb¤U"SÆ:p"Åè,Ó»†/u&ò$œ·eÉ% Ÿ²9¾®“%0ÕÒF´ä”‚s’
+— ­ J”ë,Ç(Y´ß—w÷”
+'V°5Åç¬Hý
+›îøl! Vl nÖu ~
+{/çÞ8§9|$¨)CÅÃkóÊ# |›T·:“öBv§\²EœÈö<ŒEtõšñBrðº@ƒR¦ÜSëíMÑPxÎÞås­u‡¶
+†#ºf±Y‹*sèÇ—Œ€çQxAέcQ·UYjsÒŠÒ]øxﱸ[þ¾xxN·º…F)3ð*ÙSCvË•@ÑÎÌŸk„ «y
+ŸªÈ!á:̦  h(°|NdéÇ4”ÜӞ߇AM+6ÒœÓÚ蜑1zׂbà ‘e&XpWû)¼…+ °nÁèÄi¼ªŸ$º$¾ÑyYáé±ç´XÜ`xY¨Äh«×Ž‚C†§
+«3‰y¦Ì*è”õíûWéËvfB¤€ãI™hì eô®îñ_‚¨5skKn*cà”ßÍûÃe4È¿Å,¤ô/c¤W/ÌÐXhS¦ñºÒçB=¿ yÀ
+ÍY›Z~á£FmÉOˆ¡¦‡GG@Ì}}Ћuˆ|³;|bäzx@„éqª½ÚkYLc¤É³UH9ÄpÁQƒŠ,þ>$FtódX¼à´s…ªù !“ƒ²V™´{´C^çv"eQ÷dU®2J†!Xg<>7QÕueñ=­2Ïn8¼ÓU–ú!à·—Í–C èÌê‘}€_ùú³ÅÓðÂ]-®¯è“Ñ_A]<lj”O€.øÞesürÚŸóÓ}ïEã7Úi<Ã3Šã“9[ùuyöÇÙ¿m$«òendstream
+endobj
+1254 0 obj<</Type/Page/Parent 1119 0 R/Contents 1255 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 601 0 R>>endobj
+1255 0 obj<</Filter/FlateDecode/Length 1279 >>stream
+x}VMoã6½ûWÌÑù3þ(ÐC²Þšlºñ"=ôBK´ÅDjEÊNúëû†”mFÅ’P$gÞ̼yý1ð3¦Å„¦sJËÞ(áËù××ß{‹U2¦ùlžÌ¨¤ñd„¿aUÐs/^cw¶H®£Ýé|žŒh:Y%sÜM¦°V|^h:v'|1,x+ZâÞ4YD{Ѳ¤å8YE{ÑhÆ3ø½½Ýô†w3|¦ÍAÏ— Úd>ÖmÒ¾h\.µS©pÊhªåFZGΠ¥3s´ô¸!+냬IiÂq²¢”tï$ltluM¦>_Z-ÛK¿l¾÷Ft5ž&xîMSdIûqÂyÀǧB
++á}'ðÍNà}
+w0­4~—(°
+²ïÖÉÒƒmœáTòj¯éÛãý_Ô¨ agÏÿ8ÓŸ†Ø ÖöFmšÊ&´É•¥Ôd’ðW„*ĶÀBS&²0U‰ Ò¶:Í¥%£rˆ JÃ{ƒŽÓmã訊‚¶|â 3¡–! g;ÖÝMÔ6EvÚ‰½ä[™}U0$<mjåÞ§Ë[
+3êŸÝ©8€AÑ};¨#C8ôõ饹Ð~aS¾‰Ô!îôð„Žä«¤\›×R
+méY”[ÔÓ³Ìvüjs jWUÂ…¼‡R¹ºW‘8Ï ›«Êþ˙ĖÝÿÝW‰LônJPdYÀÐñÝ"‚Ußµ´¦©SÙ¦Ðó*T‚ëò±•Úd‚¨»Ú”`k÷òÓú“§®îøij*”‰p¬Ë‚{XqÇ@$—³…áÝuÛåý ~‹šð"}]ê÷6ë™%P†Ž
+}ž£±ð«”€§UN½>˜J‚¾A»¨£èõ¾uëÛ¶
+ƒOl“IÙú+„uçæB ²š»ù;医
+HTZkv®ãü\\_‘T ‡Á0Z7ˆ ífvQç^
+ïE‚E-ʺy–Ö
+Ô†ùvIi`KÓÀ‡ˆ4qÆLÅþ;ž/Ñ1ºÆC`+Ô€9wÙ?SÒvvÁÜ)Íj
+‡¨=î¶Õñâ_rã{ðÚ;BÌ78ï24yë›™ ò_èñ}¼–ûgNÄA{é˜KÒk5©ŒØî4Ââ)a›4¼kÏ>߯ƒ½BA9Ì®“:ðhïEÿb} ×{n‡I—&tÝv<bG^Í‘-HU@ŠÐ!îòÍIA-ÛÜí×Ô¬`œ™Žï’ ÕžBóÁAWy°‘¨ªBaÊðÔÈdBЄWÒ}†sôM«·vŒ¦Ì™Wž>ϱ?º—(+‹l°ñavzc€qà­ÊmEútŽ0ËŽÌPÑV¨+éQe6 R¼2]ÄÇ*CÝxU4Øáw@ò׊£ÔUÍC,ÊÍMå³Â»éy¤ïæç'ÑÕéòøeóùW¾+åS(•êþGù3“6~ðÑÂ;UƒOU³¯òK½_äÁíÅ?JKúCéæíÅÔEv¢¤jEäÚøÞA ¤¯ïÐáݲ…=ž/’ÑrJÓÕÏ=<¡žonoè©6ß!Õ´nÁùÁÈ!].\-F+ÞO\Nìé 4á¼ö“Õ×k¶˜%‹ùF˜ŸØÊçMïÏÞ¿ øš¡endstream
+endobj
+1256 0 obj<</Type/Page/Parent 1119 0 R/Contents 1257 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1257 0 obj<</Filter/FlateDecode/Length 116 >>stream
x+ä2T0
endobj
-1511 0 obj<</Type/Page/Parent 1372 0 R/Contents 1512 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 780 0 R>>endobj
-1512 0 obj<</Filter/FlateDecode/Length 2874 >>stream
-xZKÛȼϯèCÎÁ²ø%mï:kÀžõîŒã
-*[dµŠÁ®Á“|pi25»H©j•ÎVpwµ¢K(é¹b=+ÈÍÉ '&³ùl)¤b°yÊ`‚¨b°‹ù,SV0ØeÆ`¢¬`“.f¹°ŠÁ.²‰Ëë5C]âbãñdNkœ/f‰[Š$‚dM“uBµ†"™–Á4Y1C$}
-癤Ð
-„`²Fåü“¦V0Õr+,öÒ+æèp„"«˜¥c? +l^LYÁ`— ¤DdƒEW«ÏŠÑ©9§+Ê*»æ‚VðÁåiµ«ì"™hö%ÀP±±¶P̲@– £Ñ@*‹v€ÑÈ
-f ,_d#Ø^ªY1Ø´`ù‚¬b°è¥\YÁ`Qz¤1Ê
-F“©]Å`±05"Å`— Ë4+F’Ólâ•H¶^!L&²€b|/G 6ãø
-+,f=QV0Øu†pEV°OóJX¦yÄ`1Qê•b&rΈš3‘,Qd}¸+68œB. jÈÂ Ëf#+,öÓDV0Êh6È*f@\+Â
-‹ãk"+lÎÃVdƒÅµC}VŒdÌw”U w õJ1»jê•O$Zš$Ïé²!K¤`°Ø—0YÁ`W\÷Â
-F@>‘AV1X¬¸YÁ`qA2kû$[¬ ³s# ™Ë<¯2$“Ë™À¥Ô
-‹¬ÀÛ(+,öè蟹+‘âhSÍŠ™%·Q³b°¸`ªƒ]d'2‚¯²ZÈ`m´©ìbM‡#+,úŽ¬`¸„Û"¬b°Ë9›-²‚}8ª™á˜`©²Š9¼–FÍŠ9lŽÈúDáD³ë~B 0Q«‘D+]à2‰¶é©,EODV0Xxd3ŶÜ"+,¼@#+IÄÅ ¬b°$¤)°>XÙ\¾E ÄŽ9s<—N Ã%´)òXS›Â/Ž«©õ ¨9¯&’Š¡ÖiaÓèF…ìó°P탧—”¡æWè”b°ö”°^¶à´Í—ÈpjÈdÃ.u&¬OÒn§^æV„•3QÁÞ)(¶gG§F 6[PqdÓeîFaÃ)¬+„d½S™¥õë45äâïÓ,ovÂ
-‹Ø‘å(+,Î8YÁ¬û8²ŠÁÂYµ«,n((hVŒqÇ%K½òá¢yâéÁû^~®…;²>¼È
-áFÖ‡;Êúð"+8„Øs¸gÙ4ãG‡è•b†Ë—va#\¼H¡O‚fŒ* þf§c± X\˜LÎ}ä"T»„FR1Ø"aþƒZÅ`Ñ|p7²‚™ˆ©KŠÁâ­=d3T¾±EÖWvî?Ià•œ†*.á΀üR1X?K5µ|ý¶¡Møzé‘͇`k.¬Å÷ûZÄXøñ¦°VÃ!ñ2¶R1X;s£¨b$iÎ/²â| fƒÛ«˜tW 8öºpÂ$Öw"¤b:ÄËEU Ö*,¬`¸‹^ý£KŠÁbÄÔ)Å`q»AÒ,6“ vÔ+ï$¦Ò–<š(³•ž'G€‚ËX×^„¬¬–C%ä‰ÃÃ~O ÄÔðWá̃ùùC…Ý C–|’vÏ„A¼¢$˜=;TpÛ0WíÖmÀ¸!g¯—‘3¹‚ŠGØ€!@p¸=¯…‹:¹·£\„È)I9àð½0‰\b¾àk˜Í ¶1¾Îx_„=4;?%Ž\„ô“o ‘‹ö0kø.7Ê ¤ŸÜA‘‹ G9ïg~~ãÉì÷3@ø9~¹Á­íc]à"¤ŸŒ!È ‡Fã炳Nà°ø¡aä"‡ãƒŸ
-F.BìAØã7•3çãÃ˦phi¬:_€Œ/G¿E.Bp¸Èc¹Ÿ]>FîÍíÕ«w\§îöÿP,WîvkßÿñËæÅûfèÚíi3Ômó×ÛãYLpâŸ} )ž~qS¾–nWö®¯¾W]¹wwU9œºªwîÜc{r‡ú~7¸‡²\ÛQÓžZwê«™»ÝUn³+CÕõ®n ]÷îXvƒ«ÊÍÎmZh§s÷ÒNØn›ÊõÇjSßÕ›ÑìÌ{ºOyEÀÓ·å×}åÚ;÷¶m†ªzÿ$vÖÓ¨w=sˆ½ºïÊ¡nîÝÇ÷¥n¶íCïšjxh»o½{¨‡³Ø©ÿzœBçÍÜëûªÙ–îâÎ:s×å¡r¿W}»?1¯Œ´tGäË}nê¯>ÔÍ釃ýö©b\´fÎ{µf^¿xU ›W»¶ÿÃp°0ŸD™Úý÷Ù¦mî¼Þg³+Üóâ´ûçÂùóÂMß#‹›Ý3
-^N
-ë–6óÖ§ ý†®ÙZ§%Báž&›Û7Úu5¼yÿëWûýUñai-ìæŒMùáã/¿ÞÜÞ¸»zoO½¼x ÞM¸àþO×7îCÛ~;Ÿ1³˜¹/ï'\„¿´îk‡d?Þ›ÉÞ•ÍÖí@a†¶Õqß>º~°.'_Ø„lú z2¡o'žÂIc_mN]=<ºöÈ>Øb»Ô÷ìY?ýw˜ê¾ªûªçèž'Ç/i%qìÌÜç¾RK×·Õ,1§a‡¹¬7;LF_uç‘Ÿfß
-endobj
-1513 0 obj<</Type/Page/Parent 1372 0 R/Contents 1514 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 832 0 R>>endobj
-1514 0 obj<</Filter/FlateDecode/Length 2407 >>stream
-x}YÛrÛÈ}×WÌcRaqù”’­ØQ²ºD¢ã¼‚$$aMZ
-kÏÌ°k¬RÃFª9Óu*Š¹,$‚D³ÁŒ$#jXƒÁbùŠ,k0=bYƒaæ)²àïU«ÒaCö!+H#é1ïõˆ¬4_ÛV$×
-Qƒ!ª)ñ¬Á4™«šDVŠ†}JÖDaÃa'B:a² ÏÆóa±I
-„Y‘°Ó¡4¬Á`åqö¬¸ÃN„÷gîQ±’ù°))Ho…{1j‡Õ*-¤`,FŽ5så¤ ƒ¢unXƒÁ¢FàÌ(«Á_™RPs0§8eXƒÁʃïYU,#¤*dØ„ûNìYƒ©8D•Ö`°èIø3Ê굈ìð @R
-%ý^¡ÚjÕ7í¨²ö½^v %Q´wå¶:œqOu¿z=Î!O"A´C‰pWûþµW¯´oÑH›ó R–VR÷µmPé7×îj³iTôÜM¨ØǪÛozx¼zJê8¦Ð{c‡Ûæs³{®_ö­u¦*°*üyߧ=ÞþûÑÛÂÓî㎭ª“Î]оÎÝÍwTðä×z[÷bÐUh6ؼڠœuM½¤ÓÍ;šbÙ¢XôõÎuåvYžø'ÞÝc~¾×Õ‡kžG‘ã‹ŸúºýÛ[Óbƽv(ˆ»(BÎ=×V]³ÙŸ™øÎ=p£Ò’Eܹn¿ÜUÃIdx©`S¬›ªsöôh¶û@Ÿ8GÒŒ¥û~s÷4ŒËSg‘sx4þBðþñß_ï¿=œŠ!7?»¾¿½º¹;•Á<üÒ´+¦IräúcÌ¡Wܶìð(žŠ`4Þ–?Œή›m ó~&‚uÍÝq4”KÌ}Æ«\¯ Þ•ë5tBÓ$â w‹žªßоò@?—ÃL˜ÃÕóÍfŸÿ÷Ë“Ûú枤Ÿã¦Ý$=¾:îAkpŠ à×(éŸ+Æz¸r¿®ezk€Œ¶?V›Šáüå 7[î;øâ%œñOw²À<]Ý~ºâôü cÐ]7«=ûy —þÈÀã—E8çÂsü"ð{Ù"ŸáïŠ ó„WýcqñŸ‹ÿÉvendstream
-endobj
-1515 0 obj<</Type/Page/Parent 1372 0 R/Contents 1516 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 862 0 R>>endobj
-1516 0 obj<</Filter/FlateDecode/Length 1205 >>stream
-xmW]sÛ6|ׯ¸·¶‚Á/|tìÚÍL¤‘&î+EÁ.QTIJvúë»wèc2“Ìr±‹»=€TþD¤ñ'¢<¦ÄPÝN´Òxrüëëã$Ò±ŠÉFij)JµJ÷hE³IVà±ÉcU€ÌK•ïs„0*U!kØÁù°4Ä-źTYȺ’²R. ÿ¢$A¢uljðl‚nÈ6á’=µ$O`.€Ò ê•…Ì¡™äf"ÎäH†˜·L9ϘËÕª Ù
-B>c™
-endobj
-1517 0 obj<</Type/Page/Parent 1372 0 R/Contents 1518 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1518 0 obj<</Filter/FlateDecode/Length 1287 >>stream
-x­VÁŽÛ6½ïWÌÑbÙ’µ²½7w› šmÚ¸Èe/´D[l$RéÝõßç )ie;E[´Y°$òqæ½™7üó&¦9þbZ&´È(¯oæÑœÒù:ZQºZâw‚ÿ­¤½ÿ¬âë?lofï×”Ìi»V¶\Ѷ àÌñ&ŸÜ—¢q²¥uD´“‡V8¥ôñ3}Qº0Ï–´tϦýjéY¹òÍö›9M“ “Ï¢Þ ~ÃÄËpÀt‘F ]GqD›ƒÔE·&¥8îÖ$Ë(ã5[CªÚ©ý‰\)é«<Ñþ¨s§ŒÕ2/…V¶¶dö߉‰#u†¤»Jz€B6•9Õ€äC€9^„°„%`¡=¦|qq„.f¦™M%ò
-¶³„ùrˆG›ÊNQODy*¾HÐSU$_D­´¼ãÏPlštßD-mMuäÜHiDÑ!ÝïZ½Ì~VúøBÛûO³ŸÎ“jæ$f
-Ö U1üŒÇ!™KX$w´²ðRáˆk‘Øfrù“y¦] 噄^ ¦ *ñ |’É:O;ÀÖ™U¶=À ÁÆâúÈQœVæÇV¹™†‰:;77z¯LšG¥=ô²RÖ•´ŒvÕkôY†éõq÷JRôuBÂ^ɶá$u1•ÑgµO² èóh±Jƒ.¢;!¼´Ùœñÿ°¥Eô2KѯCŠ…©Tªe½ëa;©w×ANTèT¨ŸP슌ðcÀEš®5UÕcBÎþt‘EYœÑmß@…݆ׯí<Mni
-£éÕâ+î·¿)døEU0O³÷ßkú®Ñ{9ƒ {)7` Z\©,såEmè©Ù{Ø¡w‘qwͤËg¥±Î†CónÍt­:F“léÛçÁäò¾CŸ"Žì?"q4ÿŽ¶¾›—ÿ N GÚÃzVQ¼¦é"µŽ6äVÜ-š\2w&—Š”M­àTN•²Þ\áT›¢
-–EÏòåÐy“™‘•Q06:]ÃóägbSž¬+ý$'×bú5¦Ýâ„E`ª>j,qÒ‡ô¤ÄÙ¹´;úI4š¢¸&”Ø<ž'÷GY`×&ÏÙ‹;çé#K0ê›ûþW³ÚAÄ0ýAW'Z$´SHPI}®ÃüF¥qŽîÔpRØÑ ±4büíͱ¥ÇIúøC)W5§}d=£§H
-L%c}6Öš\yŠøÖ’FŸ¹¨ @-N´C§`0?GåQ,8+]ÚúM蕇_Е7}[ªîYJL7=Ú¨Ÿúý[‘=æˆÆZuð÷£ÎïWg7K?Êþå½öõª˜.Óh™­ÂhÏn™ËwÛ›_o¾#†|Sendstream
-endobj
-1519 0 obj<</Type/Page/Parent 1372 0 R/Contents 1520 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1520 0 obj<</Filter/FlateDecode/Length 1611 >>stream
-xWÛnÛ8}ÏW Ú‡uZ¾Ä°îSÚlÛn¶u±/y¡%Êb#‘.IÅñßïR’eÅÅn/h*‘s;gÎŒ~^ÍhŠß3ZÍézIiu5M¦´˜Í“9-Ö+ü<Ç_+)/æ«E²¼ôb6_¿|ñ~s5ù¸ ÙŒ69œ,×+ÚdÓ)mÒ‘€Ya·Ê {$c)S.µÒ+£ùÒ¤…¯­LèÖ“/$UÆyÚ
-§R*å“,I”%iéÆ>RjªªÖ*|ß‘ÒѾ©¤Ú)½{³ùq5¥ñì‰m²ÑçÛ$²ÌJÇ/ú¦4NöžâvU³?I»ÒláêH°ÿ³–oIèŒvRKžZY —¹z–åHDèãÀÝ^X¯ÒºyyisÄõ6$%ÀNWR{29nÒ§û60ªBNj‡ú[S‘èÒ­„;®í¥u{™zõ$“ÛÏ%ö¬-û–S<BfÑ9¢†~ò ý…óM}º:0{«*Fç%§¡ÜÀ±8ÝZ@ž
-pÁ) ®­†S ̇n¿ÞãÙ¾<¶ÑÏ—É‚1ú§)×ÁqUáܤ
-5Î"0±Ä):O
-ÿ€K4HWe`¼ÊC%úÌk½Cv…k›"
-…eî BB ÂAÊçŠftyüÝ)tÔA7‚Öµ)ëC߶mž¿;ÿ)š•ö"}BQ—4Ã3pÝ(ô=3*Ì÷bBãD—/u% ,ÑǧÒÙ»A¬ìôµBh"7µÎ­GÞw­ž'*]?SÓ‡tHÂ9‰Ç?Â×U]E-kr¤Í `µà›çÐwXöz¼‚e­v¤C¡PX=bXJzÔ ‹Ò¿òÜÊÃųd²ÜÍäJ7ÂXW{r` “_œMVh
-¸wl«Ï¸;̪pºBÃó©ÒAÑRX½kd7môx¼JÖ¼V!’‡ùrÕ$ÑF^v{Hëìaä .ðÈuÌ‚GŽÀ¸ÂÔ%†Ú²öx=Ä<B†„M HÀǤ·Gì1d3–ÐÛ?kQª\ÉlÀ“nŒ>€YPƒ“þÇšžçÒnM¿Lçeíú&C^-ætëù…ùõMÚ'¬/1ÓJCšî1
-–­Š`¼˜ ­Hy+´‹ŠN3õþ"Rhi7Æî:»¡ñ‚w[€ÆÜ»¾Ì=.]yíq#óºIÜ;Ô¦1ªÝíP•Däg-P=†î’GÁTëà\,OžcÙ“YBŸÂb1r©U"ƒU‚E ¯Íj›ÃØ ó®›a¯°ç°{eÁÔã¸gxå¼­SÞØ1öCW±.ß4=_ÄƦæWt––·[¥;ŽN“5cЫêÒ+LÔÈʶ”\ï
-,ÑVæ¼’±äás‚¶ÇMlø_^[œÀ‰ÄÐ*]˜;¿”©Åeªhç Òiq ]NBu‡@yY(p܉ú{`ƒÔ€÷²¦ó1Ú·?@â¯ôûI$†«nŽuÔþª×‘‹/B³\¯#NëF gK|A®¯i¹jVúo·Ÿßßò>¼3iÍkP˜²|sÜ^¯¦ NlEŒa/ðÙ>EWËuÔÙå’ý±¹úûê_㈸ endstream
-endobj
-1521 0 obj<</Type/Page/Parent 1372 0 R/Contents 1522 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1522 0 obj<</Filter/FlateDecode/Length 1606 >>stream
-xWïS7ýÎ_±ã|(LÁ¿ 6ɤ4¤Lc ±3ùÂLG¾“m…³tH:Œÿû¾•N¶¹ÆmSûNÚ}ûv÷­ôxУ.~{4ìÓ進åA·Ý¥Ó^·Ý§³ó!>÷ñg%Í.'«.½¦É ;çøVw»4É©þyE7b)i,í“Êð¥|¶ Ì虚WVxe4ÍT!ÛG“¯]:§sÚ÷{íÁîóR8·Êß$7°¸,…ßg„.
-/­†»'IR{«¤£™±Ì›“¨ü/T! +ßì5öÒwô‚p¤•£"%­”ž*ï±á"7«ÿˆ~nMUn×¾ µÉËÂ8ïv3·V®Ý4¯öÒÃÖHs­t¦¨Bºþ‘›—þ£wxÄ€œiC*§|ZDZ¡k:-ýÊ؇MPLñÆnQ“‰dÚÍ
-ÞÞ= ”Öx“™"mÙøسޖÙÇÿnßÅòOæ_âé\Q¯Û褪üvv*ëä1I~13BDNÒRf tK‡Œ<V
-iÁáù5‰q”V þ™*”ç::ï ÔBþ`ÝZ™ùb<Eƒ£íRcÊ<5dÐ>ã7מÜÂTENSIÚx™GÇ•FÁ Õy
-¸¤ó%‹9 W¨!ìqh¯cš¼»ë\ߥÅØ05ª}UX4àÔ«ÑbËJ×½‰=ÎU°ŸVgª3äJ)”ž“ÑÅšVhg¸É…]7£{a=¯…-è ÅÂBÔo³º9±œ
-ZG•®žÉUei¬z!Ÿ½Ô¼´›@z莚[rQÞ”žYá¼­2_YÙˆÉñ>d¬ƳB!vEÁ,‰i!Ù´™z¡ônÛ!Âј¾@TÌÊÑô—×·ãÐœ H½ÈsÔƒ“®MÓð:gk~Á½SéŒûX <Ö4Áj)ó`XÏ<R³[SÂÎÁ;£­c_Š‡°~‰£ûC5³sõÓ¶ž{ua…¥šÍúß)ÔŸÿ„Hº¶ P·Mpxü(gÄR!IXn‘ÄT€¨uÍ\a·C ±Iâ˜y&Ån:d7ñQj°CÊÑ2™70Ƙa©ÁS‹1µ0,T3%´¥Fä9—}L|+J]‹ÉXB54HŸuRÔmn®&V%T>70rS¥=©Í«ÉKÅQçT] %W¯ÐëÝ¢XB+Ìt ?l‹$=çZ=&`ax3òÈ…˜ÞªoÜTŒ‹8Ì!Ž~µPФ©Aç°ìÄ~IVjZ¿ K²ßЊ«×ÔÖšwz%æuû´ »ÓÆQåêj˜m Ô‰ëwãæZ~ÀÊKŠq¦èãÙa»7ésÈ´[™³ºÀ˜š*ªihì ¾)4¬œã
-ýØŠëðcÁJ4÷š¾òüKöÏ>ƒ„ÇšdW‰@dƒÂd<óÈÅKÑdòYð¤κ ô|\Ž›iîkoà Ÿ›Å\>¨VÌwv‚!‰ï¡^Á‘ƒÎ@Ñ1¸%1”ŸDQ1ûh:Èx¨8—æ2<>ÉÏq,]ÖçâH^Ãõnµ-†0çâB#ÒÍpHT0i ôX ûÌmZÇ2Òóë2‚l8†œ/žk †¹ŽÓ«·Í;Á‚™)
-I…ÚÀ+,#èbƒq…Í|5n#®x/pá¾sÇ8é×B‘NýŸµz¡‰‘˜‹›¾q‘H{Fï~»¾ys1zÿ¶Ûý…~wý¸¾¢pB+­3Ž;ËÊ7 Ÿ²áRK«2Õ²Ìø0&\Žþþè;¬öÜBÐŽ ¨SÒþ/ê/·Ÿ~ÿðéöóÝÛÞ”1ÿu„ã ¬_Zœ5¤­16OÙøb;¥ê¼½½®Šç§4žGu_Œ./èΚ¯˜¾p’…ƒD(s6~’6œ »|<ü¾Q°#çlílxÖÎq+…¥Á½ŸüqðÞendstream
-endobj
-1523 0 obj<</Type/Page/Parent 1372 0 R/Contents 1524 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1524 0 obj<</Filter/FlateDecode/Length 2027 >>stream
-x•XÛrÛ8}÷WtùÉ™ŠdÉòÊÎÔìTÙ‰3«ZßÆR*ûˆEÄ$Á
-@wŸ>}º¡Gcáÿ˜.Îh2¥¬> Gt6¹Àëù%¿žá×H*ü“Éð¼ÿüzqtúyDhQà¤é%Þä„SF#Zd'Ôû÷õáé¿<=|yüm4ùþMÈF•Ñ½¨%쬔uÒÈœ–[UEµ¬—ÒXÒív¾[|?Ñ`<^ÂÔO,Œ3¶ðI×B5ôQ7ÎèªâÓNé^ºJ¯tCsiÖxô÷ÏÌùÌ[‰Šî;K×Foì?:Cò³›éBèOÒê*yrúùœÆã
-¼tØŒÓüˆ Ì\«ŒŸ‰~vk±õl’2—ù®’/¢ná?ö¹H w)ZXñén½ñƒ6‚Ù» /×]/ÎPtì“4C© „l%Gvû²;Â⹋ôGA[ÇJN3PªYa]¥õs×Ò·“µ$zöÆK£EžÙßÞ¶’lºZ‚¥à°·ÆÒ“ªÉ#_Šõ+}bˆ÷‰úå7h „qˆJϦ‘?:‰B•aWƒ@À: ÕcªÏ/2Òu†<Hò O*Ôû·ÇFÚ!}-8/iÏr  ì3²g¢àŒ%Àdä8¢}z@™7µ³H1o´y^ݵǨY:©>†/
-”«…¼ª%j‘é o¢Ž§Ðß{Yq÷ô˜ÛH²?•ª jKSØáÙ÷$èD ýF9êå¹áF1ÿÏÕÓ Ý=|ºÙøí¡†L#e®KòÏŠû*ÞˆN"Lï›kl*›R37¸¶‹ßw « C[Ò­¯Ï™FAÐø¼€ ÔVÛ
-»ñ(²gÌ~7/Y)šNÙû
-ôÉZn{†ïqè
-NF9`O£2ûKÍ«ìù …±Ýò;FàÞ3êT-š=–•Ø"yj(‡¿"…¶qôŠ%Þ çèÐŽ»,Ã-á=ËTÚu Öžžq¾ã„ñW
-»ŒúTÌ\ˆP?&+Ô
-#2s.ÚÄÁó1Jv_cpä Ò …,t9¾%ñ…Fa~‹s=ŸvXU‘~ @l‹ÇÍÒá~ëŽCÑÏE½ìOL<¬EÅŒ÷þ1ö×Ë
-endobj
-1525 0 obj<</Type/Page/Parent 1372 0 R/Contents 1526 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1526 0 obj<</Filter/FlateDecode/Length 1698 >>stream
-xXkoÛÊýî_1¿8€­HŽáGpQ@¶åV€­¸oƒ (VäRÚkr—w—´¬þúžÙ%-Ùí&½M;"—ó8sÎÌPŒi„¿cº8¥/ç”U×ÉÁç»+ŸQRàÎù%þ“Óh8(ÉŽ®†_†§CJÖ’îþöm‘,¨P¥ü”üŽÇÎh<œ^à±£d­œ¿OøݺV”å–J“‰Fæ¤4=,è»Ò¹Ù8š't6‘±tÊ®p3ØDpÞæÑÍ×4ý>›Ï“4]ü¶H¦_NÓôöiöéÓ"M§ÉÍûŽHèœ/èdŒ˜9œÌèF(í¨Aø³Gšä¹•ÎñI©ÙZiIZT’#¨D“­i-”u!éAu|tÍP-mal…Ôds=û¶ðf?DÔŽCtqT¢®•^%5 v§Oχ\…£YCͶVY£yvTªgùµêªÿ,œ§îÏ!ݘzkÕjÝPz”¥Ÿh|uuI*³Æ™¢Ám[÷ÎÆ£á%;{{¸ùãu
-\s2Ü”¯àWFÇ ¹”€-ý-F4°wýŽQZBÕ¬÷äv?™ÓƒÐbvŸ_;†SY­kâa1mC³2E!mhc¡Æ\7ùÚHí81߸ï}”l4p/öÃǧéONÜ~{øúKn*tÑ¿üäèl~sÿëí”~á°Y?{àzú×ÙüŸ“ûdú4Ÿ$?‹d:¿ý_ϦéèUk´môIm•n<Í{š‘këÚØ&ýË(vî¼ÀØšÐÛNæ˜Aˆ}ÝùÓ§ æ(Q–” °7j ­ôFÛ¨-x)r/v\áÛ~Reè1rH×[h mÙûÇ“ÅÆÍC.;“Ç´l>Žag¹sQ-
-Èò-ܨ,8C£@saýP!Téþ¼HöAëòóúà|‡û  1¬RÂ9“)tN;ŠX@ëÍZ *ÚŒÌT¡BìÙËý†g””5ŽÖfóCËK‹%Xp ,Í
-ÙãÓ‹Ê€ñR®Å‹ß¤BN/ÊÍ}‡·Ó£ ›3gé„ßRÍCß`HNǤ¸Z¯˜) (~ä9‰¨}fe?~ÊøiÒ#áGx¹[×
-¤DÙ`\­ÖìÑSl‰Ú7Ñî7š6kØ¿ã%[QSèÏ3eá ·e} ÿ³Ÿt"ÂB€)¹=Ýݼ-[Æ×I\ÒÄ{φù\0ž½Sv]Ë—Ü‹‚±Øx
-Šü´xÅ-‡{­QØ,A¿ÎoN–‚uÆHnLßG¢ gLnQªá¡nR„Õ  
-^6Š_KzâEíb_\Ü®¹*(ÐÊš¶†’³’ë&˜ï…¹]}À¥¬ló¸ vCÞÒ›eÞÄÿÓï”æ¥÷˜þû*ã°QhN@VK™‡M¡W1Õ6Š@xmp  ׇ hÿÅ•uóGk€o˜Ç|_C¶ÝQ6üùî²{WŸ_ G—_ðå¾3È“‡ë =Zó;dM·&kkoˆŸ;éŸ\Œð›ÿè;†³‹³áÅù%¾˜À¹ó+~|šüýàß„¢äÛendstream
-endobj
-1527 0 obj<</Type/Page/Parent 1372 0 R/Contents 1528 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1528 0 obj<</Filter/FlateDecode/Length 1606 >>stream
-x•WmOã8þίÁ‡c%H_—ÂJ÷h÷®t9š½ÕJ‘NnâR/‰“þý=c'}½cA Ö±Ç3Ï<óÌäçQ‡ÚøíРK½ Š³£vЦ~¯t©9Àç.þ
-Is÷ ×ë¾ý sÕ.öOÜ„G­Ïmº¢pŽ;..ñ!!Øo·)ŒO©þ9¡(j¿hMÚ”¢TFSiÈæ2VóW´/´iLïÚèó¼PºTú‰â…(D\Ê"øþ8jÓy§\â–ñCë.Øbšš’/"ËSI*M+[¢”–Dš’™S¹VbC)µ…wöÓ!“‡Ö©Óîû º¸ ‹…Ò¦‰ŸNGt2ürÿIËreŠgvˆNð…ž
-Så¿YÞ¾Ã8®a›Ç"ϵÈ$9\;ýãõE[NÀ"%l&+‹¥,ÞsC·Ç6r“W©(¶Ìùv¬©ŠXþ‚íŽÃ&5±Hm±Ü²åðÙúÎÐÈD&ŽÈ)§U"phNnFŒ'ÿ\ß…£ÇÉu8:¼q<¹½û:Ñ(j<Œ¢¼š¥*ÆJ¶0¶´ï;îrÿ gG“áÿ{xðê1ª ‰™Y2‡ÉÏÜRC“ã:E]
-¥Á{_}"=hu]v€žTi‰ùV›­ÉqLB'tÜ€µ¾…wâŠâ`¶(/djò{æL°ûÇ´¤l-
-L°nP,4Í$UV&]‡¶¤¨î‚Nšœ
-Š¥Fɧé+e
-£™‚ \Ÿ«'ØHð` U˜”è3¯{¯„wOþ¬=[ñ]—¾jõÒºSºzÙG¸%˸µÝm(q!
-(ë³&QÅZM&²¼™î]<1 BzÍa3U&Y#w²‰² èš6ûpQ›2)Ð2 ¹T›¥YõŽA%ŠN!}>ìݵÞ}pÑ€´¥“íFh¯üÁŽÑV³2vÌÀÈDöÇÇY\æ¦BeÔ‰i<á}{7ÇGé2à¬Ï!ÐîÍœ8«e‚‹ìîÞKòŠ)SÆÏLg$ÙfýÚ péúž†\¾+H¼óš—|ð– ïÅŽ SšºiŒ—ÌŒ{,ױμ¤n<=kÜ\K}-Ц5ÆÍi Åñ-¡ÜÇÇÀ;ñŸÕqí÷D§"Ž5آ̄3ã@t<W*OXΡ/ð­ú.æq§Ýî´ð¯»ÕÌ'7“}rF§MNwn`>:ÌüK¶DËñ„áÜ{¹„B¡Í°zºG(Îi!Ÿ:5TŠåQ4â¾O—T9Uóí§àÂbØšžÔÿa6•Lz£åN7âíç†sáñÍZ!
-endobj
-1529 0 obj<</Type/Page/Parent 1372 0 R/Contents 1530 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1530 0 obj<</Filter/FlateDecode/Length 1778 >>stream
-xX]OÛH}çW\õ‰JÁI M`¥}€¥¨H[ÚUXõ…—‰=‰§Ø3©Ç&äßï¹wÆŽ1‘*-Š2÷ëœsïô×É”&øžÒâœ.æ”–'“dBóÙ4™Ñìr¿ÏñSiZËÂ2øüæñd|7¡+z\ã¦ù%þÈ·L&ô˜žRüÚëÉ7Û­«jú“ÜÇÇŸ':›N’KìÓÕ‹®°íõõ5éýð™ñÝŒ¦Ó`ìì|Îgw¹†‡añ<.žöŽñož’ñTçšî¿“ʲJ{On-Ÿü¸X’’p芦‹hïb†¼ÀâU2Kè‹ÛѪr;oì†ÖMk㤲åXªez[¸=ùZ­
-Í |!‚>Ÿ„k°®m&‹ÝE\·TåJ½õ™Ï- ø©¬U­3R+÷¢GôuI?ŒÍà •*ÍÕEÛ_#ˆÓTô ë›ûoK²ªÄâÓ©Itò‡DOÈ
-­]EWDO§É9Ì 1©¦z¿Õd,¹­®Çûô‘œeoPÖf›Ðuá݈ÔÐAε~UiM¥®s—ÑjO»Ü¤9<@)Ø©èp¸v`¾VÏpz[(¸€í™F\%¢Œ÷àJÄ Ï­«%¤^>ÒÂh[CE)‡g+­-mÌ ~+ê•{`3âb?ßÜÿ÷×/ß–K*œ{n¶ìŽ¶\ÂlĘ5Ý@œÆ~ÆœwEÃ{sBש Œ‹; ¸·Bª¼fÓ@6G'q[×÷—TQ¼Ï
-0zeu=¢ÆÌ¡678ßxT{ €°ó4°ã~h;¦Zû„½o
-¹<ê
-endobj
-1531 0 obj<</Type/Page/Parent 1372 0 R/Contents 1532 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 869 0 R>>endobj
-1532 0 obj<</Filter/FlateDecode/Length 1960 >>stream
-xXQsÛ6~ׯØé“2cÑ’,KòÍô!¾Ä×ÎÄIï¬NÚ¿@$d¡&–
-ÆYª\¡Ëw›?FSšÌ®²9|Ç*{ÎTFŸ7Ÿî_fïÈ5¤Jgõÿ–—Z5ôk cŸ<í°ìMU—º…¶Ê#²oÝeô36í][´Õ8¿*Íu1ðö*ÐÁ„=!Tz¸¿¥ºqÁå®”…tX2|VÏ^Ü‹FDøØê€<<“Æn,Ku©ðS¢E}Ê.hÛ². |oÜòóªú._þ³ÕÁgݶù€"e_‘Ó“ñ> À+$¢_„mœo¤¶ZvÝàƒíQœâcÄíÏŒq4Guôÿ`· ô$ù}oéþÂírŽú×Ï?ÿóˇé±ÏVÄ*£ÍÖñçÙºƒe¾ð¦Ï±!Ǻ¼Ë;6NVÙšk‰91_®ˆ½Ÿ¸*/{Òl`¥÷ó¹³
-4•DX¦xo£Ÿ ”èß š‚$.ç$+I‘” 3Om'Ù‡ê» £  O@†ë,6%ñªú#uŒ s 246¥Vh‡B&ÚèÊáÕ·E185—+4¢p Ú`Ÿ¹¾CöyNR|–8…®€öÆš Ë£XPôä\A¦ÐŠÄD‘” Ÿpè=ôÎÑê|›ïÓ¤3$ÇPÄÊe\{,€TóØ-íFF
-+¸<Éc¿5–¾°‚-V‹lµ\ÇàjÎK7£þéB°tendstream
-endobj
-1533 0 obj<</Type/Page/Parent 1372 0 R/Contents 1534 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 874 0 R>>endobj
-1534 0 obj<</Filter/FlateDecode/Length 1476 >>stream
-xÅWÛnÛF}÷W üä­›%¹@|IZ±•V2‚Œ¹”h“\ew)Yß3»KI¤ýP(šÄdîÎåÌ™3Ã'=êâoÆ}Œ(.NºQ—†ц“1>÷ñ£%¥ü
-iW*¡¬Ü¨|# á:‰$Éøº!•º_¤*ÏÕ6+—´ZàŠÔWÜ3S,¢X•)¥Y.õ®ºtY{"kø¢ðG–±Þ­-ì³U:1ô‰þ’†¯u©Ó몣ÓFÆ•Î쇙¼s®¶Náø郴×wÓÙS‰pŸTúôíöæô-#ƒDu~ìVÑVì\ÞYÂ8¦;Îz»JR“ÒT*K‚*„Öy²Ï2û†6"Ï’p:¢i)ù‚öNtõÙµ–ë|$S¥ _±µV¸N¸ž
-Ã|™‰b!h›å9žÁ7®´2n—JÐB-+ÓD´þåþ0ç‘y.jY(+ëJ§"Ë™B>KšÃÚ§åùm©:ÿrºDž¹Ï>”¿n$àኺ'}+@2Br°×!·œç*~!U¡")|áF,µh¡²*Ì,ôRáº7;XX+‹µeôQ‡¬–¦Ê-÷<jbÓ°lÚÕ}„D¸þ=ªiËx¢ÀJ-T“ßå(.# ¼„Nè±Ì^IıªJ_t¦;fÆÁtxÔÊ7¬°³àମµÜ £î’™²Ø‘'+ÈTKYœg8æ³9ÂŽSZô +`?¢{ñ"ßT¬F±i º¸çh¢
-
-Í\Võ=mY:õdß1Np
-|hæ‹eÆj &ƒÑ±kqI”‚I‘€¾‰#ž{ _¢ ®Û Tl°èaÞn‡;ÔQ'ðÂÂå˜FŒ2tβ×/?k¨”ó ŸŒ³ãæÄm1+¢9÷C¶fAã]„PsOãF$öŒN­ÂÓ÷l¿§2¬öÅÌ u4@)–È,l…ˆ:·Ù©-(ós
-¶^.‚ù3¢à(’PGÆñÓÃÕýgê<ÓíôþêîÁ}õ›!aíIÎÞ‰§ÓŸD½ËŽÿµÞ1==ƒ¬jÁŠe&[2y+ûeì ^—b…â/$šƒ´C¡€Œ]˜gõ&w{xTßöJÚrøóºêÝ‚J†L¯xÍ0ÒZæ¤k []ÌJb„{Öûš`A®·Çš#çÒÆ群þL½až4AïÚxÕœ´h,û~¼»u­VÃÀkcê9>´&ú ó+†¡9quu¸…Ôûï&“[ŠWbÍ£×ÆýߧßçS¨”'æe7´Ãaón œAD7aÚOŸ\¸ÃzuDÞÔY`àò˜Çn^` c~†þâ|Þh²†'°qÃÙØ]~h|ÑÖŸ-—eFy-è
-¤Ðs¦ }#7èö F;­7·£ª ,âmÁö|œß·» '”6qžg÷×ä§ýqgJ1 ”ëð6àUÈIÁìêþúŠ¾iå¾[»ä3¢Sx ñûÂϼ1 ÇÃh<šà Fƶýy~òÇÉ?›>ƒYendstream
-endobj
-1535 0 obj<</Type/Page/Parent 1372 0 R/Contents 1536 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1536 0 obj<</Filter/FlateDecode/Length 1199 >>stream
-xVÛnÛF|÷WØ}H”HE—´)àÄNûKnÌ (â¢X‘+“ ¹«p—’õ÷½P–d+icö`rÏeÎÌœýzÒ§¾û4Š)RVŸô &I8¦Áx„Ï1~N û Œž~'ƒ0~êÄhòøÀëô$z; ~ŸÒ’Ç#JsBâ^ÒìYZ”Šj® ™S)V²ZqE,ÏK]JArAº@=²ªäºw´d ÃÛ¼Q¤¥}¦êy˜I± EYñ—?§Ÿ‘®G—-ˆá
-endobj
-1537 0 obj<</Type/Page/Parent 1372 0 R/Contents 1538 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1538 0 obj<</Filter/FlateDecode/Length 1699 >>stream
-x•WMoÛ8½çW rrǵ7Îî- ’ÝEÚmÜv¹Ðq+‘*)Çë¿o†”-ËNEÀ±¨ù|óæñçÙ„Æø™Ð|J—W”UgãјޯGSš]ÏñyŠ_¯i%.gãÑUÿÁûÅÙÛûßh:¦Å
-¶®æ×´È vÆø&ܪn´§ÉxD_>üMŸµ¯LÆYzoš@ÊæôÝØÜm=,Þ,þ9ÓÅt#ƒ›,Ó!Э³w%}4¡ |€ýMæÑßÅå Áâ0LFôÍè±Ïb5+”}æÄo½óhøë¦Ðã‘ø :[{Ól)7ªtÏÉߌ&“äo:G àïAoÈX1ò¨ª¥âRÁ„×¥VA“ òH-MÉÖVÎw²¤¬4Ú"ùÆ!Í''«ó¢iAÐMƒ8%ÔdrÑÒý˯¿ aɶr¹YmÅéÚæÚ—ÛS©Ú_Åt\ÃîUƒ?¹ 3åõj]’uxæ(sUí:'Ñîƒt+q)%.\h(üÚZÁÙ¡S–É}›‹[ê-¼–¥Y™RÓ¾O°Pj.#¢SÉ®Ê+c¯T4S‘4’TÒM€b:¢?ÝfW*ñ±+1@ØZŽè:Ñí{äŽ,€ša$bÿ†Ä8*õþÍ~ÐÆ4…äáÍsÑP帵ËuÓÀ ;²€gˆÀsãu† ¶ ¡6¼`÷J”{E ,`Šðêׇ[ªUSŒè{¡#þ*m×T»:\¬ë!dž`ਊù\%ôè³w¨oct×à
-…LY ºQKÀÂÅ)íU¤q5UÊÿˆ¥z{¿Oï1 ïa#ºÝ×q‹qÐÎÖ­ͨöøÛ†G…Û³GÏøÑÑ›unxnûçxúf?m¬ö¡0uïðq¹ZùŠ›p’W¦‚¸v€^í=TTÕ³¦ÕϵÀÕ@°‰oQùB—9-#ŸD´c„8Ê©ºÖÊ“‰
-¡4ø3g˜êÙè\a‹åI±Õ_üqw‹R¬ SK7…Z…°q>§\š¡žžÞPv⾶‹й éË£òA›DKœç–OÛU+ŽóbíÕÆBqdØ ëºv¾9Q¨ž±ø
-ZÔá`¥Êã¸P¤¸¦÷¶Ãj(Ч–+ÀHûî·ÉvÊw~ÀlÕ=€úÙaLb`­‘-ÔMŸNO÷1×D†áQDŽ"££ê“ÙãuÛŒKN8„³>èrEOщ!ŒÔ®“ƒ¬¥Ü„ºT ²v0°À,Äà* ÇmÖaÀ™Ã³LÙ")2V„L–K)@ǯ ’a…Ú
-´ê~UÄ9í°ÇXÄ@Ç­zQ¦TK}¼b¸±7{Õâ;‚'>¢ÈpV.©šl”²ÚùÆÄFÄaUGΗžÝRìµYÛ8N5­–8Ê©¶XËýÚŠ{i —›$oä3éXZ'
-endobj
-1539 0 obj<</Type/Page/Parent 1372 0 R/Contents 1540 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1540 0 obj<</Filter/FlateDecode/Length 1687 >>stream
-x•XMsÛ6½ûWìè"eFV,Y•ì^:¶cwÜɇ«I¾@$d¢& 
-÷Fgþ8*¯ïl\AV99y³ú ŽÎi
-ûìèøtŽ`Vñhz2™Oè‹’•Êi£`HŠ•‘‘ÓfK…4™²VéÜû`gKd
-+ÄäebZ—Î!Ne9pÿ§:¹ îö¶]c£úÉ ]¥*zâP`6-­ ¾Y* K¤ú‘Öúg‘Mt…Ú%?d6=EaU+ryÌ7è·’®ri,2ž§îÀ}¬l‘Š­Œ  ²‰6ýÜÍ ^g‹€çàþúó—ëÏ¥…“‡Ñ{\r‘ɇ7½œ[}MPg
-6g ^ÁP§
-ËDQ@OÖÛZ¤U @c¤$™Ê °Štqõž*´†f8¦a…ÿ8ªáËÖÊÙÆ–7l{0v‡ÉâAç|þ!éÖY;ÌÆ4=¦z-RÌCõMv6äìÂ?£ƒÓTW!sæfšã~í8®¯@eCm|l­Xƒ03»(ZÑ1ÕáZKä¾ö¨ÕhûFU†»xõ‰TG€aç}?¾Gädª`xBÚ|o¼šs¯N°[0J;†úˆ¼Û~¿^0òm¸º·EÐ& 0óÚ žE:˪Ȋo¡lQÝéÃHÞ/áÁ­(ùã¡ ézÔ4Ú…Ù¿àô²Ê^~z^‚N–¶ô²ÏìS²hˆ ˜…‘õ²'ëüa÷¨vºˆ"ií\Ö#`Ôbã9Ù‡÷²tTñº‘pãbü©04¼†% V®;!"nOsæ° Œ§¢25¡ý\óeäE+´ŠuAÛ÷ú…n±ô™s‰%‚íÒ ëmÀ'<@$† s6ÓÐf`€\³jÌ‹T‹¸/u\‰§¾v|âùdU Æº$ ۞ĊS%
-ªÈ¤Èý8Ï=Þø Œäñ‰dþ…Tƒ´u“é¥hñÜ,‡½;øtD‘iÏ‚yUÁB”h  3‘.ÅÒè†'I¸™jý„’ã‹ ¤ÑcjÂço½hZ,œÐÍê"–oVUþ)^”QŽD¡~}møú=à”ð“l6¡w»õûî‡ã¬¹‹yËxÉB{ßðB„f·ÖÉŒqDæ•ÑëÁÔ¡+¿Agý¸åã¾8+ß`-¹åæd6ø»a·iÆÿøZ™nÆ£éèý\o6jï;˜9ìZ¤SŸ‡ð€³Ÿ¿öªß
- mÝ6•5¾“Eç®;ŽI¾ˆˆ7ÎÏòbÌ+‹ot^FÿÃò2Þm<"k´_۪ή±ßWû–Ðȸfm‹ŠMß!‹tÇÞÚ´í»AmX%ИS@ú•’ ­r¼Ÿ`׉{€:²çßÈx yÞ5°òãÃñ¹7o••.±fÕvû™×ï1[OÅDð|h®£VíœXeQnlSFºÒxñA©B09¹ˆ=$X$ûz§\VÝvkšËw´Mx‰  ‰Æ®;ú¬^ÿ§ üUàì”ÿFÀ çýÅ‡Ë º3ú/¬ôNG%oxÂA*êãæúñòäœïÿÏWòùr>Y.ÎðRg— 6y½:úýè_ó?úendstream
-endobj
-1541 0 obj<</Type/Page/Parent 1372 0 R/Contents 1542 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 879 0 R>>endobj
-1542 0 obj<</Filter/FlateDecode/Length 1628 >>stream
-x•WÁrÛ6½û+vt‰2cÓ’,KNoNÝ´™4v«Ó|HPBL @šÖß÷-
-)<Ѵź†Wêôœøh‘Y=@¤ŠJ{+ªöÎ[a¹0 =Š|+z>R.ì3c¹(KvC§t÷ðH¢ªŒZÀ0
-ÁgÉàØJ<Ëñâq¬ë¢ŠÂ
-G
-„êsꔈ\#ùÈ,ÚXð7ÎÈÖe©Må_¶éžrò¬¬ø|ÿwD˜¦ÀãÀtä˜òA|:°2/Ý>Þne\U‹•e”
-•Àmn]ðDáÏëR:¹ci-ÝÉBÉd2šãØÉ¡÷p,UÆÊÞqES¡+É~¹Tñø dlÞÓÇc†TrUø
-òÀ6RÇŒ±L\ŸiT;jòiª*¿g§^@"çTÆÒÔ]€+#( ßÈœ—FÇ2©ÁÂX„ÀL D%ìÉW„¹’ÃÐ<½h³‡Ã¹-ú†™‚t‘øЦ\ª¬3#BâŒGØ¿ËÑuyÙh“Ö+`FeFYÔÀ| ìéÔ
-Æ™ 3qÀ‘ÖW%ÎðzErö×ýçÀÙ`s/ì0é üI­¡ X{ž¦u‰
-`_ÎÉ9sÎÂçzzϤà`¿À•ÔèÜùßæ·'‰­Ÿ÷„žjAÖ+Þ[PÃ_ø5Êë×a–‚@1†Ò€ËÎÀ–Ÿ²ÌÀz–ÏI¡û!™ H¨‹ŠU‰Œþ#ÁTЋ’[ÝwGìDÈÜÈ62và*¤0Œ
-endobj
-1543 0 obj<</Type/Page/Parent 1372 0 R/Contents 1544 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 888 0 R>>endobj
-1544 0 obj<</Filter/FlateDecode/Length 1304 >>stream
-xµWKoÛ8¾ûWÌ-.*²lKî{H±Í¢‡.v7>öBSTÌVU’Šãýõ;CêA+^')°0`€"9of¾þ˜- Æß²–)ðjG1~þþþ}–lVÑÒ?BËdeݪ„ûY¸ÆÝuzº»N¢%¬Ó,Jèîf=¬ÜÝ`]ÁjµÂ»þ,í†kÜͲ“]oÕj³ñV-2´Ñ¯œä`zÓ%ê vƒ5î~HOvÉÏdG´8K¢´[ØÛÙÍÝ
- Ø[ºÉ`›;´bØòy#t%‘ª6Ñ»í·Y ï“4Zá™ù'cDm%+Ëã5ü#´‚´d v/€ßÜ%๼ÕÒ¡bæ»ßë•ÎÝ7ü;ÂN€Õ‚Y‘3ÀÀ ªðrIhk„iüý´— µ²S‘h•: «h­^,1^h5ß³úA\«sPµð²™FÅ{eèУ ð·¦|.Hµ³R<5¥äÒ–G! 4L³JXg®;`•“mð+<²²äá ¸óÿ,L£LÖhõ(s1õNU ³r'KÂú íîYµcD1Fí°ÎS2plçŒw×Ð2Y[­ò–‹<‚­òP`@\
-¥¡3ÅŸ'‹ìŠ“ªDþ¤[ó O_®?f¯)ƒêIÎùèËúa0òPP{ªèòÀŽÆp¥ê«©‡ÿGUù
-s,p¹Ò¹ÐSëïäR n•>v´qHNÈyhXå8"Vøé’ÐÁìÌ…áZî¨ùìÔ£+ÅžKÄEú£4Ç”žjà„)0Ú1²Ë™HD%v¤b*áÒ5ßÅÎB?èX:Š»XÿmÏ+";È™|Ì9ãÜ`0âº;bx
-Ö–˜ ·¼ØPU$.룜&ñ—Á ¬¿çEë'v]<øƒGÄ.ÇFÔõœ·r×Ä–× Ýža¦!…tß ¨ñ¾srO(ÊuM†B^ÉZ"w1,aàø…ú¦ë*~œ1{ä êF²4SV0–jÝ oT­4² ÖJ)ª~×BiPr-Ûx`Ð4‘±3U‹NÕ8U(gSÛ E8kÐa¼íÔšNiÑ¢!\Ñ(U…òœè~–ÚMGHHu>‰Fw)Ü.äJ˜úÊú‘Ï©›[ÉÛ’én.qM–°£F{Mò=”¤¿P4#DC™õÓ;)¾¹ÃGT÷*†Sí"t¨ø:_}çOc<Mu=Sw˜˜FpYHN…B< ¿øKý» xNŒÌ„ü¿º9° Ïª3ÜC'§z˜ŽAu¾ òÜ,­^øX^½·Aø&·ÃAÛÅ·˜ ^÷#I×ùÞÙ~(ôM”>@ãÍlîYsûåã-ü©Õ7~S¼­ðqæzÁó¾?þ>‹?Ð3ƒë¾¸ÁRÀÅkmDb¬÷ÞZeø”M7øDÄÛÙ†„~ÚÎþšý ®Äêendstream
-endobj
-1545 0 obj<</Type/Page/Parent 1372 0 R/Contents 1546 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1546 0 obj<</Filter/FlateDecode/Length 816 >>stream
-x•AoÛ8…ïþƒœ V$Ûµœc»Ý
-TõtkTtbkÅ!·÷ËcÂcð^AHïUMÚø DMvK¡Q´Nt*(ç‘ÊËÞsLƒè,庣šXÜl±L…‹<+3ú`pHÈ ­¡½MÌæƒ0µp5}ÝFÐV·ŠDNoúűþ<¥éÄn§ÍÓkÉ%8¡¿”Qž¼íÔ(øý×_)i£ƒ§Ç©ïeCÂÓ•‹­™öpõxVƒ²¾~üðvÊuÚ{èõœ+©Ë¨j´È‹lΕ;%:`&…¡ š iͶÕ2à[Ø+e½cΤī@/Z$JöN‡¸ŠÖ>ÈüîÌEmΰ9ÄÀsz°@äçrbƒ£h/ø„öQ­oìžúá«Û¤pŒ¥"2R*ï &ŠµìÞ(G:`”mKcŠs¢ày!– tù¹\ð› ¼”ºÏè«A­ÐT;¨À@hL’E7¡q¯¦GÊ‹ò)!
-d-‹+^ÒùƹŽhx°Ì%V
- $Ú@ÚyÕ¾ æ”_ïaa~x!ÍŸÿ†$¼óv{ÿfØÏ)]=üsÅ'íì”Pò‰M ä3fGÆÇ]‚R±ØÞŒÖ2P[Ë.d§‰ÜpQC«Á PÃ*â€OáŒÈÌbé°‰°L¢ëiŸØŸÜ
-endobj
-1547 0 obj<</Type/Page/Parent 1372 0 R/Contents 1548 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1548 0 obj<</Filter/FlateDecode/Length 1450 >>stream
-x•WÛnÜ6}÷W àÝ
-–vÎ>¨J\pcúžxI8œô6ºr¹´àÔjòÒ=¨Rú‚¾8…s€NHñÛ*–L/3pN•,•ç%l‹ PàX â= Álœ™£ð~o]5ȹA¬Œï&ù0 £t“© å4Y%›é§ö˜&``o£®ÈÉoQ¹Deæ!¡À ŸÅ쀩8ðáÈ›—%´\·±Ü"ÙrkÁLX™«‘b"4(’÷lx *üÛœàë6AÒv£¹s{9Ü4ÊÀ“]@·u…²iå>‹&ËÅU‘j‰ë­GŽµ,·Â(_gŠP…†‘eHºÆ!µdui­åÝ’¢©¤ÓTñ€ÉÓꜞjR™µ¨uh+: Ùò„°©' ¸¥‚w(qëlÜlÉIk…É< ÕRlšßµœö(¸›ôªú^HV*pëQ¦R(¤(tòߨD@]Ú¢±
-œ\ƒè9æÆ&DOÏÓ¬h#QÛYObW8¦¸ûoÛ,<ÔQó0îZ(ýÔò9›ó"]czÖÕëm€^–6šÐ„K´yd/|Pµ b7žtO.=®=Ä˃¯}ÆŽjÜòbèÛŽ‘¥ÑqNOŸ§h<¶t(Y­Xã8Åà¿^ k'ñ3ÀXïf0¸X¤‹7l”ÝûtÀìur§E™šHï-Ü ,ß ‚ôÔ ò¹ÿ5÷eJ+٠ɧ…øMWÊLQàSd7m'Ñ“Üê{È{ òÇÃâ[Vm›n^ÓªV¡Ý”úzïxÙÈ”»{Ög²ä‡‚?]ÃäêByéŸF²Áë£aÏ·ÝÔÈÈ‘Œº²m2rÖûµKŠ½n¢Ç¥/•4Ý{¶PÞG.‹–^k
-µYñ²“Ì5VlÑoIl–°äzû±—c/i-:Íg£„åëÖÖ˜Ï.EÃ’{ygá·¸†O5c‰¸¾wIŽx‘æ¡{Ïqu%úG”2ªm¨º]#^œ¨TlC'^êWÚш× ë3ó7âe¿•’eJ©³huØetŸï…Ø:â—q—¦\Ëî^8Ózm×–¦5nFꛧ\wsiïüÆî8ÍùbÝT>¾Sø ð!ÏÖæbÏiõšctB¹aÐ~«pu†‡ä*›ßtiWù#í~EÒs¾/¯/‹ë«|³bÈߤ©ÿqyöÇÙ?­“Sendstream
-endobj
-1549 0 obj<</Type/Page/Parent 1372 0 R/Contents 1550 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 891 0 R>>endobj
-1550 0 obj<</Filter/FlateDecode/Length 1634 >>stream
-xÕXÛnÛF}×W PQ
-Ÿ\ع٦äÇ™(ט5µmˆfpÃÿ èMœ'ÉôßÂõq€„˜Š~è”VÐKú êßk'_û9êÊPÄŸ ÌCtR!#ÊP’P*˜Á˜•W¬¸Q´‡Ì¡ X±h•^&öÔK».à o”“Ë ²×ÐÓÚ#¼”®ÑÕ¬
-Ûï=ŒèC.y02…lmÞ8Tè”ú½ÔëñB³Y<!
- ¿s óka¼¨äëƒC/Ç¢+•ƒ9 Ù‘)&"ï¢òÒ‹T–etÉší­ Ùß¹:m&ƒlô‘†zµ¢'H(.Í1µ)r™p¡ï}ûBÔ²éùVäù@·>
-ÃY#rJ!ež×ÁÏy#]¦âAi9\(ßÚ@¢ ÌZ(ãV±ó dfG j <”Z¡Ì")
-¹Jy&3”ÎCØßæ÷ )…øÌ+—Á,Ÿè4µÐ¡š÷LÚmT“
-90RäêO%£ ¸Üæ’¡‹…b¥ÊF¥§k±9 Þt+$l%G»“ÐáÙ^#»+ãøÆØàYøgÎU¯§S"ò4i³žúõQí¹Œ$z•+›qçø Õb5ß¡f¥
-endobj
-1551 0 obj<</Type/Page/Parent 1372 0 R/Contents 1552 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 896 0 R>>endobj
-1552 0 obj<</Filter/FlateDecode/Length 742 >>stream
-x•TMs›0¼ûW¼[™š
-É•D\ÿû®
-ñ‰(‹i™RÙΠ¤4Kƒ˜’<Ãÿ_éö¤¾üüü6‹ÒeP'Hi)Bz:ž$­gÓsKqx,'ÑéÑ4 ®§Ñ4 2ºJ’ Gçeg8ùÎÓ3¢Wð'ÑÉQt>‰NΈfÙIgŸ›äñÛáoŠÙåׄ¢ˆŠz¥yFEÕ«RQÎ×Ü<‹’Óã|u»~¼ ¡Èjª™!f¡^Õ•NhEº¦½¨81Ã)îöÚü"Ö¹†+'JÖç8ÃêZ”ÁEñÈkŠ€ä!ËT‹jEÁ2 ûÕ}ÖªÛÎ …³Ý%µ¯t±_ j‹†c—™]7)£’IÉ+Ò~ kÁÜ:#zî6 S­¥Ô{¡¶¾ImtK OZ-¤Pœ.wH1x(¬'ÚÑjúný°*>ŽÑ8†z€´fí†Áp±oîçðÃqrš¸bÉû¡m·Ûiã µx@èpp¿™ùb±®Y€ü©óÇ‹÷=+ÌeXË7X…”Æ-ÏÈ a¥ÝHÌ6º“£:ÿT,KÝ)5+²ÜZ¿ã–)¶å-6J•0â=óQ¼Š×¬“Ž6¼aÏB›3P Q;;Ìée,%‡…ÿˆS—h%=,*ÄViÈÄžŒ„Pû–O@ßµƒœ sgȃðLîÙÁŽíl/¶'q† ¿ø•— <ág®JsØ9Èj-ì\YúD‡ãÀ°¹…$~°· ÞÁ­®:ɱl¦¼ÎÇÝö
-endobj
-1553 0 obj<</Type/Page/Parent 1372 0 R/Contents 1554 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 903 0 R>>endobj
-1554 0 obj<</Filter/FlateDecode/Length 1403 >>stream
-x­V]oÛ6}÷¯¸@æ¶bù;: içµE±ÅC1Ì{ $Úf+‘žHÙõ¿ß¹¤$;j‚!À ÅËû}νÿôbá7¦Å˜&sJ‹Þ(áKûç÷_ù Ífq4§‚¦“hZrzè] Šã8š]]Ž“(¦ébŒ'MFóöÄO¯Ï¸Î¢E-n—Ñ’¦³ÛhÌo§Kè'{uÆí2~t{¿îݬni<¢õ±ÍKZg>$|IûïöâàdIñ8¢Æ:¥w$è“JKcÍÖÑ{e]©’ÊÉŒV*—¯×_{#Ž§ÐÒ8[' r¥”d4=ˆ",ÀãE08œLá5„a!Žè£†¾*uÊhD§HU-:^ ­]ï冩6¶é›’Þoíæ5JsT™´p¸B[2[²ò JáÃpÐ’›JENG%O|½E×eª”©3¥’ÞÄO‚£n/UV–Ú$mKƒ¡K¤®‚ªÃþl½Îܤ0„8X1¬¤RZS•)L üFKw2å7ÄíHä¹9YÚÂÿ½ÚíeYç²±+ŽBå"Q¹rçÙÂh(ÉÂI±“$¿#ì •È(¹Ð)×Kº4¢Ô¦”¤4,Þ3‰©PíÀµ-”9Ó1z©tfÒªÚù—Q-6ž£™|E”¥F‚]É…Bà{s‚Jü³í´½ è­¾S!Ò½Ò’6}Cqp2ÍLAÜPR"+å¬,‚é¸ç[êg I-’\Òçûa",zóýêÁgÖ?PjôVí*N‡£“r{_ V~³× ×ùfXØlÛéÅ>™—6¢Ï:•”T*wDØvøU» QŽÈl*4%g蟊ú"9£\Û‘»Ü r”“£g©ãRHå“q_’±ªBo…§ +Ÿ¾-’ˆÃŸ¯PÕô÷~DšŠ€µÓ±§vÏõ "®_‰® •ð ·¹<Êç]öÞú‡M÷©u9¢»V; ]¥¯Áá¹eŸëås¥¿Ù&^nkñs‘˜\¥n=\FiÇÝTcÆ×ÄTÈï¢8äõ똶׊êJ´éüZiÏRß}|ojÆ›ÏIܵ.JHØ%(R‹FgJC~µMO7Åù²—š:ø{𑉼5J|¬ûL\ÅRÃÀRÁ&òh¸
-@ôŽª.é¥@Ñ€6øéºyÝøÚÇÁœïYÎC‚˜äÎÀrOÄQ
-½cªòdúE錙ðvÆnŽG£Q×ÂYÊŸ˜§A5¾xÚŠªCÝ«ÍÜ©q ˜1½®›Õˆn›©2 öŠÖœ‘&~¼i:b„ù
-šû+ óïÎgªÀæ‰2–4€HoéáîÓýÝ3¢ž2¢çvÊŒyu`SÙÖ>gç @Xoé<kJwI†å3–.ð»Ø¹Y]á2Á} ´ÑÑÚÂ3 ôCŒ`µAXVÝáÆŽqÂ/s¼žìõ«p×·l63ì!È@š=áEÑ0È›¶ûm˜E:ÐW'ÂÇî½Tka2ZÌfÿ§«¹¦¡¥G´rç‘ÇT|ç“^¯QMN_æô#ý÷­úA
-endobj
-1555 0 obj<</Type/Page/Parent 1372 0 R/Contents 1556 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1556 0 obj<</Filter/FlateDecode/Length 687 >>stream
-xu”AsÚ0…ïüŠ½•ÌÄ6;Ǥ)·vÚ ™^¸i‰•`É•d<þ÷}²MÚÒ†¥Ý}ûí[~Î2Zà›Q‘ÓrM²ž-Ò­óeº¢UYà9ÇÏ1†ƒYžæ—÷ÛÙÍfEYFÛr­Ë‚¶Šg± ­œo´ÇcOžµ …ŠÉ÷õÞµ¤£6¯ž‚¥ÆjâC<6:ë^ÉW±§Þ¶Ô ®IE>èQÔ{‘^m_f Jò5ÔnÕüɳód =|":“<j6Á“†Œíhïlçy¨‚Ks ˆU‡”PéNìHÚáãc™ÝN|JwR²÷Ú<ª§ÚÙ@P;v"ȺápO»yWiY‘hHçIiÇ2X§ÑÑÔç(nwEA¼âm;Èï×t œmœÜF £à ´ÉÍæ–2 ‰ãH–ÙH£Ëð¥¯6°Á¿‡†É'yœÚü‡6
-„Þ¸f•ì&Ø[„*ÒÔ8>iÛz­mkâ{cMR£JÒžj¡Wã;‡ÐHç¤%ÇÚ „Ñ·à‹"!€}'úªð„³ª•1‹ánÊ]Pƒi8ƒ;çŸZ—““"-3:Ùåë‚þîz83ϧÖ9X%‚¯Øñšp_pZ=‡'j?4Ø×qÜdD±ùʶGEðx¤t´;)<¿« ¡æÿ•rÖº(ϲu:ôÔ´®±žýõØë䢞dÁ‹pVd0ò= ÏgcOÊ*q‚É;Ì•nâ]X§aWkXÛtƒ-õq Ñ­5 ¡Øëg÷©É q•j«ôa u¹Ëz\¦³Ûûw1œýƒD9M-[–iy»¤¬ÈÓ2Òz¼ûrGßœ}ÁúЃ•m1‰8“ÁHÙÿRå’’bqïÿcóU±J‹u‰UÀi¹ŠAŸ·³ï³_®‹endstream
-endobj
-1557 0 obj<</Type/Page/Parent 1372 0 R/Contents 1558 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I15 15 0 R>>>>/Annots 910 0 R>>endobj
-1558 0 obj<</Filter/FlateDecode/Length 1648 >>stream
-x•WÛRÛH}÷WôUkª°l°å¼vÙBb§ò°ÎÃXáI$ÑHö’¯ßÓs1Æ1{)À…¥Q_NŸ>ÝzìÄ4ÀOLã!Ž(-;ƒh€+ÛO¿vÆq4¦óÁ$QIÃAúoM;ñÙ×Ï’ÓhÈwG“(ößø.ìÐp’Dg|g&þÛö^’اÇ|µ¤¼óHñÖl\üO%4Nð‰ðú×ñ9½ÓôÑÚ†iv÷âñ·³Nÿ
-Ž4Ëad4Nh–ÙŒp%í^.Ū‘5ŧÝתjTõ@ÓvµÒus<ûfŸÇîÙÞéüϲ.Ç]WM­³6m”®ÜÑ3Šct8F&8úV>¨ªb£Õ,©YJdær+¤0ò„¦¢\2Î¥±'*Ѩµ¤/ªÊôÆÐÝŒV!´R¦KQ)SR媥¬™±ûõ—o­ÝN{Ÿî/iÞU‘Œ¬Õéý‡7Ó)U¢”­ÔJÎ9i¹Vº5´–µA&†tîcÒUñÃ7¢ºÕ6”=Ÿ©(
-ù‹ÃjŒìgHWd™bˆDAy[Y´D¡š'Òk•ÁðâÉe-7bôpªÒ¢Í¤yÆÁÈ^°ìKD¹® U…£lB=³Ö”«BS½ÅrrÞŸ$ý»Y8
-=ïÖ2ÇÓHpÙ4«7ý>HÁT1‘ÑmJÀó £J6(µ ýeb1¯ævoŽÌSÔ³Ìúdø- À™tIÂдuóN§÷’¬Oè}Õ–¿ë…™wçÇ'$›4Š"ä<•’Óõä 1ÝNßÝ¡¶iËGG D¢ y–&«¢R¥µ6:o¢T—}Ë…RC4T…¼K÷žò°Ÿ_ãîÅýõüø<!ûWá9e7véˆv½HSi ]j–ˆ‚n”ÉPÛË®­ï!ÔM/¾É´1‡\ÿ7Ê1Aô=†ûÁVÖ[ÙJ©Õª-ͲÖíƒÓ¡ÖHîu´´­7h&±€*‹¥Yu?‰Ë7½ØøPì¡‚`ë ¡ÑêàfK‰‚-A–…”]rù ˆ&ÕUÞ²&‘X趡Íõ‡Ì  ÊP)Ä
-‹ë%š5Uº!…_ÜÀôxlUm’ÓÙcW
-‰Ûs ·ºŸi€ÍQs5>CDð(ª'ÚÈ£FQµå”/ŠS¶ˆ€ß @Ø6ªP?8šYC¹¬îùÁùËà0ŒŠBo¸‹o§ôÇ[XmTZ Ò
-ž±ûAâ»á3¦^«TRZKÅ‚Iðžüµ—è8nÐClÞ‘E»§Ãm¶‰åbÏ¥(ÀlƒÖǦ³5õÀf©0DüŽ`ÐÌ"ëÙ…D8måyZ¡-„14æ¡þd‡X¿…xünÖ†Ÿ¶ÐS"à;8‚m·-?‰¸W€ë-¢5`æ=ÒUÁ»ª]»{Ž î0'ì;Õ@»£ß ^†V0ìŠ qFMq߬dªr·8{Ü¡(íËÝøèTÙZú "ê
-ëZÐë  éÿJÇå²è†’e€ÅI4¢ÊdAVo KПÔ
-endobj
-1559 0 obj<</Type/Page/Parent 1372 0 R/Contents 1560 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<</I14 14 0 R/I15 15 0 R>>>>/Annots 921 0 R>>endobj
-1560 0 obj<</Filter/FlateDecode/Length 1816 >>stream
-xWkoÛÆý®_1-
-Ø"ŠÔ“ºF:ŽÓhÅRÑuQ¬ÈµÈ„ä2»¤ýñ÷Ì.I1ºJp• árwfgÎœyðÓ ZŒi2§(øž7Ý??‚¥·¤i€w”ÓlÜ-2ZzËœÂÙ{A0ö¦4Yν‚Á<ôæÍŠ%ûkì.}oÒßí­sèpšX6´ª>ÔC4˜ñ¦]YŽ5v'¾ôw{kÞ]zpü(Û[cw6g“»ÝO,pÜÆß;žâ ¸î‚)½Vô~0/áËÂ3˜7Da³bóúkìΧޢ·;CÛx:ÞÄõna%KÄaÆrö ïõ–9-
-a¹siæ\zµŒÞL5mžàÿ<\Ð&¶,ñi]ÖFÆ´=Ðïi«½¡û •:-*2R?Km¨Rx¡žÓX’©ËR銞”v‡¤¦X§8F-2%âÇދ͇OÃñžlâË?UM&QuS®âôé@UUVû…!“o½HOô”f’/qlOì2µ•B‹\Vl‰(°£(ÒRT8
--O*ËÔ>-vVº¹„óÅ&ZÒã¥z¢HÕÚÈ—dT. k–íÓ³Èji°[G C¥¨’ bi¡·i¥…>ØË7¶’´,3¹}Z%'÷ŠxC6Ò©¶€`™´’/þã7>-]L† ¢Åê/çôß­Fôƒ'„ßå2ß2 ýE%â<-h§U]¶Ã4±ÍäYù[0‡¦‘UH6Zê*•æ¬´Vª¢ÔPš—Y¥UH€Sá·¦\œüâ
-ÚK*¤ŒÏ
-}â7ÄØ µƒ
-ŒKø¶¥³‘6Õ½Ì2Þ¢rcæh © ÔS±;{&¤Í㌫c#k ØJäµW*_ð¿Þ% ‡$
-ŸH¯Ô^êÕ•?æt—KoÚôÍæö~s÷îþ;z¸}ÿÛÝÃíkZÝ>¼½[¯ñrÍÈÞ„Mÿ ¦S/ Ç4ŸÏ½ÉÔŽîëë·¯®i¥ÕP_^Q͵Ïvn–ó…ç‡.|Û†nQò䌯HaŠæÔZ»,˜.ðu9ñņžÎùÕífð~ð_ ~ºGendstream
-endobj
-1561 0 obj<</Type/Page/Parent 1372 0 R/Contents 1562 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 926 0 R>>endobj
-1562 0 obj<</Filter/FlateDecode/Length 1719 >>stream
-xWïoâFýÎ_1B•Ž“‚„
-*-%UQ(Sf{ŠÓ”b2jGi¡ŸüéÞV4óeLëʲF‘]Q¹ÃƒÖ¤ºÔÖ8Ê+Wâ†,¥²¨ÔÏo_;@£?šDcøí-6Šâ$±•)©r
-wÉÓF%%ÿ[âøÙG0?áªtÊîôÐÓ‘Šp¥°¶¬=¼eO§7Iȸ?f\¸|M¦äOk<ä°?<Ä?Ó’#ÊU¾4ŒÂöFÁo[hSª‚¯¨q§¹6‡±ô(Ó®ŒüÅÃðë
-E¨
-§N$„!¾5ØRWê,£­uN9ÇGü°s¹W:Sò…“qÕ2Õ,ØB+w”ÄR—úSrü鯈>«€E¹‰Qø`kä6q›øENI}ß*FM¶CË=¥jW™O¾/$*¨Î™æ“I1í6LÏrF_¡þ®_ÚÄ
-òÌ€ÃÔ}ëøþ#n§XÚÍíZÏ‘e°T´Ûšßf“îÉ3ŒRéQëÀ!k€ÔdŽ™‹ÆèR/kU¨£h‘ØS«Ö€:‹Kç*̱µxóC·Y$„k‡KW+ª8s–›0^bîç6Õ«}Èçç®J6G)@>.ß}Ä®
-ÂÌe W¶ ¿õ
+1258 0 obj<</Type/Page/Parent 1119 0 R/Contents 1259 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 615 0 R>>endobj
+1259 0 obj<</Filter/FlateDecode/Length 1192 >>stream
+xuVËnÛH¼ë+ú¶ÙCdñ)òè$ë$€•8+åq¥¨‘ÄÈÑrÈþûT7%NSØ…Åšîéªî™ñ¿³€ø hR”RYÏó¾Œ?¿ç/”ä)~kŠóyr'ZϬ)Mç¹â¬)|ÔlNÒj vÏC•XãšÂÅt[Ù' çª “ù’¼©‚5-—\íÈ)XS¾D¸çd%Köc Ôlº˜šU˜•¤óH³
+³’|’Yc°1wÀï«1ØT3V%.à[
+’ˆÕ`„ 9—;r
+Â…˜Ý9¡$N¸'#©1»r­žU˜uN ÒxЉƌ±¬óŠkŠ‚h²¯èLÒy QÌ:°N1·ë9kÊ2Øä9YgÀ“9j<êôì S0Ø<án{ž]Ø0H&%i ÂŒU±s·§U‰ в )wM€¸à!ºsA#'aÿ",⎠0q°3®tä„Èáø¤Æ`¿§Õ˜íKÙ«0Ø,aë=«0,À À ‘Õ˜‡h1‰Õl6e¥Æ •+#
+xˆˆ^}¹Á‡K\.gwä$%æœÏßR€OyáÐ`h91—KŒµç8eœ/dÔc¾ßÀ)D•1RzNAî»æIɉ«O'DêX€”é!'ÀPyNA䌸NOj W\¨Y…Ñ ôõŒ›jÌ] '±ƒ…YpÄÇ*Ì=žî«1OûTø
+¦R~°Nä´ªÊÖ:»ïèJùPÁ›õ‹ëLM]kàSóŸ
+ŸP”$Z÷ç³m»[ôµ<Úƒmmá˜1–ÏnˆM½cyðv {oÒ<Îí¶´zYy¤ó©?T2€JÏeÅÕÿðë®(Jÿ=¬©ÆŸŒ4\åXwV,–Nþáè«3íÝ
+ÃVa®Ð&Ûc`«î×b)OeÑÐã»û'xךñ/7•øü}óùÚãál8Û·%fÛî ýª
+zûm}ô¾µý}<ŸÙIq³bÈt6­Ó &¬Ý=d~„ãˆï(Lûíáñ/É2ÍpÌA¦!çÿk3û2û ¿ëõõendstream
+endobj
+1260 0 obj<</Type/Page/Parent 1119 0 R/Contents 1261 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1261 0 obj<</Filter/FlateDecode/Length 1355 >>stream
+x­VMsÛ6½ûWìQž‰(ñC”웚ÆÓÌ4nÚ¨“‹/ ‰¨I€% Ùú÷y ~˜’Òi;­3v$‚xØ}ïí.þ¼ iŽ!-#ŠSʪ›y0§$Žƒ%«%>Gøm$íüB<_|oaµ¢yÐÿiöø‚}á*ˆ{Œ$X´ ?lGðúìᎢ9mvˆ$]®h“ûu<É&µ“ûF8¥÷ôé }U:7/–´t/¦y¶ô¢\A_Dµ·›?n)\¶HÓ8 "`MÖ{©ón9¡0ì–£eòòÆÊ¥vjw"WHz–'Útæ”Ñ¢¤Jf…ÐÊV–Ìî;!p`ÎÔb[J˺4§
+¼cˆmNÓ0n#–€…ö˜òÕ!@Æ:Ÿ™LÕ¥È.2~ÜÌ¢9˜sˆG›ÒìOg Ô( Nä«eIòUTJË{^†¦Ãú£¨$°­)œ)(êÄý]«×ÙÏJ^ióþóìãg¤sTÑœÃLÁäÈ'a@ü_‡d.a‘ÜÁÊÜ+ƒ#®ECbg˜Ñ5æOæ…¶ „fz1@šÎ©ÀønI&ë<í¼€'¬3«0l=x€A‚!øúÈQœVf‡F¹™š‰:;73z§öLšG¥ô²RV¥´Œvf5ú,Ãäú¸÷œ )zŸ°W²­9IOEi´ÄYÍQ6-ú<ˆWI«‹èNh Ú¬ÏøÜP¼ÎTçbn*•*Ym{ØNêíuЀ¥“FÔG˜Ý@‘±À£~lq‘¦kLYöØ£³§A¦´ˆÐYà°Eûø­’§Ñ‚¦hE¾–½Ù~û£3”9S4{ø^½w5Þ+Ù*°SP2rá]0â
+e™&¯hÚrš= Wú2.¬™tÙ¬0ÖÙöЬ{gº V™OQºô•ó†à¥<†/ÎcÀ‘ýG$ŽæÿÀÑÖ¢ÃfÅ?Æ
+)D3ڡ묂ðŽ¦qØ6§KŽÎ„aÝÙ)p"wFøÝ©ŒJe}E;Zç9¸±Pˆ+]£‘Ù€äÞ×
+3zÇGâ¤8ÂÁQøÔý„hõ8AØ}/M&Jfˆ†OÿÔSÏÍ#í å.
+ÂYu8[µßš×
+ôôÚ\ƒ‰W›¼‹^eÕAã'}HG%ÎÎ¥íÁOŸÑäÄM Àζ¯ó´þ$sìZg÷ß®Ûô‘¿#4çOë÷ý÷€ÑGVBÄhô ‚.OËl’Aé—Rï]qÁ st§š“ÂŽ–Ä^Ј‘·3‡†ž&ÉÓ-Q¦*NûÀ=õŒžZ lØž Wž&±–2ùÓ­·4y±×‚° ¡ðœÊ[ø׫6h“ÖI‹®cÅ•b-.O”«½rTà¶pðEâVŽ¢ÎpóÐmíQ2¿_Éû¹¸£û8¹_¤á~€Nƒø<›]#2IÕ¥WLc}ÖÖšLyŠüÅNŒ—ÙT 'Ú¢R0 „#{T/œY—P]x†ZyüÅQúno UýH‰‰¦G;ZêƧ¾C!—dY™­Úû;‘oô£sÙ¢2†¢¹²Y#ytðX
+w†€ÖΗFÅÍg+P0ÛQ–þŒîN;* ùpâUË7BÙúžiž=¬Þn²ñ"XÆ îUÿ,“`™âîÎ[Ó˜q?ln~½ùí?¨Gendstream
+endobj
+1262 0 obj<</Type/Page/Parent 1119 0 R/Contents 1263 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1263 0 obj<</Filter/FlateDecode/Length 1616 >>stream
+xWÛnÛ8}ÏW Ú‡MZ¾Ä±îSÚl›n¶q±/y¡%Êf#‘.I%ñßïR”%ÚK.9·sÎÌøçÉ”&ø;¥åŒÎ”×'“lBóÙy6§ùj‰Ÿgøo%•áÅ V/_¬V4ÉÒ»Å/0¹<Ë.ÒÑyvÞ¿lÒ~IgÏVdzGÉb°Ýq<1²ù$[F«×ÝÀðøóœ¦SZ—Èo±ZÒºŽ'´ÎO¯/?‘(
++Sz›Ñ­Ò¹¤ÞSé¨nœ§¤me6¢ªÔhõ³‘ïI肶RKžZY ¥•êIT‹÷‡wë'Mϲüžî…õ*o*aIi/m)rØñ;Ilu-µ'Sâ&}¹IQ-ڡüÖÔ$HKÿhì=^i±•áÚ^Z·—¹W2¸½6
+é¼Ò1ŽŽ³´—B‚Æ5j\D`b‰s(O
+ÿ€K4HW`¼*C%úÌc°w/ìVú£X2¶IÎCzPÀ¸l©õQh 76
+×bàtc(rUðÀjéwñ1A©£ïW7twú9w%¼ØZQS2|÷Ž±†9g+Ñ `ŠÑ±»qÅ_Á·2¨M'_'·A» wŸ0Û˜þáúµÈèk«öžqECW
+Ë<Ü„„@Ð)?ïhFW‡?Ù‚¢uÛÐ:¡s_ãâ'á—å‡çÿ"ƒXi/ò{ û’fx®S‚î™Éè’Á|/&'º|ÙWÊ:>–vÈÞ5be§¿%… ¢4.­G Þw­žÆ+Ý<Q«C4tHÂ9‰Ç7᛺©c/ks¤Í `‡nÁ7ŸCßaÙÓx7,·Hí@;…Àêû{ÍÀq³SúWžSûc¸8cn;YíCÏäJ·±©÷äÀ&¿ p*§J>ÈŠUÈÄÕÅ#C>©0!ÀaÿÂÌ£¶÷FI½bb#Ñ°9ס*±©â¼žÒ ŸÇôèl{hi±ÃfÜ#ÌÇy>šñ<?=æçeUÅ¡3 ¼R+ w÷`Ç¥Ãü §SË3<É™]ÑS)Ñô*£·mƒÍÛÎ;Â2Äû"¹›-–-S”áe·$gw§}¹bEðÈq·3M…ñ
+öö©"˜@G8ì™oÏÎÛ&Ǿ&VÐ÷Ú +„z6Cγ¾£˜Ôþ‰ŽÃ:ò~£tÇI,ñýcuSy…YY˜
+:Jf—Á<Ì¢ºØUÑZÒXB9*%-“ÝTR`O¶²ä­‹»šä sj‹­ Gp¿•Å Ë{ š‘ £å×H;‡–›ïz<Iw<9ö¢g8”'ÿ Æ§¿Ôµ
+‰^™¼áÝ($ÊwGÓ>†®Îh´œ€y­j³a¾œgË>…òÅœïýµ>ù÷äØô®>endstream
+endobj
+1264 0 obj<</Type/Page/Parent 1119 0 R/Contents 1265 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1265 0 obj<</Filter/FlateDecode/Length 1704 >>stream
+xWïoÛ6ýž¿âà~˜‹5²e'¶;t’®é‚5?Ö¸è—
+ÞÉêL•¢`†\)ÅW¥WdtqO[Ì5€}'ì}7›/¬gÛ­òkºC×ðø3'6 AkáèƒÒÕwrUYëƒpÈï^j¶í&Ƥæ–Ü¡\J/­pÞV™•œŸCÅŠà<+rwÀQÌ’X’]›…JïÏ2¼¸¡ÏP³ut)ýéùÕM˜Ò€¤žä9úÁI—ÐÜt¢®Ø›_óU:ãh{º Éj)óàXØP<R³ßS®À;£­s߈¯Á~ƒ£Û¾Šâ98;®žÖL5Ä› j¿ÿ†ZºÄ¨»ièß¾~´3r©ŠP$˜[±i@ôºf®pÚ‹‚¡†Ü$qμdâXõ9Lüª™´>å™Ì8cÌðÔá©Ç˜zXò‡åÚQ#òœÛ>¾5¯Ç…d,¡º¤ÏMÖ WË:Ÿµ)ÒžT»Ðjòšæ(sªn’»Wèûý¦Ø@+Ìâ>~Ú5Ió=÷ê+B†£ŽÜˆÍSÕJq b^,Åa!qöÛµB“/ &‡e'ÎK㥦õQX’ã†Qœ½¦tÊâ‡E‰¹ìnG•«8öº¿ÖPðO¾1LãáQkbŽ!n,%p,¦ŠÒ¦8Hm“,W¸6hîEü ðû«6[MwÂ*S¹ÉçmŸÓ‡&A ”ƒT@ao_F¦%õx´ªÐTÈ´÷ŠzM0öΟwy…€õW e"
+&Á™•ðÊÜ6öq‡ñ¢ÙXþ¾Œ ;á
+³BY#{íŽ{¢¤{>söùÁp?ä&øœÍê{F:9N&Ç)ÞgÇÉì5–ZÞ¿9¹8=¡kk¾à²‚³po
+Î9¦¼†ÏÆt8â…8ïלìÞµž¹ùŽ¦GɯÐxwÎû“cöýn~ð×Á?ÏÚ’endstream
+endobj
+1266 0 obj<</Type/Page/Parent 1119 0 R/Contents 1267 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1267 0 obj<</Filter/FlateDecode/Length 1989 >>stream
+x•X]sÛ6|÷¯¸ñ“Ó‰hI¶%§“vÆNÜÖÓø£–2éC^ “€’õﻀ”BÏd¦MÆqe····wô÷£ ñgBó)Í(­ŽÆÉå%í¿˜5þgL³ËóäŒÎ/çø~r–ÌÉHÊqvŒ§û/ñìt6K.âÙ)ÎwGi6MÞ ?¿^þ1¦w´Ìi’œŸMjž\Ì.i™ù«Ç´LOhðß—‡§¿ÿ|zøüø~"§ßè¶vÒÔÒѽ¨$=I«Ë4öÍòn?§É„¯…ûGÓ¹³ÌNnÙB·eF+Iµv2#WG¢,é^ºëÛ‡U"-T--ÒX+‹08"•!½­©F4KÂR>&±Ò™Ð²P–øoMaÃ#üY2EV'©®ÁÇä4-?<žÞ>â u*œÒµ¥m!ÁÎdŠ?Àv”ìñ+Y¥j@1ÂiC[°™0|*9$=•.=-´u–´ÄG>Þ/(N¬„•‰´c:ˆ-¬Õ©LÈV¹‚$H àYf¤µI¼q:KÎ9£Î[ƒÀ†­jG:§´Få*õI y~ëQ†ú@Q¾>'{Ðá]áN(W%@Õ\I ÜÈT›ÌR¦¹nÔ½Q™$ʇ»2rnäv 3”kST¾Úw ú¢êLo-0+Yƒ³L6Ñ4ÈÔTj䀇q›¿
+ÃÓ]ˆQ|¹k$G¯pÐV0˜=|+¡êAž¥^)c’&!ˆ:G:!V´ãn_C†#âC>ŽDÈÖÑjÇšf¢T½Æ¹Rë綡¯'%H âw¯ŒY
+e}Cx”dÝV*…†}4µï&Ï|!6²ï+ß|hþP¿¼Ÿ¤¿ƒAG~ƒ˜F~o%z]†ÂpöP˜(5d†CFº‘u ÒaÃ'%z‰ñí¹‘6¡/…‚æ%(DŽ)€dƒçŒl ™š±š‚™9;<Ì«ÞYâ„Ïùx«ÍóÚè¶9FÏÒq(õ1"xH¡¸Ì#o-_/^íë‰äXhPddÕºö­Ç't>H
+¢hå¡6a³Œ”]
+6’¹¶³vÜòìt‚Bè0ۆʶЬ gtyXŸ¿ŸVÁ‡v¤ß)^3µîÑP|Þ@j£m 
+¹ú£Ÿ7Oÿ€ã=??Vã ”ìö-÷à÷VÎ"’'øäÏ%àŽÇíš:
+‡£æÀ$XñRA„ÆÀuã(ì«Ô5lo\y×»zéëmd…ÑßYÓ ; x+Ö-J
+\Aõèo§S0 øpÌ ÜˆïÞ‚é.>sÉñ ,î®áˆÁ‚q˜ÿò@`‘ã¡ÐÍã ò}\@ú`_Oð·] «R¨¿i=´ŽÿYøÝ€Õ= CÖ©hl‹Ý¢õéÓ ú¤×°aÇ|Rõ3}Bè>øˆsë=¦!ª-¯VGÈž †qóù~D}óâ`“2dû™…à׸\¤r˜‡(­f÷3-& ,^ý/nîÖ>&…a<ŠôKàÍKZˆz[öøѾX«Ý ð=î ëÞ˜Dp
+‹[\èù¶Ã®Šòƒâ<<®W/¶î8ŒÍ…¨VÃU‰W‚(Yñëçàùjˆ;Žvrß'3ü&âòŒfgÉtvÁN±¸º»¾¢G£}?ê/5‚,“:êÍÇømÃÏlè|~žÌñˆ1›Íøé›åÑ?Gÿ] ¦¨endstream
+endobj
+1268 0 obj<</Type/Page/Parent 1119 0 R/Contents 1269 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1269 0 obj<</Filter/FlateDecode/Length 1742 >>stream
+xXaOãHýί(…/Œ™$0!ŒV'w‘ ÑìV²têØí¤§ÛÛmr¿þ^uÛ$p×3·7Œ ±ÛÕU¯Þ«ªÎG}êá§O—:Rº9êuG#Ú_ì
+z4àr1ºÄõËpØ‘•”]/°¼o,ÿ|wEý Zä°;áÌ?ïÑ"=Y¬%Ý?üíÛ|1§\òÓâ÷£ÏwÔï‡õgƒK¬Ç2åüsÂïÚÕ¢(vT˜TT2#¥éaNß•ÎÌÖÑlApÊXôà ›ˆÉÛ<¹ùš$ߧ³Ù"Iæ¿Í“‡óA’Ü>Mÿ1yš'ÉdqóÞ‡:ã[=:ëŸwìNjt%”vTÁýé#³ÌJçx¥¿µéZiIZl${°Uº†§¥PÖu‰ƒþàTƒÁÇ­*¥ÍÝ 4Y]O¿Í½ÙU†ýQ–J¯
+U„ÃŽ"Ðz³ˆŠ2#S•«P[ör½áÞ%¥•£µÙþÐòÒbT\ ³Bôøô¢R`¼”kñ⧆ЩÓ‹²FsÝáÙÁ´(GÝæÈYúá·P³P7’€Ó)©Š®–Ø× ôÐ@—,#µÏŒã¥¼ï2¾›´Hø^lÅεŽ)QThW«5ïè©
+¶D탛(÷[MÛµ ìßó’­¿(‰.ôç™2÷‰Û±¾:ÇÿYOa @áØžînÞF.4ãëE\ÒÄsÏ–ù\О½=SöU˧܋‚±˜xrŠü´xÐ-º¥QØ·,A¿ÎnΖ‚uÆHnt_G¢ §LnQ¨ᥦS„ \’yÄÅSž,<=¥bN˜(áÓøþûø7̧‡„*­ÁD"a£Jyäb|æ4W܉:Ëâ€ZPlùÕÀ¼6ƒòZã›ÄGô;x¦fÊB“êåÓÐ!f™¯Bì˜C-Gñ(ëe¡Òð|W¾†±Ô·sòû
+š²•$…СC¦’„g´D¹wI¢±µ Ñzdã#Iƒ´•+ eáî\á$€Æzô–Ž&ÿÌÜ ÎŽg7áI=c‚Wåñ»!
+endobj
+1270 0 obj<</Type/Page/Parent 1119 0 R/Contents 1271 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1271 0 obj<</Filter/FlateDecode/Length 1663 >>stream
+x•WïoÛ6ýž¿â|˜$²e;±S`’ØÝ $n«+
+h‰ŽÙJ¤*Jvòßï%ù×â-]ÃfÈãÝ»wïŽ?N|êàŸOƒ.õ®(JO:ÞpHÛü?:Ôï]z×Ôð½{Õõ|Ê%-°¹ƒã›fswàõšÍ8Ðl¥^÷úí?ø×¾7ø÷‰·<Áåm¿‡CÎømð†+íº¦`A¾×ïué
+Î_^ )ˆÇ
+¢ÕÿQv^´&m
+Q(£©0d3©Å+ ZÊZ‰¤DÈ&ÇomôE–+](ýLÑRä"*dîý|;éÐ…ôpËÖø±u
+–l1IÌš É‘f‰$•$¥-rQHK"IÈ,¨XJ+±¡ÚÂ;ûá˜ÉcëäwºÞeß»Æÿt¾TÚ4ñÓÙãÓ˜ÎFŸ>hY¬Mþ¢3ü çÜ”Ù/–Fwï0ŽkØæ©È2-RIW¿º¹hçË™X$„Íde¾’ù{nèöØFf²2ùŽ¹*†½kÊ<’?aÛwØ$&‰ÍW;¶>;¿ËØÙ!¥£¤Œå±
+[Њœ>îÚl uÑ€­…SìFc¡òÁŽÑ–óo2r”ÀôÇ ®ä³®,L‰’¨ÓxÂûnŽ ŒÒeÀY_@›ÝšÀ‰sªô«ëþ¡þŽ"À‘è;ó‰C¶Yº¶( ]ËÓPÊ·q{À`BóR¼e¦W:GP‹ÍÜ ÆKfÎm–ëXç•šn==oÜܨ|­¥ ÆÍi ÅMñ@#wªÂÝþŸeqSy¶ œhÐD’)§¤òañ,©*¦ròª’Þ©è|ùŽßÆGw§Oo§‡¬ [M2÷n`":w«©•l6S1…“^ $4 ­…õÒý ìG‘¢¢žº3t‰Q4r~È“D9«Zþ^¥/…Å€!5=«>a6‘Ìv£å^·rí çsUÉO`6Ò
+âa®ﺋÇfÜšÝ<ÜÞÐcnœ`ŒLTrKrÌH\4G.·&èúÞ
+endobj
+1272 0 obj<</Type/Page/Parent 1119 0 R/Contents 1273 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1273 0 obj<</Filter/FlateDecode/Length 1774 >>stream
+xW]oÛ6}ϯ¸èS
+8²¸v2`ÉÒ¢ÖÁú’J¢-6©ŠTÿûKR²¢(° K»ˆ¼Ÿçœ{ùëlN3ü;§Õ%]-)«ÎfÉõ54;üÏŒ–««ä-®Wøûåm$mqv†ÛýîìÕõñ,ÎwGéf‘Ì;Ýïï6gÓO3º¡Í–æÉâê’–pòayM›Ü›žÑ&;§øÏ^iK¶­kÓ8ú“¾š÷›Ÿg3º˜#`\“ͳlpìåå%üÇw¦Ÿ4Ÿ³Ó‹àõârå½ÃȾ9œºŒ§Î÷ÙÖkç¤,¹BÒÃwyÞHkÉlýo~<|]“õ‘$áÒ ÍWìa_-’‡ýÙì)mÌÞ*½£m«3§ :§Ÿœ¡\Ö¥9u"-%`[°p9 ð]êÜì µÞÜZT©x.ß[%Kö|‹r:ádN"5ÏrB_ÖôCé±P%²BiiÑÀ²¥DŠª¡¯ÒÝ=|[“>>ž«D&ødã ÿ…¶¦! 1ÒùUrɹ*“äµ$¥ÉÔ²œïã{2š£AkÛ:¡ÛÒš ‰q€\fù"2G•t…É)=оPYÐ*ÌŽÜ;ñ„ ëR Ï%òªe´“È‘kã|Jƒzd¥’ÚMC3©@d©”švê? :=ò!1Aœ¯ìÿýåó·õfM¥1OmÍáHÍ-Ì'ÚÒ=°ÃeVÉYS¶\±W7¤Ë<À¸¹Ë
+˜1Fà^–(>SÁgÇäŽÜFbY#;Ô?
+¡[ÛÆT“!ïDZÕÁI¾d…Ð;¾3d »…Ô‚Ä^@ö  Ä(?Œ*šŽ/ /Ë™Ôq}â®êÌ9’°,GÙöÓÍ݇¢EŒ²Ä„>z—óùÅüaD
+e?p¢ ¯™à”ö|Å_„¦×($ϳÖ€Ž~ØtÀ™h§C®^X±ÞHiq}æñ·…@2Ü‚bó˜ƒ{ÐYa´²~trÅÝ“ÚH¼@½]7Û¢ 6>o¼rsl•&\mÚªRFîû*u“›E=(’?JFe§ûùÛ ]^«a©‘¿ZæË ¯uÓ§cÛmÀ $&mT¾ƒ`~wõfÉ 2rn%Opn6 ?æ/i(8nÇqßÍ=°Àcƒ$„=Ì©°EQŠý-3I4–Ù‘Ë“g•ˆ_˜‚ Â,M7Wþ7ýé7¦A­FŽ=^Ž•£ Vûà
+endstream
+endobj
+1274 0 obj<</Type/Page/Parent 1119 0 R/Contents 1275 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 622 0 R>>endobj
+1275 0 obj<</Filter/FlateDecode/Length 1936 >>stream
+x•XßoÛ6~Ï_qè“ÄŠå8þ1`É’¬š¤[\tòBK´ÍF"]‘ŠãýõûŽeGi±-œH&ï>Þ}÷Ý1ߎRà_J“!)+É
+h_Â6ηF¦Òïr²Â‚ÅÎ;Åbà¶ÆÍÖÐVìì/ìåÖ~/4Ý^ØØšSΨ?ß}øíþê:>¶Ñ
+¹Jh¾†uüÒf«™/¼énîmøcÞd û“5
+\"3"Ï9wÈ\UƒŽai:B$œ´ ЀšñòžN²Ìj¶áÉr6òÁï>üÈì¯D†à†ò´›B9²–>¢çcZàÕÕõ=É<˜uŠeO÷®+•½£©÷AÏ¢¨%#dÛºp¨JaŽ‘ûj
+P©ºaÆkeòèd~â·„#€î}iXÊ"x²°ékµå£¡ ‰l o™Ù a‘Šñ‹Ð#¯<ô[•UÆš¥c*#n¢¼O:³ÀcC8ŽX3Å‘b¯ì?zlû@t %(c)ú¹Ä–UŠ]Wr¥ D;ø®Ð|qAá"8㣢rÏÌÖ[‹¢Ûm6œyBf¸ÎBOò^E{¤†t˜ÆJB€TÉ„M_+´D!“
+Á­diðÕë¢èœšË‘ ]°\Û ÷¸%> œBW¥•“ÅÎ[´2&'•KÁb¢øt§ˆZçèt¶ÎÖ˜0ü Ó%Ç©•ËymsL@e1N€Ý¾Ûø @T¦ÆPÆéSÖÖ^/âø6{i\ì[ärÑÈo—Ö<ÜE–ÀÈ…*ª@“R9¯üp‚Ž™Ç•&¸>“¡f¦×iñg<½ÐŒç>L²gCt÷ódŠŸÐ}vë';*äsÔzôkÓˆ‡aSÏ‘AµZK˜ 1ûÞõÓ&âÚp&à\¶b†ÛÀ=HiÓÝ}¸[M¨ær„£Â˜§zÓ.Œ³È,xbäâ)L&ºêow2F"ËVÌ_t)3O<îüµÏËÏ3·Fcô…Üh|àúœ†Ýg;qcŽžÞ ›±§OСn›‚ý ÔÛÓK¢Â¸‡H•†¤KŒ&]¿ÞÉžPh¾þ á„õ¥ÃîR<µbRª–OŽN‹;ÎG‡U©Ñrd‚Õ¯;Àð‘¸Ï‹ö³/d¥QmNhRÛø?øûÝøÅbù™ø•µu\¼VúáŒëµ/ª¬KÒu¹`ÔË}™Jý¬¢íZeë¶qLN‹Ex9Ü£ ²œýŽ« +$«|#–1„æð÷L­ð
+Ÿ«@,?2Æ ðü5ì±÷xì£ÁA ZBÅ€ìKðB°0 •†I® Îv®oÚzv4è/|¸Ob¨«LÙæ–³£no–%™GU¶æüXáÁ)H_ü}Õ«Ïž åS‡fù²vþþÈt ïâ Ú ì¬™Ü1½4âæÈsÿ@ñ¢Q äØAèm.vý{ÌÚ7S_fÊ…Ò/nrÇdN›´§cÜë§g4O“ÁøœUóáâöò‚>Uæ+æº2Y]BÚ{v?néOÝWwìÿq³÷uö£»üh2J&cü ƒíOÐëùÑGÿhx—fendstream
+endobj
+1276 0 obj<</Type/Page/Parent 1119 0 R/Contents 1277 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 627 0 R>>endobj
+1277 0 obj<</Filter/FlateDecode/Length 1478 >>stream
+xÅWÛn7}×W üäÑZ«» øÁŽ“Ö@m¥µŒ @ƒÚ¥$:«¥Br%ëï{†äJÖF(Š
+ð»þ¹Ï>–¿î+àá‹Š´×‚/A È*„äa¯Cn8/tö•t…ŠÌá ʤqUV«3 í„T¸îÇ -œ“«µcôáÕ#k¤­
+ÈYéiHl–m³ºOP Ož75mÏ5Xiä·JAј:xÕOÄgð&§§R½’È2]•¡èL¤j˜q05òÍ
+…c!›“Jx/¾ÊH45«á;¶}Ü“3×+ ;ÿ¤‰^1:<|ß©áÿ&†‡DNˆ!ÆÖ×…ÑÕšeÐk¢ á’Á·jºÖýtEïŽ:)—\ÿœ³wg†‹jÅÅEÏ&Ïi3Áw¬¥8^´ s)Èrã ƚ̬à N‰R0y 0À7q$p4Ì5Tv«@É#6=L›mq‡²š^xò{lj£Œ¡·t,jL)%<~Ñ0ÎŽqƒh¼! µŸnQë}„Põ0[­ŸœØîÚµONÙþœÊ²êsAïË‚5%‡xÐJd€
+¬ú^d|÷ÿ:ù2@} <ïÀ±Æ1Ïtˆï[ã ûÝdÐc
+>^ßß\Óg£ýÂq«3/}~1`ŸíúF{ÔÁRü›{„ooC|­ãÛ£”~œ¶~oý BiCendstream
+endobj
+1278 0 obj<</Type/Page/Parent 1119 0 R/Contents 1279 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1279 0 obj<</Filter/FlateDecode/Length 1317 >>stream
+xVkoÛ6ýž_q‘îCT’%9–Ü-Òç>4I·¸(†vhŠŽÙJ¤+Jqýïwøíxq‹.d%&ïóœsï—“”FøM©È(ŸoNFqYÒîÑÞâÏ&qNã²À{šgñµ‚8<Âõíc8<*ã4Îp!}Èn6)âi8Š×b8ûÙìlºá;fÓ³4³ùn}#ÚtœÅåa´Ïf'É«)¥cš-PŸI‰—Êe:¢ü\«…¼íaõ†5sFÌSÄún)T'9ë¤VdD{'ÚŸgŸ`jLiêMEYSgKi¨Ñ• ½8¼X‰†©ÊP·dnæ8§ì;½SòkòFªþ+™éDCsÝ-‰¹/Èt›Zã\÷ªCXÖûˆ¢43ëu-ê:kšùŠ³®!·ZèÖÙïvL³àið1XäH±ÔšÉ
+û¥—-ÞQ­êµqàT(ÞnVÎ8‡º­h-ìÀYå<ß\>#^K„rPŒ8Ë&hè¶n¢[j¸Wwº¾¨}UIWrÔÒÖh¡ëZ¯¥º…Ç–5¢-ª©ÝwÈ;æh-d-žúîŒhj›ÌäEÙY\âÎ=¢U-˜Hs!PoÂ÷üí‹çôûõûÙ5ñ%Cz-ÕÌ>¥¢¡
+šé dÙ ‡\T6+[ WFKe+°^×B†ÇX;àþ‘KÚ@‘¡d˜Ì™YRTQb3IN-duJQCÃû]àáÎTÐÊïœ#z©¬¼µÊ
+
+endobj
+1280 0 obj<</Type/Page/Parent 1119 0 R/Contents 1281 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1281 0 obj<</Filter/FlateDecode/Length 268 >>stream
+x1OÃ0…÷üŠË׎ƒíŽ)…­TK,,®ã@ªÄŽSàßsnʈ„,ßpwᄃ÷Q0 øÈ
+endobj
+1282 0 obj<</Type/Page/Parent 1119 0 R/Contents 1283 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 630 0 R>>endobj
+1283 0 obj<</Filter/FlateDecode/Length 1685 >>stream
+xW]sÚ8}çWÜÉ! é¾¥™¤›™NÚmh»y¶ÚÊ’+Ùaù÷{®dc’N3€ìûyιW¿Sšàß”–3º\PV &ã ~iÿ|ý8˜-–ã÷4?/¨ ÙÕr¼l¾izt¿t9§Óîwœ.­%~nh¾¸‚Ý9¬Nh†ÿNÒ&\N¦|||ða5¸¸{O³ ­6ˆ{±¼¢UÂÅ/ÙðÛÃý_ôEºBy¯¬¡ªò$LN?”ÉíÎÓÊ®³Lzÿnõ÷`Bç³9ÞÞXS9«é“òU8aÓeôq~9Ïø©ïJî”yö²­0Ïü%x,[žjÏ?W[ _ÉÉdÜx™ÕNU{Ê•Ðö¹ñ4§é´ñ4[¢ðô w¤L0ò(ŠµàÂÀ„“Z
+/Iùp$ÖJ³µuÝü2­¤AÚ•E,’ŸTŽŒ¨Ô‹¤6/«
+q¦2L/cŠ10ZÛøõ$²-l®6ûà´6¹tzÿZêã”î"¦û`+v/*üAÈ)\|Ì„“›Z“±8³”Ù¢t= Ñ‚´›à2”xk}E±0àjc8kF!@_)­÷)»–{xÕ:Ù(-éÐ'XВˈèDcWä…2@€*š ƒHª~R÷¦y:¶„±%Ö¥åŽçr#j]ые¤&üR8QÈJ:â
+Ok) ¬Éœ6¨Q|„MIÙn„ö²oµ=~aX¹ºÿÔˆ¼¥BUÖ(kø¡R>À­vàl ôÆ,CeúD 8ÿÃîZø„º·°ƒTm¿Žf>6 ¸C®è,óuˆ˜F¤hº–çøšý¤ª¶¡ìN=o+*,Ã}]W§
+¸±J] dÜ/@2dÀòJ¬A•«W‘Ê–À‡ûKuqwHï±´ã6Çts¨ âÆA”½­{É|qøÛåG'…;(jÏøÉ£×u®XËúϱ0ôÍ~ÞéüV•½‡OË}ÒÊ7Ü$À…¼2Á”À%°ôJ瀠ãF<Kº†€ÿª¥æ¨Ê€MüŠú° n¥Î™\Œ¯ˆvPˆ£ì@S”¥ŽT”E¸Âçø6¿Å£­«`#F¯HxØmU¶åÇ0 Ï™¡GP½Nò>/DSæè”Æ!#"{Qa¾=GÅ€Œ½Þ˜¦›‰ò0ç›Úd,A¢/æ뉸A:"wð^¥
+‰)½X£÷<öxºDlØ{l÷o-/¯czw¹m„#ô‘‚Qí"Ì5U"Ù
+~Ýmû¬lëÇ}ëH/ßp™KŸ9UÆ-­b¡'•Ø»ø3gØÔ/ê>p¹ÁüÊ›=‘­v”âãí J±Q,*ÝJáýκœrQÆ.ùôîH¬Oˆr£íéZÑP˜‡ ÄÝMˆLNJšºÅêÍ%è¿w ˜ÅÆìŠeK‹Ïðõu' èÃZ¬ú-ú”TRyè~R…NùÎn˜½5²Ða?;Ð$–Œ i%~Júü:»‡‰š­ÊDma*"Ǹè…^îñ ŠíCBNxÏ:/õ†ž†aóhB…ý±“Cp‘+_j Kc€€×m-°ê\5+H
+endobj
+1284 0 obj<</Type/Page/Parent 1119 0 R/Contents 1285 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1285 0 obj<</Filter/FlateDecode/Length 1798 >>stream
+x•XÁrÛ6½û+vt±2#Ë’íHN/;±;î$Ž«I¾@$h¡&
+Siv 쇫чË1-V€ƒy*Ë\²?¥°žÏ…#lòøzVC:¤{™äjÿ·zÈ`:™TVù aÙ
+»¡5Þ¼„Ï›ž[¿" ņ.ò\9ÄÏ©½ZHQŒZÎdÖB(]ïÉ|INy9Ž^¼£)²Ìé>:=¬
+t]åeÊ:¿/(V¯i,¹k¶u·Ó–n–8ÙÜÔ‚J9Â
+0bKñãGkªò4yÀÄ’=47‰Fg­t¥Ñ)“r`¥H#°NK~/p<þ hÝ¢,¡#ËM-ËJ‡çWVJ’¹,
+TaöG¼úEœ!¶§ïƦ!…™*hš´P¯ÆÜËSÇíŒÒ–¡» ûuzÁ<Л¸ug “’}è™'ÐLž”0´!:p•ÞAÑ FuOo²9¬IÞOa¼Aœ»öä'TÇ×-{„¦5P²Ó;…µA#/U{†`’Û
+eie¦^vdb}ßâ™À¬@I"Ûó³nå
+«ºh, …&+`Œ³€AŸÈH›¶²—Ç…xêkÇçfŽÞCuIx(¦<IÃõJC5…:´qèøð&8e%·M” ó/†¥­L/|@»ÏÍ p»ØsûóžoE¦}=ž¯awh0,'¦²­Ç žp›ñ¸˜'¤/‚þ–ÖŒ¨qŸßzÞ´X8¦O†ÕEzÌþá~Á4MÁ5‘Ž•
+­­²éºÐ^A
+¿ßÁ>lÇí»mcÍ^ôWž‘ãÅl{³!¯6À¯ ^7ê¨
+€£Ïþ‡öÊË Vkão
+Ž–YöÆY¦i÷àêdžÀ?„¿M%ïúx3As;ßž‡Î¨a×!œz=Ž|{Iÿò­—õ–þ£’ßäÍõìQ‚6Η»V&ù"žd8>ǃ0(¡ÀyøüÃÊh;áàâ»DÙÅvÝ™êèû}µáLàJˆa£fm;)u½!Š|ËÚÚthí½QeXPˆèO@ú•”î!­4î#˜qÒàÃ; ŒÛOÐÃVþ-@p'ÄÞÜ"צÂxUÛ­ë༖§3üãü”fóp™¼¿øtyAwÖü‰fJLRñ\$<
+Œ=j¶Í'ïþ×Õõl~6žÏÎqíÅ08ËÆ®¿üÇuzendstream
+endobj
+1286 0 obj<</Type/Page/Parent 1119 0 R/Contents 1287 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1287 0 obj<</Filter/FlateDecode/Length 1504 >>stream
+x}WÁrÛ6½û+vt’glY’ÉéÍ©ë©'Ý6ê´_ “
+5ër]{åp• Â–68×ðI›^ | ‰ÜÛ‘6•rB¶V]e!_á¸pIW¨#;¨þ…¹à©,9 ›ÒÝÓWUå4Ðr¡ðŒ‚A°O ‰ÜVâEðHikS…Š£Îóe[ç‡4 )……Fj33ßçÊ€[2'_—¥uUœ6f•ªØûýzcœO
+ɦõw,éèVJå=Ý)£U2Šx'¶-ß{ѯA£T;(YàŠ%c+t,·.² ÄCGÉÐ|KŸ3 t®Ì5l£tÌBt•†Ô ýÏc]µw¶èEd&
+U9‡¾ë ÃÊ
+Ãwª`Ä¥³R%5X(E—8ƒ ”脃"õ†4W*NÍóù„Ö,…P¥öÎÖ0cÈš|a*„ÑeCa89„Â9Žp|W[gëòª±sä²I
+@CV¼NÔ„Ðò(p„*
+endobj
+1288 0 obj<</Type/Page/Parent 1119 0 R/Contents 1289 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 643 0 R>>endobj
+1289 0 obj<</Filter/FlateDecode/Length 1440 >>stream
+xµXÛnÛ8}ÏW úH_%w}H±í¢Xt»»õc_h‰ŽÙH¢*Òq¼_¿gHÝ̤vZ` ÅÛÌ™9g†ùv1¡1~&”LiSZ\Œ£1¾t¿þùýb>DcŠ“i´¤‚æÉ ý(§Ï¼žâÅ›(ÆÜ4ŽæÍ€§¦Ëy4¡ÅrŒ¯ͦ³(iF<;cvÏ.¦ÑŒÓÄ<[.º‘Û;äùœ÷ºµ<;³ÁÉѬ·j>_z«& lô#wò` «âîÌƘ}Í2“dMá-Њ›ûvuqó~N“ ­6À;^&´ÊÌcZ¥£Oe*IÐÎÈšÒ\¥÷æõê+v,š#zõéWþ[{ʈ¬&QUùìVR%ëB£tiè³(Ö‚
+Q7u§dy´@•¼×ÝwsWë]u³×užñcºžÌàÂ*Õ7û›G²µªrIFÚ+eÆ'–´WyNéV¦÷î†t+Ê;™ݱÑ5®Ø(ìwB•Æº¥ke FªtcïÔ´uÔÈtW+{L)„¹ݯD-
+ieÑmy w°Ý
+K{YKçMr_>”Úº{áùåäÒ_¯ u§/ÊåÆ’Èu)[ûØÀ˜ÔQ3å2½3F–V‰<?\Ñ¿²ÖÞ¬Ó¾"RO½ão˜€_!Â^a€(c§7­»Ò'j9çRlÄÁ*½Ç1Vy¬|xÙu%Ãa·Úðïî`ÓžÑ "ðaÓ!-+ä²².C Æ€Ý@(ølƒ0ÒƒÈwÈŸ±Þò.)Rçÿ³0õáÃaU­T†+ÕE%¬Z«y…̵ۆ Óˆ•i¿åt±[6°ãPãmDÚlƒe`M­³]*³ˆVàCѲö ¦…ÎÔæÀ‹:ü†TÜeH— S®<,Ζ6»¥q RíOùhG=rmÚ÷®ú9&bD©å#ÁìPÆ:¥è¢pžŠ©®ki*ÍJÒ°£I…ï³Ò™â×;!
+¡8bÝ9ëÖh çù' ŠÈ 2`”¾*ïz
+8}_Óý…ÑÀXΓÖvjÂ럪c%k»„kW`K_YÏ)Y³±%ánx(È}C@Y:ã}åœ{$Q¾E‡ªTÐ.
+S*J
+ÆrÃî:f+?4pk'¥œ4ƒû] åFÉõ­è¨…‰ŒÊtÐ;8Uº~ŽmÚUܦ²5p»Ýµ¦¹t³ã—ƒæV*g ë+åsFÀ=|Vµ{G@ÊðÒf²’n–2-MyiY§øI…wøbUºËEÝôÌè:\á
+íŸï¡äû7š›:†¨£÷}¼ˆ£yó/¼æ ×5?¦XGphóe´øòÚ¯êßhîýÓÂè11•LÕF¥LÖYúÅojÛ]ˆy›2½2ñkàW×Yåí‚s¼0XÕÂt°óÌ‘Ïm~Ô¶öÞ
+Æãæ3Ó7ÚŒï
+endobj
+1290 0 obj<</Type/Page/Parent 1119 0 R/Contents 1291 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1291 0 obj<</Filter/FlateDecode/Length 810 >>stream
+x¥•ËnÛ0E÷þŠAVÛò#–³LšŠ6-â ]dCQ´ÅD"]’Šá¿ï%õ¨¬¤‹ 0 X&9sçÌê÷`J>SŠg4_/Ñ8¢Ë8/i±Šñ{†¯´ óËh<ë/Ül“õŒ¦SÚlk¹Ši“âDmøÁœ ‚Ù—óÍó ¢Ñl9^`Ëp« Ô¬ëTôÖSiwÚÿ}¸³¥>?Y/Z)m¦ƒ@ ¥)Ie`)é-¹LОV'Œ¥TZ^Z¿'Ãî±×2Y_ÑÕø²FóE¥úNa;ãNjEé²Ç:¦RfRz`EÂh+sAÌ9#“2Ô¾ßKµ«BvåÅÀ Õ¡‚í-Y]ˆFÜíýC'H"¥§¡-yFÌÒ°¢ •ÏžÎQ–ÓAÈã·»_´¦ÖB¡õ±*=cÚdÒÖˆ§sô™ Á°$À‡3E d×j›KîðäB¨ŠT“‚+½JVU/xi¤;‚!ËõŽÀâ½3½Ü>Br ßçzÐñ˽t`þ„´A­ÍôÊ=áQ6eR8JS
+tÛËäÃ|;XkOuÙCƒ™(ónÀ°YÊd@wÒËOLq‘¿é§a¨ÓO ãsräýö eK\=#„jÜÉð/¼NúU#ÓT¨à÷ÉzU;jºÄÛi5§ùb®Ðë¯7×ôÝèg¼2èVó²+KûêFÍöQ]ùýÿw‹/âÅ8^®ðZ@¨xå3|Þ ~ þ
+endobj
+1292 0 obj<</Type/Page/Parent 1119 0 R/Contents 1293 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1293 0 obj<</Filter/FlateDecode/Length 1448 >>stream
+x•WÛn7}÷W àU€du·ä
+;¨\e ‹°¿ñ¢ö÷n:Ë&,~'ʵ a
+vSKÍh<n¤&‹ìŠ¥>©Êµtd7ô§QOä>ÈÒÓý@nßÓ]eèÎjᔿ󖄧ƒÔš?=áõñî7ÚˆRécôõ»2ÕÓ[2ö@UPZ}—,Ùä1žÖ¡Ýêj»k-éó\è‹-*-Ù9b¾Ã9l„#K{gU! ¸œA€¸`Æ:õ="ãpÒÛÊåçžs d­&/ݣʥÏèÖ)T
+-RãtΖ2cÕúY´Áý Óµà÷úH²P‡Ž2…B#UBGû KØ¥-F
+"QæU§ç =Çy€6Vk{ˆ®€µ!ù$Êý¿$R ûøq‚¦îi†"£Õ˜%{;YºÛ=·«§µ”‘*“۲İä¬<s±sÄx
+hä80ÊT DþÕFì‘3TµIŒç8rê„Àt ¿©4¤8©fPœ1isb¬ÑgïyfóPAwœäÀh-y p@Ø
+æ0ƒºÙçÔèä½åÃþP¬3ßÈ$Š bÁ†7#ºæE0ÎfÓ öË<[âëàògóÝ8¥Œ°!ã9 —‘´‰±mYâÜá”ÿŠ9ÿ’†ë¹‰³ïÜÔy53®HGœClC±I„Sl"úuccD/•/ãÆHž(Í×g¾ «Úÿ·nM?tSóâ¸K¡ôKÍ ¹©y°;´,æg°!ô<·• »›WAvÜUÊ÷Ïôú“µ…yý¥W_©ú5/A†®nXsuzðåi—ÖŽûÜæ«3U îøëô °´ ø3ÔÛMŒŽ¨e?Ñ(<¿Ñ…öàã
+wú6É+Ò<¶ÏÙ¯.D·D1£Ò†¢•ê±âD¡ªä:âR®¹ñNJ|Ʊ0?küz¬vRòÜŒ)µ‰‡mFõe¢=VpCwqõ%t™d5ÅXšÙÔ˜Þ,›kj÷ù2›Ž¦¼ÿ>ýŸ_m|xå—Úl1ËWøáÉF×ýçÕÅÿ
+endobj
+1294 0 obj<</Type/Page/Parent 1119 0 R/Contents 1295 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 646 0 R>>endobj
+1295 0 obj<</Filter/FlateDecode/Length 1629 >>stream
+xÕXÛnÛF}÷W Pq‹º_ Òê"­Õ·
+?I1ÎŽh:_Ó³O&ãq°Â“Up{ún Fõ—Úþí2XÔF&0ÚXïžüõÇ«Ù"ÓtL(£ñ|„{Ý/)=\½Z_ ßÌh<¦uŒ€«%­#wψÖáõ:¿:Mõ^å[’"+RþÄP‰'©Þªœ
+£·Fd¸¼HE(­{TYI:v?~·þ€;,wÇu!²ß‹}´ ¬öOšÛ¯)ÓQóûD… Á‚3ŇF4Oáþ:º¶[ÊŒ
+aí^›ˆ"QŠÀmï¯{ eݹ¨wÑ ;jéýEG·FWEïäûïh¯ÊÄ…ì9½¤§ÀföíLNç‘mD¦ê¼*÷¹¾W¡ÑVÇ%Ý¿ž‘ÌCs(JsÄ~tnO„M¤ h(ÛÚÅ϶Ô¯¡¤Hó$K•5ÃT‡"ZvjXµ¥Ö±ìŸäùÙ ¸Úx#ϾL@|9µqݾDÏ_L‘,d1huîJâÒØË„b4g©,Ž1¬º2ô[®‡?©¼z$7N–ì{òù*ÖXFZÑ;!±›C]Ì4ö¼A¢MáCŠœš€Þ–Šœ6’B*õl!C82ÔÈ'gÞô ŒÁAÇ5¢í1]p¬M&s2Už³%—œÖŸm:µÀ-VÛÊÔ÷µÖlhTQông@
+†,f>ŸuæO­ºþ¯kÞ÷Íç솬”®f‘«¶<ÀÂ1â3>ZT.”høcoõÍGÊÈ?4ÌäÂ&ÿ"EÊ–Fm*NOÐø|Ë´8fÓ &ó`…ïà o¾}ww?#>Æiï»ÏLð ó «…âIóÇš/¤Ù©Ðe´k¢gRT ”Î?#?U#j>ê„ *¡\G2‡¾‘0ÔU^6¿Âè˜AûÏŒi»6s¹'í”Bâ}=–î;êÁÍÙN)´pBŸ)ƒ
+Sÿc(òÑD…Œ<® m;+éžµÌ.´vó¤]h§1‹æ¾Ô Ë=ÅÛ[?RZÈ5ˆqŸ]£`΂¼Á²™ˆÀgšCæqâµÓWîpŽç¤Œ
+ÉÕ¶IL-|˜ 0ªTè8% ‡
+"  ¹-žF$R°
+©Š™¢J7Nv÷{:ï%%y=5 öŽc Ѫyy
+endobj
+1296 0 obj<</Type/Page/Parent 1119 0 R/Contents 1297 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 651 0 R>>endobj
+1297 0 obj<</Filter/FlateDecode/Length 872 >>stream
+xUM“â6½ó+ú¦*̇ ›ÊÉdrɤ6ª½Ì¥‘e¬,9’<,ÿ>O¶™&‡5ÔÈ­î~ïõkóÏ(¥>)åsZd$êÑ,™Q¶Ü$kZ®sü?ÇŸ“TÆ
+endobj
+1298 0 obj<</Type/Page/Parent 1119 0 R/Contents 1299 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 658 0 R>>endobj
+1299 0 obj<</Filter/FlateDecode/Length 1435 >>stream
+x­WßoÛ6~÷_q@æ¶bÉvìè€d×<ÃÅ0ï’h›­Dz"e×ÿý¾#%ÙÑ æ
+S7”V@E"µE0=÷|1ýÃCR‹”ËðÃÃ8Uùnõä‘õF”½U»šáptRnï³ÁÊoVISpÃñ˜Oƥͷ½Z’9pj#úYg’ÒZn„˜ºÚ¾*ÊÈfBS*pŽJñP4ée亊Ü™£Ô˜5K=—”_õˆëº”¦T¨­pÍîÛghË4â°Ãë«®jë‹k?¢ßMMèµÓ±§vÏùÜDœ¿
+U2á §…<Ê—]öÞú‹ÏM©s9¢ûN; ]Á×öá™[Æãë1°^¾Pú³mãå²ö-~.SS¨ŒÂ©o׃QÚq55=ãsbCWÈ/¢<ù뙶׊šLtp~ªµg©ñ÷>¾7MÆ›Ç$îÇÚ$%
+¤hQèLiÀ·UÛÖt›œ{©Y ×Âf>2‘W‚¢V‰G`ĺÏÄY¬d0Œ~
+N„†óºnVºã©‚É9M0šæÑ¿Ád¯h͸4Í⛶.0SYäУö^Só§§ÊXÒhGzKO÷î_õÄúƒ zîfMÂۛʷö%;ÚzK7`[S¹Hrs¾`éÒ„;7«–Æ Óe”‡ô”wSñL'€$AÂD#oÛ­×cýIÇþ1ú—¡ÞŒvþU8›Ó)v¢9V
+T¨R… Ì„¥1`ýG¬"¼ö’8ò­Î>BP!cÃ÷±‘”©ÂÌõáÒÍ…Xù¼ó¥¡®å¥y¦Øã§snÿ°–_Ö•Ùb-nñOkZ&äëÁ/ƒ¿]ûôendstream
+endobj
+1300 0 obj<</Type/Page/Parent 1119 0 R/Contents 1301 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1301 0 obj<</Filter/FlateDecode/Length 680 >>stream
+xu”ÍnÛ0„ï~Š½Õ"Å’\K9&M}kÑ".zñ…&׋TI*‚Þ¾CIN[#µa€àÏîì·³þµÈh…oFeNņd³X¥+ÚäEº¦uUbã瘎ãÁÇ,Oó˃ûÝâf»¦,£Ý±6UI;Eˆ³ZÑN.·ÚˆÓi Ϻ–BÍä‡æ`OZÒI›OÁRkµ q ‡Þºòµpìi°õ„kF‘ÂzÍA¤W»çÅŠ’|µ;µüáÙy²†Ž>=“<i6Á“†ŒíéàlïyÌ‚Ks|³Ž!¡Ò½²#hiö{uô)ÝIÉÞkó4©žsg€ w¬Duãáö˾ֲ&Ѷ,ΓҎe°N£¢¹ÎIÜþŠ‚xÁn7ÊŸî×| œmÜ& “à 3´‘ÉÍö–2 ‰íHŠl¢óÕöñÑŸf¡ãI»µü©™7^†YEFóOé# j¿jÛyllgâ¾±&¡IiOPŒ«qÏái¤òª%_f/€9B
+ΪNÆ †û9pl~P¤aôë~®XÎLÊ´ÊèÜ–}¾)éߢÇó7Ï|꜃C"ïšðÈ Ó§eÐ#hX¡ñc}C»LF4è–¯mwRkGH'Û³“Âó»j0jù_)g­[pò,;§Ã@mçZëÙ_OµÎæH@,CEÞã¸~8ûyVV‹Wx»7À\ë6ÎÎEZv†£­A5N§ÕZŠ½~20š}'¨±JGR—#¬§:›|xùпHTsײ¢J«Û‚²2O«HëñîËý}söSCVv Ú$bObI¶ÁŸSUPR®nãý7w¯ËuZn*8»U/Þ-¾/~ˆendstream
+endobj
+1302 0 obj<</Type/Page/Parent 1119 0 R/Contents 1303 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 665 0 R>>endobj
+1303 0 obj<</Filter/FlateDecode/Length 1631 >>stream
+x•WÛRÛH}ç+úª5UX¾`l9o„„Ýìqb§ò°ÎÃXáÉJG#ÙK¾~OÏÅc¶v paiÔ—Ó§O·~œ ¨ŸM†t1¦¤8éG}\Ù|þõd2ˆ&tÙŸFc*hØ£ ÿ-§ùÉ`4ÆõQ| ùîx ü7¾ ;4œÆшïáÌÔÛß‹cûô„Ïᯒ”Ù‡ý¡5ôìÆÛÅIï&ú´ÈôxÓ"µ±âJÒ™Uª¬Uù@óf³ÑU}¶ønÏ&î|÷b„ içCYW:m’ZéÒÑ`à 'ˆ‡ÞÊU–ln§ê5Õk‰]Œ¹FžÓ\+AÆ93öD)jµ•ôU•©Þº_Ð&UÈd-Je
+CªØä²e-Svߧî€áƒÓ­t7ï~ž]Ó²£"Y«óÙÇ·ó9•¢)mÔF.Ï"šUr«tch++ƒL éÌǤËü1†'nEy'Ê}(>‘ç&ò‡cÔ
+,®HSʼnœ²¦´h‰\Õ0¤·*…áÕ£ËZî(Äèá U&y“Jó† ƒYÝ`Ù‡2]@*s-RFÙ%q­‚e*—ÀTﱜ^ö¦qï~ÑöAÐ$WÀÏP³Ñ%¥²ejSèÝ$¾”ÝI3¹‘Ìr8žÇÑ» …¶7÷°Ù„(
+•TÚ謎]ô,
+æW%ò.Ü#xÊÃ~1|»W³˳cð„ì_…ç‚å ÜhÓíz•$ÒºÖ,9Ý*’¡¶×·\[ßC¨›^}—ImŽ¹þo”c‚è-z(4 ÷ƒ­¬ÿhd# ¤V›&whÔëJ7N‡#¹×ÑÒ–‚Ü ©¨Å
+ªd,–fÖ½—ïzÕøXì¡‚G`ëãh0¥n
+ª R@¬Ð±¸.Qb YQ©kRøÅ Lª¬Br:ì
+ 9¡°±bצ†
+ÂÂðb_1%>·##ÈÐ~Ïò3ˆ»ø°Ò"zQfžà®
+®¸Ã@õǹNZÌ [D«htt´À І]‘!˨)î›LTæV¦`{¥}¾õ
+endobj
+1304 0 obj<</Type/Page/Parent 1119 0 R/Contents 1305 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 676 0 R>>endobj
+1305 0 obj<</Filter/FlateDecode/Length 1909 >>stream
+xXoÛFýߟb®(`ˆh‰’(ªFs§5pqUKE{8+r-2!¹Ì.EÀ}ø¾Ù]ŠŒ«UK«Ý™oÞ õñbJü›Ò2¤YDIy1 â˜ú?zÅ„æ‹8XÒ<^âó4Ž‚iIO8<øéÏÃOÓU°¢ùl†%-ÂÓ¢ ÍÅ`YR¼øbo: ƒ9ÍÃI0ƒà4ŠƒÈ¯Xr¸ÆîŠO¹³vw°.)œÎ‚x°³ªÙj†ë :]`Ó­¬è`ÝÙ$˜wkÞ]ˆ’Õdekì.¢Ó=¼;W02ŒçˆX‰ø…¸×­ìî`ÝhŽèö»aˆ‹Â%²À¢¬×-¬d¿D€,gòÞ`YÒr‰€ö{ƒ%Œ„p´ßä¯æœ›áh µ6Á¯¶Ïs @\½#´}r¢xIÛÔb`BÛdôoÕ’ÉT[¤Tª4:R“I2R’úÒ)wA¢ª'zÊ I"‘¦öľP;QP-´(e#µ!QaGQ¢¥hpZžTQ¨C^í­ô‹íû‹ ‘íŒL&`ñãH=Q¢ZmäK2ª”„5ËžÓ'Q´Ò`·M2†.kÑd—ÄÒBïòF }´—{7v¡¨ ‘È”y“=»WÔµVµÎÙH§vj:Â2y#_üÀWoaÙ4˜ÏB‡À!ÞaøœëÿíôrÖñ5áuM¥,w ïEÕˆ´Ì+ÚkÕÖ]œa Øò¬¼pªsÄßÅÔȆ`o… ã]ÕR7¹4g¥µR å†ò².ò$o
+ñòÂÖ”Ë3‚_ éŸÞl4œÐì¸=÷ý9Ç9%¼j¾*T"Š+#ʸòšÏY»GRR v<ëÎN«ƒ‘©¯ÔRRÜüš’kä´JŽ‹ƒ>0¢ó}«
+ª†QÁ¼úhKÆ
+ÛzäbÁmw\ù¹p^sÞÀŒ1D•ªÆ^±÷-o:ŠÂ(’ŸáÆyG¾¿>HA‡›—|1kí‰gÜ•HΕÑEî΄žœF½²/…Gì[k-v94„²‚íZ4¨*ä'YðMÞ_ºL`ÏiÅ×Ò 2*R:Å1hjë$Ðyïi‰yå[Ù”ZÀ´‘ŽÏ:2|-_ ©XjÏ4§ÁHd^ác ‹ ŽÿÊ:tø3¿1ŒÀ÷(+„–Û\ËRÐáÜ_tq¡¿ÖJÙ¥²–UŠÕ¸4CpN\Æqë¬iÀðáðbQxhß‚¿Á,6´Ï"aƒ;dú˜l¸°qi<¤liá"‡9 ¾•ÖÅ«·Ü'Spè²ãЛ¶É÷—{å2ÐûÃ-"
+&Ñ¢‹ #ÙjeošL€ážÎÍßó*OÐýÖ»Æ}á ·ØOûÛ<AÂSÚ¹&g=a§Çöd;úR×n¥ªÀ£vß]·Cæü½”HDÁTrÄ…`ô–œñuºîUó,ȯUÕh´I rÍBí9ÜÊ¢pà"’iTåcï€ÑaÛ êp#M1 _N½õÙµ¸KÐAé®1ÉêS®UeáwÈ$"Ñû}
+%R¾
+ƒˆ&|Cö˶hòÍ*)r_=(
+¢J¥1„Xt¡óÓ--÷åØÀC0“%o)𕛞]ëíG¹8«0Û ì
+endobj
+1306 0 obj<</Type/Page/Parent 1119 0 R/Contents 1307 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 681 0 R>>endobj
+1307 0 obj<</Filter/FlateDecode/Length 1882 >>stream
+x¥W]oÛ6}ϯ¸04bÅVü•½ IÓÚ4k\úZ¢m6’¨ŠR\ï×ïÜKÊ‘Õ`(0I#‘âý<ç~;ÓÿÆ4ébFI~2ŠFxsøõñ÷“‹ùetA³Å$šQN“xMÃSF÷'Ýg¬Î¦Ñ¸³Šƒh:à‹ÉbŽ¿cüTšÖl†Æ—Ѽ¿0žag6ÁJNñø"ŠýÛê<bmº`S¼QÖžsºÍÙåvízyrþfBã1-ׄ}ñˆ}D³-S‰vDËät¹Õ¤’Ä6EMÓ)Õ–[:©ùÏË÷*_)ÚZWSÞà×
+_P®ó•®È®eËËåW˜‹ƒ¹Ó²2EU•æ¦ðk­+§”WGþe>ΣWe™ž~‰gs:þd#êKƳhÂ[>¬áaS9}&¶ƒ·p½C¼tµÉ2*­sÚ9^âÿ‘JSZ›LˇçšUj*Äk+ƒ·+]hUoÙ… ¥°ù—„ôËß}Ô!ôz«jR°Á§‘Ûª
+_ã9-©{Qi•’-²ý Zí)ÕkÕd>òaKA†1¿ˆ%¨"Ñ´· mÕ£¦ßÖ\ øWéo üK©õªGƒíª@ÌÎÙÄÈæã@ÎÈ™¼Ìö”Ù ¼èÖ²‡b5ÎT¶²¶¦/§¶
+eø©ª~yyÈþº²9ŽùlŠÔîÝ.iÎãJ2£‹:¢¥.hp«ë­z¾Üj³Ù®PÝ­µé€àÄàýžÂ^ºËÊ8ÀWN¬°å¸Iaà(—™M¹ô¡žõŒêÑl°§møÁï_EÑ
+SÉ󒙇rƒ„”AŸÀòsFÁ~æ!VÍúYUâÀ#ïg0¢j•Î-Ä“ØiÊÛéÊ7KU^þ!7¶èø  –;!qÜíQ´ÔaßAÌÒŠƒîyœ"Yz =´·…ÐNgÙðƒ© Me›Rj{þæ95Õ”¥­˜u3UmpÓÞoBâî3RêCÁMàîB¤”vÂð¢´ñ:Þî:³%ã•Jl1ã7ßDœdàA¸àKZqEfUÚOýñhiÖž}vàDt²xu÷™­8›ëÜ[v@·Æƒ»å^F ùÜ
+¤@ÑÈásýve”µœ…Ê[1"@öˆš¶@£ªL|?ÁW¨š¸Ðon%Ã)#Y°ñîñmŠSx•á¾ÓóLt>íEß~ñ’ÜØÈ‚þ®p3’lE_âàaÏW[\†±jÜV§A¢-B ãîó \²§j³) éû«÷×W Eû•GöM
+endobj
+1308 0 obj<</Type/Page/Parent 1119 0 R/Contents 1309 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 692 0 R>>endobj
+1309 0 obj<</Filter/FlateDecode/Length 1703 >>stream
+xµWïOÛHýÎ_1G{j*%&v~$NJ´œhàHÚž”ôÃboˆ[{7g;7»^pBZ©GUšíìμyófvóÏžOmüñiP§OQ¶×öž~å·X´©Ûéy‡Ô øôϧ\Ò›Û8þøËm^ÇmÆ][¯ßïuú°uüÀPFðÙ­)÷jËŒÂÐ k¶Ú2#¿ë{ýš±¾†€ëGë댂¶ÿˆ€ƒÖ×°"‹:¤N胂 ì#·Œº8;¨V|¶¾†µ×õz5+S :  ¶¾T >èûL–ßà
+·†é@$ÆŸ}’‡ùT•=°ÉJd"'Söw“"98kÓ!Mæä{ÝN@}T©×i-µi5^ÓÛÉ·½F¾Œ¢4‘ª¤¥¾ÕÔúD¹Öåï…ŒrYR+¢}©VYœ'w2/öùH›Z>PÁYãDg"QÇÓÑðzt>üJ—ããé'•¬¿ÒXæ8p<‹ìFPàyK¤Ë…è|­|,+ø˜~IT¬ï MhöÙ…¸ÊUÊœN :WsMþÑâŸjÇHdòˆ¦®èB2ÿYtÛh" JdAWcÁøÿÿŽÐ'øûñïüT)—–Ð_ZKW,S‡y*n‹£i{‚övÛѽ±Gq‘¦3ü\]¾¿œÍË–Áµss,‹(O–e¢ÕÑÔîß>×]ÒÉõùçÓk~ž_ ß]œÒÙå5M>œéêú|49½nîôé,ƒü¦ÎêtñC¬Îf[Rüö•éœB–¶qÈåG³ÙþËÊ„ñWv˜c|¼Š"YóUš>0=¡)5U
+³ÔE5‰ztnI°i'¦?j1¿0j˜ˆj@6yJÈ<Gíôœö‡æ ©ïó„Áën•ó$­ [²=iƒA
+endobj
+1310 0 obj<</Type/Page/Parent 1119 0 R/Contents 1311 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 697 0 R>>endobj
+1311 0 obj<</Filter/FlateDecode/Length 1231 >>stream
+x­WmOãFþž_1
+NEÕÄoy)Ház¨@S°TÔ·ñn’½³w}»kR|g×q‚ z4 $¶gžyæeg&ß[„øÁ8†þÒ¼ú“ ìßÔ
+/BˆG}?‚ÁdŒßýŠÁ…CTß½ÕÂÃ?Ü
+Ǩðœèͯ­þøÈ@†~rDø“íU·Ð\dü¸ú^?Q§b³3pš´‚óŽ YBäú1ŒP8š@BÇ’ôð
+¡¡Ë(hŸ»É”.EJÍ(,¥³f@ÙOÑož1Kw«P\¦ž¢Œº°áâè~‡µ‰#ä =Q¹"ß裵a֮ï™à1pÃè'üÀ‡Ú‘²O3Ør@zKÝ@ß\\'fóiÀL8Á”¾Ókˆ~œ%gÓ/”¿t>wòíu>u®:·_‚—óiV4îÝœÝ&³›dÚÖL¹eżkC”ioewžÃoŒ@ •ÅC'-À«9ï¿ùž%×=€¥s
+4ÉÄ1wÅxC¿Pâxœg ëÂ0²L×Ð~­ ˜¼¨
+šPê{Ä'?E¬cÒ7¼ËùÿZ³Ì¿Q®àIrž˜Î%…1¶Ç×%k’¯I¸*ö"ëþ¢Ô`´ÕŽß¥Ý—öà]ÚÃwi~LÛÛv¶Ó>€kiªžÎí¼àð_0Fm¤§*þ'µŸñE ó…ŸJ±lh4¯á³,¸í„Š™R ì²w$+Y¥ 9ˆšÑÆNn gDh¿ Ö¸®èG)XÝÎë‰Éî#´âÁùD;{Õ
+©r’e`ìlµ#Gyng÷å<‰Ž»µ“}\0Ðì‡ß¯ð&œ_\žáNLß÷¡bž—Ú
+ ’‘¢i , Ï@bmÕ§ öëb x¦¶Á¨<l@/ìZ¸äÖ®]µÌ™ ½¶Ëcu(p½vÕ}øøï‹þ9j\èìNG¶*q­ÂD™;n§2Ïñ0Uêãs›5ÇCHË­®‹Šž=¬\U1ÈXhr¥°¸”­˜`˜}g>òrA© úq…UÖpIwîD#ü10éÃ(ÆÕyäÊàvvu:Ã.¿²ÔÀG™–¶~Ü&mu{µJoâšþbSŒþww\ÚéádbÕÏ’Ö­
+endobj
+1312 0 obj<</Type/Page/Parent 1119 0 R/Contents 1313 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 700 0 R>>endobj
+1313 0 obj<</Filter/FlateDecode/Length 1516 >>stream
+x¥WÛrÛ6}÷Wì£=¨«uÉK'7;ž6Ž›0“>ø"! 0 iUéÏ÷,@0-Of{,È%v÷ìÙ³ËogcáwL‹ Mç”äg£h„+íLJë³Éä2ZÒ|ºŠ&”Ãê2š5ß2úÈö4Mñ9[.ð9ÁŸ•´q7f‹e4?ucºšâÌOLVììÑå1…»å
+ úÎ9·Ò;èA¨Œj ð^°ˆ…#ˆR8hࣼ}ÿ9~ 4AiÎ}<îs6›fTF4$s,þYÈ
+ÂÍ›)-éNZ,I‰UEõ ÃLÐuüÇoÄm—ÒÖŠ”w#s#žoŽjG®‹ÿé:ˆ~œSe¼ÇrFkƒ¥ÈrÁÁ\
+íÄž%áD/Tó‘ˆð<MQBé±õ%;~2Ã~ÅÀ~Õhñvæ&•iÁ…é¬sRîHP„£qÊìôÚÛ¥=Ïí`íî*N¢Ž)Kf³1P• &†¬6ØB!‹²`5KÉÕ'A¬{³ƒ„5µèë˶ñË|íwôÇf~ÎçøK?lm‘œ´m:D+Þ±5N'ˆoøÙG$tcµÙý\0(@…ýk¨“[A[¬gºðþ"à†w>ãßÞwâŸqDÔÆôœ®Ñ$\¤k 0…œS]°pC£ fnq<uŸ…݇Ÿmö?€|þË«1^Ïæ—cš/ÈpÊQ}|ñîå ¼s˜/8^w—{~v0žã½m9¥Ábhz°óF4[Ì¢Å/bl´\ñ³o⳿Îþ{’{Uendstream
+endobj
+1314 0 obj<</Type/Page/Parent 1119 0 R/Contents 1315 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1315 0 obj<</Filter/FlateDecode/Length 1547 >>stream
+xWMo7½ûW |r
+ºÊ²{«
+/íÇ
+ ‘Kr¥H%©HÏBú”Eí0pÞÏÂ*S9rUYëá)²J¦kå%r´Ò%tc,ÉÁœÓ7Udfãè·©"ÕUÆì7UcÏ^•8ÚröY8i¿YÀZº½…ùŸô|ÑO¦§`:Û¡^^P
+^)ï:pÊ‘å'žÞžÖ.ãdÄùÍÀEi¡ ‚ÖfÃ¥{*ðw³¾É6*Ïų¤h¢*È™,‘¹
+ÕE3$²QZ·ò´(R¾À3Ï.¸{ŒÕ¥{kJi½w™Ú¬ÈzûJh,{7ÐFí¿ÉŸIF,-¿?*•>‘6æ 0m¿#ô¯Û:/sD¾RÎÛ- ÏÜ°Q—h´†¸_~ý|7Ÿ?ƒùüº²º»6…·F?Hâëù<$4Ÿ*ž•5Ë3‚6bße®àýY
+¹ÙãEèØ:ªaÊ ®zÄdgkÔÿ‘4þÖÐJ¤­à1¨‚–([›“u½!ÎJ
+è½àI‘äh%jŠ&b)¦˜Y[SqÒGr&µ šEºìJhVÜ6ÊSÎRf?מ›ºÁ†À–Æ)4¦—eÇÒÑ*W^xn(¼C#ÔqÎà@Ón¢´‡Iò$VHºnxZ¿æ˜[‰ß"Y}PtöåE÷rÚ’0Ïkžö(Ík¥Ô.1Œë|ÂøÝ›KêOxpBKÃQììJ¬
+ãT¸! 4|<Ñ‹3±X“U)çaö% <ì’§—[cüK­*C`°™\T«?SYχÖA\YÀDóhÚ·lQthxfÔ¥59âx¸ûÐ %¾cj½anõ±@:|=¨³°¸#²8 ù w—…œœ ’jù®G¸ëîÜfè™Ô» Lïõê—§sr&Ès# cDŒøÅaX1tèØÒýuÐx¬"åÄXà…Ä$…!BEtžKº¸ú­
+*…k†W8ˆ’/±ûé4°×ršš‘f§ }ãNˆ×âx2€©ªdöu»J3n÷µA8ì æ4Nf  ®€ ‚æÞâ…+Áóe,Sn@•Z>s…›có³ÍZ¥ëàmQé,Ü)­ÐR}É4˜Ä¤—˜Xº„•ïÙ µ vÉK!Z÷$¢ï+mBÿÕ€ï¯yx|Ht lP„í0jÑ•Ø~䮞-]þ †Q`ˆ6¥`E?*Y¡Y0«£«&ŽëÒæ‡p–l
+‚ÍâhèßCäÐú¿f&0;~¢.°n¥«Ë¬ëøv‰¼5³êí®È5_­Í†‹ ¦©PØó °×ˆ…©üÿ"Ÿbú¥`•½rŠ½)‘\a‰…lÍ·†ÂuYañÜa1”À\ý/¬îÍ´^?úã‹d|ѧñxšLÆA%Ww®xWzÄ”¢&|¯0Ž£ÓÇ—ŸÞtHIß9²³ƒ[a4ßžøÉe >ÍN~?ùOÛ5üendstream
+endobj
+1316 0 obj<</Type/Page/Parent 1119 0 R/Contents 1317 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1317 0 obj<</Filter/FlateDecode/Length 1510 >>stream
+x¥WmoÛ6þž_qK—-jÙ²ÛÉ–
+fgÇÐjÍÒh ›ñdÜ:|=Âgÿݘâ˜æK$2™Mižú˜4Oß~E•Ë“—óÛ½þ»³XGCê ¢Þçé!5•Q¥£D…(S:¥~mM¡Ê~^êáÿâ ¢ËÆÔ‹Ò®v^ÝouéSí{vð%mS<ªê»Øjß>ãû¾–µ¬DmåÖFc†ø“àÞ:]ýo¸€g‹{¯Etê‘¢—¢X²™®ó”¬t(¬°º‹\R*—¢Î¥¥6ä2‰˜SYÉ2UåŠtI]²ëdAnSÉW´¨)üÛò{”'Ê<è(]Dïù[*µˆk2mà¿.¹Š0æ2áØ"eâA’ÓäÖRÜ5n9€\'"hpï”.mDól ¢mSùZll0²¬ó|Ó‚Øø³•LÔRÉ”*á²RÒ¾"aÙÙ"]P!6f†÷`ŒL]œÏ¢‘×ÒFÑá$sdÒ£
+•{¤X…ZeŽ–
+æré np•KKŠó]¶
+endobj
+1318 0 obj<</Type/Page/Parent 1119 0 R/Contents 1319 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1319 0 obj<</Filter/FlateDecode/Length 1483 >>stream
+x•WÛnÛF}÷WÌ›À¢$êjA‘ u AÒZEQÀ@±"WÒÚ$—Ù%­¨ÈÇ÷Ì,I]b7­ I$µ;;s朙Ñç‹ ñ?¢yLã%ùÅ0Òl<‹f4YÌqãå4­ñÅbA‡7·Áͦ“Y4o–ŽÆ¸lÖi2]tߌ§Ñ¸ûFÃæ­±2™£Ñ;p;ß¾]²ãg–·h¹F„³Åœ–©œ<¤er¹Üjê%6Õ4ì‘)R“¨J{ª¶ªÂ›¦»¢òp:·O:ˆ7$6ÏuQÑj/k|¾J2ÃŒ'E+SQn|¦UjŠ Ù‹Œ^-.†Ô‡¯1<¸üÓÖ”¨‚ìÊk÷¤ÅÛUEJ¶®Êº"¾„…\dÖ>RãÔ ÊK~E¥38um2ì·äµ¦]ë¸Ó¾Î*øãôKG®Mò˜í±?œIf-n”ή2s4;SmiokGrÇã÷¾ÒyD×\+µ-qúV!„f_³ žwô@WÉ@,%ª ~[˜Öxyc Ïh=)glíÉô¹Öµè n¯i4 yìG.ÓË?8`1©§ÔÒ{qæ>ù8ñý˜ßÁ^û
+Ÿ oiêUã|im>< R;ÄÇ=JUËçx”veņ4JÌ59â½,탦R Õ…~be"jQ9þ
+jærü<µ¾ËëW•åGá#Ž¢èÆ–Lø×O*«õ œ&°eAÜ ˆ•«²ÜzÔä, nJ¡¿jªf¨=>³GyÕ+é¥õ
+LH#PäK•h¤U„­‚l)Ÿ§¸‡JOì‘Z¡}Û =³Ëm[$ˆ`ÏVØÄý=úÛÙùìèθe¦àÆlQCÑx¤3ƒÇ9Úá^$ ÏÉúN_®Ø"¿¦ £Ý¬6¸ðya& ~ËòÒѧRüoÊ?;ÙÇD "½EÄ÷¸íz{éÙN6‰®Ì“íñ³Û?ìé÷öV/ÍÁH‘$´Å½ýÄàø9ƒ7~{|!Y ÀBãIþZ: SYn°‚; îO,N^°ø=sÏÙš[èoˆÛB¢RQú!#GŃ ¦µqH…¯”CAu\KÍÕ#tQm@p³ãôYڑ¸“‹V1:ðÆ®­}Ã9Æ×àP7
+) ŠPI!µcŽ…†‡ £q*(à—O¿è¦À çù¼^V&¨ëÓâ7âoÆA[œk†Hf^;E‘¯%ì3nŠƒÍ$uE˜Á"¼1\Î $™ÝØÔ 4Pý0½àù†‡ÌLˆ¥¿îÉ€,ÓëËžñ¾õœ'ŒÍom¥è®pNÑÝûŸßýþ‰¼Ù*cýói¹y·_~$! $_$€…N¸P·‹æ×Áh‚9‹1Íæ³hz-ÓåÝ›oß@ŠöùÑ&¨ÛE%óRÈ ¿°¥?bzû÷it2ŸDó~;ñÂë˜÷ÿ´¼øõâÚ;„endstream
+endobj
+1320 0 obj<</Type/Page/Parent 1119 0 R/Contents 1321 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1321 0 obj<</Filter/FlateDecode/Length 1541 >>stream
+xW]sÓ:}ï¯ØZf7ßIûV.tJo†ËL_[NDmËHrCfúãïYIN‚Ëå£$öj?Ξ=+¾ i€ßCšh<£´<$š-.’ Ms|ᯑ”ãÅbA‡f/šNfÉ<šÇøm4¾íߌ§Éxÿ“Aü½Œ'“dúÿ‹döË€ÓY2üéÅ«%WÔ y~}Aà -s”>›-’-3ŸÔ€–éÙ;½"++×£J“n\ݸ—˯'ç×áþhŽ#g˲„?n#©ÔÖQnëŒpªZS-Œ#SmTÅú¢*ÅŽ6âIúþàW½êÑ“4*W2ÃáÚÇ´–rm¶Âd2ëqêå·ÒQS“ ­u- £›Š=HJuY
+þ¬9Nx–«BöhÕx÷è;߈Ìuéút¥Ib´Ñ L@´ke,I72}d·¥xD üüñÝ›«÷ï¿0&ké< °åŒŒZo\À‚¾5²‘ ½ÍiD|4–ôêþ5iÓ)ôýíÃÉ0’­µ.¤éù“©¨ÈɲÖFUìÈ:]j`€ðÚ„ÐSKlo*
+Zqî«R9\[Lv´Å»NðJ;¶¨d }²ò’MίtÁd&“ñˆú£i²À¿@Š¨¨SêßF }VáDËŸ~{fîÏâÌÞÆ„
+tœMè³rÿBX«¬U*[S»³ D§.‘•ª‚!æùqL„'%·ÞËžž*¨´ÒΪgŠž–‡3ÑR]aöF\9ýNh¶ÕM‘‘ü^Ë4”ŒJÚ.‹UiõÕ†œ7›ëþtóö:å|N©q
+ÄÝq™tÒ ¢#¼€P'pDP¤®ñÀ)ûGÖ¥? sî‡ì¼¨³ó–ÃD/ÂèQ¦ êÐf·—6[û!Ì
+endobj
+1322 0 obj<</Type/Page/Parent 1119 0 R/Contents 1323 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1323 0 obj<</Filter/FlateDecode/Length 799 >>stream
+x}TËnÛ@ ¼û+ˆ
+£ñu8A£Êê=´é/bÆ"öÕ‹H•5IÎX@u4_»: ­d”4Ädm ŠþUŽZ­myX—cE.><p^YîÏxŠzm-.@ê™Ý H
+*MMZ—±`å°K ¦Ñ…ÄÁwߺêa»g0…Êg°-ND¢<ŠçñžKP| Ž#q¬Ð®Qø¦:Ù,H†Usðü·l ¸È*bùäüõˆƒ’‚ÐÛ·m{`l\ÆI½…²á4¼âÙ§vçUböÜ&v{ ñE«¾t-Äš„à ;ÎX‚iE ¬€BÛºtýã"y«RÄ#zd>“nÝ…< <—;£-MÇgÞÔ‘\ãù„&Ã1î8¶ýqùùv‰I4OȇÉi]péÃàÌàø`0.þJâYͦs\m”]Äòúãº÷µ÷oÿ!endstream
+endobj
+1324 0 obj<</Type/Page/Parent 1119 0 R/Contents 1325 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1325 0 obj<</Filter/FlateDecode/Length 1596 >>stream
+x¥WMoÛF½ûW zrP[±YrzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M§(ÚÂ6l“»óñæÍ›Ñ׳¹\ák.ë…¼ZIRž]Í®äz~=[Êòf¿ø©µdáÅâj1[M_¼Ýœ½|ÿZW²É`kµ¾‘M*°s…'Éù'k2£SùÅíœõ²ÕM§µ•ÏƦ®ór·eSùtwûû‹ÍgWr¹XâþyëÝñÔù†>æëèãòÕr¶à©7[ßÔ*iâ¥ÌçýÅâÀ­mô®VqV\ÜLR;ï²fH“×®Ý墤íƒ.´äŠq#è˜T×HGɹ+ã¦ø¡}þ*†epG7ºv;mµk=.–UÛ0#m÷¦v¶Ô¶ñ’¹†
+‡ç)õL>k©jíñ2f´ê3:—nŒÄèù®Ó¶³¸Â›\˃*·j‘oM£y BPµ*½ '%Þ )6.\}š7În ]"¬è\Z¯y‹ÅSVx·¸'„»'‰*
+!÷E»Û)•7-BµIâõ.m $“¸S%2ÑõÞ$øÝ™&É$̸nT³‰ÓÔ•
+à#ÎÚ‡ãU¥0†QWið@3ï<ƒÔû|J•äÆ¢›Üx©ŽKª}R›-’fH£€¦C­ýÁ7º¼ý­*à›5æᬵ ‘U…ib¿wbŽ ð
+y´®C±sÕüC+äj¯%5Y²ƒY¥KuùZëž¡Ì” ÝIvè£
+ €ße¬/+€Ã#“NrëÐ`𲎄ê!ïB)2ôwhÁR¥šÀ1,“´Eƒ
+O3¶»5h:'±<D“tG0žö\}RY«ë€-ÁZAò ­fG• Ʊ9"£à-U‡“€I­é e LF©Ä‚·!Uà’$®e›ÃÖÖ5à/x¸÷1tXÃ!Ü/^ ý,Ï;ô¤’Ì ¥x§ª *웓ÚÒ Ð’¸ð=¥‰: Y²Ú•ögš¸»Nïu z¢ñÓ”¥¡°A9;vQHÐkf›ÚÐKô,©“:%¹ÃP¡¥P£þZ¥¼÷SœÇÛZm ¥6˜†Õ.7DY)´ÂM×&ÐlkþŒ,ëëIÞÏþG #Î~ÄàA½HÈÛ
+ÌÈ¡Ñ0o&­Åë/ß'ý ¸\Ïn8ÓÁä/‹ÕZâÛAÂË£r%uxóÿÝð}_GIrewä áü?ö/7³ùëF·©¦0rüG_ª‚u¤r@[OÆx¸t®-Ò^ œ(¡”jë`á8L=ä¾É]ñHîÓ¶*†¡NŽ5´9vø±òäxo)ÊEh!tRÒ(­'>¼ÉHäG.UZb®pÑn¡ °ˆpÊ ,‰-H?An4bÇ¢9êèqzõÏåà8÷Ay¿#ãhò¢œŒ¶„‰<‚
+@0úïvÃ߯ÏC`7<¹ïÇãSÂŽ¦Øp0:é‡8³ñªW\J»Ú…åD¶¡Â® °Gõݺo¨MÈ?k‹by©Ë-ðC^Šj\+fòÑbi¸à;ÅÒu*8v\ò€¦oX€{ª
+Ô˜Òa¨bP²¿£Íät,çÖà ˆò1ž˜¥!åx+[®H$W§8Ýð?0¾»}ø‘óäÄ!©‰»ô{é,æ×x?ji¤‘6TN_X æÉH d{ ¯¸_ræ1–± b†€ê|w1&ÊL
+ç±4`÷ÆôšD ÚGÝãt½&¾¶3< ¾å¬
+³­U}øòÿwŒEŒÆ°ö;ž9Ñb”+Ž²M1¬5j ±¾ÂlµMß•7§OLËë?¸ý‹Ïk¨î“,×ËÙzuçÏëk>úysöëÙ_äÙžendstream
+endobj
+1326 0 obj<</Type/Page/Parent 1119 0 R/Contents 1327 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1327 0 obj<</Filter/FlateDecode/Length 1656 >>stream
+x…WÁrÓH½ç+ºöªÇN‚cŽ†,µ²ÄriIciˆ4#f$k½_¿¯g$ÙQRµ5Óݯß{Ýþ}² 9~-èæ’®–”V'óÙœÞ_-ðózuƒŸ—øãmÃW«ùìò­.—ïg×o}°Z½>ðqsrñùš Úl|¹º¡MF<ŸÓ&=ýî•ód 5…¢ï÷_~RÅi¡¢”ÃCC­Wt¿‘¿±É(w¶­Ép¥<±—ƒ{êl[fáÍ? 7z§þˆ—…·fï6¿Næt¾¸Bz›ìt#'äú´°¡­.q“·¸‰›x|¤2Jö;³ë‰$ëH픡ÒæxÖȹIê’¥kÍ$,Ç”~žÿÐ&³yå½Få¨# é^.rL
+Âo£RTÀn/膸,mçÇl
+Ô¸ÖË›ý-#Nm•S&UÙ×u–iÉyïÏÆ´kgw:j¡3-Zk2‚ îtÚS iEßÿ‡²ÍsNJEë‡&5ÞÙ¬¶=>¬ïžÞ‘ß#éJHÔÇÆÜiFá
+âM6{ÂiRFâeÄu]ö)úØIДkNt©›=X^î^‹€8^‘Ý" “Îý¯°§fï;ë2aSÓ)0=f hà(}>zG¤â‹ÞŒW=ʼn˜”¶‡ðé´—ú«f?½ ý¹øü ½xÅ9œ)*€]®úÅHiÇ~r~)~rz$&¼,¸4jΨ*´OªÆ£‚w(ÁúGûFʶ ‹`昭c:¥M‹ÚB‡{ŠÁ7&ÐvÚƒzè^‹ôĽ
+V¸¾JåŠ3áMÌT¢¿®=à˜Ñ=.ó•Ð;´îTlKÇ{!TD¾SèW ëaD¹‰.Xh
+©:n:t~sŠÁƒDäõCèa¬E<á“HA†2‚»ÔY…6Búà¥;:ëí¶éyc i …Ö"«`xz”ïÖ!W\Á‚•¨\@†B½HtL;²PE’¤öG©\G©ü…Á2ˆá‡d%a'‚™-‡±Òõ“£·!˜&œOç2øSæÊ”–À^D"ã1¦sƒN@3ZCÙè>f b¨÷ý¬?a.e/S8¥ŒU…"KJ™àÑpÆý ìõèmú ñw ³F,™NýnA“Ð v´B‹˜ÆOÄ–re”ˆ Lqïþñ1ôî9éF,RL?c”Á†c^âÀÿeB Ä9žÊÀ¡0Vö
+H¹Èº10­œºÞg߀´ü ‰ebJŸÑ[•¾~…@{J¸š´Wìü©-°hÁñu4X9¶œ»°\<r•0mÀJªT•Èv†¢2•ÚL /MÀc/ÒÄbYû?ycöÝ=~{ø4N¿ÞŒ HJŸ+‹
+zyMb:U†ÎÚZZ ͦèõÊ‹±÷»¤ˆ+-ÛLøã"–ÎC›Î¤sØ.^Œm!Â$boµµ%î÷Kñß¼ÀÝ`¦P¨ËÆÕ­’•ÅóZƒ`ßHŒQãNW²?ÝÆõòÓ¸ùLBc[¸¼¶­ Û‡Y"…fÉòUˆ–Xb÷Z•hÆ”Ø ;ã–Bç¢ÊÒ;ئ
+˜QGa]ŒÿÄ‹6 £)R?È
+endobj
+1328 0 obj<</Type/Page/Parent 1119 0 R/Contents 1329 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1329 0 obj<</Filter/FlateDecode/Length 1819 >>stream
+x•X]oÛ6}ϯ¸ÈS$NœdqÚ·4]>$ëfÛÛ@K”͆5’Šçýú{IÙ²œ¢Š ŽLÞÏsÏ=Êß'SºÂ¿)Í®é掊úäjrE×w7“[º½ŸñgüxMÕɇÅÉå§w4½¥E…+w÷øPŽ_]Ñ¢8{Vµ¦¹ö¯¦Àÿ‹õO‹o¸rKÓiºrq=Õ³ÅZÓ§ÏÉyzžÏÏÉRTi;8ŽkùIëuÐ >6T«fK_Ÿ?ÿI®Õ^EÓ¬(lCÔu˜ÐçHÊZ· ìýŠ.¦7“köšàzå|;®¡ÐkRÖ.Äá‡s˜6÷
+A4%uAûƒKÑÑR£"ÁÙW]Rå]M¥©*íÝاë|¡Ô'¤¦ÿQukõ9r ¦•uNilœÁ3 ªVÛÞzNêÀ½øƒí "tUVÝVÆâ»G€È3¢àÖÊ’|#•šÐ5:²gPPLj’¶‘rÎ÷ˆF)K|gHUD ® …Yzþ<§REµD™ ý8®2ž)úø<çD_Ñ>Ô·iäqÐÑIþêúðí‘6Ÿ“j[kŠTßÖ»•WuÍ 1MÔ¾R
+¨ïÂJÅ$8rè–Q™¦G¡bS%OÏ‹¾n]`ïOóß¿<
+×aÄtÓÕ2W®é+ÚOÑW±—ðëË”–5K¯ü6ÙÇÕ…jvVx„µt8MTÊ›q©ÒýZkdA¾kD;ʱo Ã(héÔ±1Pµ Òa€jmǾ¶}Z(ûçhb\»nµæ¶´ÁÌæÁàÖŒƒ=æ&½«Ö›Z²vMô.–ÀÆ|ÅW.?Z…üÎ.u,.›„'…*èÙñ @`Èäš [«&# éïNc,£•¨tøÖ:÷ÒµRëGê[ÂOÿ;ÉF¹/›µO‚3‹µ T ¸˜æã¶Õ`Ãã¦åPuy.†2õIp§­BÊÓC#(Z
+.ñÔý%Ä? ‚œýJ>CwxWâîÃgÉà¡¡Áes½ÉÜÔc£Ü£°Ë-ú¶v›‚טzfRxÅH~ªØúÌæHþóÂ>èš‚×%ZlÀ™iÇõF@q|4X[œZÆä„~mºû'<­»}ÎÏw?òα1‡ˆ
+endobj
+1330 0 obj<</Type/Page/Parent 1119 0 R/Contents 1331 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 703 0 R>>endobj
+1331 0 obj<</Filter/FlateDecode/Length 1778 >>stream
+xuW]SÛ8}çWÜ7è 1ùjžviYZv·¥ é°ÙQl%Ø’+É ù÷{®dcètÚ¡Xº_çÜs¯~hˆ?#ši2£´<&CšMfÉŒ¦‹9~㯕´¦ïÏ“é[&ãQ²xãŒ'ÃæŸÛOG£ñûäœÆ³s˜/i<Y$£æÝ£ÅðµëË£³«)F´\#ÚÙbNË,XÒ2=16“6¡e®)í¥]‹TR)¥#‘eJoH–;µÏ¥ö*^MNÚ­Âɵ±t¯ôJ錶ÒîI
+·?%QäsáqUfŽ¼¡•|·|8Ò`4IÆá$3Z¼†c°Müýì
+ ¡žT¢üo-'ÎÄm'Tš¬.ÂýÔTJfì¢gà¬P«3'ÓÚ*¿?똽~»øB©ÑÞš‚Öª@ÚH‰wBµ²[¡}›5JXë*>zFºæU‰¶JP›
+* r  v¶À c^¬®þ8¹½¾üñ.ò©WDØr…Úä¾ØS¦Ökiqaûþõú_Úå*Í)(-Y¡7’Ìš­¤m(Jîb½—ûŠÝ0(e¼Þw®ðw¸òw ]{N´êØуYq\`í )‡8UvˆŠ†À)'âêöÜ66Ù<¬­Õ¦¶H
+m¥¯­†;˜ôíòcègÄÕrPÓr§|ŽS½pz´…ãº<›å,`8
+gÿ2»S"ÍC#úìP{Ù‘ÜBG=<H{Ï©ê¤Äü5PaLNè+
+І
+÷Òáˆ,´èt7—DèùMM •Ã9±,!Üý=¸ ìF{㬘¤Á=À“æ!¾@ƒ¾Û˜P/ëL¹T`çA4Ð@ÌM´qøðÙe¨BÊ }1Š]a,c°ò^5˜L£T\#CˆOdûøØøM¼Ö®1a0ceÃhþÂèaÒaÖüirMK‹6‘=`9á~wZT`)ÀNPÔ ÌЭ
+kWêóÍýò¦l$凗µì 5÷x4“.µj…˱À éÇ®°ã9.gbk­Yñp¬éèC”o|í,ˆØxÌô
+æxÛC—q@–ü …ÿp…šÿ4v;â EDJ¡«_¹3…°\€J¦ yú]Ýß±¹3~h.Ðc¼ÖB¥ÿä_‚wÒÆÑ.´W5ú™çÄV9TýyR´û2ÁTB'[™ ¡a÷í0ï™Výmïš7Tè(ãù2Ž@"¦PØáû°2+ÂÍÂ.aUîÂÜC0•{º•Ùg¬ïs<2¢ø÷³mª¥°+,ãèág:¾Í ~:´Üá½¢Õ±Ë Ï‘6h,¦¨¨†r÷IîŒÿ
+2ÌŽ­ÜÔ@ûlt=…öc—„„¡g4øŒ­"å+ì‰Xó$0à‹‘Qí¥6½gRz„Åp%±«íðÀpB è8Öh²fªô8ŒŽ'&bÀ¢¹fÂÇ·B`º€jåPjˆn¬jó´— ß(K0–tZi––(\‹
+endobj
+1332 0 obj<</Type/Page/Parent 1119 0 R/Contents 1333 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 706 0 R>>endobj
+1333 0 obj<</Filter/FlateDecode/Length 2018 >>stream
+x¥XÛnÛF}÷WLч*€DÝl]ЇÂIã6»‰Š¼øeI®Ä­I®ºKZÕß÷Ì,IÓLÒ¢(‚Ø–¹—™sÎœúÏ‹9ÍðoNë-W”³hFWëY´¢ËÍ?/ðßiÚó,í¾|üåb½æt9[F *hŽïÛæSNŸ.úŸñôò*Z÷Ÿö>ãéjmúO{Ÿñt;‹–½§ár6Ç×/#ÄQËèòË› Bo¿¸çA‹%‡/I®ÖˆN²|½&ŠÕÓ›KšÏi·gŒV›5íRAbF»d´ËŒ'•çöä©Ê4}º¾}}M*-Li|åTeU§çg²¥,Q5–•ITeð«B'™Ââ· >즟M¹xÿj÷ÇÅŒ&s†x—Žî~C{>× Î°{Jm¡ ŸVÄÚùˆÚC¨öøL¥¥Ü–í¨Ô:å2õ¤Éë£Bš¯šôîRIbë²êB
+iá¤'í"^<½Y5 ôv}Î,ùÌÖyJ±FÎ*5åñ¢Ô&u¬
+›[DùÎÅ
+œ!?ò׻ϻ;â Ú›C‰P9eö•.^ŠßíélkRàÎÇ\ó|cˆØ*Ú›\’ëE² U¦t2>c,F{e(ÒÊ›üüðŠLYé#Cú/ɧÝ;[ðõŽ˜[â03à¬Û8 ÑeȉaD»LUä•IÇôŽTÁ\}ØžÞ_ßâú£vÕ˜¼•\ uFN] nŠuU]ìâðÓ +3 l$ÑL{M•ò¾á0i8œ¬£ÍœV+¦áa±ZS`i‹ÊeÝO›h¾¥Év˜ú¨ÿ¬¸ýK>™N.QCˆL!¹"V”Øro5PeÝ33@©·&µs`4Ô€GÑ@i#z}ýæ=½ÛÑï÷ß½¼wÔháY*9Ëï<
+ÁSSƨö”R¥ [JAô¬ì>G±³Óîa“±´pùIÇÁQƒ1ˆ³†™0­”äåP5Æ9vZ”Ø™L @j „»À
+
+Hƒeíu‡À±0d¾¼”cÀtÅò"pi …8¸neÅóùÂEÛ4ƒ[VĬ¢˜šÎMì”3@¨ #ÔÙ×ï]2¢Ðgâ…uú+7éŸ}nÍÇ¿ªL4 P\¸ÐªôÃ’ƒ…LfÑúr²Xp¢Ï£Ð(\³€VWH~b†4d:?îëœÕ©r41ÖÈ“ìRý¤s{ä¶ &ªç WuuÏAÈÒo…Ö·Ý
+XΛ‘áqa´à2¾««—Y°{J»z­¡yP\)ÇšT˜ìâ8ƒ~&ÄÒ£Aèv¿gIK
+ATïPÿm•‚¨º”òmx‰bp¢÷ÍvŽ¢'Uâºj­Ž|7ý¦s¹¦I<¯)¿²†«fxVk"/sqv(n‰A
+¦.(Ô¡{p+íê~k⣢ÏAÖÞM1éî8iWöb›òžB‰ÁöÊ‹PRóŒn¯Ü
+(®MÎ~$nŽb
+D/kr ¥ÒÖã÷“çÂÓikÐí{…ÌÝ-1]âÓ2ŒPp01ayo
+/m›E´Z.ßà÷Îþ׌[á[È{'sü¡c¶YÒd==éhøw¹¾ŒÖ+ü­„n·¼çíîâ·‹¿5š~endstream
+endobj
+1334 0 obj<</Type/Page/Parent 1119 0 R/Contents 1335 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 721 0 R>>endobj
+1335 0 obj<</Filter/FlateDecode/Length 1505 >>stream
+xW]oÛ6}ϯ¸@QÔEcÉ’¿‹m@º.CÚn‹÷´ %Q6IôD)®ýøK‰²ìØk;±MóòÜïs©¿¯á/ yHãÅùÕÈÑl6Æûd1Ç{ˆÿRRŠÅ‚o勧s/hEÇSoìdG€õÜ[+NglÖIYùß~¾
+Çà˹·¤œÂeàMÚUFw̯18˜,œႆ3o
+  ya»b fs4±Zàê‚»èöcàäd·ì÷ngxs‹8õfdÝÖtdñ‚q
+—/&Ðe¼õfÅ!?‰– »Z¥ÈÍl1§Ub£9¢U<Xm”¡Ê²kŠö”ÈTÔYuMª0•È€xóþÍ VôrõéÊ¿En-ÎÀ¯Még:™oD‰fÛ©xt'%UI¹Àá%ÑqË¢•Ò©”öºæs#cs• v¢¨¨Ò'êÎån#Q723Ò£w•µ˜Df4EµÊ«j§ŠHIBò³ŒëJD™$Q$”©¨¥’Æk¬\vÁÚ¬AïºHÕº††F$p~ÆìTo¼ÇÇœ}l5‚.ðE3aÿVîÌ¡BÊDÂvMe]° ͹©Sc¼%Bæaµ)u½Þ3Ò2\$)Ö[Õ`W•´-õV– Ô 7'“a®ÉèF‰ËpÏèRëêÙ©iñ–<¯É½ot]ÆÒwføðßÿjÃâ!IüÓ±=üwM"S]#Yª‚±4F”{v%M!¥:Ë4 ×döy¤3#’ÅÃëo3;+hh¬9¬|ú³^´ü¦H¸UlõÅÂHÒ)Ý!•Fg(8óÿl³¥¢§†PÓt綼à8 ã`
+˜£ßQtgógÁ‡†N¶kÂËjç÷T}8 ¼Å(ü’úÜ“Š±–9˜§–¨¿œ¡zwMÂÇ€ù¦k™ ÒŽƒ6ðewUÜëx×È.H°¢ÞQmdiûÜX ¦í½Ge“OZêüi[÷úÏ1VcÇAMÓ߽߻‰©‚æLë´‡mð»H+˜Ë.£ºª\òDÀ8‡ ¨©·À'ª…Ú×V€ú’×vŘ<%,¿²±ì†w_ÞlD¢w}ù ‚6b=>Œª¡³ln-¼DžZ}
+n™‘³ ¨+ƒâ0§²=g CS gè6K˜åÕú4±ˆÁÛ¬¦Ÿ+çV;²*•K®¬¼d*™ãÊ¡Ø@©Q]1!þ©ÀNI÷G\…‰.^0ѵìoOÜ¿lg"vù\.ŠšÍîòåFx7MÎ6¶o0}ç
+ éZ—rÛOß!Ê=¶7¦[sZtÇÝyñ(Tf‡-¢ê*Úö†Œ7ÚP$â„â"ðÿk±É£3-س÷N>ÊRd´¥È%â‹:Ç
+Ô|\ãÞó”.é²$°†mèñM®•¶×UÄYœÎVGdmøþXg:ÙŸddÌ…®Ïs‡wjûñçy?œÛxpÎa…À Y¡™»„ ¶@^QQÕ†^¼zqÝðÙÛïoÞ}xå¶0œب ƒÔöÆ3 ïéKû¢–Ùž±"ªU‚&e¶Fxq„öKŠâhb6ž} §
+Y‘ˆùÖxÿ’cÒO(y›qqm𑨮 |^û°¶¨üçoýç¿óAÿÏmö '/¼Ù4 ÙŸK~f4O1¿”úšÞöŸfl¦ƒžpcÎGh\ö¥áyK ÖbmècmGÇdÆÀíÝÅÂGZ]ýzõ/ö¶aŸendstream
+endobj
+1336 0 obj<</Type/Page/Parent 1119 0 R/Contents 1337 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 724 0 R>>endobj
+1337 0 obj<</Filter/FlateDecode/Length 1174 >>stream
+x­V]oã6|÷¯Ø^ìâ,Y’mÙ P¹|Rà.×F‡C)‰¶éH¢JRv ôÇw—”GqRZ$0l‘\îÎÌÎêÏAþ…°ˆ`CV¹„§µÆÄË™?…Ùrßé¿
+é‚ÇQ·ð!9‘Ëä&€3HV@5L#¬báÏã%$¹-1€$^Ö3ô†ÅOÉv0‚Ÿa’Šj’2½¡“›3CŠãµ¼èÌLòѯRT`6î/>}¸
+š®ÃÛt¦Dmw°Æ`Oä}'[÷’é‡úv&X5†Õ€zm®CÚPê$ðZj-ÒÂEI\Ú6ø…xi¯Â]ʬ{%”6>$Òå‹ðôow@Ù×c@ ^í\T:IóÜAøŸ„Ûò*·ÃX±g¬™)VI‘[ A°¶¢ô+HÇ3¤¸Å_5U…¦ãûßÙeµqø֊מù«Y&¼²×,ØRy“qb¦Fr\¸o bÕOÖeÙ’Ò™ç4ˆæð Á¹ý–ÅQû~–{, Ö-$ò1u ˆÖhZ–ň›H›Ô
+))†0#C©UNÔèÿ­Øv+ ^ó6b­­ð ý3eÙ0„‰Ä¼êeõ­5ì¹úpƒuó¿Î9>†[[,Uõ8oZP»Ð9Ü£xí íÀ󢹿ÄIŠ6ry}÷þ…{"è!¾itëi£òvªöV>6ˆwñщ­ñ˜QoÿƒJÍúÔDßR¢½E–žƒéuI/ºi}—î„l4×-Î#œ@ä•9”‡Î©‡X×Ðö>sá‡igšS£{Ã÷CÛHGòû-2cÞ`Õ„3 ß6ÐwˆD³¡ßJp­$å±WJ–öŠî_ø8…¡{ë™Fhøø’“NNÄ}«Àµ«²}Uòì©g,^Ù77*õ ÎÚuÂÿeËøë—²DhCLn–í8ã¹ÏCˆ ÿ,¶Ês†ÿEÉ-Ï \ɬ)Ñ‹mÓRv^ˆï‹Ár
+Þ"@é棥F(£Uk wÕÑ,^bàÈ!½N¿ þhøE!endstream
+endobj
+1338 0 obj<</Type/Page/Parent 1119 0 R/Contents 1339 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1339 0 obj<</Filter/FlateDecode/Length 1204 >>stream
+x½WëoÛ6ÿž¿â‹Å’%¿ CÇ]±æ±ÆØ0,û@KtÄF"’Šk¬ûßwGJ‰ãØ]°W •x<Þý'ön/‚6þ`C§I±×†CxüÑ7øІ~7
+"èøï^?æ0ÇØ6î~ø©b»ƒîClŒñU趴Q4ÂÐ^ˆ£áZ^ÀwmèŽz¸Ò=ŸåxºåÌpÒ†LçÝN },²×Â4u¥µaš4ON/¾«‚ 'JZ­òœkózúi¯ ­»Åhtµ…Ër– “m¸J2^08J !·e8•–ë…†ïŽy§U¹€K•‹d'š3«4\,eub8éBQG-ßR+¸Ö°Èi†À—2±BI8¸á–K{
+p J)æ±k@Ía¦l¹JXL¦p9>¡xmÜÓ Ue˜êØŒ×èt‚˜Ð™#fj)ä $ª(p÷
+ ì}©dܺª•²ßøÕ^µÚ¤z°TX0c–©_¬»\Ûú‹*ÁdªÌS×
+Ä{$_RfÒEÕy)Rs7î7S‡Thž e‚{àR>gen±pžç&¨¶×hc†á6›9ô*¤)U‰DÚ=êPWP£û´»5„¾®ËåwŽÖhzZ&â3õB
+¤`,Óeh-ÖI9œŒ¼“è¼®ßõAÈò³Ïù„/"[ó+4£BfB¦ 7!e¼@ÅJÎSCòt§Ïæèªk3“)fϲ ì6Ãä–0’ƒ£G—R"î(k,Aí.ÈÛDƃ{+ž-3·‡¤-W%Y¨T̽\6Ð"39š•±¼Àì_¹óÈ]e†Šõ¥Öñ
+õà‡Øœ_­1m"-ôfMwyú=f!£~-+fìy.ó™`2¨è¥nXšÖêry¯ÐL„DMÎGRÈB«×å~Wr™ð
+CÅ ³¯
+ܸ’§t 2pQZ
+ëö‡˜8FiaHÔŽéÝétïǽ?BŸ| endstream
+endobj
+1340 0 obj<</Type/Page/Parent 1119 0 R/Contents 1341 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1341 0 obj<</Filter/FlateDecode/Length 986 >>stream
+x­VkoÛ6ýî_qj3D’%¿[C'@Ñ¥Ýfcûw¨,Ñ6ItD*^°õ¿÷’’?¢6fÃ2HÞǹs©ûš‹6}] <túâZÛñôH—´h£×íØ#tG=»·×µ]¤ n“úöQ
+w´Xw8 E~…èsv=}žKv½¹0²—Óg,;×mŒ0]Àµ»}2ßë1 €6¦A Ň+q:ýRkÃr)’Ù½÷a|^ÿpsY¯к°4ë“U¦O–ņÖZ’¥<`ò ªôïx­S ‰ça…߯¦\üâ7®øa
+ÄÿÄ&÷óý@:ÕÜ¢™ ‹ÝS£Y~¹áítŠOxýi kçÁOHwŽÌæòQ:2ž'e¨W%$e*K©ˆ9˜_õÚ¹åíeåýeyÓgÔ;ù)—¹T®«»bñúº³>&¹ÀE†„±J !_<B­rM¢™Ñl9LO¸²CGúñÜ·u[±tßA Rù©ÊÖAÊ×ÊÆ;…Lf~=B$ô0ç–nôŽíi8”¡~šþÃ<S+‘E´›\eQ ¥ « {å?04à YŽ"
+ƒ'ûÐwü8™4¥ñ£<‡úñ €3ü‚G ˆDùd3µÒÜŠø#1.ß”žv8ny={H\§° }®ý„n4r´;¹Û;-Ä=×6Uâ Üâ¬8ŧ‹T©¤œ »ÿ £BùSTÓ,Q¬Š ìo®l.øŽr<ÌZ³Sü³ïFŸ™”%~LÉ×S„I9k19;=°[*®yxþ¹ŒÈYK¢þ­5:[ÙeÊÖ°6hº/T‰¬ŸHç/à'Ç9)V°õâs…Ó[Ô›²ŽWçÄNn›8õîŽá!±¬YÍ
+endobj
+1342 0 obj<</Type/Page/Parent 1119 0 R/Contents 1343 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1343 0 obj<</Filter/FlateDecode/Length 1489 >>stream
+x¥WÛnÛF}÷W Ò¹°HIÖÍ ‚"ij4@ƒ¤±Š¢€bE®¤H.³KZÚþ{Ïì.%Š܇:€#“s=s梯WCàßf#ºR’_ ¢ùœŽ¿Ì h:¼‹&4žÏðy6ÇG#iÙ´¿²ƒè.ÈŽ ߈Òd<‰n/½¸L¢Ùù‹KŒFã£q+çÑ(ÞÂÞÁït|ˆçøâíâBøñý€îh±¢a4¾ÑùN¦sZ¤.Ë-’mU–•F'´SÅRiz½ør5 þ°A–E^½
+ÏFÃhÊϾ¼>—’ÉFӋ߬XË—Ë*‰U¡ª(­È—"²Ò<IC‘­„©èoü¯KúçŹ¡ƒ»&iEÂbñýO¨ï3êf.3DôY:³ªX{Á1äÔ‘ÈÈ…ü~E{]Fï¾ÚH/8 ‚=²ùÒåß7ʽ›®LqA†DôŽ¶ÚX¶ìQ*d® K¢¢j£,•ZÕ‹Ìnt¥´”$–™¤JS¢‹B&ÔvárYnÁ $ì@¥
+¡™šLZUŠ¢ØêÚ$2.¬…dsJ£¥Ê€åÚìi¹¦OÚ•üÐ\-ÛMvFëê;oîØzñÆW 4ÿ D‰¬>uífƒÇietÎÉw+rˆþT³´çÝ„Ø{ÎkÏ“ŽížèRy¦q
+ýÃfà¾Pc¤ †ç,7$Z¤M\[óœß0—([5ºXí¤$®o˜.Ï:µ§ ^Ã:i9ùEõ·øÞHùöá]ß–2Q+•ðô;§h9<;ç:6µóT3°!Õ<ptÕ:”lD±–)&¡æ™\5cÇ£ÓTØ— À­UßM¢9V>"⑈Ž‚|­Ñh)æŸ4TXŒÉMÒ ËמB}¶À>˜á&I¢kÌåÿoô¸Ïw:ƒy:ŠÀ>Pû=³ eñM#²ÌíÉkGl³x)Ý•À ‹€Ü>d.Úä"kò Ë5Әτ ÂØ Vc`>ö°Naöçnx[i-¶Ìã5šBf…¬Ð»PCð¾\Ue$*c&ÅÂF…ßïnÒ†p¬;4à
+endobj
+1344 0 obj<</Type/Page/Parent 1119 0 R/Contents 1345 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1345 0 obj<</Filter/FlateDecode/Length 1341 >>stream
+xµW[OãF}çW|Zú$âع§RÙ¶H< n—¼TBB{’Ìb{²3cX÷×÷|cç‚í R d滜ïrŽ¿Eâ'¢Q—zCŠ³£0iûføÒ`Ð 4GÁˆFcüi$Íq6¤~Ø "êGø;ŠÂ`²ù
+†ƒ°~«Íôº|·:ÜÅ…ÚÊS»ü}}2œ¬Í~ž²Ó†åÎE®i:G&Ãñˆ¦‰÷Ò4nVÐt)­¤Xä4“$…UiIV:*¬Êä–’N¦ßŽ:œjÙlÄ:ŸWÿ^ÛoÑ"Õ3‘’Ì)«ïë+äd¶J…“´Ô™L”iÜ øsHíî0è#ÆbjzíHwV" ’ÎÜ­÷i®ÒMñRä ™Ó$ÒT?ЃÊg*O÷Hı´–TN‚2‘çÒU™J…áóœ­ÙLÔñD½ Ëñ°ù€®Ê‚z–v"Jµ¾£TÝIøRö×*&Œlô{]€0Æø ·¢pKª^F~/”AVüê¤jÖ±2.Œr%ƒr›*ë|V“Øg\\”1·ò,‘yé:ó_yÒHޜوÈd0Ú»áÙó¹ŠÊú¤çÜÀêçM¼¼u"¾ƒÄkîU,Ïli‘C›Ó?ÜèR¦©}"¬8Ö…Ï…Îlkâã2³hK¥s.ï;ng¾½î¨‘ï¬W+Õ •W-¹ë§F+—Â`MÔã"éA”]:Ê1mÜáö'´¸ïwé\ùDM·srpMßl¢ÈÕnV Ñí\ënWÂÚÃûôg4®})Ÿ@jÛº#µ5ñÎFÅÂ+ú}Ã>hÃëíãŒ~ÜHíDºcT¯&”ǯý Ž´¼QmÆ—¦ò2÷l
+#¸Éª0×KÙ_[ë¤0â @U&–Ę«e#¼Q •XBÝÝR8ÊJúCg‚¨R,Q*0ÑLC}¤:F KôMþÐ+w““)*LQѹf¹Åx¨W®qå‡ØÓ%W"ƒtáÕf\X§3õou’•OÀÓ ì®PŸR^)î€Zwb9bO¹ƒ‘§-àåpKÍJÖË?nóX %–z
+zÍ:?ahOHBDŸJfe'T) Ç¼ÖÈTe+ nF=®è庈Ïɶãµz¹+H0¨§O¿Ý´ŽoN6©_Ôçå1™tÂI'ÒõÕå§æíægú]¯J£KG7­øæ„¢ÉdØÆÛä”®‹œ®Tlt•Å6Éc.c¸Ž‡Î‘ýW¶`é+Ô¿¹—ÉÞ¡=·_ίö›r×ìÞs*2W±ïaÖÛb!¹tÍ“Ï~U
+ÁcbvèÝ ÿ÷™N”Ho9#«ö›-dê\öàÿ!òv3D †ÊÙmàR=²øb©6ŸÃ¸a¹ Aâ*  s1®E£á "< GÁd蟲®Ï¯>ŸÓ£¿ÉØaÆ·èfí¶£!àÇ=jB<¦ááTZÇKnºÄ»¥¿
+ßÎýᆻxÎÆ‘(p6Nþ>ú¿&ƒendstream
+endobj
+1346 0 obj<</Type/Page/Parent 1119 0 R/Contents 1347 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1347 0 obj<</Filter/FlateDecode/Length 1188 >>stream
+xµWkoÛ6ýî_q C
+Բ凬웻.@°&Èfïñ!@@K´ÄNU>âúß÷’œTÉò
+-‰¥)Æ4Ö;L…¨8±­ÁX„ÙˆîGžfU“qCJ¤$·ÄªJîE•Q*í¦àT+YÖF»2씟7Êužé ]˜DÁÌ-\ɆFmªw/­¢+7Œ~v¼(‘UÅã,˜\I›åÍV×EWÓ&gþ¤Û¼™u·¦QGsLà¾õ6Gçg.œ$˜01{ëŸD)Œï ~ö¼— { XäþÓL}”3 ¹*[¢»8ç‹û³Î €ß˜s•ë-Šœi¹ãÊß0žäŽS.kî:Äw·Ö€tO¯Aÿâ¾Ç”?ìôê؈ƒµbO²ÂƒÝ1Q0×ÿŸDe¿L*¸ õ^^¾GüMîÅt=S{>~>ìì‘iÎÁ{¼$\&œ½Zâö„¹€ÎaOÛ$ÇW-Þ$ €[~Oð»½?<«_¡ÜF1„":šˆ=rªgóÀ¥eíXê¶Ë»CW ê­¸º þî„yV¥t]Ø,ó*,1ó?èý—2µ?{fZ×ZçP¿Ž¸8±Jé¼Åe{‘¿Z­üå%eà@†aCF]]ü‹hW©TMŠÎ“®AÒô¬É¦›I´ Gâ>×üúp>i^zÖp®D‚ƒƒv
+!à©ÜÀšþ¼øè£å‰Ôó­¤{HQ³E&ñ–•—(ŒÂ¥ÄHy J€ñõÐsžìrñlå¬"gq+*Q”¡âê&êšóŠ6ûC;  guµ(î­ÉþFUP©íÂÚøø½aÛ ˆ·*…Ó8ˆÏ¦E³`ùâ\-/?,éZÉÏèôQ&Ö]ܾZø0ŒðjOi¸ã5=íó,Šƒh>A¹c-GîÌoëÁƒo/ÁÐàendstream
+endobj
+1348 0 obj<</Type/Page/Parent 1119 0 R/Contents 1349 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1349 0 obj<</Filter/FlateDecode/Length 576 >>stream
+xeSÁr›0¼û+ö˜ÎÄ|tÒf¦gÜ–N{èE‘Vz®$âúïûö¤ãŽí±@Oo÷í®~/rdüÉQ¸-!‡E–f(—«´Æ²®x]ðÏi´ÓÆݲN‹Ëûfqó¸Dž£ic“²®Ð(p£,C#¯±ßÛyP gáûÓçŸàåi ¦EØ1ˆé5$Ù ŒåüÎxÛ’D0dÁ’œ÷A+ƒÒ>8:j•~h^I†$¿e‚ºzÓ6ôÇ©ñÁØgc¶ë R#Ã(Ò–‚xÕ Â¬„”4Ú€=yož¹æ@îÕ‡Zðñž:&Ì #Ü?h.ò02rô (Ovij毶ð:€gÀ¦@§£×ÎO¤oåIº¤Jëç~e…só¸BΊ¶HŠ:ÍWH–UZN3’•ýèt®;{ÀÄŠSIꞇ÷GôpÍüÝn†yD[¢øObÐø¦Ý›‘ü0Aî®±íÇ®Q‹õÈE69˱™Tô×`].Ä`»íAcc¤#OmÀ×í¤è{xÓàØÄ‘õ"ð7£4+%†^ûhzЛ¡˜ß{›w /P œšYX°KbÙ<tŠ(»4ö!†H sš]rZ“k 8‰ ÔÀÑc3šYJòaŠíh§@
+ æ¾xJsÌkuˆ©9Y[Ÿ¬ÍK¾Jõ-ò;¾êêÛzs¿ÆÖÑ‹–IŽK;M§JÎåI•­þ7zYÖiyWðµåVyVÅ#ŸšÅ—Å_"0·endstream
+endobj
+1350 0 obj<</Type/Page/Parent 1119 0 R/Contents 1351 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1351 0 obj<</Filter/FlateDecode/Length 1400 >>stream
+xWio7ýî_1
+H¬Õ}X@?$iÜ
+p 'QQPp/‰ÕîR!¹Qôïû†»²®]Û¨lËö’sðÍ›7Ô÷«.uðÕ¥qú#
+Ò«Ž×¡áhèMh0ãï~tD1&:¼é%þéÐ`xëuip{ë©ÛÇ[¹†x†çd4>YaŸÃñÈëSw2د¼sldóô†í»[êuh#ÉÑxBóЭãIÐ|Æ„>ýµûôáž6I¾”Ùõüß+6éŽ “Vàõ`Ô|›Ë$”Ù²Ø0 n·ÜÐ{#Þ0Wä󲫨tvC:/=Kƒ&¥b‘/³ö&ôÿIwæ{âuêµI2snŠÇ@×k•ë jŸo¥Ž«ôŽTLF¤¾ P«¥Ÿ[©2÷w¨ÕyNô!úio(P›§@V‘Èv”¨@°íTN[‘Yfo*[&;'Pie!R4V$ !i9á_?¾¿›ýÝN¤OJ—AQQ_;7šWÚ.¿ò§0»äÞ©,–Ë\?‹ôJšaJD°6dTÑR©BäHϺ#Ü "–V ·É¬”ælc5=ƒåM’p¨Ç*IÔ–HPÍïC7m|„ÅêžMú!´~‚BMņCSß pÊ3;—Nû®C·Ì«®7è÷P2t~£h§1é7úª™n¬5ßJ<¦í}ùÚV0l*CÀ"césÛÓLZûØc—3„>²DF~ä¸Â$LÌ”D®£üÁü)B™¬aÁ5ð$Œh+íÊ!|ðf˜³î(å ðàœ;Ųã[DÎâ@\šÅ.¾ÙDŒw”払ÀØbáèZÂ5iœBÙ¸qæ"Á®,Š\9Ñ,{Þ‚¹‰ÐOq e ÎŒæÀ É#RþÃP‰ÕRþˆ¸£uîŽoJ
+P, ž°d|]&ÊÉ72hæ}ÛÖâÇÔ‰­”±TõjK™HQ 0Š2Lís%a»Fy’.Ô™Ùváœ1Û*ý„NÝ>`¥«r Öid§/F …¾
+CÂíú -À°ØÊ$aшåÏ‹3ªœQí»½Š5ãéZžó†ä)b»“"¨xÑœ5~@±‹dwXYpû`T‚°ØKmìâúÑ=jƒD-1­DqËÇh!#»hÞ.®ë™Ãbð¢ÚÅk<¬e°®wñÌ#ŒL…‰ìE*¯öÀª¬D¶;OŽójiŽª\¼ÆÓžÕ¬ª¥Á†k½hö†ÃÅ5ä™üéèËVõ
+UŠ>­öZé÷aŽçlö¸Ðåf;7×¥Lb‚<“~E7¨Ï<Γ¤‘
+—wØMn;tŠ×;^ñÅ
+÷ËjP*|f¨ÙŠ6®ê}óŽPc2V:?öíŠøûÓ-·0bç´hFË)5þœ6^j½ŒL åÆ]F !GÝ{©$Ì[aƒU1!~;Bó‰ä
+endobj
+1352 0 obj<</Type/Page/Parent 1119 0 R/Contents 1353 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1353 0 obj<</Filter/FlateDecode/Length 1020 >>stream
+xVÑnâ:}ç+æ-T") $„¾\u·ËU¥n÷® WBºr‡xëØlì@ùû;6¡H¨´­J ñœ9sfæß=†øëÃ$€QIÑzq Ç—r…CÇ#o
+á$òFà‡cχ’B†‡‡þñRÇÂ8ž``€‡£0
+bŒl¹áÇŸÝø²èÝΆ0…E¾7!dÅ°HmÒ!,’>K©Ð,c´¼+*±¢)¤ŒpH$¯
+6¤LrR.ûA.oÀ…¿n¿zCp}¬A›XK[0p.0¡—ý©Eyì*EKx|€e#—7ÝÀ«?^•²Z#6_ö$TW‚ž{âóLJ+Œmò.ØvÔ=ák¨œˆ‚X¥Z„nA¥")wk n„ne™v3º ß4òjŽ:t{}Í ë,  Ýhú¾gu:Iº]Ê–a>™?¤jŸMºµ¨Ä›[£µ®vcq¹’÷lÓÖºS¬++–˪TÀ©øœÑ”C]áç(ŸÖuÀB#¼°nngcð}ãRîÞ¦Ü`bí
+åÛÝ©"œï°“$fä+ Äd@ —ý;ô’itS¤  3 $ÉkØæ ¯êÅSPkš°lgO×,µ„jݧ‡Ž¼ÀØÙ6Gmí&V6@“WN=ø·fB¸’€BêÜœ{¥ø/=à#G×¼ö3b•²°WhºHhË8 >KþJkR©gîÜΦàOŒHè·£±76_”Ix¹
+d Ç}7qØ–£Øˆƒ:Gçî‰Xñ¥Jp®ÈŠZŠ¸FΖÈå–nhylŒ9Œ¥wu)A´§ù˜ÙÞm­þœ½á)T·Â*ªÁi|+5ܪî¨nž95*çLJÌæ<¿<=98.[¦q´-îw%5Uf~Îà,¯¦õ9†qs¾ÌûzzŒÉ ‘Õ#r–º¥BÛN#þ©:FË–©=Lºf½í¯éÁ"g
+˜:ch Sš‘ŠëîAû›jm
+R¸uÙ§£là ·Ï—Ƽ°–J1Ü£eN6¸¬‡ßBáW¥‚òJP Ó“‚¼™¬JâR;¨³ÒDhç\À™öwR¬9=ÎâùeçÖöômCíœÞÎÂÚ}úðõÇó×ûŲ?c¥Òÿ™ãœÁ¼*íÅþÑá´Âº‰?p ÎSâʽ!cÍøÇäbíiÍl^jW#Ïé~¿ïæ?Ÿ •IU %ZTÈ°òBâã!îȪ2;kE*«D«º™q]œáÓd<‚Ð÷½
+ÍÖχJù‹âwåCÙ°q!îdˆÏä6ã(ö¢0@ÏÂx85¸ß½Ÿ½ÿ³U`;endstream
+endobj
+1354 0 obj<</Type/Page/Parent 1119 0 R/Contents 1355 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1355 0 obj<</Filter/FlateDecode/Length 458 >>stream
+xSMo›@½ó+Þ‘H1_Æàø)9µR+Qµ‡HÑÂ.ö¶À’ýP’ßYÀ‰íä!Vˆy3óÞ›Ù§ EBOŠ2ú@ÓI”`SÞЙoK:3zµ@;ò"²ËÀmÄ÷7ÈT-Õ*Ê-*ª“П&üÁŒá5þ|ÿ†±s{9\U§„´œVk_´âá­“—Ã~äHÓ•QáÕAôŠ»N§''µ0èdýÒw¬B- cY× ù* VYåS.…}}Œ¼~¤„kh7ìæV›¥Uˆžý¨å/¨È¨s6!u€=pjÞX¥_1Èĉnh”Óˆ/Ò&:Þ¦SÕ±_†íÅ9ÚÓ~“,à<ª=R¹0jaí+ŒÕLî¶Uú™i¡R/£ÒœYvM¹âƒHÒ&¸´XMm©Yºž0Ïg;£c²56¬¯Ù‰»Vvb`ýÝáóAø-Yâž¡7Éc=qÿíc~H£³³ÄÌ|¸òÚÏ%û¯*ËN}3ÉEã´ƒ]‘率øí,TŽ~|*‡$hÁø»†V«là§ÕBÉe9,³ß¾/t^nüN~z5òb›Œn!Ò4ñœîªàgð„Vendstream
+endobj
+1356 0 obj<</Type/Page/Parent 1119 0 R/Contents 1357 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1357 0 obj<</Filter/FlateDecode/Length 1144 >>stream
+x…V]oÛ6}ϯ¸)K–ü™}è°ºÈÃlöºëPÐe³‘D•”âøß÷\’Š5CÀQÄûyþv“Ñ¿­rš-IÖ7Ód½¦Ë‡=àŸ)ͳy2£ùz…çå*Y‘UTÂv
+ï—h;[äÉ}´Ía?˜R¶ž%‹ëƒŸw7éæžò)íJT²\­iWø x#o·b_)ú¸ÙRmŠ¾RîÍî«wÊVÁi2›'9ÜnšÎÂDvÚ4$š‚¤iJ}è­à7ÁmNYÝòU²d·­n¤"'ê½ Y2½‹®o[c;Gn\ÄçÛÚv½¨h£QÖöì:U~3Ô–ÐÖÇi…sÊ‘ò¾õÊuÔ.aJ“lêR*ç¨;*êýL%Gt>"^ÚÞŸTFª÷ŸÐî¨É£h;eÑ䓲ŽDUyûžE‡³ZÑIwÇ«Ìœ24ìLoÑ=£eU©¬(ÉcWõŒ šQ“'_&s†îoÓS-ÎtOŠZk0©Ú{#qËÝ ‘Sƒ÷  yýTzo…ÕÈ…¹N6/|•nñ¨*téKê®Ê?‰³#Ìøå<¢æu&Ù[4ÒU±°½R u'8Ý`~û3E¢þÙ§|øãáÓuo;C=jg¨Fä»#i•è€Xè„œ®u%,CƦ¦Q´W•9ùRH×Ì!ÑtÔ
++jÅÃì`É-¥›E¤ã-=•hiÿUIßlºuàË%Äé¨A¬ºG#­Ñˆ³«g!9UwlŒLékúäç˜XmŒÅ„EÝVêŽ#Tæàixy…9ΙŸ˜¨ÂÀFž%†¼×ÍO¡)ÝóreÉ|–Ó$_$küO(üü#úBwÿ‘¡3£ÃhCL†Ó£·ôŽÍ1´´À´‘°3öüŠ?·gïôŠétv`Ç´3©¯2qæò&vŠw¯<Yìë-ƒTñÂÿO§{kNîÊü2ùÉ
+qEç2™.\ .˜œL íâãÀ“ÖrºÆ¥A>R«jèöÖþ
+`ÃTVÆ)˜ñ"§}â˜Ê# ¸
+Ö&è2¡Ptñ¢nÃý‹È¦åûÛEYŽnðx a¿Ä¼_XŒ¬jÓƒT\H„ï8/m>ýú>€4DœŒÏ¯c>*´mUÔí×±Ç(â:Öè#‚Õù*|Ó“oÁ|¹N–‹;
+endobj
+1358 0 obj<</Type/Page/Parent 1119 0 R/Contents 1359 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 729 0 R>>endobj
+1359 0 obj<</Filter/FlateDecode/Length 1255 >>stream
+x­VMoÛF½ëW r©X”HYñMiâ"hS¤±ô X‘CqcrWÙ]Jfýí}³"EÈ¥€aX¶¸»3oÞ{3Ë/£”¦øIi™ÑlAy3š&SšÏR|Þ¬–øÌðë˜Ê¸p3&/~¶­Iú“O¦ýÇûßFÙ»²Ù2™SCÙj•,úo5ÝÒ,YQ–¦ØÒÐl†D§/²vöµÖdy¶&ˆWB^
+ËÞü(G
+ýpwßëáI”®•ÔõçcÅî·QLÌ´©´‡y@;ƒæ"¦ž¡d²-¨
+d{4„ðÙ%ÙÇç—¦ûÓ’‡ÿ¹á
+~LöÕ¾'aè±—½v:§?NG.Ùxsâ2ö‹8òL}:V:¯b¡ Ë[T*í ¶tkÍ!JXŒ­Á#ixßÁMBoBÏEˆ÷
+. m ¨Xº—Î69Ô@*&øFšHxW.—C~”rTPŽ¦±G*tY‚nGödxYÜ^Z±õ(ïãXØi#ýF»3x*³n§Œþ* ñöÝÌS :‚ãN 8ƒáq} ÆgkÐÎþú=»·Øÿ;wGë
+yÀ!OÔaÄhW¯eZ*Ì"± ,.%Àv¸s
+3Àá}ÛìE•ó–båÛrg1æ%LŒùƒ:iÁS¤ÝµæÒaktOÉ\lUþ@Ç¡}À¨ÕèÃâVì v ’w¸ "kÚ«WŒi=ÐZk¨D#{×TÙ=—­h ÞUá¢ì½ÃuI»¢ÌÞ6,£GÎÃßÙ#…hqjHrÐ.´
+û¿Y±ïåUÿ”.ð*¸šÑ"'Ë™ÌØûõÛ—kzçìgØ…^Ù¼•z¢ÍÑx81^N_Èþá‚•Å›^üæÞÉ°¦™<{½ý5ú>Dtendstream
+endobj
+1360 0 obj<</Type/Page/Parent 1119 0 R/Contents 1361 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 732 0 R>>endobj
+1361 0 obj<</Filter/FlateDecode/Length 395 >>stream
+x]QÁr›0½óïèÌ
+¨>ÉYN•·c÷!)ÖŒC¬Ëу N÷åë„}„c½-Y…ªÞP^P86yh’ìq ^¡iIAÔ”âZ½’ÃMóB 
+œ_@i±!Ðêëîé]ã]–ÍóÌì¨9s6nò̺YlÌ‘‚t©ÁËþ Ó…ÆCbtÖ¶)½ÊJ½=N'ú-ë°à[ÌQ&¯=B§ñíqç)„IžÐûWtÿ|ƒVË09Úö*ÌKVDá…‹<ìwV’sy;ùáS e‰ûö¢†N’ŠÅAS¹‰üˆÙ„nQõÓ8Zþuq-úÿôÎÒâÅ2 ÄÚ‘áá}÷Ò ‚دØÅÌáÉ ?ÙeÐõuÐ\Цê<¯X½Ø¸ÿøpÏξhðΪ©×ÄŒ]V”þmH7ù6âß–W‰š‰uAû¥*çeÔyß$_’?ß®endstream
+endobj
+1362 0 obj<</Type/Page/Parent 1119 0 R/Contents 1363 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 745 0 R>>endobj
+1363 0 obj<</Filter/FlateDecode/Length 1992 >>stream
+xW]oÛF}÷¯¸ðKe@¢D}Xò}pã¦k m¼±ÚôA/#r(Íšä°3¤ýû=÷)ÑJR`‹ A¨ù¸_çžs篫˜&øÓrJ³[JŠ«I4Á/§>ýru·Œ´˜.¢)4gÑ]û•ÓóU¼ˆù;žF¬ÎâÅé‹Wç“è–æ«þ-h5Á áƒ×zŸÅ3˜ì-.fQLóøNÆw x¾Äæ2Ž–4ŸÜFsñhÍÚ/^å‹f«Öæ«%þÏž9MÙU oV4›ÅH¼Ša"|É¥½o„9eÓçÕþ7Vg«·«½o¬ÞNàîùìOë«ñû;šNh!×·Ë­SI1~Iϵu¦Üѳ*¶êO¿{íÆ¿ªdoJM÷Ib›²¾Yÿ÷jB£é'¦Ì¬+TmlI¦$UÒ‡‡û'z0N'¸ëÈ›Ù`¼ G³9"ÆÁ§ÆUÖë°>§8nקKDƒõõÞxJmÒº¬)Õ>qf«=ííjK×'cigŒà ù~¼Ï‘
+ŽÃÁ“³m
+v:ƒ%¤›óÙ<·öÅã¤øF´éhÊÐGÅ>Vº”(F´¯ëê_ãñápˆ,~ÍSUEÖíÆ|dü>i«=ZF+nyœÝLo—V;,Èâ¨+yÊU©ë“—Gzi83•ìˆ°Ë'ªÒQb‹ñ)kÿåÑtÅwçÀ~³µ%þøÃ'm!OÍ67]±ct5Bªí“b» Àˆ|>úZtŸ¦4PBqho’}[dv½Ô);‰Îêbv:T!U°o3ÒÊ18›¢ÐnˆžL¥Ü‹m ÖK*íºEô¶q ÊLêH•³¯âäVÓ^çUÖ䤜tc¿¤k”]¨`ôôðnÄÅýûãçõG*”)küö·GzÜ•*1–ÞÙ¦Òª¯þY™Ùàok*ÌYbNá¶ç†Èœ-èñáçû†RÀ[Ú!#Ü}þ”j§¥Ûšw¾pûYVœÙQ/µ!(Aëƒå`à{Y; xGff×¾LW¡l;ŠëÀ3oy쑯M›„£y p®[Gv}ú¢Nº<yÁ»ÖeâŽUMBDÖ¥ž~¤£ö×aÇÕávè§Pé
+=¤¿ŽQ ÎÆï^ƒŽQ²W%*Q›‚fbéØ7ËÕü­
+~›ÆQD€ Á°ðü¨rP¦Wé«Pw
+jÛŠÓ%ÍxŒú;±YL1“ÉìÁ BJR&Êmò†‘P¼K·<›`
+Ãe¡Ï“Æ ŽÕô—Ê´ŠÄÌ6dăeXï?éR…&xL¹o3ó•ŽoŸZj¸Ääß$ªS’•÷ÜQó&—ô Y˜ÐRLh‰<ÈئÂøÌ2¯Z•B[ÝH†ásàÒ6Ðoä1¥fÕ1å˜ØR)jY—ïŸÛ F!ýp'ÁT!Ìnc¶ô>†¯Â– '!Ûö€.±WEºEyéL6ƒÊéWˆåò^èÙ*aÏqå8çáNÐA¦2ò–X£Nƒû»?ž©vZ3-Óc+”x‚M£ÙˆQáx˜mªÊº:Ðâ^‚§[•¼hàt3ÐÑ.jÇÔi×u£ËLjg\l¿l<à$üt¹¿N·_oÇóÂÿA'ˆØž¢¤“]Y:Ô|ƒoäPžùÕÆ”aÊ$ox
+E¶¿mþ;¶<4­X †›è¸÷61 7¦:°œ= í—)cÝ2ôfÒ
+endobj
+1364 0 obj<</Type/Page/Parent 1119 0 R/Contents 1365 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 754 0 R>>endobj
+1365 0 obj<</Filter/FlateDecode/Length 1974 >>stream
+x•X[Sã¸~çWôÃTªˆ;Wöi³d˜å`8$ÔîVåE±•Dƒmy-™LþýùZ²s[fª–ÛR÷×·¯[ü}R¯Fõ†gÝ ‹;û—/Q= GADõºãাJiÆëiÐïãY<Â÷ïRÒê"v±­?ˆ‚>oñÀ_ñ¶~· ÷Oûã^0>zÊBûýˆWœ
+íã1Ð5åš¡R4
+ƒ°^: ¼¹ª(¼Á kÆ
+¾ŽG4Oœ‹º4[‰Ž«LæVX¥óàjþí¢Kíheó¤5ßH8Cð›VrK…V¹5d5[JcH,uei»–ìFoïÜEµ²V»½UvÓNQ‘ù‡ ’%Zʵ¥¢Ôï*‘A=L'Ïdª¢Ð¥­Ñ„=8hJ¹’e)Ö¯r§Ðn” #bU§U"a)HŽ½QÊ¤È émK%ßU¾¦ÊÈ’Dë*·¾Òeæ\B«Rg$rúCå‰ÞŠºÈ°IlÕ»¤©*elu¹#ì~—¥ó_ç.®ÐcÎP`_DÃQížÆîa»1îU‘Š˜Au¤;…0f›ü+Ñíh„7“Ù±FÆ:OHY™Q {–*ÌÍŠT™ œºÜÁ¬ÔEài6ƒÑ =O)ÓI•JÐ×ç‚™©âü‡˜y¥T-K¯šF‹^Z¡rhpž|žLh¦WvËiµhm¬-~ét¶ÛmPˆ$ €¨³¸
+èw½•PuíÂœHˆHJ±RëªÒ3Å "~khgñK¹c›ñ„L¬ É1?I™Ú«7¢*¸<Ú½¾Oý™OAÀvþ˜¹øVy\Míh„*÷•R§®È’%Å:‘œ£QÀä³PdN LJ#q¾µÒX|õ^gŒ_ ™;mÌB>£ÜÂ8U¨Ð3s÷~öuƒ“^­Ùè*E<ße*¹X¶º|#.Ez’ÖÄ¢—æ(w½mGšh6ýï!gz“ÊÉD†¾9wÂΣi%|¸jÊ
+–Ïa|¹»¥¨×.ú>ñœòÃÌ™1¢:QjÊRˆÉe ŠL.^ߊ=»NóYæe£:ŽoÉïU-M‡s©ãmô"NA´œ…Èù†ƒ­'má=Oç`ÖcÅû$¨•Bâ‚-b^°~/d©\IòFt”UpÿÎÅ L òñq#òg‘uHkw‘^~µÆ)È€d ºÍ‰Û‘ãóÎ]—n¸bàߋ@tƒ`Œ¿(Äã}‹ž÷‚0àÝÇ{¨H¼èiòø™.U^Òìõ1,h6y½¿¾L„èÙ,œøgúyvK—>l5ÚËÖ=¾Îæ 8ªTBŸ¨ÄçâêÃu“¿ˆ×Å9–¥Ù3Ó½Fæ~¢Ü]ÛäA;“–—éµÎçð8}úH¤ÃInÕjå—Ñ›Šßôþ
+ÒnE~»ù2—•±ûkt{—Šµù©üDtªÝSÏ'2Ùòwí¾mðgZrƒÄݸTì
+ruµOoßù™˜ÏKÍí×û)Ø“»‹ÞrWCßäðù0—‚‡…¤±­ž\Àÿ¦Š7œÈ©\‹”™\…N£<Šjé{0³1¿Ù
+ˆÅWW]…~œ‘œr9Mg ž©5Õ2S~2;í—
+endobj
+1366 0 obj<</Type/Page/Parent 1119 0 R/Contents 1367 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1367 0 obj<</Filter/FlateDecode/Length 1125 >>stream
+xV]o£F}ϯ¸RB¤v°ó˜ì6U¤6»mÜ7KÕ
+´ÚÀ™xÒ*kï´J½O²Üˆm£D¹¥V$Œö¢ÞÑoŸï¿^¯¾uWçÝÕÉ,ðc\ö¾T¼4”Úˬ²ìÄçpÙŠG0™y+I¢Ló&㤛ª’ª¦TTïðnìݧ©lÊšdò§5d‰•Ô[Ȅ¯RHsõ«Ú¥kX®F‡1Ð$œù‘1ÖjôuºãƒdΩ–¤sVeWúÔ[ê5ûã&×ÎñØGÈ™§¤¬/»Ó[{êQZu~;+S^§S‰Œä«¦ééû\X•Ïü­¾éb’pjý$‚S-^4¾bâóM-F|ZÉ2„k&JMõ^«k%’¦æÚÜds¿éŽ2Žà2j*Y’„ÇŠùÕ«FdWGE$4®mDÉ3SБ¿©Ô8±ù¹ŒâgÔõ*ºÊÙá™ü¼Ò C@϶âJËòŒIƒŸÉ1®9 @–pW©l”™„Ã
+;BrXZ{)\r¨DmÀžŒ’ƒ)kòz}íâ@2æ3éøŒÌ·TšT[ 7JÎ3˜1¬2ú§MÐa
+þ1—ZjldžË=&‹‹ÐviþÆŠ*ç7mz* Íý)€MSÁ0*Œ¹÷Ó!Í™ÖY{¦MTRk‘äóE¼¹9‚“‘¹öøW%a„iÚó<__ÿ éÉÆ
+º„8µŒ¨ÓbýÈÂäI"‡ü͸6°¿Z¡‘Tªäï-¯µ/Y±ö> ­Qˆž{¤-UŠë›^«cŒé€UæÔ&¬Ú+‘UŒ³â^çÀÓ!îM»´˜gè‰ýÖ,çŠrÌÞ .`(¬N?›]ÁF ½¼ìRŠ <7E‚‘džÞÑcðØöÿ‰¥å êóÚ
+n,þesÔm7¬vMrT›EŽjï6,Ì‘›†¸Ý¢„Ñ3†*¦0ëjÌ-2Yeß™ÈY‚…ƳHÚq–
+endobj
+1368 0 obj<</Type/Page/Parent 1119 0 R/Contents 1369 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 769 0 R>>endobj
+1369 0 obj<</Filter/FlateDecode/Length 1540 >>stream
+x¥WßoâH ~ï_aÝ•J%
+ðÑw‹‹þý|k¢AM`‘0 °ˆ»Y"J0&»^<ãÁ¸>Ø›xÑg‘t—A8·Û¨áÍžO‘ÃNƒÔߤ~£‘äiIñF5¦Z¯ÓïoT²N3ûf‡J¥í¯àè˜Á)ô"3†v±•F‚ÀD&ÒÄ:]É0Bv+Áä+/VÅzÙ/¯!”bƒg‹Œ‚]šeP( +‰4(¥°(¹•ZzðQí$¦ê‘—™$€hÓÙ(Œ
+‘K<µ˜Í?.ÞøóœaÔô²Ñª*ñÜãìëã§Y}ê•ÂpQh™qàK¡Q3Òé¬õ&w’Óz÷V¹ˆoe«´HÒbCÏ(é‡À£Ó˜ÄFß+Ç;€´iÝæ Úmj
+Øù°½XççøwÎv–Ý+µ^_Ý /¬ÐlfpäJW¸[û±¼þx“!òVþ<裂¡Kq¡&U³¥Ž£1äIk•£â$ßÎãwdÂaˆTqù”lõ†Ñô<Àã´®ˆÈ'um°_Æ[ŽìqYŸƒåÆ+4¢Ü¯2l# ©E–9ŠÕpíÉ ‚ÂÖD½A½œP7³úBXv_v«4¹ý­ÂTvÕêYgØgåg1Ž…º¼fÚ÷ï§àã­cÚÍ„!ÞŒÜL¨Ï\¨±fXL¹,êÙÙ\;¨mO\Ûžîû(ælá’Nëx«+®(æ~mŽpÞÀ^U`¶<½r•PÒù=5Ä÷& õ ‡Û îhÁÅa•Ê˜M‰™›Œ¯ kqTWVš¦‹4óüAPÒå`óŒ¥6ÿJÛ+ØÏÔ…³ôEž¸4ÖS‹Í£*O\À
+!ñ«nþ›È1¬óe½ÆKB¥¥µf!®'jE¦±üã8vXu'†ˆ .ÔùÊL¤Å³âvH]°
+ùF:Ÿ=¼›Á“VTóp§âŠê”ãE²½F¤7à%0éþ}ÂÈ Ç{Ùðý ©y¿¸øëâ?II?ßendstream
+endobj
+1370 0 obj<</Type/Page/Parent 1119 0 R/Contents 1371 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 772 0 R>>endobj
+1371 0 obj<</Filter/FlateDecode/Length 1748 >>stream
+x½X]sÛ¶}÷¯Øq_”ŽÄèæ¤ÌøÁuš63Ž“Fê$«>@$(1!
+‹|²“B
+CN~v$?Õ9â„„a ´I¨µdÌ)§”
+‡$¾Ù@*È $-£ûWO–]ü}° `ÃöŽÕîÞþöfùòõ%[D>‡]°?¿~·|=¸ÓE¶™3[Ö-ßÓƒ&Ëu'ŽçÖÖ²ïW.‹TTdmqI¶\G‰VpQJ6™ÊLÔE+Ä—%¦ ‰–| ï:àW½À´ë†‡½ÖÝ 8a­Muoõ©heØ„jc‡c(ÉËÀœ€§\ƒS¢ˆè‹:„¯+©X`\GÃ}Êå† œuJhf„Iûwá„qËûE(&U
+.ið($:Ôª
+‘HŸfX\DôÒ»xV&$X†h&Â"ê]{æ‚CZmŠƒ¯Dº6bxŠÂ$< -àËÒ_†4˾ˆ©—Û´§½pÞCÍ‚*£NtÁqHe…Rm¤\é2±±ÂñæÝ„ŽÑø2ý¬÷\æúx3_ÛTP‘¯0²./
+6¾ËS¨ØÖ•Ï6ôã±éb$ðo«kTc_™‘÷D—e­r€d‘­¥ÛK¤<)rV|Ç°ož¶‰%0áLÍ¥-úÞ÷ÚŸ‹X€
+ø`‡cO¥/Gº`›ë†¥Ìè’¶܃;
+é¸p£©î·9ä€%†sÞðëÃhïPë›çRî¤þøGWÐ3EqÉJÏÏ-á?_ˆNG4ó+ß\èòý3tZ‰~ÏýŒ­6€šŽ  "zÛÜ]¾F÷¯tŒY3»Œ&³h6ŸPO£q|ͳÄâöÕ·ôÆhî§ô\'uÙv->|0ÂÖálBƒécÍßüßÀU<‹âëq¸ôŽF3>áÇåÅ/
+endobj
+1372 0 obj<</Type/Page/Parent 1119 0 R/Contents 1373 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 775 0 R>>endobj
+1373 0 obj<</Filter/FlateDecode/Length 1694 >>stream
+xµXÛnÛF}÷W U
+T2Ÿ6ÚÓ·´ Ž,™Ji¥b”àãJä‘J¬·“û“w—€Aû³©é´Ñ$ldA­ó"_š#UH>MØÇö1­Sµ–iþLÙZÑ<’™Žb«¤æús‘Éô—ŒLØæêYÛ~Ž¿ŽÏH¥ìeϽu1˜Ð<Š¥eÜåi”,(@.3IIÇæ{í$Ê
+F½ËÊ=3Ç·>³¥*â©®ëÀ›{â`ð÷ø¿*²Üœí7*}ØÖ®Òë¦ø…eŠ¿YÓé6ˣ̩%Ê©•<:Î Nùõœ8ÒŽYPéã›j»hÐWè ÒÏrÝÛ8ü6HZÜ(Ëš•B)ÒT&yüLEaÙƒ@ïýŽ„«¦™Fá ¯Ì(Éå~S¹Neg:Àª:¥ˆ·=,
+q‚iJÓƧëÑôí¿iF+‘>¿OU±¾î;Ž«K+´`3Õ—ZÆâ÷ÁªfGÓíZNšUKäA²÷*0=̨Èänže’’J¸2¨ m–2¡;±š Ö*É#Aà} ù>D¥VSpÚH÷>‡¸§m¡‰+Í«Û/“[=C™‹(Îà JÜpwå-
+`<?L7C•ä©Šc(êí±Ö0Ç3µá(çª@OÍÑ„ghº{‰eèJœZÄ=ç*§7U$9hY‘™¡š¬æf¢’f(碈sÓì³>çˆma íAGü±ê˜iTQy7à_SáCzïæÙÏ„±m£¯‰âÏÀ«ÿ~‹._l0òI¬Ö±ÄÈͲe2¸»šŒßßÒTJ@²™·4 wLæI‘/EnRn—ÛD£\Ÿôx:×Ýü͇éôMaŽUkÐFdüÕãÁ•(Ë Œ(ÏjKH£ZëvÌöõ…E'ôô£{fH§3<<Ÿšp°ë™Ë(ïL“ØXr«ÀÍ&Æq×]”}8ª,ŸÖ
+ϵ™3Uœ¯¥â"…Á¹VPéâ”óØnRø ç]©Äø<3’äT)ªN4Ëh’šcØLœr+þa˜övRJUÉu,l·¦Cm"ÌgÝ-7h¨X…áo ñlŠU l»T Ç,ðæ²ÌP9À6¦`“·!¬ál½êAÓ†´–®ÔÍíÅïe•¶c«GÞaæxÙj¶<³ 8èÃèú’ÆhsüÖÀ›–8耡ŠÚ¸ïvÌ®<÷]wåJ/>£6¹í§QÄE†7jh­U=U VÍî±1$ª;(¿ õ8TÇòZ.ܵ­.þÆè“>1q…Ìr+ò>uP†(¹WšF`O/Þùj‚·¨,CxaŸºî¨k;žoûÃÑÀíùÎÀóÆ—§Õn];µ«ëMxƒånÀ²O®ƒ—ÑnË÷^œ;ò}r\Û©™ŠW»(Úm·g»v˹Æ=xŒZ^«}Ñv<ÛkWÅ‘åw2‡e¿;=Çõj‡´È'Ñ
+aÚµGå¡FùEy¹M•@ß>€k¢àAÍçÆü7QA_Æb‘õéÏ_©úõgÍGú¶°É!ÙžmûµÛ
+endobj
+1374 0 obj<</Type/Page/Parent 1119 0 R/Contents 1375 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 778 0 R>>endobj
+1375 0 obj<</Filter/FlateDecode/Length 701 >>stream
+x…TÛnÓ@}ÏWÌc‘go¾EªD®‰^hŒ@6öÆqj{Íz­ÿÎØM¨pC±¥Õ®æÌœ™3;ûm@àOÁgÀ=ˆ‹q‚
+zw9`œ8>ðÐõ
-!'üBßù®%ž ý}Í aäå‡eFv!H“ßnS åËyüÈ…cá”é$AFt%»‘L!Ž™Í‹8Õ¡Æ{öÖa-Þ±cþ”ØÖU8–M¬B`64²'¼¿È CÏåËKäÊ_®÷æÞ Ô‘“Vv]åÇ«Ó©¤¬gù-2‡áC©•ôkÚÎo¯鑘NjBh¶?JØWɯ¨ÜÑ.³o,pMC`-×üÖºÛyÿóý»0ež_yo¬0€|ÐðüšSîŽÐÁ~æ!WÅ{t\H
-endobj
-1563 0 obj<</Type/Page/Parent 1372 0 R/Contents 1564 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 939 0 R>>endobj
-1564 0 obj<</Filter/FlateDecode/Length 1804 >>stream
-xµXïOÛHýÎ_1Bwj*%ÆNBb8)ôšS8’–“’~Xì qk{}^‡Àýõ÷f×›˜t=©¥‚²Ù3óæí›Yþ>ÈÇ¿€†]ê (Ê|ÏÇ'Û׿ƒÀР{‚Ÿuƒž×­G)Mšċ^ÐœmŒ3êùC¯×˜…êõú8¯ñ{ߥ¤åAoÀ£ÀZt½~=`ƒaFaè…¹Æ0£ Ï~ÛSxcsŒYXlnmŽ‡l=0Q6ƘíŸ¸Ô ï„‚F&£>ÖëïmŽ1{Ü÷Ž³ŒAòOÌ p€‡†k؇-ø{<€ 30s»!{{‹Û¹ÆsÀëx7tC€Ò½
-t‡ŠR1¼ìR-uVM ¦§5éd„Bì¹ý‚Ô0µ@¶Y%dY"wèÒGFFè\扌YaÐÜ­KVÒÚe ¶Ge|@{ý<6ί=jrÚÀÝŃør£jT Ú–›;‡ð w•|¨Ø36òTþÚ& G—¢)¬:qS»Î«}þÌVÒ Â„á¦Wr1ÏöóËT"4ë Éä÷H)3uÏõ
-endobj
-1565 0 obj<</Type/Page/Parent 1372 0 R/Contents 1566 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1566 0 obj<</Filter/FlateDecode/Length 1148 >>stream
-x­VkOã8ýÞ_q·¤#VÛ&Mú©He
-Ά†¯Ðe<@LÍû}ˆ“}³f°YË”A®d´#a#Õ7ÿ×ø+zöá tìECéþÞ/Á’‹@¯­AzQèÝ:Ü$ŠçÆp¡™2@@° sa˜&ŒzÀ-ÜwK ÉýT&$­€Â¾?u@ÍgðÂîEŒu¡ÐŒA²HŸ2íæw ìî®{Ô½&˜Ž]皜ݕTpÁEq¿ 1@CúñÃ.P…ç«göG]°‘.EÅÝU’¿ã žÌ±rå–*J»Æ]Øpqp¿ÅªL¶Øq¹$ßè#ß0›3‡_3ÁbàšÑOø†›ÚÅï*²Í6e+Ý@]\Ÿ_Åç‹YÀL¼XÉ“y|:ûB‰að[çs'ëÐ^çSç²só¥y±˜¥ycíúô&ž_dz6¶’ËQšSlimˆ2íÊv9üÎXŽý–Èü¡“äàÕœ?ùž%×0݃9¥Ok`{yëÜ0fÉZB» ÿõutô
-¤ýã…‡ãëíூj: îˆ
-t.e`6/zñ˜·€f÷³þa–â?½~¬NÓ[@Ó|Z®M²%qÌ]³ÞÈÏ•8|LÎ ëÆ0²HÖÐ~­ ˜,/šPê{DGÂFÕ±èÞÅâÿ
-žý¿¸ r£á*"+}ÜUv´0¥QIh™p;§H9æ7ܬ¼;œ!S>Äk†TH•‘4}
-
-)Õ‹™;maÑ°( C…€ví 5ŠÃI!Á2\ŽPû¬H‘š.H‘n_u6&¶¶uX]'N(´ËÌ=ÍZ¹ÝsÇI[_ý  Ëj¢T¢4°%VÌE^¥ˆ Š¢ä1²´#ØE0 eÛ” ÷÷‚+–¡ ´ÑÕIRŽ+Ûf‰Æ¥ÊÄ&·éÅv*ÙnI<“¬öc82åâ¶m…&SÂ1f˜¸²„å·e³f6ÌTÞò'ò³J[•^GZk~+Pibóg˜fž[\•êÒ§’PX’”ˆÆ´ÀŠð$öV%£§•
-endobj
-1567 0 obj<</Type/Page/Parent 1372 0 R/Contents 1568 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 946 0 R>>endobj
-1568 0 obj<</Filter/FlateDecode/Length 1591 >>stream
-x¥WÛrÛ6}÷Wì£<hÝ/}éä^O›ÄM˜Iü‘„„´¢|}Ïâ"Ó´=ži&M:"ì✳g—ßÏÆ4Ÿ1-'4]PVž’žœþùøölº\'3Z¬ɈJšMWÉ*ü*诧År‚gx·H&áÇéÕbŠ³ÕÿNð·–´=›LæX?_/“vMsœïÅmóÅÏzÛ8ÔlÊ'=ðb:Ÿ ø/&óÙý/Ò³‹73)Ýâþ‹Õ’ÒÜ]{Di6¸ÜÒÑ´Hö{«±Ý Ke[XU’*SÛ†6’r¹UZæ´555¦”X/£ŸÑyúÇVwü )7IfôÖ?ŽQ8¨i$ÿG"l™Ä-R·¥‹Ã{F4Oq‡4d¦,…Îû'ö*ÛS&4§Õ6ÈÉšá¡üae­EAUmvµ(ý…vRËZX¾PUzGf®g4’jŽ•e⣭i ­átr ²š&”î%]–U­4`I)iï&ˆ-æ[î,¶XLXÍyݨÜeòùýå¿Ä¸ßˆBjËYø¢tn ½OéyžÓG“5ÿužÐP
- _!e¦Œeà £­XÈ,.{g^—= g8YøàWN¼
-G¹j­%*DYSá‰D<Þs^ÚŠ‚Öó‹õ
-0yi䵺ɕȾ‰lü%²P`Ãe²bëÃ5®'‹e(¿Xšîå©ænSã ø›i™¡r2C^”¡ðO7<ÁòH"€_ËE­tcEQx‰e…âbñ>à%³±B¡ˆKXÙC,h`Yþ“(7‚×ötÜxæ·C—5`m¼Et©¤p §³ád•Œ×4œÍ¼8ë˜$ô2B+ú•§íêm‘g$ÑF`L‹ûDÀ#˜³D7òh
-lU!›g`Ò€ç\¾Cák •¢pIKÉÆ´9z[º/©'ì¢oÿ^FÚ5[¿’¯ °7A¹°bÃöÞù¶+ŽÜÔ¾·¦—ÓB[²¸ ,€þLÓ+*e¶Z5e“Ðk‘í{LEE°§°¸‹ž"íaß A4É”ÃëóÇ¿q¬‘Ù>„Æ£ #œå°·áMp1þêEfi©â"=¢¯ìxTàôßêöêm(Õ^ËFe©-s!Nѱ'ú”p gat¿ñ8×¼Ô_ôV][¨ÍÝ3´ˆãiÓkÙÐÂÆԬ— m©­•=R¶—Ù77©Fl
-™?¡”Yº{é\ëµ¼ëUŠ¾Ïw?Ýì!d n„*8±
-Úa`Óºësu2/ðÝ·šâKmî¿„>=÷â9¾ÌWœA¯º7ïÆ Ãåé<õ­2[Î’åbå'ÂõˆOxžýsö9¼Úendstream
-endobj
-1569 0 obj<</Type/Page/Parent 1372 0 R/Contents 1570 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1570 0 obj<</Filter/FlateDecode/Length 1506 >>stream
-x…W]oÛ6}÷¯¸ÈS
-Äògc§À0¤i³kÖlqÑõh‰¶™P¢BRvŒaÿ}ç’Rb«–¦ˆmñ~{îáõSg@}üÐdH£sJóN?éãÕ$™Òx:Áë!þ[IËÎûY§wݧ š-aq>Å‹Œpºß§Yzú÷›ÙC§OÝA–³ì”øgÙ2Mµ’…G¿HO~-I”¥5¥UÂKªJmDF™²2õÆîè˜öeŠ`ken`æ¤ÝH{ìì1]¾hb~þ9lflh©´tÇ,G‡ÙÞ8WIG¢ Ë,»³ªðÒ~.æ§ó7t{ßýãîªåçŸúýpœ3
-ã#.=~|ÞóFÞH}%´Þµ<3©• ×ô8>Ô»Ó`»Ò†°_
-IfY4 -sG²HMÅ62£íZ¤òÐU¬ÂÑ›<xuÈÂh ìi+ðÑ
-‘òR¤’TDe!ýVÊ¢Ir” ¹Ü°ÊTŽ\U–ÆzDŠm aÓµòèpe¥KèÚX’Ï‚8£oªÈÌÖÑo3REª«ŒAošÅ‘3:¹,q´ì³
-o¾—Å×óy(h>ÿXl”5Ó3:=àxtÊX!úF
-±ÙÃEè­Ø9ª
-X'Ã` à{Á‘èh%zŠ!b*¦ª©¸è#5“Z΢\%43né©
-çáRf?ב÷  y`œÂ`zY–Q.PŽV¹òÂó@á¡Î3`†
-×C8‡±çÛ®;êGAçp­!3k²*åê£Ó}‚Â;‹'ÀZæÖC|©UeÀ xÖâ‘ÉEµŠÕ0°¸£\o ôà>ÃM4_
-"t]XÜY”k~³fA.'ÁZ±kAw½—°/—zÀ(6´úòxFβnHl‚¿8L+¦V[º»
-ŒD¯¹0¦{!¡«0DªÈÎ3
-×HY8€’ÏQ è$ ×
-šš™f' }ã‹#\€c
-VôTÉ
-cq¬Žnš8®K›zè­Ü`cô`GSÿ2Ëÿ³2Õø‰zXÄz!•ž.³žã[&"¶¯RaUä&/ÖfËÝ´T(¬y`DXkÄÂTþЦXo)˜P¯ 
-endobj
-1571 0 obj<</Type/Page/Parent 1372 0 R/Contents 1572 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1572 0 obj<</Filter/FlateDecode/Length 1472 >>stream
-x¥WmOÜFþί˜’Ð)ç{ ´ %QS©
--WUðam¯Ï ¶×쮹œªþ÷>³k‡mÔr/Ø·;óÌË33ë»1ðÓ|BÓJÊQ4¢ÙhMhv8Çõ#)Ûy»Ø~Ñ-2Hâ"%ìh‘ìSûw×ÈFi›RR¢ËRT)Ñ€¬Æ‘ Ú¨ÊICÚ„Kòû_-n {FãqP>˜@ùþûÏ¢¬ y–7ЃÉ,šñz‡é•nÐNhØX3ŒU5,jC¼Ï÷jÚ³¬fDƒñ(:Ü–.ê»,Ñ#é;Fø7iS>ˆ?’ÆB'}ó ¶÷¾}V«Âû“
-d Dò‹@_ˆ2dsÝ)Yépau%âBR*3ÑÎR†œ¹\ÂÔTÖ²JUµ$]ÑZ7†ìÚ:Y’[×ò5Å#…·­¾s”B™{½•‹è#ÿJ•övp*¦ ÙTL(s¹p¬‘rq/Éir+)n[X6 Ð‰(oÀ;¥+Ñ"ßÄÎv.ˆb%Ö6(Éš¢Xw±kñl-•)™R-\^‰RÚ×$,ã-Ó˜J±f3[3<‚12qt~¶ø‘îEÑHµJ'¿çÒGçÝè˜=±ÅE,[ö§¯9<+UÀ¹•ØŠØÕÚ³†gõštæãÇá@°k¬=X­ªžC¼ñ²­-{ ŽND\}Àj3ËH£tªÄ`…‚ ä†ãØÖ‹®Y$
-ÂÉ]N\Õ”±4» …UKŽ‘Ó=XÏûÐyX ^{a[k]HÓçwï´@?@?Ý-Eb´Ý…(¿DÍ¥k±ÍŒ‘u!À®”ËIԵрN¶Ü£“ Ö®½2vÌg°gãžeÍyÙVÇN2ç™g|ímöAÆ„`%èià˜ó.´ÐÖÕÃf™–‘\{7Ï)xñU®’œ;*°3£ÑT ˆ–Ö *à ?Ñ#€Ñ`:õ‡f2‹&½“q³\rwjáñ_£“•~
-R¢Ý2³¥ì|hG${dÁzׂ†þîC„ž÷ì¹,ŸÓŸ³É_´G2É5åªMb®:”–*aç”wÚ2N
-êÓpè§|®­«YOD¤©74C‹$UŸàDǯʼn°®»¼yCU)ìí ®¢î3ê©;G‡_!ÇÔ[x§K¡ª“˳‹ÅÙ¯‹kútqrù[¥>_Ó…4˜R'—¡Oâ|ͯ{Âp昮®NC+!Ÿð/œG7sœB.în ŸBr5ÏßLgtµÏ‡ñÛxh¯^ád6 /Ÿ¹ÛŸCõ‰ë-ŽG³#.^šúïö«ÃêmÞØŸˆ*‘±poË{_Ra½`7x
-zctïfö¾BçOŠV­LŸÓñ”‡
-endobj
-1573 0 obj<</Type/Page/Parent 1372 0 R/Contents 1574 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1574 0 obj<</Filter/FlateDecode/Length 1428 >>stream
-xWkoÛFüî_±ßè
-»oJh×µ«¹q'Eu %R¢ª·Eh퀗7¶ôŒÖ£rÆ6>ìH_Ýè€Þðæ-gáÓqŒËôxÎâiLráZ;O©¥O’ÔœÁ!&@ãôN½®\é#.cíTÁˆ&<tÐöè
-ÿ JÖOª
-g*1¹© ì g÷hxIëPmò•µ9˜»Ï,ˆk_«òàŒ:æNæˆ!a§a°Ò0„kˆ×²˜÷êIun€V_úQh)äÒ¡røtËü2§þƒ6,Èo*7ÊßIÇ׶bŽ¿{Ty£¯ñàùÑ ƒX”*/¬‡íæyÈkïvþ¢5Æ ýˆ·Š¨hðöJÚAe=ж%N ¤WyµQeShgƤÁñ9ŸXEô·ð $%êpäc¦BÀ¹so9»¥Í®Bðtw ¢»7€¶:ÏczæÀKçák8S UÃÅŸ˜k€2Ô£Ýõ }`>!„x½"_©Dã<àìJy?ÅmRÚ^Dj…u7´Åþ0;ù ô¨`ÇQ8ÄÝZØÉþœø͸å¦äÞkaè-Òüö ÁãÍp»‘OÙùQ_6cÑ[ë°è(Ù>[œ
-aÌt´®ÝóQJþ­³s’ Ðcbâ{Üöí»rcG‹DHæÑòÉ‹Ë?ïè–Ûw'vc‘h‡{ úQ@´»çù\ûÍ5ð…F+‹$Å;iLe¹ÁÜJpÆ÷bÄÿ ÷R¬Ëk0¹ÜCÜ9‡JEÚû9pÌ.(2ãp¾V v˜I‹,ÔtQ­Ap³çô‰c‰NK.å@aܤE«˜
-xaßÀž1A¶ñ 8Ô€B
-ˆ"X'¡¶Ì±ÐÚ0<´Iürû;€n]8ÏûEy•ÀÈÂgâo'>[’kçDf^7(¯#ì iJ‚í°tA³bü~2lg’Œgœ
-<Tß\¯d~‚¡Ô!ãjd‘ÌÀ2 ¾žùï»Ìy–(ah~c›<E;ErŠ¾|úùã·äͺT9ëŸwÃTÍ/p¿åGR,)àø*Äzá¶BÞ\µ_
-endobj
-1575 0 obj<</Type/Page/Parent 1372 0 R/Contents 1576 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1576 0 obj<</Filter/FlateDecode/Length 1591 >>stream
-x…W]OÛJ}çWŒÔ¨L!|¼ÑR¤^µ” T½•Ð•6öo±½fwM‰ÏÌÚĵh/Ð*qvçãÌ™3“Ç­Mñ;££}:XPZmM“)^&sšáõ>þ9MùÖ»Û­½‹šÍé6Ç•Å1^d„ãÓ)ݦ;³ƒdž&ô—]’×u˜Pmɶ¡iÃÛÛ¸:§Ù,^ÝÝ?ÂÕÛÂxÂ_(4UÖÊ]ëƒSÁÔ÷Ô(ÈæÔ8S󃄾ۖ*µ¦B=iñ Øå„ž´3¹Ñž¨Ð?¦•ò”[·R.ÓÙ„ƒ˜Ò.ÂÜgç^jR´rªi´#ål[³M©­*ů-û‰ÏrSê -[1<ØøK‚ˆÜVrUÂÕ.é¼í/€#¼]çHZèôÍVê9´°óKÄ×Î>}úΘÜë 0à,GäÌ}"ôØêV'ô1§5Q°ÑzFLÑ»›s²n”觫k†“a$ßX[j7‘›©ª)誱N9S®ÉÛlr`‹€ðz©©'>ïƒ)KZrìËÊ„
-5ðôÜ=ÇQ¦k‡+‡?rÍÎV¶-3Ò?Æ”‘I_eµ,¡D’mtÉ‘q±9ﯗÿ¡mŽg›Ú`ÀÔ5Gé 2à„FŽ;UZÎø?Д(ÍhïI¹=駽²ÉözÒ½‰]F™qÈÀºõ‹Š `½ãirÌL&ü”žÿýçM¤×T~å:?§,?›NgÕº€Žò™_åVš†Kä Aw$?€½#"tз $!°,£:`¾\ã-(&'#kèWžÐCSƒ^e‰Ê«>ÎNm·c‡!T½È¶¤aR[C¼£fK"¨˜ê½B˜ÅM¤êÑ{‡´ôËpíÌ¢ŽÈ Z s¹¾ëÿ4¾p_0e¾ô$ÞОÉä†Gžze[KG/¹×*¿A»Çlk“êr=nì[PU¦O[㬫+´¼ƒž©{í™41ÜSZªºFaâsTbYªú¡{Û;L©±ŸÁ|è‡ÉÐP?ŒX3GtàÜ%ƒT5d›`e¯Tˆ£{‚xQ¼ÜÜcŠe£rƒ5<£?¨C‹ Û 6lO"Å`ˆ=žú‚îv˜}N{O…V;sÃôïÞvÞc÷G6|¿”/·eiWRQèŠwÔymżµ;¥$I8¤ßôÒ0!é“F“%.ÎÉ×qG²8¬Ž9 Ƥ…ˆò¦Ã:ŽãÐ(¹{ &Ä f*™ ÌYÕ‹`RV¯!8ãÚöè¶*#3žu5Ž£—Úov˜~c’u­õQ ~l!p¾Û=×°2,VÞ曚Žq·©ÎÀ/êRò¦¶„8÷<C±oµ9˯Û8îGa6ÐÄ„4ɦG:&¥"nAY‹‘`ûÖòŒ@Ñ.R ŽÌl–¨ ´#̯ ©7©3MŸ@æR4>'¤*[D¬÷uËœªsŽŸMêì ð ©×!¡ ¸Ö?UÕðN‰­g¿™úäpä—{¦D~ýa(]qEµóÏÝ ºT•~¾Û¹–Íñ}iÒ‡»·WS¨­Ñ8†¬¼dõ|–=1ÿ²çß]x bÙ•²ia-Æ.àSô>¸r÷\EÉÈàÇy+¡~ÍW¼¦¯ÑμPs[òp¶Âà=”aŠç#â´áò0ä9&ºþ=gK 4ïêƒ%ÑÅÕ‹W€”.¸ÚT“#ƒ·e0¨›Á¦5rž*Þ.À:¸ÂFakUŠðn¨×‰Éq÷åf¶Àw¦ãZ-‿9ûüîŒ
-@«Úš}íöv¦Xˆ³ÿû5?š'G‹c|ÿÂÙ“9›øp»õ÷Öy!‚Hendstream
-endobj
-1577 0 obj<</Type/Page/Parent 1372 0 R/Contents 1578 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1578 0 obj<</Filter/FlateDecode/Length 670 >>stream
-x…TÑn›@|÷W¬*UI¥˜‚M0~t”FêC«´¡}<`m“Àå–¤ôë;wà¸r“V¶%ÃÞÍÌÎìÝYD!>­´L¨hfaR’®ƒ˜ât…ÿ ü:¦íXã y©p&/âå%
-»Ï³}e _…u&¯¹!Ù+qozÛ«º¨P½å’ò¸’=wXÀ#(ÙÖ˜ºÒ;²ƒlm{÷Xé­é%•Ñ0·ÁŠê„ÌÖÉi­ Gĺ7ùHݨ¶GOXéÿÆ-òb…
-m«š/Èt4˜¾›úìÈVM Ù¥Š6B¶o[ÓÉ ñÑ €¾›ž5fô)†X+8Ag›^Œë¢ ß]³páº:#tö'k0Ú{Œg¾Œ0 èЧ’´)•.@pëò€K¯òÙF
-³¿¾t(²Ù—Ùo6Óž±endstream
-endobj
-1579 0 obj<</Type/Page/Parent 1372 0 R/Contents 1580 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1580 0 obj<</Filter/FlateDecode/Length 1618 >>stream
-x¥WMoÛF½ûW zrP[±dErzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M-ÚÂ6l“»óñæÍ›Ñ׳¹\ák.ë…\¯$)Ï®fWòjþj¶”åÍ/ðSkÉ‹ÅÕb¶š¾x»9{ùþµ,®d“ÁÖj}#›T`ç
-O’ów¹ª]Ë|9“OÖdF§ò‹Û9ëe«›Nk+ŸM]çånóbóÇÙ•\.–0q®l*Ÿîn—Ö»ã©-òýÍ×Ñßåõr¶àq8˜ÏäÍÖ7µJšxl)óyl±Fè8vk½«Ucœ—EôôÁ$µó.kFáH“×®Ý墤íC/ºäŠÑ#ôy˜T×HJɹ+ã¦ø¡Ïd~ƒ3¸£ƒÛi«]ëq±¬Ú†yi»7µ³¥¶—ÌÕ0T8<oL©gòYKUk—1£UŸÑ¹tc<†DÏ/p¶Å&ØäZT¹U“ˆ|kÍ‚ªUé9)ñ®@XH±qáêÓ¼qv[èaEç(æ­P&SVx·¸'„»'‰*
-!÷E»Û)•7-BµIâõ.m ,“¸S%2ÑõÞ$øÝ™&É$̸nT³‰ÓÔ•
-à#ÎÚ‡ãU¥0†QWið@3ïžf<ƒÔû|J•äÆ¢›Üx©ŽKª}R›-’fH£€µC­ýÁ7º¼ý­*à›5æᬵ ‘U…ib¿wbŽ ð
-z ÓÄÝuz¯kퟦ, Ý€ :ˆZì·!A¯™mhCGÑ?°¤rLê”äÆ–Búk•òâ<ÞÖúkk(¸;Xír)H”•B+Üdqmå¶æÏȲ^¶žä=ñ<àT’1âìJ !¤CB†ÜÈ~@§SÃvÕü®j†ËÁÏ…2[k-¾Dc£k†Xb€˜É'n›^MRÜmŽ†©3i-^ù>éÇÅåzvÃY&Y¬Öߢ^õk,ĨëÄ›ÿï†ïû:J’+»#gçÿ±¹¸™Í_Ÿ0ºM5å‘C8ú
-T5¬#•Úz2Ì{Ä¥sm‘öZpà\ ¥T[ Ç‘ê!úMîÚ0ŽG¢Ÿ¶U1Œ.pr¬q Í±Ã•'Ç{KQ.B ¡“âˆFy(>ñáÝHF"?r©ÒÓ…ët ]€u„³n`IlAú Ür£;8ÍQG3¬6(‡ºÊûG“ïåd´+D¸HäT
-Y[àK]n"²SØY%®3ùh±˜4Üðb;•F;Fy
-®sbÄúOL‚‘rÈ•-×%R‰kTœqøßÝ>üȈyrâÅ]ú½tSl¼«NdÒÈÛ*g0,óä%G²=]Ü59ùËX 1I@x>{Š<e&…sX°‡c†M¢ù£úqÆ^_[Ißrb€©{N ”Û?>‡
-úŽ})Èï±ã ñÃJ¿A"ˆtºV0ÚÙLÞêD!¸#esDV¶¸G?K
-ÈsÑï0´öº/ç{£Bìwa[ˆa‡e|’0¶.®Æ,+#x'…ÙÖª>|yÿ;†#dXþˆÏœh1ÊG٬ٵ…ŽX_aÂÚ¦ï͛ӧ§å«?Öý»Osà=i zߤÌf¹^ÎÖ«›8‘^¯øèçÍÙ¯g–ËÍ endstream
-endobj
-1581 0 obj<</Type/Page/Parent 1372 0 R/Contents 1582 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1582 0 obj<</Filter/FlateDecode/Length 1670 >>stream
-x…WÁrÓH½ç+º8…ªÄ±㘣!K-‡„,q
-¹´¤±4Dš13’µÞ¯ß×3’ì(ÙÚÈšéî×ï½nÿ>™Ñ¿ft}IW J«“édJ®fø9_^ãç%þ8E›ðÁÕr:¹|ëƒËŇÉü­–Ë×>­O.¾Ìi6£õÁËkZg„ÀÓ)­ÓÓG¯œ'k¨.=Þ}ýI§…6ŠR 5^ÑÝZþrÄ&£ÜÙfK†+剽ÜSk›2 o¾3\ëz/ oMÞ¯Lé|v…ôÖÙéZNÈõia[C]â&oq×ñ:øHe”ì%vf+Ö!IÖ‘Ú)C¥Íñ¬–s£Ô%KטQXŽ)ý<ÿ¡Mf[òÊ{ÊQGèÓ½\
-yo¬«FyÞ|»]}½{zöðZ„ßF¥¨€Ý^*Ð5qYÚÖÙ
-?Po²ÙN“2/#ÞnË.E»3
-šò–]êz–—;„Æ" ŽWd7Ȥ…³Fÿ#ìÙ²÷­u™°©n˜³„F4p”>½#RñµEoÆ«žâDLJÛAøtÚIýU³ŸÞ‡þ\|ùH3Ð^¼âÎ0›O®&3ÔÆ.W5=B9RⱯœ_Š¯œI¡/ >5$›3ª m”êñ¨àJ1¤þÖ¾–²qÂ"œžAfã؃ViÝ ÆÐéŽjðÄ­ö  ºØ =q1
-Å™ð'f*Ñ_×p Žè—ùJ‘Æ èšw*¶¥å½+"ß*ôk `D¹‰ /Xi
-É:Ž:t~sŠÁƒT$ö}è~&¬DDá“H^Ž2‚Ël²
-m„€C–nuꬷ›ºãZ¤1Z‹¬‚àEéQ¾#Xû@^qg–¢rJAö"Õ!íÈByIz Ø%3$3ŸÐŸ3½$~Hn|$›É¢2m7G:S‚…Âu.c1saµLi©ïE¤3cV×è2¡t`òp!†úÐMþS ¦Tö2…SÊXU(µµ” j|ÐÍN•Þ¦Ï°€–a݈%sÁ©ß ÈzÂÎœBk‘Ôð‰˜T®Œ)„™.Þ=<„ÎÂKG=‰EÊÈÄ&eÌᘗ8˜2/zúÏhàP+[øžgBQ”ªp¬¯˜¡{ʧN'xÔÆ”d]‚ÆŸ‡†¾ásñÀë¾7(û^ÌÄ¢>#³·:,ýý¹.•ð4Ú¨–öŠ?#µ†
-endobj
-1583 0 obj<</Type/Page/Parent 1372 0 R/Contents 1584 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1584 0 obj<</Filter/FlateDecode/Length 1760 >>stream
-x•XMoÛF½ûW r‰ Ø´d+²“›7@ÐÚu+í­X‘Kkã%—Ù]ZU}ßÌ’2E9HŠÀ€MrçãÍ›7³ùz4¥ þMéòœ.æ”WG“lBóÉ<›Óìê¿ŸãÇk*åÅtþ&›_¼_}|KÓ-KØš_á—‚`g2¡e~<e³ì<£[“{\é:æIÓñ:Îoi¡ý“Éuøiù¦f4&S§ç—0u¼0u®Éª¨é|2™žÐBU+EkèA™ZךÔÊX·™:j¯òH×Çšºp›ÀV&ÔS?‰^ß)ˆ½Oètz‘³×[Wè×Ôx]îl8!¯àÆתÅáÝrFÜ ÐEŸÑg1ùëÍõ=©º _´_iä|BŠ
-W!Tªt…GäÛº†÷‘Ç©Wˆr8Ðu[!¤ÜÂ~{ÞµM@v¤ÿAv¹"ï *Mµ%À¡)ž?Rn®‘¾kmï°‰CÁ!ŠC¯ÈðÉÀª6_SåPm]–&|¡P\²>BS5VWpà\¥º=Sàôb
-Ê2SBæʺZ§46Î?ⶽõ.©=÷â´7ˆÐ•T¢iFnKcñ. ï L2…¬Ë•%y#HetMµŽì(À1Ò&r»uù¾ÑØ7ã1p–¨‰jÊ]Z ³t÷iA…Šj˜ õØKÏÝÜ-¤óPþ¨/ÓÈã ¢ÂRô÷ù<qS˜¶Xjkò„/záÁ«ªe`)”'QfG~d¼ã[ Ú–©ó‚Ô“QOlúv$´áŒjìIØÊ\ž Z=ãvIÀÛ€Rê¢mVß×;ÊŽºULâر¦Düî–=nIo,b €…N­—ƒZo LRNJå¹kÑb½0õ}?PÌ$‰¿¾HiY³ò
-/öÑÅ`õ¾¼1ÿ$¼Té|¥ò5$þ;ŠÉ*´TêÐD¬ZöÜØ–»âé[ÈBÑ?G¯ÇµkÖÜ[Ú g;®Jx#tÙcÒã—xÕxSIÖ®ŽÞ¥ÖšBÂX¯ØØÙGÌ]tÇg:ægu"ŒZ¡Lô“ðD`Êt˜ [©G#°ék«Ñ–Ñ-ÞZçÛFzýõ%á‡2Mþo4’ Œr]6kÃCCAÑ…¡˜GiRÜ6jx8pºP5&wn'}Ü«F…âÕ¾
-ŠìhFª7‰‹Ð£ÁØâ·'3úWÍÁîÖÝ<çç;ļsl¬!²
-zÕ™z•ÂNßý¸bã¥Ðëä–7åÆb,¾H0‰)3D°_[DQvzž$å;+í,£{Û><¨ìºeó±ß!n¥í¾u—ùÞ1Lu‹Eý±v èþú¶Ûy»•i V!òý†—µïyŒPâœ7ÿ¦ 'ê|];ë €¼^à~¤ØI¯&íÓ.ù"—åöy»¬4€bˆläz·úö«á Rs:ðn­ž8¸Â}ÐU T& ø9G”`«àƒš•-ôîÀåNÎj”GaZ«<5k^j£=HpÙAY¬†Æ®,›·«¡O ‘ÛŒòäåÕ!j† ³j·gw”V_‘zŒÑzZgÃÝö²SœnwîÄ#߀ n¹ôB§[Ý;_uÃf:Çuþê‚æo.Ówq}ûþšî½û‚Ûݸ7ÎîFÇ>Nû§—“·»ËÜ_äg—³ìr~…ÿÀEðí›üyyôûÑ>Ai÷endstream
-endobj
-1585 0 obj<</Type/Page/Parent 1372 0 R/Contents 1586 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 949 0 R>>endobj
-1586 0 obj<</Filter/FlateDecode/Length 1782 >>stream
-xWßS7~ç¯Ø·’™p`ÞJ Ié4 ÎЇÌtä;ÙÜIŽt‡ñßoW:ûÉ´ÃÄŸ´?¾ýöÛ½ï{#:ÂψÎÆt<¡²Ù;*Žèôx„Ï“ó3|ŽñÏkšËƒãÓãâüGÆ£I1þÁ/ŽÒÇ—{£ñiqA£É Œ64>>/F鯚îÄÃÙékÏï¦{‡ïOh4¢éÁNÎÏhZ‰á#š–û÷ÆÎŒ­¨ :P»Ô¤:|ÚÖ”ª5ÎR£¬Zèß±•
-aí|5üþöò#Ûj?W¥¦ÖÉ ¯Zýfú°wD£c¤7­ØWåÖ>MÙ|Б¢¯Ÿnþ¦° ­n
-š.M U×|ðÕ¯Ý÷ØMºØ¨ri,Gx³Üå ]‘Z(c2¡Ð™VÍjM·Þ4ÊoèÚ5xFWζÞÕµö‰:EZ*‹ ‚£r©ìY.µñ[4°­²d—ê‰!™þŠzÔ¤çs]¶Tÿê aýçQ$«ãIqÂ
-Ö0éìÜ,:œfZy÷d*cü=‡OsS£œ ŒGgI²±Ã÷`¬aÿP·åáJ5EuŸô4Ù§¹ó¤,¹¹Ø@¹žL)Qm–©×ß;ä“1§ {ðÀdߣ¾wE
-¼}ç=i¤¡UؼeÚ#jµ®$ÌW„®’W9Æ@ÅÊmkŠrþ³Ž=]îÊàû¥[°HdìaÐeçM»yÅ n²]y†dc2¼®õ“‚plÉ£À’nUAijtyÑ“QÔ'@wZZ˜ö•+;Ö¡¨KLÐÆù¼ßQpeêPĤ –è–½ˆ²4Ðè¤8)N úŠ ¤À¼{n®éšEï%j¸<fÍÜ|A x_ÈE†Òkɨ³ ÅP³˜›h—å‡,2ð y.¨‘$ÂT¬¶sƒ«ßö¿Ü\{50¶BmKÊ@E<K2Ê'â¹^ôêR}äE Ð·p6c•ªô!âž\n¢¶v©¨A5:^Ïs°øÛ^–üCA7ÒÊ©d¿zp3>)³[BJÂd‰ÓTÛ¨Ø)K
-áTPQ-2·Éf¤ëVð
-B¤°âYÄ>ÔëC©rý)cs¿}®¡Æc‹Ín³ŸÃÃýËÁÆñy\ý¼™¨Ü1sã!z­iô[f… ™ÓMø´ÕÏm,-’™{׈ )­ &’ZAø¡É(:‹'¤‡} bécü ˆ£çÌgðÚ@xd`50ÅLÅßCyÚ[Þ%¸eþõ QÅîã¶ICkŠ„€GW·! ø°#žXÌK»ˆ`°Xæ8tSmÙ„j¨™Â@^꺒ÇÔV3ê¿þIÛh0%SÙaʲïf(ûcΦh­6ÿ!"“‚¾HRt%È‚Á®ZI6.a¹”V+ñ.±ÐV󆧵
- ”[f‘å^äáÖ­ÐcS
-•ˆ_ˆ$äÚ†gñh¥CéÍ }¶tkv¼Ðí¶ÿØ•,Ð
-endobj
-1587 0 obj<</Type/Page/Parent 1372 0 R/Contents 1588 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 952 0 R>>endobj
-1588 0 obj<</Filter/FlateDecode/Length 2040 >>stream
-x…XMsÛ6½ûWlOVf$Z¢dIž:N›4?šª“‹/ Š¨I@H«ú÷} Å$íd}Àî¾}ûv¡¯3šâߌV1Í—”VÓhJ‹x­i±^á}Œ?+)çXzüïóï«›hFñõ"ZPE³é<ºi?•ôçEÿ3ž.®£Uÿiï3ž.—°Nò{{ŸñôfÍ{OÙÃÙuÅCßo.®>ÞÀmrµ\ãMæ]žÒ&ÍÑu4‹èN×ÖdMZ+£ßmþÆžÍfaÏ$^aÏhS(GŸž¾lž(“.µ*‘ŽêBÒΚTfÅÇÆÉŒjC[YÓ^éD錚 ¼ØFk¥·d4Uú,³O¢¦ÀrWË*b«SšÌæˆÖ¾´»a3;‘”’LΦÞTÆLj4•Îù“E/t­RÁÞSj8–’rc §dfïè7S ¥Ù=Ë>[Ól ì¥ÇÍÀlØßÓóo¿ú.­Ü6¥°—„½o
-FÇäš»q,5„ðòz7æïö² ¦ÿ¼}x{ÜÔ…/AŒs0 ìJ¤Ô´·ª®ñš[SáÐË€Ñ$ElV¥—´ƒó;‰½Iø`Håt0 0±qm€„¥L9ìH†c<wTâ@…x“œ©Êd*?ø<*mçWr_ EX“+¼ Ñ{ìÃþs´7öÕùø®>.[Ò l&]¨_Š¹Â4eFw|Z ýò-ÇúÀˆ²ä¬±Í
-WRh׊߱ä`2V‹Is §y|y3¾kv«)k„=Q¾!ô˜RÈr—7¥oI%‹ï<_œ™|“¥ÙqûOÓWPÕqaSgNø¥?r%¬ïºŒÏg½†5‡rÁM.'\¸œŸšú<VQ»x/Á}¤º–7´!qÒä
-‡¿®;É#W%mß9ª]Û,NkôwÖ°˜Ïj©7</Üœ·Æ@ <Åßžaöm“#æNî}q¸uù½ƒxxu˜ð¡ÀTgÂf¾ðÚló
-ÛÛK æ¼Ø³äwÊ‚) Lµè"gõ]BÇâ£Ò''g¯0ø†¯O.sÒ­ìùvÅ{*¡‡{P¾ö'Xø2é/´I£JÖ%¯ê(šÀ@ô´6¶‰/™®®0(j¯
-endobj
-1589 0 obj<</Type/Page/Parent 1372 0 R/Contents 1590 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 955 0 R>>endobj
-1590 0 obj<</Filter/FlateDecode/Length 1361 >>stream
-xWMs"7½ó+º*‡ÌV™0†½í&ÙÔ6_æ§Rš h­‘ˆ¤1KU~|ºõØIÖv’º_·^¿îùkTÀ ¸+a¶€ºMó),–«|óå¾/ñÏphýÂít–/Ÿ[X­žýmçÓøòÛ£r6Ïg0/òtP®
-rB$ÜÞ¯G“+(
-X·ˆhqW Åuã La]gÅ<¿Így‘ÃwZµbÓ#*¦¨u·’Ãý»Oïß½YF3ó£™q¹@'ë&[o9î ç˜Z ΆϺ &@XØîܬ3Ll¶®ÕfÏL“Yi…±ÜÖpŽøÎBÇ ´ƒŠ“û)Œ‹Y^’SÅkn-3høŽ«F¨ ô;ô½ßr·å´ñº‡-{âä÷IèÞÊT½äc]Å ŠÁmBœÂ*$j\ÎC„Fk÷MX,Ââ¬ÄÌ]“±ÞiŠþììد‹©Otöoç;öˆé“œ©×Z0]L^³zë5ùƒø
- ù$]â«MP,¯ÂçA(똔ÁF¢ZŒ¡\²!‡öBʨèî[ÖKwñ`¢™‚#>›ôÖL¤®™œXºósY÷H9bDÇ„ŠV]÷W.pX´€\¢sî™B"é ÷VwiˆEÄ¥å9|t10iµ'_ã]í…Bæ5 ð/¼î«°Ò¨ê¤¨Ì§Ê—Ë@ÈX°å°`CHE¬ÏLY»®Þæ'r&C™wCÑF'—çyÁH‡E~Šó†cL¯(˜pî69O†›s{4ŒwX¤Xâºßl!ôÉ\ER²Á6Ú Wï¸!CƒÄÓU’ÔØ°:8A©w=¨»´zyX0±º75Ÿ$ŒßÿÓ’ãuÑWçA ’ò1\i«{¼6á0Š$JŠ'4%¹ÕRj4¹{è*-EùVo¿¶T0¶Î (¯¿ÎË‘¿S çaÍ,’h¼J«%RϾ›¯1Q]P~Ï-åÅyfÅ-¶µ» ­ÏÞŸO§½Ç¦ð²›‚óû½t_bÓ\NËÿr2wÅ,™¹FváþåúIïo€Y òK„7È´ó¤eîê#‹Ÿ$4£ÚBaÕ{è-6G’™ –àPߨõÅÚ{V µFw×e=¨¿¤]ÇÉM¨ï>¾bK£†ÔúË{¢Û¢Ò³Ö!\
-ëçÈÊËþ ñgÇPôš·þY£Ná5–`úØÓ~»eÞ÷¿°Ñç*ìÃ!åÂðÅP”F¢+µÄ~5ÔÜ(…ÔËHöhŽèPÓ°EሂׂýEEáÅ=£¯² Íú2ÿ~ðnÿâR4qfr¢ãD%ƒB„ãU‡Ãg…ìB ­zGú… o®xȈ"D»F«oIÙ¢Üûo ´C\¥sS=Á>^ÐÿSâ‰Åþ7I¡Àø þFVòÝðÖ.’Úßš¨Aúj/Yv^Ž—ÙaOLHßg1«‰Â¾x½Õ*V?¢ð?nÁøãL˜Z'‰ÿyž {°íªgªoÐ1îù7LÂŽÖqÌ4Rç„ØO£ '+žj„ïÚ-ý½VÇYÓ­Ž#穳¥ˆ.Â
-endobj
-1591 0 obj<</Type/Page/Parent 1372 0 R/Contents 1592 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 970 0 R>>endobj
-1592 0 obj<</Filter/FlateDecode/Length 1289 >>stream
-x¥V[oÛ6~÷¯8kQ4ElI–/qŠ]6I‘mºÅEÖ=Ðm+•D¤âØßwHÑvܤX0'NDò\¿óþÕéS‚Ÿ>¤4Ó¼ì$Q‚7Û?¿¿ë¤'QBãÑ(SIýþ$š´«‚nZá`ˆ-%MÆÑÆn±“õS¼ 2·ØÊF§ ”Ai:ŒRò«p/œð–GnµŽ&Nk¿?Àÿ‘[í„Ãïk’òI·b!ë &05œpL)¾ZÒ §},o¦ø2¡Sš.¥ñ™KNBÓùÑËBÍDñç«ém'¡^Ÿƒ™fGÄŸ£(úù!Ás2²ZXI™*E^‘¨2jŒÔ•(%­s»¢—Ç/»Tä_%_¿?»úpĬ0=Ù™ZçÕ,ÇñV¥Ò¼áˆ~¢c~èíou^=gCÔ䙡…VH|‚YE©{X(œb‹æ1sP 9 =wü{&—ÿÁäR«¦~Ô&4<Á¦(
-µ&Y5¥DªsU‘Z ·>[.6—öï›äã®2Î)NëFºÇ½bnïNÝÞ懪°Ìï¸Ô÷ÜEAf%‹‚¾©ªØP%e&3ÊdWrC+SV•´$æsiÌ—W‡%²²¬ ×J•2Ë·€ˆyÃdeãçñ‹O|p/Ží9ç@Èt tÅ3aVü"¾<Eûs+¸Röþ0EèÁˆ~UÀ2ü¤›³÷oÎ
-…4$v§ µÎïòB.¥!ŸÆw<WDÞ4ÛÕa/{Z)ûÜKG!dŠ£ãBÍEQ΄+'£Ç¥­wãÊÒûD߉`ÏÄ¥©µª„–¦V¨¤-o¨“Y©¦Èh&_Ó3ÆÀË%k‰î oVäÙ«Ç5:H•×K\Ó6_· Ï ”·Åí(¢+´¥¦vž¶=™Q&d Öpà“ÆRnðî‡Òî%æâNV¶ålºŒ46Zx-*ëp«²|±ñX2åŒ ›ƒ53×yívˆÆbØeBÏçÕj‘~àÌA˜@¹ï7…kÂL±†Y®m?6Ó¥Yî3ÌkeL>+|É8"Ñmƒ®Pk
-»´cËE®hª¼¿HÏ¡õíäÑw9¨¨ ²}¼wèkŸÂÿß”G«qõ²$Q¬Å1cÎV*Ï\Ý< Db0„ƒ¦¯3Äô‹ü릪@=ßOs¶6Ô’þ¡¥–uȧY;:ØÃÌt“mƒæÊš¹äÊÔ(Žwûºí dg½—mQ…’tD¿P’¼v¿÷¼Ø³ýA­hÖÓ­›;è’ÕÆìa0/
-endobj
-1593 0 obj<</Type/Page/Parent 1372 0 R/Contents 1594 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1594 0 obj<</Filter/FlateDecode/Length 1198 >>stream
-x½Vko"7ýί¸JÑÂjà ¯²ÒªJBØFÝ„t3mU5ý`f<àÍŒMlOXÔýñ½×ž!„@Tµjƒ‚˜±ïóœsí‡ZÚøéÀqzˆóZ;hC¯?ºÐãï.þkií,ª…ã6œ@”¢Å`ˆ?ÀÝí6Dqóübò.2—Òr-¹ýÙpý6ú‚}èt¼E«;@‹ædú(Ta²Õ!\Âœ=r,ç ä+HT΄„új
-fÜÂL«bB¦JçÌ
-%!Õ*wF7£ó÷>›uZݾ÷¯•²ßùÅŽïP¯‹+Ø™¤F‡™ŠYbÜ) ±€p‰_©‚Öì™Ç–³juÚÁ,©§#ß“Ó$Ò”UíX§†¿²ü±àƾ²~®òEнºEZ­²l÷¦sŽÍ¼)¦™0óÝ;nã9Ïì-䂨³ÐÂðý{>:tnT&âœkN€ÉR–w°-B´ÓBÆÊ"Ì¥m8*Hµ„)‡Â ÷Jð )RX„5D©²spÐ9:"h¿6îÉQÅéñ£Â¦‡ÊAìRl•B¶Î VyŽd^sgC/ÈsTñœÈˆ©Â‚³L<IžIé‰×f®Š,qìe.ŭYL[Ý|¾ç°R…†Šh>|3ä6wyoz>lÆÔUWiÓ—¿Ø¬Yh|¹Uy!s3÷=W(´Dh#R‚ûÆ%<eEf™’ef[ª„˜Ó§×%©aJ”D mßu¨2¨ºû¼º åo(óEs/oy²1¦†¾·~pô‚A
-Ç'Õ`\Ï„µ}'€OB_}¤g(S°`¿ò”_9å¶poBÂxŽ#Irž"­Ë0–¢x*†ã'O&Ÿ¾ð‚dÜ(wlóÁ2œþº¹ŒdWÀbdô‚„ŽÅzb”¼·ÌÜã\–”d®‘zmuŽ$æ¸iVÆò½ÏùÊÅ#ÍY$òاŠG”;F<o=!÷¼§8þ%½Aü;e>Ÿyòz¡Óä5O4˜_ú‚Ÿ
-&ƒjª†%IÅ9
-%F¨àÁ# µ ­þÜHÇð‡‚˘pµÚ"’4§OäU·÷ì@ðªÞÞ·ZëcÎ<õ{Çéå·l¹jv¥t<Ê法ÃøÆÓ$.[ä´9ª¨ëIY^5ÖŠr^îšwoáOJÚZž”Pþýxy=úpp{uv°gçxêJ¨Ü’Ši>×É/úQÄܼ‡}¦¥øvç$3¨cÜÑä&ºœ\ßî ÿù"úåôÓ‡ú÷{Ö)½=K¾´ëÿ½4"Ô1îß*­û/jûÕßíöõÿ?‚nS;åëý£²~‡º7‡ÀË`‹U/º/ÞôÊ7À›78gŠxá#sÇûÐS‘4ïàÛ7¸»#Š„ãa9;¼§{x%/Õp{zuv
-7Z}ÁsF*.r¼K¸ë,Y¶*ƒÖq›.ñÍò¤‚/‰¤ˆˆnÄ&…¥íýÁ0uýe¶ÓîÑ»‹¨öSí/ÂDyÂendstream
-endobj
-1595 0 obj<</Type/Page/Parent 1372 0 R/Contents 1596 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1596 0 obj<</Filter/FlateDecode/Length 945 >>stream
-x½VkoÛ6ýî_qjµ3DO»Ž[À$Š®í6Û‡¸Ce‰ŠÙȤCRñ‚mÿ}—”å8Nµðq,ò>ν—çP·­!ýF8‰1!]µB?Ä0ŠýÃñ }éO1ä­³Y+¸ ñ³œ<Fcú’¬Ã³´‡ŸŸ/f¿œþ0‰Žf_Z!¼(ôÇdº³PÌ”J [™ýeŸƒË!¢¨ÊãÅ#ë<[2ô´‘ëòR¤†Ke¢‘ •J1½–"ãâLu#¡—¥A&7†\5Sw<ed/2RÞ@£à7Œ6¹~SåÜ•æÅCh“Ú|óþü ¬k}÷öÃù¤=}Ön0`éR£bÛSÂc,B‡©k=w¨Þ Éÿ†ÅZÉzµÈrlÛÝý¾aßbhتðøð‹çðÇ“_À¯\,¸ÈššøŸ aSåùçA š ¹ª=<vKò’z!~²2Ø®|ÂË—P+x9‚»D…Lo].ô½èP4 Ö•ÜnjÈ·0ðuMô-£¡ÿÊø#?ö1•E¢¸¶¹¿BÕº28ƽ,!Ë,#W2ã9q“èXy’ì8’÷fÒ€ nü,ÐÉj‘ø–¯L=NЇ6‰2å:U|m|¼5(u™Å=¤ ·ï`YÙ„YÓÉs´·G R½”e‘AÈMåz®„RRÔÜÁ^&w¤ ¸ ÈEAepñú^ž Ôn:IQÕБ<(àØŸó‚‘jY©&¡èÔ°#)"yx^•:vOX;
-ç^×ínÍãÈwRÊs\á¼ 2Áħƒˆ4#QkÜþÿŽs¡Îšf) k¢û›ƒ˜9?ÀQk[¥°ÓØ=×,‘¬¨íV™Öó>Ó󣃸µãšg“ÏuEÁZðgƒ­óÙÙ^+¶†·A7úFM(zO¿ßAoûß>|nHz…v—@¶ñb‚vŽØ®N»zàã®Ab=³¦öìöFª»A·™b·%W„&—j{V˜³çž&šQö¨½=À{[t©RàÞ“¶>9d¸È¸±3¡P”ÝÞ²%­ÉUÍ‘ÄÝÌóþ:1K}ŒT7×J–ëc,¥6ÏfqºåJµ\ ‹õü 14¹¯ÍJ!ÍäžÆ|þÔçaट;†’“OÌ­}p9ÞÊQ4¢×žñ
-endobj
-1597 0 obj<</Type/Page/Parent 1372 0 R/Contents 1598 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1598 0 obj<</Filter/FlateDecode/Length 1393 >>stream
-x¥WkoGýî_q•~®Ì.`Œq¢ªŠëZ‰Ô4iMUUBª†Ù&ÞÝ!3»&¨íï¹3;<ꪪ-cÄÎ}{î=Ãç³>õðÛ§ë]ŽHg½¤GÛ+~_ãu€?«h n’á©ýñM2n?¸œ¥÷=º¡É1Fc¼Éþ{=šÈŽ’KC•°•.ôãûÛ»óɧ³uû=¸šd"JkgÓÜH‘§N3‘Ît™–Å,£îusšNm`vÂðI°£uݱSWÌiÊyãkÐOFÿ0Á_u‰àÝ U˜ò8ìÉT×Á(;>þúu+ÚKW™ÕËéùñÑGç+k$qáÏ<FÏ=þ¹|}* Ç‹_œX¨W”ªJ¦ºÔU’…Î$NÙ'eérÜRúÿÍŠþzqœð¶ôØhå„äcéýM$Kwà[Ð&WÉe2Âý¬¼g%œR¿˜Õ~7§©AÖAµTáàUs°C¡ô>w.Úg"ÈûgH”Ùô~çkν³”y~8UKíhetY]øÌÜÒÔyF3Eb–+ª u¥’8ipاËü¿LÌ?ÏxjpðH™)„.©PÅ Pª]Eø\‡º×
-c*ÈO Õ0K"¦;œÆ˜^xn`½Nè;Ð^/jXF~£Túøæý ŒƒmƒòR<)*D¦H7…Î… e>–fr
-¸fØ};]¥V M;w:kØÖtÆ…xT4ò±^92¾+ÈÉê….ENQìZÏÚŽŸ ¤“4ÌÚ2’æœÑ·ŒIiÀœÌ
-îvCè±R ù{C”Ä™ÃÐÈ2zš[SpñíŽl³?´ÜK:p(<Ž)vž‹ÚñͤÝàK³Òiœ
-¬e[X7¡äe‘‰\[ˆ<–Õh,®„ -äƒO@œÁ¶œv %‚°ø ¿¹r3=ÇD¨¼TfÖµyµŠø¡epf3ˆä@•AæýšmÒqþ¾Á¸6 ð¥ì 52(à“‚ÄY ’œ˜.¾ƒ}ÑÈ';_CdȾä„ó¬áéVw¦ç|Çòûä:é3Æ®–GQ­)ÆÄÏÖ²Âíáb«R 7\Ô‰RrÄþ×BÒ
-endobj
-1599 0 obj<</Type/Page/Parent 1372 0 R/Contents 1600 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1600 0 obj<</Filter/FlateDecode/Length 1324 >>stream
-xÍWMoÛF½ëW â‹ HÔ§e©€€:m ø`4u)`ÀX’Kic’«p—QØ_ß7»¤ÄHr\$>TF +Üy3ófæñsgDCüŒèzL“EYg i<™SšÎ¯ùoü+$%÷«ÎàvH Z%¸1›ã˜pz8¤UÔ•¹SIKÊõåêNNi4òGûãŽvmý`o¢?žÂ žìïVÒ¼pùV”Ø-Y|Q‘4d5ítñLÛBoe‘V=ªtI;•¦$R£)—2æCRÙ,h#¾HRy¬¾¨¸)Ū‘Õ…‚©¶qˆb •S Æú£I0f„"-¤ˆ+x“Fæ–tîn0Yô¢È×ÒýïFg0V;¨ÈÊl›
-‹gš­e.‹€Ê¹€íÝsü-ÇL@« üR$r
-%IaTZ!XU¾vN}ÞPI—ô®É Òyòm:»´Nu¨ü³«æÊ(
-©cðérBìz‡Êå!êãŠ,"TØ \ÈW&r$ŒŒÊT*P'í/²PÔxš±ù€î«
-]ÏO=3¿ßI©^«Üs°™©Ý³½”KAØô‡¤¨º³˜È;bJ›7å´#¸´¶:SÄ7¥ç+<(sõ•Ù‰®yJTaìÓV˜ýüþ°=×®ˆg2uàê+a¾ÜÈ?ÉÌÖtàb½ò<{;£o×C-¤-£zkÑ¢Ønü9…X‡FcEøQx¦ ïx©+ladîHÄ1kˆôÍwX”nð·êuêëÛj|uÑ‚9$öM(¡;à',­W,/¸ãXk²/ï”ãþk;¡f¹c{¼/ceüŠ-´¶˜&†ðÜ‹ž\ZÖQmn·n!¢mF~é4ö—² ‘ó@"±Æq†¿Ÿ?Žj õS¨˜tBPºbëô b¶µ^å5´6NË nšÝ‹šÑ4¸
-&Áu0èACq(Ó7[),YbA¥Öe!˜gr3‘Q%¯ry–ïe_pJÔéUH·Zöp¶÷
-ˆ)礆˜ÝKYE¿·¤¨“L(¶O¨¡8R¡ž8té+•™eeŠªŒ$Ñ,®87T®Ýâ{ºƒ¼Šeð7”3벨4Vgê’uœ Àƒ]èlÙNž²2ƒ1=f3â4%Ü¡4v£Y·:mÌ”Æ4 ;†Þëº TõÒ=•¬ÓÙ y•ìñR;ŠTe[}Ì/ B^×=}·¸h®Ö›àBApA+½ûõ±{ñx¹’hŒ¦<9‹Áp1ÍèáþîÝñíãïô›ÞV…Zo,=v£ÇK-³>~-zôPæt¯¢BûP fJ9 ­ùuA7¨ÚG¶`è#T>Þ(â“C'n?ÜÜŸÒ±möäÆ –2"W‘c/ëj±–\´ã“ü}p;¯_ F3¼Î'4»ž{Ùÿpsÿþ†>ú^ @Ô¨d#û–è7ú×C~CìÖE+i,qµÁoC–Îñt6fWc¼PòÑáŒÿ±êüÕùz’Šþendstream
-endobj
-1601 0 obj<</Type/Page/Parent 1372 0 R/Contents 1602 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1602 0 obj<</Filter/FlateDecode/Length 759 >>stream
-xµWÛn›@}ç+Fr’sñ»ŽÚHQÕ6•Qž"YkX̦À’½(õßwNˆã˲ÞÙ³gÏÎÌÎ<Z¸øñ`6‚±af¹¶ _'ö&ó>Žð+(ÄÖU`9×8AŒü9>D€Æ® Ax‘ò Ë€h• ý£f‚Føîh)œ”­IC-˜Ú:ÉVO,_³<²%¿ ,†žkÏï˜/7ËE‰¥söl”Ø®b&¤ZDJø<tÄHº2;ê‚?h­'*IJE¤Žc2š«SéÓ(".•ÜØ»GÕ ¾¥q ¹-A¤v|R‚0g%,d‚>ÛÅ‹iŽˆÍUBEøq/xsV °C®ÑQ3’“ ÍÐgsûÕÄgÛ,Õüh¨àÊíJ¦h v(¥ìƒ§TŹÍñ™†opl@÷ÎßÂ|ÓÝûÑ¡qû>u8ºKÕ½éÐ8k?:´ázñ‡ƒ =ë0€%•’ñ¼{(Õ´d5ñn:€[¼Ÿ¸ˆºóÔÄÌÍZNmù‰1þ
-®µÑ×pÇÃ1Rµj/‹.XG"OR
-b.àk*¸„»iYï`†d!Qæ ï/tòÌ$MP´¤õýå±Eª«¾dÏ ƒGR Êwøÿëé¡Ú¤½ÒóR¤_ä:ŸT¹ù Ü+W9r›{•®ºßVºfÛ#VíÕ}ðjÂ÷$°Vemöì\OÀóv½Àpä›ÚýH*9(ÂÊŸ´æ@Êr
-$VX aIû`7‚Á²¡
-‹€Ç@òœoY¾ˆëuJ¡<+”4ÑW >Æ­7$íj`äÛ3ð‹?a"Á Ýr-`I²5AäÈ0ƒç9 •YC%‚ëM²³"E‘ÖÁ¬RÎ5Æ1Ûhs=`“cècc›ËUëy¥…çcË4ƒï––‹ŸW ¸ü—‚o<Ô&1”™Â°ÖæÙkº© obOí± ò6Ì‚%üÖe6ñç¶?aóeLÝ™øX¬ÿÑ_endstream
-endobj
-1603 0 obj<</Type/Page/Parent 1372 0 R/Contents 1604 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1604 0 obj<</Filter/FlateDecode/Length 986 >>stream
-xuUKsâF¾ó+ú¸©- 87/Ž«\»ˆQ*9ä2Ì bv¥í<`ýïóµ„b¢2Šyt÷÷Ò÷ÑŒ¦ø›Ñ*§ù’d=šfSZ¬YŽ÷¾çø÷šíÂ|gËá—bôùéžf+*¸k¹žQ¡÷L§TÈO³E¶ÌèWS›(¢q6üT|ÅÍ°Lò.-Ô§?ŒÝ«è( ²©ÞkOî@ÕÇY2–L $“÷ÚFtVi´¢“ö—S<ŠHgMG×hŠŽ¤«5<¤˜¼æò(:›cD½Ü~æßÁ$_f‹ënÌ?Õªwroâ$L%öPq5¦³éǘv®û†x~{þ“ЄÇж¤ð¢®Ã˜D.•Gjœ-WÍpøS’
-
-)]Bô¾ ³óßB8-•+|SÑ÷Ü´‘m2¡ Òã‚çž¡p›üŠü––ñ Poal¶†’;Þ>nø«f¤¤¾‰E>WXô:É×Ùìž&‹K(">Wmœ•Uâ„û·`¯Ò“õÚƒÕ¥ 7 é k¸-ôÝÛü†Çæ¥ÛvEtY5t\Óx×x#¢¦#½ îém»!Ö~@’ŸØ•;·zfXpàd`“ E`
-endobj
-1605 0 obj<</Type/Page/Parent 1372 0 R/Contents 1606 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1606 0 obj<</Filter/FlateDecode/Length 1603 >>stream
-xWMSãF½ó+º¸
-0h¦?^¿~ÝúûhAs|-èfI—×”ÕGódNW·×É5~Þàóß^S!ó›ävúà~}tñù=-ç´.`ëúæ–Ö9ÁÎÿÉN?–ªiµ§Å»„êÆ»SêÝ6»!c)¨:Ugë¿ÄÊâ&Z9¿¼J–°sŠk‹„_´1zK®ïÆ+W´XôW–7ˆWž~¾'«Û­ó_Ù»4¹¤¨ÖY©¬ 5¥;Ú–&+)«Œ¶m LYRY¦Ÿ«LhÙU­²ÒX\E˜j°9#‰vNç‹Ëcp癪*äu,‰i1pœÐº4!Ëœm•±áÕd[ª– õZå;jÀ©0•&eó 纱-Αə¶Ôž3ßs?F¹5-Â%bå:„ßRî`Àº©dU—ë×@"ˆÄž´”uÚjG*Eˆ*w
-¥ëª\š2è¶WDdÆ€ßÂ>å“XaÁ³J£2§D_­é“ë“ñÖqDuÇÓÓ¢ 5Æ6•
-Ø9«ÚLÐàÈHðÙU¯7ÊçOeˆÈ¶ÔˆÓ÷ ®Ö³>[n’QrD·pømâ‘K¡_X
-¦lÆÑ/L)uÕˆ¶^e_a`Wò~ňƒ*(ÊuÚm&¹WLµ %]
-¬<Tú×Þ†ÑNw<WQ¾~pýÚ>lòþ"Å€à€öØuZÌñ8œtœì5C9mKyùèßeâ Lr·è‹Ï·¯¯Z—óøæóÿ_î®®o“ëwK¼ òKÝü=gþÓúè—£
-endobj
-1607 0 obj<</Type/Page/Parent 1372 0 R/Contents 1608 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1608 0 obj<</Filter/FlateDecode/Length 1738 >>stream
-x­WÛnÛF}÷W ŒU‰eù–—· ~ˆëÚjó" X‘Kic’Ëp—øã{fHÊ7EQÆxÙÝ™9sæÌèëAHcü élBǧeã`L'ãipJÓó3ÜOð¿Ô”ȇÉô;®fG§†4KpÖéùÍbÂ9ã1Í¢Á½õšüJy2 O±Õ.ÿÙÓƖϔؒ¶¶bÎùŽÜÊViLΛ4¥…&µH±Ý’ß|Œ&§Ëµ.)W>:šãzº}üóö‘Lþnöå`L£ð8˜À‡AbR©\-±^ ¬`_ç*©û¹1W¤j+†Rã<Ù„ÔZ™TÜp+Uj4V&§Á”­<YxRh[ÀÑÄàÜEi7ÎäKJ°Ñ!ˆHUNœß"zŽ}¥Öu0ËÔ.TJ‡ËJØŠ"[åþ1zŽYÑZ¥&nß·†Ûðu¦³…Ät›»‡ëŸ(²y®#olŽwøÀq8ù\ûOƱ‚žØ
-~U9É@VÁñ°µ/«zØ6¾¶>µ`\¦Îâ<J­`×ÀØh©½gPÆ{äzQƒ\” Îgo-![[*T‰ä"KŽ$2|‰
-ÜÆÒ<[Ä=LŽük? h¶B”¾4Ñ3‡ ,s8ÄYp…Š4'Åo4Ü`Ôl!`±~Ü™§ù@/?Ð(žàh絊Ùö(¦ÉüÝ°g^6¿ZásFW‚ëè¾1àº×yrƒØê8ˆÁÉíl))³xHͳNEÜe‰TâAˆ…ú({vÁ5GŠÉ÷€”•ŠcÕ ÉY¸ŽSñ‹70É4̵ŽuÜOáŒ!Áº©ZR› &“ F”™…E«^]hÍÂL¹gBuß=Pã 'bSZP`>p…ŽLbt?‹ãW’„CÃešp®Û!—-$ÁówŒÃÑÇ
-¡6,;£ãi]ŽáI0 読A•Ö9rÕN¹z׫X&gP:ñçÖp©S ¤8;O*[(
-ƒ‹ <›TZ¬T(0«…]ëù»fÁ
-*´`.UE¬¼‰,DFrƒW…-®^öJ]¤&RB?áàüsÁî9N C¬JùE6F‘òš¼®.Xqp×N¨he´Ù‰V«R®‘‰X»¨4 Ðc²Ç¬?\A‰V¾%«‚y›$Ñ Žç\Ì»cÛòŸñ^½ˆPe—Óìúá|hr´œEŠ4Wm(m% ›kÑ,ò¸#[I_ª$1’ÂMD$Œƒ€ß¬€È(äÚñùîþ †¸ƒ°Fì½
-=2Î+ˆÿë5êSêcÈê—h¼•J{¨p“5Ë
-åÊcÆ|Àä¿'¢I¸ƒ£ˆI翺Í6ÕÿPÚB—J6$hpƒ‘VTPÄ|ž„Õ³Û;²m2ÊI“–€±¬n a§%„ý
-uãñ“º©ÅŠ%Nü»ó,Z7ˆëNyÝ‚èO'µŒ£c•GzÈ3˜W&B£R φ™]ó3DÎCÄïxÆ™Õ3rðÉ°G6ñ½pä»Ä|¸Õ
-Ã2…!JÊEä_
-¡y. 8Óªžèj^¤jÉý õs&O«èÿ
->
-endobj
-1609 0 obj<</Type/Page/Parent 1372 0 R/Contents 1610 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1610 0 obj<</Filter/FlateDecode/Length 1764 >>stream
-x}X]OãF}çWÜ7@"Þ8aYZU•X*Ô(°Ú¤ÕÄžYë“RõÇ÷Üùpœ!¬‘œÄž¹ŸçÞ{†{9 ñ—Ó§O¨XíMï÷>\ éº_àÅÉ)¾”4̆Ã!ÝDƒw/ò×»ï{/ï¿ï i³Sˆ‡ÔÿÜÞþ=<
-Bñá_ö¿lñÓTælômB„ûÔÝÏ°?Îñ¯Ù˜WàÂ,
-ßx¡»ðôœR©ñeïóáàëåìîá—~¸8¦<÷±ŒNع3]e¬ªI/hL¦×Òz8ÈhtDã‡C*t]ËÂÊ’æ¯dךÝZÙð¢[¬ºaÍ€ìRI¥¦Z[zÆмѢ,„±&£;'—òhñ8±ú¥0ô‘V¢XªZÒ5){Œ ñëãîu÷bœ¼ÈhbL»’´Ð ÛA+½’µÅWaIT•·-QÝ)dê±mà£Õ4—¤j'ÈH]ëæé>?ÃaÖ`Ôê¹R…²
-&ñ$3ºò>Ð,ÿvÆ~ø@»Ê$Š{ºàÞ¹^ (»B˜dCÓF¯ >”Ì Z+˜_èªV:‹T¬ 
-I3¿…[–
-øð^Øc¸vÕØÕ¡ ú
-Ýñf$ÊÙþ 0Ñ×`
-âod]røE ô“ºÖ-ìrÇ‘gQ<ZÁA_ÎoÐáKùø…_¸lB/Λ¼{2Í-hžRŸ ’5!9wŽÁ®ÛÕl ªBV¼WìÊN"ç ƒYzWDþ,ày<ž»P&»‰‘‘‹7 /ý&‰j7yÉ•ã·»¢¦Xʲ­
-endobj
-1611 0 obj<</Type/Page/Parent 1372 0 R/Contents 1612 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1612 0 obj<</Filter/FlateDecode/Length 913 >>stream
-xíWKoÛ0 ¾çW𘠱ëGêf»åÑž¶bÃìR P¥ÖšH›$'è~ýHÉŽR#ÃÖî2`u
-qí3
-=Ïœò^”,¢Lcä¹ãòI4”*ØoòëÈ]Q6òûñß“Ö1ëF>=õge¢‚–d‚xäJ6"Ìfgþ;>l‹ÛÙå;tg©)-LÝÏß°°™Ï[6>ÏçHñ^0µ\!a ›"rB=Bë¡”{eCXÕk™…¼Kð7B¢óÇ¡#ųDMÌîíaQBB¥¦bЀ@^vOÄëŠèoˆxv<ciS³«sš—ËŠC±ÆPÁôõRŽ¡
-‘cUä\Ø©±56¬Í±‰ ‰5 ¬„D§®ùNí±>QU}ìçÿj³ÁXövŽd ïhoN:ÉW6ƾÏi›µ¯l>N)ó¬ü—%é¥}ï+Ï·}û¸éÛÓâ*NÆ9Åeó 4ù0ÀG­¾òÒÂ\•õé%)Ó£V!ºJèc²Ÿ^Æ£¦ÔÒc±R+ƒ½ oäIcTŒãâ2ÃÏOz;ÍhîzÑûÔû ù¿ºendstream
-endobj
-1613 0 obj<</Type/Page/Parent 1372 0 R/Contents 1614 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1614 0 obj<</Filter/FlateDecode/Length 1572 >>stream
-xW]OãF}ϯ¸âe©„MH€ª‹Ë"ñ°YZ¢VUÕ‡‰=Žg×ö¤3cØô×÷ÜñL⪮*”„Øžûqî=çÞü5šÐº˜ÒÙœ²z4NÇ4;›àýüòïS¼Œ¤bt»ÞŸÓdBËGæ—´Ì Ç´ÌŽŸ¶MVݨ¿…Sº±´’îEʆ\))×µP ÕÂ:iheô‹Å§hrªt&ªÁ K/ªª(ÓSM+ÉiÒYÖšZµî‡å—ј’ÉY:…ÿcW*K¶Ôm•Ã# ‚‘oñ!œ$«\ëÃIñé<=çcI…È ÝrL¿LHã}J…P•õAºªô‹jÖ]8>„Ù€J¢¡…¨¥%] ÚzÖð¥!)²ÎsÉw
-©›Ì{DÑYë
-͇~4ZäzžÒÝ>|~¢ð
-Î|ñ®B”/Ýí²Ú:vçYØéýM@×õžQ2§—L‚É,¥ô$h¶¦v[=ˆ8€>á“éE:çc;âzõJ g³ËôÁyÕä 7-–°Ë@ïn×ÂÃl¥óžnßÐÀÜ᪷:È>ú@¾žä½0i«[ª[€,òÜ—yÏ[½a”C“­W)Z ¡Pj¾ð­¬
-<?ñm€`
-í¨(<´°ø ÒëúŽ.ÒD)7{!R¨ò`òžð@«âèÁ8Ž³íáqç/tËÑ£Qµ€N÷Øt{ëtX]>`7ºØ|¬’k¨g›\?ÆŽN®—“냹•^[Ž12øjÆ£"~[,ýà$y³kÁL¿Npázi„{¨½±ð„fvòÙ0Ç÷c<h\Yòª`Éï§÷ÿ:ß»ÐÞÓµßïÖ>ŸØà›óþÚ$ß<Â5¿N8d,áî·D?ÙXYøÄšÚóëÛþôþ2¬$“9~Ë]žÑ|~Þí~O7ŸnoEû›þ]_{9â$H.ÆWß·+žÏ/ÓùlŠŸ†¼ZNÎØÌÇåèçÑ?
-¤ïendstream
-endobj
-1615 0 obj<</Type/Page/Parent 1372 0 R/Contents 1616 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1616 0 obj<</Filter/FlateDecode/Length 1416 >>stream
-xÍWËnÛFÝë+.¼©ÈŒ$[²\4â棈“Æ ²hº‘C‰ 9£ÌQõ÷=w”ÄH)²jmøÉ™û<çÜË/ƒ1ð9¦ë ]Î(«£dDÓùe2§«ù5~ŸàËH*·éàÉË+)-pe6¿¦4'(ÍÎïu#©Y‰ßJKU©$½~ÿÒý›”n_ÐË”J…‡’l½H2­
-*ÊJ’.Ü?D½d¥ù* ‰¬)Õ’„u>ÜÝ?„'ÒOƒ]Œ/“ ¼Ÿ—•U‘Ð]A[ÝâLC ݬܭ3>ûäå4D|¾)•%Û®×Ú4ô”¶Òú1¥ó3Òë¦ÔŠ„Ê¿cÁGø”~U¢–¿œ²<©z‘÷"Þ”UE…(+j4ÙF˜& '&³äŠsJWõøj6šÖÚÚr2ÙL*aJm©Ð†3uj×”Ab ÅÙ½±(]B0ƒúÛP.øÑãwzF Ä… ØÜhó™Ð.QÜ”¥Êá„n¦CòMãzÅÿÞ§T‹l…îsï€NDé†-å²52G[{>×(ã@ì›y®kxô‰X‰ëù¿eÒeϱ‡ÈC!þž_ë½Xׄ'/oh T3¼/.¯|;ÆÓd–Ðîv·¡ÄŒfüæÝï¯Þ½yÿ–MïóãbrÌ\?ÑgtæT§NÖ¹+#üà2à²=ŸCWY¡N¥åH¡$JÎ`óAhðò€kÞ0óÒׂ^ Û€ƒ.OüüxŽöíSì~ R?îye ”`Ö
-zkÊZ˜m´ùðctUI3$Q5+Ý.W.E]眅:­+±µžÑ¸,íÇG=ÇüÈ£'$Pû’‘
-ã™ôFí`…øMŽJ6ºW4r»Ã©¢Ø¸@üPUFt$}$Âljâð~1ÂþƒYOdØUñÈÁP°/hÉ÷c–WHºÂ62›úÆeĵ%l'Y‹®¢ùíÒ4¤ÒïGF~iK#ûD»—7C¿@ùFƒâÔhæ·“™ˆ:/‚q`
-æÎfà+V7ÿƒšEÑå{g
-VÑ–M²a7‘4î+®ìW —u¬ÇuÕðƒôçÚ•;ô×é‡k Ùèo-½8„®pC¶±Æ˜ àÅCšß+6«Íüv´¹Ý
-ÇZGJŸ.)Îí÷öŒg>&oM‚u܆Ù¤|—n›¡³¾hœQ&€°þ
-endobj
-1617 0 obj<</Type/Page/Parent 1372 0 R/Contents 1618 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1618 0 obj<</Filter/FlateDecode/Length 1347 >>stream
-x½WËRãFÝó7^AÕXã~ʤÊf ñCÆJ±Y´¤HjG-áñßçÜî–‘…™"›@¶Õ}Ÿçœ{ùç¤O=|÷i2 á˜Âì¤çõht1ôÎé|:Áë~
-I±y0NÞ>˜û'Ÿ¯Ï©ß'?†­ñtB~D°Óë‘ž.bÚ©ŠÖâE’ÈiéS&Âu’KR9•kIº
-rYâ¥(ÍÉm¢×T*
-¤yœªP¤¸£KYPP¨­Æ_ÜËÍá&£D‹ •gþÓIºý¡7@
-Ë¢Ñl*M©|‘)}¡ž ô‚úè7²;4qöGÞÄ£•«Oµ¡9÷€«ƒ¨}½½™-–öî+ºƒ‰7æà]÷ $¢ˆoÙ¾ ‰/²ÐÜgA÷IÁ&c㫭ƾ¿Y¥K”¤äœ‹ƒû$4‰º\®ï‡õt€ñh¾£HÆ¢JËO‡ïŠ$Å®ö|©ò²
-¥ÖT™ù‹®ˆ(Äb
-]a§ÚŸkub#Âg¨¢ÓmôŽòŠñÅðÚ³ÓhÀÆÞ9Þc!CBÉ<”ôp$Bc–Z+Le½VUÙÅÎ.H-¿uØÍáë@Viä/
-endobj
-1619 0 obj<</Type/Page/Parent 1372 0 R/Contents 1620 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1620 0 obj<</Filter/FlateDecode/Length 1591 >>stream
-xWMoÛF½ûW t©HŒ$˲] m
-%¡Õ{G;çkO_/÷;-áÇAÜîÍ
-Ý]“«èi5ðŒgR篸¨\B|Ô”»¹øfmQØ5r”
-KgJ Œ¤tŒRWÆerÄ`3Bµkcþ<p/aJ¥OAT®Ê9̯uêÇBëW,‰fçK0@ž¥ÑšAe®P°Ü??Š‘›šPóŠÚf`‘ÀÇ”T¹wR„·ü¹“#7VQ«H&KšÌ‚˜Œ¢³±0Ý%ÑýÎå ™
-• ›Áow˜¡×
-¢¹c.cI0,®•Þ²ÈñC2”ml€p‹C+‚AcâRϵêôÆ8¤wŽƒ¸ØOµAãH?à.P²·Iç"£² @
-endobj
-1621 0 obj<</Type/Page/Parent 1372 0 R/Contents 1622 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1622 0 obj<</Filter/FlateDecode/Length 482 >>stream
-xRËnÛ0¼û+¾Ä9˜mYrŽ Ò=¤ha¹øBI+›±Dª$U5ßeÇ© … ¸;;ý1‘Hø’ÈXf¨ºI"d2 ¤ëœ¿|;Bóz°J%ÿ^Ü“›Ï·9Š†±²µDQƒq’E5“+!¯6Ti‡€ÒYUWʨºvä=ùëâ™ARHî óE.2†™}iðbCa´î€‹¡0M¦(•§úo0lgu _ªë[‚n ÈÔÚpg²½FØ“‰°uÛ§ð\¹då<·w¶l©óOÚÔvôˆ OLaçìÐ{Ô–‰à‰: ?ô½u¬ É•ÿHËÔçYV•í Fe*\ÌeoF¯ÍŠÏê­µ‡8p´æ*ðÓÄÑ­³åóe*ÒÈ:z-‡6èWñ&kTõƒ7ª+ O<:Uíµay£{t'°SúTàöê' Ï:}!ÕÇÇÆq¤±Ós߶ښ™ïJQYÓÄÒøÖ»÷‘: Ñûùv¶âhcJ5¥[ÿfÓúm©dÆë¼^B®òcÄ›»Çû;|sö™ª€[ ™ âÜÈt~j˜çÉíÉÜÿZä4[‹lµà5Ž‘È<¢}*&ß'¿˜ßendstream
-endobj
-1623 0 obj<</Type/Page/Parent 1372 0 R/Contents 1624 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1624 0 obj<</Filter/FlateDecode/Length 1137 >>stream
-xV]oÛ6}ϯ¸)K–ì8n>t[]äa¶x]‹u(hŠŠÙH¢JRqüïw.I%Š‹!KD/ïǹçžëïgÍñ]ÐUI‹ÉölžÍiqy™­i¹¾Âs‰«¨Åz•-N~Úžå›×TÎi[Ã×êjMÛŠàgŽ7òüç½è½²T¬2ºñBÞ‰]£èãæ†ZS r¯¶ß‚ƒâ*:˜-–Y ç¸QdtÝy CéµéHtIÓÕúv°‚ßÄËK*Št¹¼ÊV|ùFwR‘íNÐ"›_¤G7ô½±Þ‘›¦òåü£¶~ m4’»9:¯Ú/¯Æ ‘xðÓ ç”#%ä˜|”óä §0§Y±ˆY )•sä÷Š†N?PÍ]ðˆ—v'•ª¦(d´ÝkG2¡%ͽ²ŽDÓûž…
-D.²å¢¤Ä5Lg4ãž®²ùê’_c¿t f^i—G’<š<R—Ãu.ê‘[ÕB¶°€ sÙ§`Æsœkb.÷@0â°z³”ê¢S õDÜh>“2Á˜Îg^ˆñÝ(dá¯=ä20MtGl&ŽM’÷ËAãHÅQØXÖQ±£0pEÕ¨D“ð“÷„‹°Kä™ÛQ©òø}oâ†gÓówIjV“Ež¶fúkŠû•5ɪÞ8=êÆ™ðñåqo®?ýú>‚4zœMÏO}Þ)”mU’ï×é‰ÇuÊ1x\,²b‰ÏÕÿûœ³\­³Õe‰ùÀ¢XsŽï·g¿Ÿý »é;endstream
-endobj
-1625 0 obj<</Type/Page/Parent 1372 0 R/Contents 1626 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 975 0 R>>endobj
-1626 0 obj<</Filter/FlateDecode/Length 1270 >>stream
-x­VMoÛ8½ûW zÙ°iKŽ?’›»mŶE·ñ{(PÐe±‘H•¤ì¨‡ýíû†’[×èe ˆ‹äÌ›÷Þ õu”Ð ? ­Rš/)«G31£Å<Áçõz…Ï¿NQ®g3qó«…t½É/\̆ŒÒv¥ó•XPMéz-–÷ŠîGI*Ö”& ¶Ô4Ÿ#Qÿ…×ξÖÀ*VgkŒx"äàÛÑônIIBÛ5.×+ÚæÏŒ¶ÙÕ¡ðŸÊº¬RŸwÚÜ”óÚÿ|û箇s e’ÌEŠ£Ww¯ÿyûª_>…œ¯_F ¶Íʧ WËG¯¿©§ ¨³ªÍŸ>àç\»§CiìÿR憒k<*ãK~•,E*æ‚Œ
-2Èêágt3š¤ì«Í÷ TÛ¼­Ô˜B)uU‘’^Qf'êQû L¦Èäe½“$Mþãd¡+E¾”N›=yå:S^pFγìmòƒ4Aî•GȺ‘Nå,²!ju¬‡q˧QÊ<e¤b¿@«åVyó[  Hîl‹’SØ4M¥^ÚvH…u~L_ZèA©Æ“5H¯ ùÎdœa€`j¶\Äð¨U¨¸£Þ‰ÌšâGB ô8úSTÍ»K£ G…’*°5&`$î
- !š†1âÙNW:t³hMäKÆÒtó°„maPè¨ë¦Òà"o#ÒÖ€ƒØ¬GL;½;õ#9ëƹH½D/îÐUw÷™µcåþþðæ–ÊšÛéôx<ŠÌ{dWY×
-•·ÓþÕµrÓ|Uø©6¹zMÙ dœZîEG¯œÎèMä’•×=§±}ØŸg. c©³2 Ò ³F…Ô¢sóV*D)ó‰5xÄýï;ؤô: œ„x­p w‰6–
-™¨ÿÂѶ^óð”MlXK€ýp¼ãC¡ ×q'誃•i §žÀt8äÚ,´<¤€ ø8`ßr§
-endobj
-1627 0 obj<</Type/Page/Parent 1372 0 R/Contents 1628 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 978 0 R>>endobj
-1628 0 obj<</Filter/FlateDecode/Length 401 >>stream
-xeQÁr›0½óïèÌ
-†³Wr¸i^\ó 8-6^}Þ=Ý¡ a¼Ë²yž™õ ‡`ÎÆMžY÷-‹…9ÒB>xÙdºPÂxHŒÎÚ6¥¥ì ôÐÛãt¢ëY‡}ßbîŒê0yí:/{<¯H!Lò„ÖØ¿ú ûç´Z†ÉжWaN¢ðÂEÞ ö3+©ò4vò+ÇÊ÷íE $‹ƒ¦t?ù³ Ý¢ê§q´.0üíâšôÿè¥3Ä‹¥ˆ-´#ÃÃ1úî¥mb?¼b#‡'3|g—F××FsA«Kð¼bõbãþýÃ=>:û¢UÀ«¦^S0vQú» ÝäÛˆÿoˆ•¨™X4ïxZäQïm“|J~Ú ±iendstream
-endobj
-1629 0 obj<</Type/Page/Parent 1372 0 R/Contents 1630 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 985 0 R>>endobj
-1630 0 obj<</Filter/FlateDecode/Length 1458 >>stream
-x­V]oÛ6}ϯ¸ÈKS –#ù+ÉÓ¶né
-ÅÖ¸ ô…¦(‹µ$j$eÍÿ~璒㺆CàÄŠÈûqι^¤tŸ”VÍ–$ë‹ëäÿ9þúøî"»É’-–Y2§šæÙM²ž*zäó´XdÉ’æ7+|Ï𱊊ðb¾œ'Ùù‹å,¹…³,¹¹,Mq">æf‹Œœ™›¥·ð‘-Rüæ(–¸ŸøÚOë‹éý-e×´.ÏruCë<¤ÿÈ«·¥h½²”®úQJå=Šz#È™ÎJEÒäŠöZÐÛϯ×_ƒ­tmMfœÃ:¿Âå4¡÷·&ï¤×¦‰G甦ÃÑl…èp4׎rµW•iUNº!Ѿ6¤š½¶¦©Uãúy8auNq
-c‡· 3duªD$ê +BØ'<·BîÄV¹7
-=B4‡ÀÙ }Ø?u´>VÐ'tŽôÓǺû¾äVO6ºá‚8òòOL¢ N˜Ä£1$û*‡pªeæRPcl ÔaŠd¥Cã $nõ40‡u'K”<¤ÊüYS‘a5ò+´¢3"sC½öåËäÊ"ôEÓyêKƒ*óVÁ+3¸Sªe+5uøk(Їüð™kæ7Ý B‘3n­*vNµò¥ÉŸ+Œt’à"Çy€ê‡÷ÆxúÚ9R8–å(ñÁéÈí‘¡¡WFäÁ]…0qá<Áú µF£{3;Zõû*ú¾OäDÈéL“ ?î ³³|9»W¿šžÑÙªàóÔÚìbÓDþÐD…ï9G´cÐÆ·Þ}øDï~{à‘„J&î—× }0
-ËådTó{,èÞ`yܱ t¼á¬¬Â™¶^x¬Ž§«çFBhjÂê,bØ÷°ª%ÄNñx\‘>v±õ˯§÷‹“ÕmXDØò$§»6ŽÃ;<ÿpÜî¸}Zƒ²EÏסT¦÷ãz0Á@S|*ÑÃAº|loaàS+œëw‡V…§÷éÃLǨFƒWǤ°_óB{…Æ<æµ ‹æÿœ•vŸoã`XÇÄf1‚éýÍö$[Ðd1{ïݳçË›d¹ÈÒ²”ýþ²¾øýâoõù2endstream
-endobj
-1631 0 obj<</Type/Page/Parent 1372 0 R/Contents 1632 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1632 0 obj<</Filter/FlateDecode/Length 593 >>stream
-xu”Ánâ@ †ïy
-«'zHHÊiéR´—•º"Ú½Tª†‰CR%c:3ñö뙄.´Z!"’xlÿŸó$ó'y
-“ dÄQ ³IÂ×ébÎ×”¿¡ ó`¼™B’@^ºØl1‡¼
-uÿà‚lB\ºì• ` DË
-WÐÔL€Ê¡èW¥>Ð\ê—Ôq*R^ÐÝúŸš;8ˆ=÷Wú7=íîÀÔÖ—‘Ô¶|Lã{çóÀ,}*Ökóç‡Á¤Ì[cƒÂôs¹P¦®a)¼%QRÓÐÉqqY¶<ÞÌ6W¤Ýø–ƒúˆzÉ÷ß|ßéýrÌ·šÈr5lW?W¯ékÚ›å–ï•5þT¨Š†3upnÊ-jFS÷ÐiÞf²jÏsîXŸóã—î¡ÔÔ²µmÕŸþD¬ÇüáõeßÖ´v‡ÂíKŸoûy³&Qæü7 ¹ˆ%SÞÃÅ’tÞGxð¬é7 Ö$;çfakRîd˜d¼¼| œÇÞÑ•8X&’ÌÙnR¢1°õËx½pÇZ
-endobj
-1633 0 obj<</Type/Page/Parent 1372 0 R/Contents 1634 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1634 0 obj<</Filter/FlateDecode/Length 1413 >>stream
-x•WÛnÛF}÷WLó"h‰¾Æ/E›K[4uZDEPÀ/+r%®MrÙÝ¥eý}Ïì%¢7MaØ°È™sÎ\ô÷É’øYÒuNçWT4'‹ ‹,§‹›küŸã×HÚœü¸:9{ÿšò­60¹º¾¡UI8¾À“bú¦“†–7ýdtßQ#ºNµ[úùãçÕÇÓÕÌ/h¹ æóü.Våô“Æñ±r}ÍZÐ9|Šº«å3ÔÊm®Üômá”nIYOBÕb]ËŒV•¤¢7F¶Žé*]Òý´V²Þ“Ó‚æËóศD»•÷§xƒP[±•ä`ïY±w\èoK*D]Ë2¤qÓ˜’mÖÞ@–ʧ8Í¢¿ü*»àD9¸2Ö‘jœNXa‘"èíÀýèðNÐïoßÌ8W Ç!Žc(u#– þúhF‘Þ„'`6ÁŸP@Y¡Ûx ñ3e­ìºõ¸âc'Œ
-™*¸æX8лÕÙçü×çW ŸòñlD)IìÄ>£Ï•„
-hU¼~T@X´{¾Ö¢ÂîZ³€µ¾?`ú¶etÿQ(*”5Niâ%ꯑÍ0iÀøÜqê®êÇ™OT[I£Üä+ÆH"añmPl“-!bJÁZ‚FÀá ¢e{LÏv­êF>‹ÂE.-ê‰byàÕÈv¬Y/7‘Tdœ4 ôÅ((ô‚•½aÐ=õè£Vé½zzÅ‹"Š82B÷ñd”eðñïL$ž%Ñ;_–2ÔVdòå0FžƒdiLÍäkŠ f­·Ûî†AE?©1ÿ¥{qÜïvº-!@Ç=ro*Ä×%bßëÞXÈbXB¥¾œÛ(—1àßcV 7±<jÈs`ï Çž§À‚ú ¸¾UÏ¡ÐQm½í½ ú;9{ŸºúôLºâì¥p:£Z²;žbÜêX'eÃösŒ ðrºÌü}øøeDŠÒËÊUPY`ƒÙi{i5=ÆÙZÒqz½GK€Ò¹“ò¸¡¯c(£¸fºB‡DSi„ÙÏF8y„1¾ÑÊÿG~ØV­õ£ïh· —×¼kÌ1óó‹0ƒCÚ·Ï·—‹ü63ã@‚Iš ÊùuvŸä\.ášßD‡Ò(ᾄ ·Ú¯Ngߢ[Ð4®÷”º$ã7Ž˜EÚ58‹¸I —štTÕöÍû¿wœTºâ<$5Ï/i~™g¼ÊMQ”&æÌ…?¦|‰p¾àÒÌ ú.’˜.ÿ¦ÊÛA·‰
-šqA†-èïüf­0ÍÀøŸ™£òxÆÜ­D!8o%jŠr$>=°O0™9ó:vÊÔÌS;½Ÿ"²4È J/T;–ô±‘ËÄÙNµkÕ–\dœÛN÷u'kÜDá'%'E…4Ž1,•‘F¸Ÿ¹ƒÁ¿«p
-4¦Ìx›•ˆy
-oƒv„ª«ElùáfÊ1tPÚ·ª+4ŸpßÜÅý7•É@“‰^ýÀ}Fé>²Ž}Ú¯LºÿN€ÍB¬1–Ò¢biü§ÚŸB¡Þ 6YÈêý†ïW7ÙÕeÛ]~ÎW½[üqòŽL)”endstream
-endobj
-1635 0 obj<</Type/Page/Parent 1372 0 R/Contents 1636 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1636 0 obj<</Filter/FlateDecode/Length 1432 >>stream
-xV]oÛ6}ϯ¸ÈS
-¤Ší¸Nú°‡6k‚`kÒ-ºJ¢$6é’”=ï×ïÜKÙu”ìAÃÉsÏ9÷\~;šÒ?Sº˜Ñù‚Šîh’Mh>›d š_^àó ¿^S%¦‹¼_]¿¥Ù„–öZ\\Ò²$ì3Á7ÅÉU£VQ{š¾ÍèAu¹¢•ö•ó²…&B¯Ã«åWÙcz‘öx}>ÏfØ勦]¹n¥¼ ÎoÎi:Þœ]
-F¿5¶æ·‚®ŠLÜ! ´Ñm+o†ÆõmÉx'ôzzžPz­ÚvK…ÀÄÚÈ»¬¼«½êÅFEFƒš‚ê4?Š®p-ƒÐÔ¹A±* öPkeZ•·òRZ®¨2ø&zeC¥ýèôýþ\,WRÅa²'zá WA—ôðñ=Šcv²aÙ"›3{·‰‡²‚=j@Rµ2ÿƒëtl˜›Ö<jRt·äí?WŸëa7®Ì
-=žµXG¥ R È¡¼ÄÙzm$þ ÊðÞHºçgîX¥Nm“¹Ÿ Háh ÞJS»'—¾œ„¾hHºÓ1×½ùò
-œŒµK¢‰·ä
-+­ËŒnA±¸jg7úÖ›¢GLåðU¥÷$·twýpJªX[7øÊ‚²[ê¸êR¯´-9ÑŒn±°ô ±Bµ8Ø­`0®tR|ï8°7ú¦òÀ ݹ5úᔈŒ½[¢+V¡^ éíQCãÉ,w“’±$6å>Ñ´q> 7o)ô`§€ùES×lÈJæ@,R‚³ÏðgÚc¨R̆…£ÓåË ÷—PzƒÒ÷eÉ$ñ9kdŒC($®BF7xE%Áΰ><hVhÑ'P9È$êh"vá2EnÚÀïOÐ…ô0ý¤+‘~3„¦+u$·Šæ?kã_²}—Ã&®9‡‹Q&LXÀ<5'rÞ mšc+ÕAp ‘Êý?"U¸Ûj 2_:8'ÁÌ8ƒŽQ"‡v"€4L†Y
-Y,Íëû¡þS6È|.oèò¬p¶’¬| ÑñSHÇ8¿`J™&>c¿Îï¹)T­ÑG¡ðV¥Æ¡uy8ˆ)IŒ²†¶2“žL®ݧD°1”T-ƒæ9IÞÔM’§S’´pþ>Ù0,q<‚Çïr‚詘½þ¾gGïy$U©1OJOù–¾öñAÒ"Í¡ÂyÏ^`Y
-.h.ÏôG¹¬„³Ç”ÂÕˆmPàÉÄxj,Õ¹ž½ƒÕ*>›jZÊ®6iÌQ9Ì¥¡3ùÞ2äBÀX/zÕrzá 8ÝúMÚßs)9Æ-†¾w(¦r½›¢inª¶ï¥A0Ä]®k\€ÐOˆp˜‡åâôð¡ôQƒBÏh¤@ši›ÆñÕ "&*ï:^5²ÎÀÕA’ÉÈd~pc2òEä)ÜdbGö€ƒ¯W{lŒ(g·qý£ƒ ( {v}ùýýf‘nÑÿ÷²>_\f‹73\÷ù’>›óI–G¿ý ç0 Nendstream
-endobj
-1637 0 obj<</Type/Page/Parent 1372 0 R/Contents 1638 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1638 0 obj<</Filter/FlateDecode/Length 1322 >>stream
-xµVMoã6½çW |i²°µþ”C ÚèvÛÆ@Q J¢,n$R+RqÔ_ß7¤ìudoz(Š$@ ‰3oÞ¼yœ¯W3šâgFë9-bJ««i4¥x6æ´Ü¬ñÿ¤Ü¿XÎo£å¥‹Õòò‰Ù&ŽâK'V›óç÷Û«÷–4›Ñ6ªx³¦mF@4Ò6½ÞÊ’y–M)êZéíMód)‘ÖѾš\!ÉÖRfø,§LÙ':#-I"M¥µ$PŽU•*E3¦B<s$í¨TΕ’džËÔÝl¿\Mi2[ ®mvý:>‡7ZðTmZЮ‘ÂÉ
-\z9XÙ0j-wÆ)Î/hT‰Uµ¹Fh‹°#(äo9†¬Ú[B-Îú8ü˜»¯¥hÀj ‡O÷ƒzSSU ÜFôJM¡ Ë Ù‡<>ŒoÁƒ¨AžoˆZË¢äŒÌJ?ÒÈ·bPzÐVI”Gô«AA}oÑüž¥z@ÆPmyr†(xJj©Í+ØìÌÅQGïÅïB-!JD[ÔÐs¨½A—Õ3Ï Ž åÆ@‰„¥y<òõÏ© £MÛpqàÛ3¶î0køÊôM:'-=^ŸpòxJ ÃQkUðeYS`ÐEG˜ÉÜ4û^¹‚Ä
-m9÷I
- ±A 磊©æ¹Ldp] »Õª|“¨8¢?¤È¨ûïò´¢®ÿOlŸ•QgÒª– ™‘ß{¶²2Siö“v¤Ó.`÷AŽçÙsûJAÝ@sia ƒ°<±¶­kÓÀì1Å…Ù³Š"ï|aÂ*ñšAϯñ²\D ’XܘŠD²n¥aFÉ0u¯¹ â ÓãÅ
-Bâcß¾ø ‡ñUÁôИ#§g#õ`‚6!YdÆEÉ”:`;b… k3êï‰û·huêÁFÀ§ùfñûFDð *„â"ÆÐ ZM ]tPø¥#œ?)6¢Ïš/k5w%‹˜¶Þë:¢?…Ûà_Õº?|öŸä¢¹ý_õú
-ñ›‚ÐŒÛå;‚}`¯¯`X§‚Ùç
-Z¤²A‹^v×
-endobj
-1639 0 obj<</Type/Page/Parent 1372 0 R/Contents 1640 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1640 0 obj<</Filter/FlateDecode/Length 1475 >>stream
-x…V]sÚF}÷¯¸ÃKœ™XA€1îLLZfŒM<ž´éÃ"­`cI«î®ô×÷Ü•äÄÄMÆÒÞ¯sϹwÿ9 ©Ÿ.4SœŸôƒ>_Œƒ1&ø<ÀŸ‘”6/úa0:~ñ!:yÿñ’ ŠRøOBŠ‚Ÿ~Ÿ¢ø4¼ &­2]Ó4S²pömô#
-q-Î%§w…¤R« Ú
-‹°¥6N&ä¶Â‘•Î©bƒ/8d´Ó±ÎÈišÞÝÏ–7+2¯ .èæêvqu; ØI”‘ §bŽŒxá0p<[JxW9ÜídŽÔèóijtNaÿé½eçá9úü6h-cÔË9Ù
-Ö±krÛ*KËé ûádl÷á˜ÖÂÊäó[ª%Ðö‰SOµ¡\ã{"œhEÊŠu•%oeÐWÏ‚¬ÊU&Ì«Y76k ¤Zžáé‰FÔô+ºG¢H¨—‹=ísåðlÐMzïHÖñA"®(6ÇÈvwPÝhÒjbXõ¯ìQ®6[G"³š¶2+½Ý·t8ŽÈÀƒË–7ñþŸž+™?C‚ÑËrm9F-–’Jrg< „µµ6ºØ#ìT.z°]¦`„iiDŒö‹Œzeg“ÉÌzGØÖ*Ë:B ÜXÐ'Ó. Oºjå‹•…XgÈlì=|œRl¥ë‘.}Uáß,Ä“LU&ˆJØZe«
-„äœ^×Gêd|Þ‚µÈ §|jd­4ÐÄ^jEȯùÌÜÿä^ä%TE¢kë9ù¨ÍÓÆèªÓÙÝ(Ú‡åUìe 1BkÑtÉ‚Å“\qS&ë¹UÉJJ:èÊt$:n&Ò •Y°½ R´¦Ïßü[ìV
-4ÕT9l!CV?ãü˜>nZ€=y¾Q2yœß^ß=®æÎ<çñd5ûm1»ü#ÉûF7…ÙHn28AèÕ
-¸bZÚqŸy霔fü¼³TW׋ñt-SQeî>Þ5wTøk±BJC§`"¢Bx¨ééÕ§U4[óÛ91mÞ²¯}ö1¥7j'™“kµéˆÊ“‹G¢‹7Žž
-LÚz{èÜ5cq ]è?êÅŽ%ÕnKߧÛ>§t”Wñ¶kö78Q­`ÛA¹4ùù4'££ŠÀ·Á ¥;Tl^
-°Ì°ÙŸ7ÆQ\ˆ»øº@:É$F—Œ¼ ÍGnø<ì-Áj^~x¨ù$¼üÚ9O½Æ@8P"KY$íÔ`zylAè³ìç&“ÙJÉá¡ø=­õžÏµ mØ®=XðÕR…2U<7u ®ÑTÇ[#€/M@6Du˜|<‘C;¬J¼ˆù)ï…˜ùÜŒTg€šßĺˆ³Ê‚¤ö—ÕŽCsl É<°‘«2{ܘ¬¸º®ƒ\ÅF[L
-¬Jl>œòìᬎŸNñŸ3ªœÊ”SòXßõVˆí¦þ‘b§ºHÕ¦ÂÖh\žó”š/A†²Î<oJ¿ßYM/øÝÌ1ˆ©²|q@[7¸;`(f™LŽ8¶ˆVËÙìÚCÐdÕh •Ô‹›
- ]Fà<\áo'Œo©éìs©M§Dj¤Ä’7Œwp¸»
-51} \íÚ¯º¯ã¸¹oøؾ‘¸à=æ…Ø#}º—9´ÆîÏpÃ}-9 âïøú|OºÇl}í(¤q|N¯*§¯•½ˆñ«xaøªÙ‡ $ø]gòZ:¾X½f9úÞ2ÂƧHÓ wræ—²ïÓs=ç?±9£ßï–+^ä8þÞêözNS[­pó¡þ‹óÍù÷'íµ6áæ<Òø|L×ÕÕâÃ-þâ«ÓqÅs·Rí÷íY8ÆugýK߇WïÍ£ñ$ŸÚV ÆœÄ,:ùãä?[q³&endstream
-endobj
-1641 0 obj<</Type/Page/Parent 1372 0 R/Contents 1642 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1642 0 obj<</Filter/FlateDecode/Length 888 >>stream
-xmUMSÛH½ûWôžBjc1ú°lrƒ
-ä›5íKB»´/.¶äm£Jzi¬dÛ¾~©È׊¯:GÒ¾1MåÒIê2ŒÆsè SÝ5u²T$©lªJY¥ EÞ
-'éÂÃÎÏÊ“éù%.¢­'?X~<m‰ûÊ{eA«¢SãkþƒÔ¯¿ñgBMò(cÔ-(* Ö`^”e5®WŒMVjNŸ𤔦i38 ê«mY.è’tû5Yæ9%âᆜ²
-±˜ØaP}Øò’r!~Dí¨ü9Ñ¿Œyf?¥'ç±rLä~¿ƒÁ |úÏ|I‡}­ lãìÅÐcF¥ã}Ü’úÞp`j&
- „0M'Ñ…éöÖxS˜÷Ü›
-† 8à¦c€šã4õÊV¦“|)O¡ý èû€ëËŠŽÇ­iõ7Ó%s\ùMJÉz:|×7×´³æ ã¡ÛéDãÍ6/ç–kãQ^ÄWÑ&¢G8A_ƳÇmY¾‰òU‚Ü’¬¹v·_ü³øôpðˆendstream
-endobj
-1643 0 obj<</Type/Page/Parent 1372 0 R/Contents 1644 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I14 14 0 R>>>>>>endobj
-1644 0 obj<</Filter/FlateDecode/Length 1543 >>stream
-x¥WÁnÛ8½ç+½8 Är$»¶Ó[7I·AÛ$m\‹ÍhŠ¶¸‘DU¤šúï÷ IÅŽŠÅ.ŠÂŠEμ™yófüõ(¥SüKi‘ÑtN²::MNi6&Kš-xÎð¿U´9úJé"ÉÂq~˜.p&›Ÿ%3¾6¹Jgtaè£7NÓd:4À–aø‡ï_MÞœQvJ« ÌÏKZå„Ó§øFŸ¢qªÅû„Î[%œ®·ôGkº†n[³Ñ¥²¿­þñ&ÒE01žÎ
- ÛÐÎtžvà+ê'½×®e*͵Áß¾ÕZ C+¡ëÒŽuY<ŠÎá½ÓÒ]/¸Ì0ëãä¢wMÎEb{¡GZµÕÖµ»c%d¡ëX8ÜЛa éðt÷á”GþM1läuoý“²O*z¼y¬™¯þÐZÈÎP„á<ôG±;a‹5)8Ø‘5ðêðgÀÏI Y(°˜ÝêÚ©mË9Š£÷‡Ñi‚ak7²{rlZSy{k!ÆPišM¢7e¹1Å&ôVÕRp‰ƒk„¦åÐ3¢d>ÊBÔ>Óì’‹Ïá˜^\zÚú´±Ø*¥ïN(e¶WÊëÍžó’ÕKåçzcZ×Õ`B’KÏ
-¥ñžKŠ Óõj6ÉÞRoYÄb+ËaùÞ¢ö|EÐ׎eÛé\½bJã^Anê@wD&´™k °=![@r{I}ØáuÕt£È«JyåÜ@¡¨kå›wqjÍЗQLšŒŠ;ÆÜK©×ïûl¾ˆ½ß·¸ÿú.¸ÏÄ*ÔTÔ€b¨ÒW–>Pì ½vÞm–%Ùiês¿œú‘vE¢:ÐiWÑ‹hâúÍ"Æ]/ž>žyÕ ’ìîIh·<CAÇsûû[´/À]r™ZB¶½„q6{ûÌUïÒ7Ÿ3}¡ût­XÐQèGþäÃaæ´ì aø ×½¢Y¯V¹W+>Ï]-¨RÕŠÞŒ{|0G]ÛYÉ
-ÓÒºAϸbO˜Û‹óa!§Ø10Eç‹drûÓb.±Í_ò;÷ôâGçÜÔ+3¢uç\¸É›ç4Á“ÿÔlŸ•« zkóý€’Þ|$!ê6"‘ç!œZ=R#\qBjûj8xä«û{§ªæþ~cÌZxVÿ7T!Tt-Gb<„Ç‚DÁ~q "jçÂäÁ`~Ag˜qß¿–“gÞ=Ué€}Ü+€Õo 7ïZñ¤’h€¸(ŒdgÏ[”èa¹6±3ሙ÷« gË$=Û+ØHlqBÅšw+(iL‡Ô7Elëèª ©æyŒõz¯ÚØpï —„bÓµqý:ÜË‘Wî~ŵ…éJ¬¢k‡5À㸻ºà†ò]ÇÂzn/
-endobj
-1645 0 obj<</Type/Page/Parent 1372 0 R/Contents 1646 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<</I14 14 0 R/I14 14 0 R/I14 14 0 R>>>>>>endobj
-1646 0 obj<</Filter/FlateDecode/Length 1494 >>stream
-x¥W]oÚJ}ϯõ…T¤o4IoQC’&îí­d©Zì\l/õ®›òïï™]›¯Þܪ­¢ïîÌœ9gföë‰O]üø4 ¨7 8?éz]ôzøì†ø ð[JšÛçßëÿ׋ÞÅðÇ_Éz3À½¡7"ÔÅ# Mü>])zr¼ÎDz¡ï ¾*¸8>ëuxröæ‚pt8‡åÁ !¨n—Âø4€qüÐT‰0ªÜкTó4“úeø;ûäûng'bçi¸”$fꛤ\š¥J(Í$UZ&dÅ¥/8D¦•G!–¨â›, Z”ªZ7)-°_춲]êø=Ä˵c¤Ó|m(S12ðç6ü eé]Cb×qý:VëN5ûàWˆ »Zo›Žo=ì¦Nó
-£ŸžG9"Fˆ¥'¿ËÿAæcðÎÚ“Z§ª jU•±¤l.…>8èðXŠ—¢XHm}×2®ÊÔlHÍI¼Tù*ª°Ø—(à(ò2ÕÀ;SOî4Ǫ* %* r`mµ±%9SØ 9<²ðlßÿ—¾GIC“«g ù¤*Ë4‘…IçkËi¶¹´Xð~üϨg|L‹„=¿ éQ– 
-õ¡¹‡Éw©±~ÁÀeio/Õ r#³$Ûâ—sUæ 7 IJ¹Hµï«"%b®9ön%7¯Žð~ûîúÓç›»ËñÍçéøòíäö:ŠïÞ„Çxš¦q©´š›(ÚùE—U 晿eÉ´ˆ¢{§±X®o"ù°õbo ûÑf×PwžÒ,c½éj†oµMX‚oͲW3gš„jzZ*zÍÔb9 tä×€!G‘Å*_W†é†
-J‚^ø˜†|ûàÆ­ ¶ ùx ]Æ"^î©n
-< pFYDm{ð‘i6ô8<¶‰i#•I3¨Â‹^ҤРU«XÃÍu™rI`"·tP›¬Œš–(] G‰Ô9ðMd•¬±¬Ÿäb!ï…YîD€È5´Óëo‹JC“è
-ÚAk+"ÀµEœ)ã„`;{ƒƒ£×|ÄäÑñ]G|Z¦±«¡È¬XQjÑ=¹ŸÏ2iC00u}ˆïÙÉ„•m](¤¥–yžrïƳ³Lì †‡]/^¡~YÑø“^8uî¹=\]·QT*eÚ´ZCœÉ+Ê7Íóqzì0°÷½À¹ö¬4#o48gõ¢Öçbå&©&ôX¬âåê:“Ü A‰„»¶(6<q4J½Fwæ/þ€.wïxjA°Úªså@3´—ã@¡øܪ§#ß­[½º‰u_Î<#Á™5ª¿e[¡PÑZ’_r£Œ<ÿbWm¯
-endobj
-1647 0 obj<</Type/Page/Parent 1372 0 R/Contents 1648 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1648 0 obj<</Filter/FlateDecode/Length 1000 >>stream
-x­VËnë6Ýû+ÞÔbFòCvî¦p.‚6½©­¢-  CÑo$R©¨þûÎÐâ¾EÉ"Éyœ93gþî…àO³Œ#Eï&î]-'†o`:g£ „h>eÓhq
- ‚
-£Æªù(?ì.7‚çÈÌPr‘%Qà'¥%2hï¸áڃ媰u“×Æä¹i¨ÉàWvƒ¯ 5ú/Ú4@u´u…9gÕ•ç]Š5S½P„?¦"¡A¸8õDj
-Žï’ O«¥h›k8cóÂÉtÏódÍ€<¼µŸ¿0 ± =i¿î=aG‘cë<e+G14Êe¾ÔoÆ$¸¦ÖÎçØ3¶q:ø¾×¶ýn±Ã^¾@íxåú—Ð_ÕÚsõsæâ])ÑZQˆ3Œt1}ýù # xT¢2Öl<ble!‘18¬A¶·MÇËRòê|ü–8-¼Eš^­da°-ך—C¥±Í U<8#—;Sc‡;\~òÃñÉ¿3¬væ–43Šò67VþÏ*Üþ p„ï+µ2Æõ‘ÿ¤7'[ìcD¿ÿ§Äy‹Üü…Æ ò ˆFʾûôN3ú—û¦}ßÖó‰e?-7ö^pè¯w’süG49)]ð_bõùLUîs“c-s”v¬O'~Ÿ¦%öY,ô­à'“Ѽ{62ø EE†DOKÜWH6I†½HHçPs,ŠŽ•JnP²é
-¶&H+ý-Jð`•$ÃÕ%iß
-endobj
-1649 0 obj<</Type/Page/Parent 1372 0 R/Contents 1650 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1028 0 R>>endobj
-1650 0 obj<</Filter/FlateDecode/Length 2111 >>stream
-x}˜ÛnÛF†ïýsרižWEâ4­¶qc¥îEnh‰²ÙH¤JRqòöýg†äe¡(ô÷Ç9/w—ú÷" ÿ”…¥´Þ_øž¿Ìÿ|üå"ˆ¼œÒ(ñRÚS{á(vtw‘äžOiz1Xá{Á(ó ì)¼„RÌŒÜSà'^f 8MŠ®a˜Â·ŠÙi’‡H cf"˜ §H*4ÐjÐ<G>ÎTjLÒBjŒ%¤vk$êçTõAfF"`ÁŒDÀ ƒogh5h\ uŽjÎÐϸQÓj6å‰8ª¦q$]Ï
-ÎH[Én /20ð¥afÏAÃ-NDIP£5(:ï(’˜4hâ/m-¤…ÎÖè=…¡Ïƒ™©Õ qÆ9j4hžq5´àéjôž¢ÐUÀõZ š [«™‹z­ÍBîóœ•Õ ¹¿ôlôžbŒÞNÁjÐ0š»Î9[ š.sç¤ð8ÏW”™ïDužŽ=Ï×Qïd«ótÔèy¾3ç;ÚŽóuTç;Ñ$ñ
-J5ž3ym5}Öí`¦Vƒ"Žo<[ š¦üŠ9[£y‚!¯IGEõ˜¾£FcFAÀ+v¦Vó|Ó…g«y¾ñ¢ã|ýë‰çë3¥óu{*rÔhPõì¨Ñ Øæ±&5SŠE\«AcÙUf[«y‚ò.8j4h.=>G²ùζVƒÆÁ"g«AQ&èlÍdûuÔhÐ<áýÊQ£y¾ù²Ï²ÇÆè˜l첧ªrïàL£ž 5š'Èï‚¡FóC¬+Cæ &ˆo¨Ñè3²²¶VóŒTäl­F7>=µžSKÅ.b³²šûœá=ržå˜‹e(Èç×H•4ÒhP¼^™¥Fƒf|½±¶| ò˥Ǡ4R”ŽÈiØÆ9{vÔhP,då¨Ñh$Z…rgj5hñx5š‡ Kc¦úêDz #.žEV¢$g£A±i"+GŦ‰ê5Gæ³ÑÈ
-‡Æ;ÛZ­9/<ë«ñµžq‚­(ÉÙhÎJfä¨ÑðŒ— YÍÔjД/ŽŽ½’ãžCÞøcQ:_§AÓœ§à¨Ñ 8ªQ‘£F#nXð|gª û=߆Ç+JÂê‚(†fÌTL£‚¯Ú“©*g:SÙR 5šë àÃP£¹¾˜j4hÁ+ÒPI”Çø·bî±
-ÎÉH\à”옃]DÆðy‰bC…øW>'ø¦‰`†ïI"y‡TCìÜ]ù‰Dˆ!–¨dÌ˘¡F¡ô!ªˆ1â$aˆÃ86P ±ôä6…ý Å–Ñ“»d¨Ñì8âüœ­Ñ è%†â¨Ñ /WG5)|Nqs±«§‰œx`|ˆroS¾Wª`f¤´/3LŽ÷ÉN¿¢œ¡ÕH' ÑG%Þ¬dÍˬUqL…¸JɪÆ<c¼«¬„;înÎ×ÜP„";GˆãP/:UBѾI##\ RKÕVf ªÏŠ2¶U[GÕŸŠRŽÚŠ2¶U[GÕÖŸ>®$GQÆv¢jë¨ØøÖ‹;Ûªr¶3[CÕû¥ë囹tYëW=õÊPµÅ‚ÓËŠÄeâNTã:ª¶¸V»^¢ŒíDÕÖQµ¦XâŠ2¶U[G僉/¿Ú+~=U©­Ó¨7ÑCÕÿj¯äYQÆv¢j;SYÌòûÞ2þiAþŸíœBDÙÒgd$ÎacÆ ›+Ž\||âý©«h{ñvuqõ¾ Ð§Õ?ܤYN«ü^ƒ¿¬_Ýüåћáj6õ·ª½úOgˆ«O_†|]m^­Ê‡]Eí–®Ûf¨ša|ݘž”•‹'ÃÀ£Û¶ʇzWßÙ#~'º4üzûéo&—þ‚„Ý] OMýéF½ûãFÌ– öècµùµè·º9~ƒØ?te³.on$È">Ç(÷%á j‡§ª£ë›÷w´ÞÕS]'Ï#ßßËuÝ mÿ4=öÓi~¸zôá.¤kñÃøÄ î(¼}¦uÙÐ ­Ûf[?1£wW!Ý—Ý›ÛTëÚÎü1¦²§r L[0É_2XôS@ÿ"¢Ï¯šv˜B}~ý£†Â5ãG
-°QÀè};‰cÎA0‹7Èœ»W¡‘ßÇFÖ}¬zz~ªõúùïU××móù5Õ=ûjc+:_fÊulZtê±èСÿÕ¦«á nvm¹¡ç¶ûR7’®ôq£z=™
-üR‹ ñVíܧéļRVXŸBN|K›RpÚ>¶ƒg2ÂePé®Àèœ%ÊŸƒh©ÀäDó¦ç`6ÂìÌGøbr)Å‹s–ølÖ c-JNtét ¨õn¨w;¼S_e‘`ÃÀQØËsõ—9
-endobj
-1651 0 obj<</Type/Page/Parent 1372 0 R/Contents 1652 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1652 0 obj<</Filter/FlateDecode/Length 1452 >>stream
-x}VaoÛ6ýž_qÀ>ÄÅ–ÛÙ>uI·Xq° óPÐes‘H•¤âúßï)%©ÚµE
-½“d
-ªKá c+GÛÆ“ßKRá ‘IeÞ¼¬©­yâíÊ‘6 âè8õˆÎÆ“˜03U-¼Ú–2¡õ+³qf´J»çœg®–™*T†œŒ»áÖ
-UJD=—>;o¸¸ðXšJä̿Χ¨¨@r¿¼vä é¦ÚJëZ6¸WÌcDïz •V>²lÞ0Ì1°ýö„Þç©Í"òŠûrØzÔæÖYSK‡šðø2€ô÷Ro{¦*ìËtúÔý1ÚŽ/”cÈù¦V9W¶3,;CÌ SÙCPP"+¢„~Hr/׋ìA8šæ}àź–ö‚KžËL;¤"ûÝãO¢¬åõËT¶§J
-°UòÒHO/çߣ$A§>½ûðïd1´Ï</›Á[Á%º1Ã,(k¬…
-Ë#ÏåÍêìþ¡˜ÚʬlrЖùÏ..&Ó!gîål\ žj³5ùñ”~‡PÂ|`ÓYœŠeA`ƒ¤ÎLÃ“Í 0‚Ö`@«!ö(¡-SÂŒâÛÎ
-8BxÃz.DEpÔë (³ f–EÉ,ÂzÑ
-òmÕÌÏ»øÔÁâÜðJ£?<­Ì ZùM« ±¶9ß;0Ц#Ø´JYxO–
-7/ຂŸo­ÀñÈqÄÞZy ~ ƒ¶ãÉتe{¤\¢)ÑjY¨º™5ôáöÓ»åu7Õ!k»JG3Lö­=†»LOw `–8fkmN
-c&_ìãÕÌÔa Qwkœ|¡è¸Å†ã UU®s/ž2ø¹[wÙ],Ûëµÿ’]‰³„èS¡C<ÂeW®îuˆÃ#Õ¾ï¶WæI~ÆÃOÓù0õ6¿Z„ X4†â«b¨ñ0GØ‹WâY¼þà=-’ÙEŠ[7€')Çx·>ùóä?èÂ/endstream
-endobj
-1653 0 obj<</Type/Page/Parent 1372 0 R/Contents 1654 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1654 0 obj<</Filter/FlateDecode/Length 893 >>stream
-xÝVMoÛ8½ûW ’\ V$Y•=$›k é~ć.P  %*bB‘.IÕë¿”ä:Nì¹lKÔðÍÇ{3Ò·IB1Ž„)Ís*šIáòjå”-8Oñ5œªpc>²Óõ›õäòCLW´®€”/qRPâ˜ÖÅ”úO£¿Kš}™Úí—×,y½~œÄ4Kâh‰CgØÖž_lŠÂzƒäÕˆÁc
-endobj
-1655 0 obj<</Type/Page/Parent 1372 0 R/Contents 1656 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 1039 0 R>>endobj
-1656 0 obj<</Filter/FlateDecode/Length 1655 >>stream
+™å óâƒ>©4IV¦`·Y on>F7`5ì”1û×ÝupDˆZs¢ã¦#‚YÞ M•H«ô9JÎÖRµÉQVŒ«`ÕÞ}`s82v¹8_¨û˜npH—zø¼8ŽðDc5¹šNàÖèvÞ`~`—6Óeë;<º }‚Òß:/p<—¡
+hÀ!nÑàýà7€ºendstream
+endobj
+1376 0 obj<</Type/Page/Parent 1119 0 R/Contents 1377 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 785 0 R>>endobj
+1377 0 obj<</Filter/FlateDecode/Length 1443 >>stream
+x­V]oÛ6}ϯ¸ÈKS –#ù#O뺥-´[ã6К¢,Ö’¨‘”5ÿûKJŽëÛ†À±d’÷ãœsïåŸg)]â/¥«ŒfK’õÙer‰_ÿ>½=Ë®³dF‹e–Ì©¦yv\ o=ð~Z,²dIóë+<gøXEEX˜/çIvº°œ%7p–%×0—¥)vÄ·ÑÜl1ƒ‘s³ô>²EŠÿÅÇâûyu6½»¡ì’VòY^]Ó*iàyñîããê#½–R9G¢^ r¦³R‘4¹¢ôæËÃËÕ·`%½ŠV&3Ž~•_¼o¼5y'½6MÜ4§46eWˆ›¢Yí(W;U™Vå¤ á±!Õì´5M­ŸÐ/Ãë¨sŠ]Ó׋7¦‘µØ@_”up¥› =ìWõ×—ä {¾¤I:‹AËRÉ­nÎqVTÎж1=::—¦®µ?Ç©FõÇ™&1ùŽvÂjÓ¹à{mEcŽ$¢]+'Ä\NœŠÆ4ûz<Ø9Ñ—
+™:o#@ €ºŠùûˆÈR´^Ùd0îæŒØŠ×r#;F…ð,¨6¹.4»Ž)~´_˜®ÉIx*½oo§SÇ„&ÆnâÓTî\RúºŠTÝÐ1ŸÁ1>ˆÁ:ûŸ¡v… k!Kݨ§Ýd»†Cn»u¥eµ`Óë*2jUkœöÆî©0vX!Ÿcõ!EAX>b¸r+6ʽ¼²êr;ûŠ¬Û7âÊé›ö€vÝmB˜¨<ï †üz±wŒa¤td‹ówÊÂ'™ñhwBsiœlqQ¥ÀŒ‹j2K#otCÕôjý pÌï¦ ’ŠÎÈ›ÏïQ…Tˆ¾´WôøøHkkzÇé°$ª
+¯¼¡;²$Mã!Îî$xÝäz§óNTT@†ŽË5zDj6+c¶,¦¸e§¹ò®s¼1Vöm”§æGUuyÈškR¸mdŸ ë‚*˜eÖÊ÷
+]A4ûÀÕ vØ? u´>ÖÌgô Žôó§{ºý±
+¦ê×— }0
+geöìq?ákÑqcõÔHÍLØ}@}‚+nsùEš;Åëá2ô©‹s¨_^žÞ-Ž.iÕƒ-Orºmãø»ÅûO‡ùËmÓ”-z½¥2½¯ À1Åǽt¡»Çö<µÂ¹ÞXp·oUqz—1\ÀtŒj4xqH
+·g¾®^dOy-ÕòÎJwïã`XÇÄf1‚éÝõö$[Ðd17Üÿ~‹ž/¯“å"èÊRöøëêì÷³¿ëÚðDendstream
+endobj
+1378 0 obj<</Type/Page/Parent 1119 0 R/Contents 1379 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1379 0 obj<</Filter/FlateDecode/Length 591 >>stream
+xu”Mo›@†ïüŠW=90`;>ÕiåR%UPs‰­—Á&‚]gw±•ßÙ·ùP…@†¯÷™¿FR¾2,rÌ
+È.J“糌Ÿóå‚Ÿ9߆PG—e4½™#ËPÖÞ¶X.PV`û4E)'å®±86m iH8‚@Õ’N›7HѶTÁŠn# µr¢QÚÂí-[7žYÝIlRž&MBI°¹½^_•/QŠ8›%9'ž8±ÝrHy°Ø¡äîé,A(BöÆr-§ÕüË,œ‘f¬§¢µzß±œ!J|è˜cçE2÷±ü~ƒ’…æ" |,CaCÐ_?'ß¼¡·'>Èô& Mb3|8!›@¨ŠS׃r
+endobj
+1380 0 obj<</Type/Page/Parent 1119 0 R/Contents 1381 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1381 0 obj<</Filter/FlateDecode/Length 1453 >>stream
+x•WßoÛ6~Ï_që‹ÀVl9Nœ¼ ÛúcźtC=òBK´ÅD5’Šãÿ~ß‘b, Y·¡¨[K<ÞÝwßwwþëlN3ü™ÓuJ‹+ʪ³Y²ZÑñÃìð<™Ñb~Ìér¶Lnh¾H®ÉHÚâð æ/8Œ/ts,èruÿ¦øëOþ¸>»xCéŒÖ[8¼º^Ñ:÷¦x’?Ý6T‰¦QõŽ~þüuýù|ý
+osÊDYÊ<¤±ìÒ“­6Þ@æʦ8N:éUrɉrp[e¬#UU8/œ˜Â" DÐÚžûèðNÐoošp<®ŽCÆëJ(Ì+|úh‘Þ†' F„?¢€’L×ÝXŸ1û«5`×µÇ_a@•†öÂr¼9ǽSO!ðRY‡Gxn,•puµ+œ%N³Êt¨Dÿ{m­\L›ÐGç/·º’À`§2²®ÝnCêVU
+Ép´iå*¯GŽ,œIz’/eYÒVBÙšR>“•®mì°Ÿ$„äsS2t2Upͱp w닯é/ί>?äâÙŠ\’Ø‹CB_ Öˆ¾,™ÀÁŠíÅ I¦r¸$èL
+Ãxô—Xá´±£p*áó¨…¸F
+ž7þ®à 1êI•r‡¬ ­Ø¨R9V ]ø§9s”ov
+hU¼~T@XÔ>“ÖBa w©™ÀZߟ0m]3:¡þ3*‘*0k˜ÒÈS(诒Õ0i&ÀðÜiê®h‡™T]H£ÜèÆH"bòm!¶Ñƒ–ÇBarÁF¢Œ€ÄéE5Èö´</Õ ·Ð|™ëji¡'êäWÛ!g=ÝDdY‡ ãô ¥£ Ð &”·†A÷¥Gµ2PïÍÛÐ+^%Q‡ó #t_Œ<>þ¹±N=I'ôÎË2@mu•|=Œç@ÙÓ2Æfò-FО…Yêݮǻ~PŸØ˜ÿÔ- Œ5îw{]ç  ãž
+ñºDìÝBÕ0¢– Ô×sä2ü{Ì*áF–'@ :`|Á1¶§1°À>0®­Õs:ÔÖÚÖ› o±“‹÷±«/¤Ë.^
+÷M]· G¹ô8ëÃ;¡Ÿ¾OÂ(ÝvUÇríwA.ºÿ€5Cl0£â:¢:iü+ÛŸ‚`W½µv¶Jæ ¯Ë'¿^~„\^­’«eÚõ¼tÁW¼[Ÿý~ö7£@2fendstream
+endobj
+1382 0 obj<</Type/Page/Parent 1119 0 R/Contents 1383 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1383 0 obj<</Filter/FlateDecode/Length 1417 >>stream
+x…VÑnã6|ÏW,ò”Çv|NúЇ»ômœkcàZà€‚’(‰‰ô‘”]÷ë;»”GI[I K$ggfgùýhBcüLèrJsÊÛ£ñhL³éx4§ÙÕ%>Oñë5•ò`2ãÁÇåÑùÍ4Ó²Ä^óË+Z„}Æø&?yTm¦h¥}é|«l®É„ÐéðnùMÖM.Óº³‹ÙhŠ•'×®])o‚³ý;3šLúw¦—
+F:¦³ÉEÂçµjš-åk#ï²ò®òª k >h
+ªÕü(ºÜ5 BSëB¡ª0ØC­•iTÖÈKi=X¢Òà›è• ¥öƒÓ÷ûs±\IW„5Ê:œè…ƒL]ÐãýGÇìŒú=¦óьٻK<l”ìQ’ª”±ø\«cÍÜ4æI“¢Å’·ÿR~©úݸ2+ôl xªÕ`&H% ‡².
+gèµøÓ+Ã{÷ éŸm ¸c•ZµMBd|2 …c -x+L f ìž\úzº¼&h¡c¦;óõ8j—DoÉ °ÿZ5¦²t«­örÃIV€4¶H¿ðu `ZHé\°&°W›½ŒVZ#ºÅâªÝè{g"ˆ0•ÁW¥
+’BrK‹›ÇSRMÄÚªÆW&”ÝRËUz¥mȉ.`t‹…í° GªÁÁnƒ‰p…³â¹ãÀFÜhè›Êƒ´pkôÃ)#'»X¢+V¡^ éíA}ËÉ,w“’±$6å>Ñ´q> 7ï(t`'‡ùESUlÈRåæ@,R‚³ÏðgÚ£¯R̆…ƒÓkå‹ ÷—PxƒÒ÷eÁ$ñ9kdŒC($®ÂˆnñŠJ:‚~}:¹×,×>¢O r6<IÔÑDìÂeŠÜ´ß_  "
+çåaîIW>ºüIGr«hþ'ú¸*þ%Ûµ âJÐr¸Â~9lS!j"' ¦'ø0Š±RDF¦Üù:……¡¡– ñ­ƒeÉŒ3è%2h¿£taHPhbQÎúúOÙj ñµ°¡ÍF¹³¥¤ä[ˆŽ_B:Æù9SÊ4ñû p~Çí *
+¹70)ÕMËcAìˆ0b”T•iôbp è;%‚ ¡Ü¢j1¯Iò¦ª“<­’Œ…ç÷™†‰ã9~—<4OÅæÕóž-m¼C(BäT…Æ$)d0e[úÖq¸ɉ4rç={eÀ ^’,I1±º ’Æå`È"œVøJ~vÒŸ‹‡Ÿ>ýòán\f›óE܈9ËãÑ!wQ3?Úu:‡;òhê €‡ ÊAe=ôê½²Û]Žy½ržÅ‚åUQ0ç ЇȎ©pfnÂÇ£øèÁ‘Ò ÉÏ"‰B3Ò­eE|D˜¤)j´^òY
+ g†"øJÜ“¯èÃõÏÿ¿qÁü-{~ó/—¥”*t,åòÛÇ}$ô*AÿFá"Qò’ J8ßxL&\‡8Äzî_<At§–R­ëØ5X­â«I¦¥þ:ã‘Àý,ê{’ï*}"Œò¼ƒE-çŠÓý§ß¥!ñ=—’aÄbЛaobW»É™f¥j:q]
+ÿ>è2]áÒƒNBlÃ6,€p‡¥ƒj´ºE£ÿÓÛÔŽ¯kQz×òªiz®2LÆ$ós€Ó//àö
+;²{|¥ÚccDûŒë,xX@iÕó›«ç›óûyº9'/΀çëøl~5š¿ŸâKâd:ãÝ?-~=úÊ Èendstream
+endobj
+1384 0 obj<</Type/Page/Parent 1119 0 R/Contents 1385 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1385 0 obj<</Filter/FlateDecode/Length 1311 >>stream
+xµVMoã6¼çW<øÒdakýçÐC‚vš~Å@Q J¢,n$RKRqÔ_ßy¤ìu§=E ÄÇyóf†üz1£)~ft=§Åš²úbšLi=›&sZn®ñÿVR^,ç7ÉòÜ‹Åjy~Ål³NÖçV¬6oŸßm/>~ZÒlFÛ¨Ö›kÚæDÓ)m³Ëm©™gi+Ñ4Jïhoì“£T:OûRjò¥$×H™ã³‚råžH蜴ôü%‰,“Α@;NÕªvL¥xæJ(ÚQ¥¼¯$É¢™¿Ú~¹˜Òd¶@_Ûüòu}.o´$à©Û¬¤•ÂK
+:ñ.ÔáÇ<w-…3@O÷wƒN3S× Ú%ô'šÌ Ç£͇}B™@þƒ¨SA—oˆZÇräŒ,4JßÓ( 2Pz°¡«Ó$3ºHègƒ†ú©bø}³-Ð2ìüµeÏ Q°?µ¨Í+ØÃ]™‹£‚>DŠ?Ä^b•„¶è¡çþлÅ|Õ3»ËÐñ` „ÈDÊ¢<®aÁ†çƒ­K£Mk¹9ãÚì³?¸ _™^i祣ÇËN¯b«ÑqN¥°hË™ú€Á…±5‚¾W¾$1€æྊS —­<ˆ°]ˆv|&vo£i>]nN=i vˆ“Щ¤Æ ªÝ›5ÕÌ„CEné+ýÔƒ§9Œ~ßH?™Uبâ6Î:és¼zpuX
+ô° á„T²V¥^Népë^gg]ŒþÎãäÒ9¦rÂv´—P6¹È| ßàÌAR‚ÌîdüÈ‚a0û!$^ö-5‘…ÏH•Ð‚ƒ9rúÆF&ªbÅÎ8™RlG¬ˆ^mFýÙ!q&àÌ,qù€npþój>MÂí"!äNKqcè£&Ž) &(Â#®?i6¡_4Ígž‹-07l½/Ó?¬Böÿ«N÷‡Ïþ“Pc•#«ÿ«R_!þG©ÆYòŽT8Ùk„®M1Ú ŽN¶rQ…Ap¡;Ux;FPõ÷NÞc¤í•+Y:¤ŽHã“i
+endobj
+1386 0 obj<</Type/Page/Parent 1119 0 R/Contents 1387 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1387 0 obj<</Filter/FlateDecode/Length 1467 >>stream
+x…VÛrÚH}÷Wtñ§*V`Œ·jL6T›5r¹²ë}¤&–4Ú™‚ýú==’|!NR¾H=}9}NOÿ{R?!õ¨?¤8;ê]:=CŒÎð¹‡?#iU¿è†Áàðŧèèãçs
+Ï(ZÁ×pR”üt»ÅÇ‹TW4N•Ì}}ƒí€B˜°íIï ¢äø&—THcuNa°ÐÆÉ„ÜF8²Ò9•¯ñFF;딜¦ñÍíd~u· #ðÊ°qNW׳‹ë­ÅV’ ÄˆL8sdÄ ûAãÙB»Êàn+3¤FÇ+£3
+»-;OùÓÃû 9Ù¢rœœ’-q:vunei>~gq¾?Ú]8¤¥°2yxO•nÂ>rê+m(Óøž'êD‘òžb]¦ ÅYôìYU™J…y3ëúÌR©„–û'x:FâýN¹îÈêdbG»L9<ëu£ÎR¹ul¨Wˆ+òõ!²mÁ-TW…´Fu «þ“ÊÔzãH¤VÓF¦…?÷’'ýA ™gÀ•F¤ÀÛ¤Þ†ã–fÚ²÷Jì-%¥äžxk+m<h±ÇÖ©LtgÛÁ7‰£…1/Rêí™TneÚ9@µRiÚR!àÆ‚8©v}ÕeÓ"_¦ÌÅ2E&àaçîó˜b³/\‡tራrÿf&åJ¥òÇxÔb WæˆÅɼ-‰•“9©©
+¢"tF1(ŽÖ;Çò¨1‰½ºŠXý™é ÊÉÈ
+d|¯òDWÖÓð^›ÇµÑer³»4´Ë!ÊØËúƒ¼¢ñœ5Š'™Èãº>–p#Œ…”´×¥i3Ht\L¤*µ xN…0èI j
+"*´†š^|]D“Y0½žó…à(ûºÑ×~#y­¶’ɸTë–¡<¬xV$:çè1Çp­6ûV´m3f{ÒUŽþ£^LÞXRå6ô}º àSZKGYoÚf¿À‰*…³-”[‘BŒÇá°?T®x¼ Æ&Ý bó
+À×S]ä{/6Â6u¹Ò匼AXƒ`†M÷ðøtIÄ…ªóç;£•LbtÁÈ Z¡ùÈ Ÿû] c¬â©ïg¾‡ÂóÞ¯¡òhÑKL‚=%²yÒŒ ¦—À„®0Ä>xn2™Ý¾ŠßÑRïØ®ahÍvíÁ‚¯†*”ªüñ°©spÆ:Þ$øž dMT‡‘Ç94ÀªÄ‹˜ŸòU3Ÿ›±Ò) æ7±Îã´´ ©ý­AµåÐ…Àhäî{¸„Ë";¬LV\UUA¦b£-¦F€
+, \v°òìᬎ NñŸ3*J•SòPßÕFˆÍåü3ÅŽu¾Rë×Eàü”§Ôt2¬•uæérôW:«é¿ë91•–w´uuC1MerÀ±Yt·˜O&—‚:C¨Fc¨¬¼¸)—ÐeÎÃþ¶Â(ð–êÎ>•Z÷
+|Ñ©¼”Žw©·N¾?ᪧHÓwrâocߧ§zNq愾ÜÌÔï½Êqøý©ëË)3Z`Ù¡î+û³ÚþãçQ³É†¬É£> OÁˆq]\Ì>]ÐÜèo¾:—<·±ˆjßž„CìÖ8prÖ=÷öãË%y0ÃÓ^Ó¤ÞÃO¢£?þM®„endstream
+endobj
+1388 0 obj<</Type/Page/Parent 1119 0 R/Contents 1389 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1389 0 obj<</Filter/FlateDecode/Length 910 >>stream
+xmUMs›H½ëWôžâÔ<|˹ٱRe½¥­èC.#60df°Öÿ~_ÀÎ*AUØjš7¯_¿nýXE$ð‰¨ˆ)É©ìW"\¯éífø"(+â° t]àÿ4#2ŠêÕÍé
+6JZ=HF©µ¡HÐ^Zµ ùèË{AWÜÍ(L“˜‚8 ×ø‹â«n“Q¨Á¨ôzm¡Øÿ®Ï|©Þâ··ª=I@É'ÝS)Må1ÒXi*žn.í $"Èbø„5ð:ž$W
+endobj
+1390 0 obj<</Type/Page/Parent 1119 0 R/Contents 1391 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 790 0 R>>endobj
+1391 0 obj<</Filter/FlateDecode/Length 346 >>stream
+xe‘Os‚0Åï|Š=ÚƒiÈŽÕÖŽ·V3½ƒDK‡€ìÔoß ¨Äé0dæå·o÷%ùŽPü(±„‹(¡¸s[6¯~d,ˆ‰"ê"*ØŽˆs’ â)IA£@¢-%<`t Ä ¤Fa1ÔHcŽ¡¦‘CPêGáÄħ„OHR0o©ÄÕ`$¾o $MîJ~ó1*ðbÆ.ÞjÔwŸè0QKô'Z!áø·öÑÂD«8³Çg‘Jƒ)†×ÀÝlýAàéx´uQþÚîÁ|aµÆÆê9×ØÑ3“å•…f˦îmÝ_*åTÉâ±ò­iû,/«²?ûnæW²Í\žAVÐôŸ¶…åzµ…]U^Û¥{Ä6e}€Åé0Ì
+às™ê¦óôÜœZ膾ml;@O±Dª|þÿÇLðɤàx%ˆ×Þùb¢÷èþ¡£Öendstream
+endobj
+1392 0 obj<</Type/Page/Parent 1119 0 R/Contents 1393 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1393 0 obj<</Filter/FlateDecode/Length 1473 >>stream
+x}VïoÛ6ýž¿â€}ˆ ØŠÅv¶O]²®Ö&C,è<´DÙ\$R%©¸þï÷Ž”ìTi×¢i$‘wïÞ½{ä—³ ñwDó1Mf”–gÃdH³ñe² ébŽßÇøg%åáÃd~…Çï|ϦÉøõ‡Å‚†IûÃnñ€€1†¸œ!MþëŠãÊñV_¼»¢ñV9Îæ Zeá;Þ¤½;c½Ø¨BùÛտgï¦4Å¥ƒñXVYï^”A{cŸMøUe’¬Ð[I&§ª>7¶t´©=ù$¥½´¹H%‰¢oNk*kžy»r¤Ç‚½88N=¤Áh¦¦¬„W›B&´ÚaeºBRj´J»cΫdªr•"'cÀ.F¸1@ÂQP˜Þ’ÐÕŽs\J+½¢Ñ¼©t2M¦\éû»‡Ç×4Ì“YüxîH•U!K !ÊwuÕ¾²ÚZSWXæú$m%êóÈ/lFë ÒîàPŠJE– g´[¿á2%(ðÏïM‡Ž“rUHD½>½ˆo¸¬ðX˜-ŠãÌ¿¶§(©@ò°¼qä éºÜHë¸KÌcD×: •V>²î­ß0Ì 1°ö„>ç©É"²’;²ßzÒfÖYSI‡%èz @:ˆ;©×½SöeF:}îƒòmËÊ1ä|]©Œ+Ûœ!f©ì ß+hµP@9¤rH8È–ë‰Ev L}Ž>ðbÝEK;Á¥
+OŠ¦¤ R‘}ƒîñŽgQ
+ ®yÂ*áÜ>[÷¦ÐV¯¥ç–©x •5FuÐ6M Zmr¼…D'âÁY!sn¥<¾Š<Až€ê ½lÝ‘ww( JVBÃ:.š]4Z¤àÔ?¶·ûë[zÐê+‡üÖé‹kúº¢É=£1l©0ºv7—¦cÍâ@Z‚SžB‰™(+>N€mu}w±¼w>Ý¡2ÞxŠ`%$¯Š‚šS¨9¡¿Ðdvoæ/lïSd˜këÊS&¼ “Èå'o;yü %3ñ!\ˆ@C·7“Å%]­‘žë¼±ŠK¦û?îZ¢$Gâ
+P<:gÊ@œÜW‰KMæû”)Fol8B_œcÒ¾MµÉI$ŸBÛÚ§ÂÛäS£+>¥_H7—?>øc0$ÑŽd”D,kÉ6
+æçm|
+„HqVx¥ÑžPfM|Õ$ȪiË÷ 4è@{6ªBæžG’EÂm ¸®áá+p$r\7öÝ¢waXÀs< l”É\Ôš,ó
+ˆº³ä»E×À%7Ü{ª’py;¹IïçvÝ_®FÉt2Æ‚‹0þÇ‹š?ɶÀ)Bô¹‰ÓâÆ=——µ¯C4©æ}»½4Ïò ~šÎûÙ°³ùÅ"dÀ¢ÑpØÿ³*†õ³Q¿hŠœàf¸,fÝûòt¶Hf—c\¬ñm4¾âí¿­Îþ<û0ÁÆ¿endstream
+endobj
+1394 0 obj<</Type/Page/Parent 1119 0 R/Contents 1395 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1395 0 obj<</Filter/FlateDecode/Length 969 >>stream
+xÝV]oâ8}çW\µóÀH%$0Ò>´Û-ÒtvwÊî4ÒÈ$Ü:1c;Ãòï÷ØIh²}_*Abßsï9×²„†)åe/Ž&zþ2+¼Ä”²i4¦Ñ$Ãs6Á£´„mL£Q¶ßaÃäåV’£QëĆQöì”$IÄ^Û˜(n¿ÚÔ I;Û Û̯¡dqMOÂÞÎ=УÈןbšÒ|I, J‘dœNh^
+¿`W*AôœúV8QË":
+Ö¸Ž::HÆÑ}ÑŸh¥ô@¿·qŽÀvËçªâª½eWg+íȺdq|ÅÏõc*¾*αÙEúÓΗNÊàNV«À<_ ÑK;]ûµŠ¸µ¢\@x+©¶0nÄ1nÅyHRŒ;øæ–”rºµ:Ñ #·æŽìZת ÑE‡´-¤3šÔÍz'ð>ñªxM¿>õ‘íAjÔê‹®„(Èiâ~ÖÂÝù<»}¸'%+ÑMÊÝ—Ù_(8wRW¤—Áê— N÷üIø9Šèo]zví”?ŒÂ€l¥RÞ­"¥õY]
+Œ"èPòÉ—.íÖDþ%´=¸'@Ó@U‡­9} ëúPá$â }#ùe"ÑŽ/¿ÿ8»{+×Òè2D>n[ã¸?kd•«º6Z7Sb™?¹@ÖpÔèì«(~ƒR>˪þ‡¾Bžœ»ÁlvˆÁÓ›E©WæíŽ
+endobj
+1396 0 obj<</Type/Page/Parent 1119 0 R/Contents 1397 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
+1397 0 obj<</Filter/FlateDecode/Length 159 >>stream
+x5ŽÑ
+‚0…ïÿ§8—v¡mjs^* e{Û&(8I&ôøM"~Îù?8oâ`AEŠL@OÄ!Ë$G.‹p§Á‹EOµ¢ýY‚s¨\„Nf(X e Æ tô¬nu…û2V{g½NÖùγ۩‘â?ÿÀ¨µæÒy\·~ÐÚéµtÎø¸i¶ï\ÈDÒ°O™ˆg|ËNŠô¨-íendstream
+endobj
+1398 0 obj<</Type/Page/Parent 1119 0 R/Contents 1399 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 801 0 R>>endobj
+1399 0 obj<</Filter/FlateDecode/Length 1638 >>stream
x¥WÛn7}÷W ôbVÖź䥰]»_)q
-(¸+JbÌ%7K®½ôÛ{†\I¶
-C‚–KrfÎœ93þzÔ¡3üuhØ¥Þ€²üè,9£AoŒïþhˆï.>¥¤¿ÀÖÝׇߎ:ãdLç£A2¢œÎÇI¯~Ð4 ×ô#Ω7Ä«øÀ¯ÎGÉ°~ÌiÔÅéý;¶Þïw’Žups§~Ú]Ùëðþ·žuÏ{8ÐëñU9õ‡Ýä¼~ÚƒsßÅs9;jߌ©{F³  G4›‡
->tº™2ÞºÕÖô/ßÛøKº„f«ªt醌]ÓJ¼HÑñ«àµi*ËD“ ­åœ~½øtM-rRòµgÔê¢õÙJnÈKçIyKÃÓ£2s»v4>oî~ßÍF. …°(³yÐR¥•ßr®b¿.<Eò*—d´.•WfÙ¬­vz¾àÎZ8žà¥@ÔIÎ8~ž‘·qªb.¼„ /Bi‘j„‹Z”R<5ÚŠ9žlŒo±YËôÀ®S¸çé„=D’€ \\ XÊJ:`é(•Òв”Âë I³&“óf'Q/Ÿ´Z¶êŽ(“éj.çO§!ɯÀ½Ð ™H/ØÖâÐêÃ~m£ó*/´ÌAµ@Çþ\Xš ýLŒ²“ÀGhz†—áõÇ»ÉgÊE¶2ÒŸC¬ä¶£\–™ÂûºNRQÚy•y@¨5ø³±ƒ]V`
-‡`ÝÆy™»§ÓWu¸­ˆ•÷Å»v{½^'àK¹¶æËþF®ÿ^+“¬|®ÙÖµ‰¤ì~Ú¥(
-l¹Ÿ¶»ô(Ê‚®¬12óö‹ýPt[,¸1@Œ¢äªÈ$[¼ï"Ê¢¡%ŠP·FÕrÏRúâÁ >¥èH¶bA6Tã’‰Òê0¸¤z‰Ñí´”Õºô¨½†Ó Ã
-¼N±nšå†kÞ¯X6ØÔDþ‡„þøZé† ³øø_ËêÓÉñäò–¤,ŸN#ÈYÝZÃdÄ Á>uCŠo·½#¼lm³=»zhOÀ“ã‰a‰¨°XÿïZèZq9¹Ÿ’eù†4/¡A%ÄÊåõÇÉOÚáÆ×ï!š M
-·"üM‚@𻫩Ô(€HuèòÀº¾ A6ýÂ%S{Þ˜†bGöUÑÀf&sÈÎ (cঠÐëi.]VªtOÄ"ÐôK…¤ÐGHsí‚5ÈÏa s›U»~ƒáÇ ÈñíÃlš\¾nòð‘=srîÿxõЀÔñþâaÚw[\,˜Ý]Ïï?]ؾ?”ÖÛÌjwÌràØOnïÀÝ@'^¸H-_Ue‰e5
-ÖCÄ™˜ ì†ÎóÑÃébïæ<³”dª<•etÝdA’1¡4 âHn£­"{‡9ï˜Õ±¿p§”åÓ kz$`‡~Z’¶ÐÐ*É¢ø°ÜÚ"vBd m‘ Fäu§ÅB) íˆm¸ÃÜEk€‰E“+=}¯œo4Yªã܉›éqr7 =;ÖüVÂàò1“„óÆ÷áæ
-#`™+cµ]nösÌV®¸¾é <1äÓgÐS»ŸÁb=­ñð²Kö9…’.v@ÄþCº%iŒ+šËJ½Ï©ÕHå
-tjbê¢M€ "OBrÚ7£ý€>Ǿô3>ÿ‡28ïFíîôúÌãëÙÑŸGÿY¡,endstream
-endobj
-1657 0 obj<</Type/Page/Parent 1372 0 R/Contents 1658 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1048 0 R>>endobj
-1658 0 obj<</Filter/FlateDecode/Length 1606 >>stream
-x­WßoÛ6~÷_qÈËRÀ¡,ùG’Á´Éš¢I³Øk0,Ã@K´­V"5QŠë—ýíûŽ¤bÇEÑ=¬iU[$ï¾ûî»ãåï^LüÄtœÐpBiÙˆÞ<?îá74I&x–”ŒŽE¾4í%“1y^M&âxg5Ä"¦ñ`ˆ=8{‹qøÆgÙîèt(NhtrŒÏ þÕŠ½xt'£xŒgIÃñ±†oݱáñ)~yŒíÅI_{ ³^tuJñˆf ;9Á‡ÌÅ8 Yzˆ#üCïÌšR©éšR£ù²˜Ó(¡YW4¤ÇCmzc´Vióøªïc‘ô)BS¿š}î è(ž ¤Yv˜ˆ¯´05Me9—?óbt5¢8ö(Ž’cÞô»iÓÖ*jVˆ¾VŠnò´6Ö,úp~K7RË¥ªÁO’Ò›"Wºqv¶EmÊÎï|Á䢩^Gž¢ììˆÔ”ÑEk§y 6‚é›ó[ñqšD‚¦ðºjÜÁTÖ¦ë\[Ñ>I¡‹èŸB©vR—R‹USìÏki@W®±PÊ&7šðwFƒ·¶‘EARgäãÌ-¥.Aך$鶱+U}RYÞx"òBÑã#à}º¼‡ ÷²6¦Ùó›å5Òaê ™…Ûãh™c#U²nr‡…=Ë,sëE®•}íÓ1 Ó.#Áª8¤½?Éà̪¦­„úª:ÏŸß½„­Z5ë/VØýO»Ÿ²¬ÛûBࡹ¡Š6PIÇ"«¤#ï¼°¦O™Ñ?5YÎAZ´™Êèö2 –³:‚zæ*•L>èûóv¹Üš6¶ç·vˆƒŽ ÝÛé® ÖmÕ•føî”UµóÈØ$âðMý%ÒYn#XÉLxª·õw4Œ=×®ð†‚Î!Pà)5ÒÈѶÊÒz¥´¯³ÇC^D$âz|ÅA ¤Õ’ì€Ò<;ß«¸6É„fÊ»½œÑ§ëË”ï3ƒW¬=ÖÌ]£Ø|Åн²¦­SEµY[UôI_Ý„¯ ,Kjé*g+V<zËžìùÎ+Ù¤+”<hýQñYn"κúCæ5|£´`·ËûžkTŽ¤B6à4Ç…âzŠ¯! 9L௭:6ø,Tµ™ª´}²-‚ëªVk®—T< JË2¤jÏ·™FmÂ0R›Õr¹Dà.ZÖÜ”R|N¹ô¹Qðk‡,ðùéŒ|ÏF¯i©Pïœ-ÄŸ™µ.ŒÌˆ5É€¹»îàb¿§«¼¶MŸÒZ6°bW@ŠüÜÝ_ßÎÞÞúp¥+&Ø/²#ìÎ$ظ"ª +,x p˜)ëu.èÖÀ2ŸßcŒ—ç9^-•­mÈ6!ÃV¡£²aœ‚]êµ*×Ý ¦Î—¹–ÅsÃpŽûNÏ|¥ŒR ýDe{:¸¬Jls„¡5ªìTYÀõÊëÐ×ôí¬£}Áì9®?!)N±(¸ ;ô5ÙrŽö¡®jˆÉëIgª”1¼è*Ù^œqwÏéù ÝÍzxй
-w‡O¶Ri¾È}á½´xØIxÏNŸØ=ÇÆúîn—mœîm-“ÄÇùöènêfaŠ]#Ü;ãm4™è3»GÎ;¯ÄA¦žrÔ Û<ø­KñšÞÝщ
-}z 3LÓËû÷—3ñr% í¼wcÈJ>)¨®hrîÞ;d(«
-Ô9BÑȘ°o´°pŠ4ºØ²ýÍâä³ÅV‡ÌìN@}Gµl ¶
-s€A“E춻«lhW2mZÔçæåþ üyëGŠÚ'wªá¾ÃWÁÖ8ß+\%òIæ…/ç~ö°
-ZÝ/–€´Ïת3ɽ†3Ž)îõ6/+@ã–Ÿe܈öBïZÓŒeP´à6¶^åè¹»†÷"Ç„Å–^p¶m™/yÚ=†É·-îÚ‡\ƒRÖcí:ð²FËw³Êîˆ|4`Œæ–Å‚~ÃäÀ—*{öæ.º¾CW’éßÍŸÇÕ—š„o?ãòaú]Ïs*å^FÜËv‘2«iˆï$P<Áo'Cšàxz~sqŽ{ÛðÍCoMÚ–˜—ÝDÊè0œûGÇŒ~.ÀÿgøÇx¾?îø—£q‚$ÀQ<3€ËYï×Þ¿‘Wÿendstream
-endobj
-1659 0 obj<</Type/Page/Parent 1372 0 R/Contents 1660 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1051 0 R>>endobj
-1660 0 obj<</Filter/FlateDecode/Length 1676 >>stream
-xW]OÛH}çW\õ¥¬DòA•ö’P¡BÈ&.éJH«‰=v¦Ø¯gL’¿çŽí@-V+­ª‚í™û}î¹—¿OztŽ=ºìÓ`DAzrîÓÅÕ%~Çü³ÿ…¤È ‡#¯ÿÑÁ`8þð
-XØh„KK¸'eÏH$‰†Å˜ºd×Ð;uˆ Ò$¹Ýw‘»êì3°Ç †ÀXC*ïré²Ï ™nÐfhÐJScT'áQýÉW‰î­´Z>B‡
-‚ ­àt&Û¾<9S.F«ÑýàgÀG+ÎÁÏÊ9H±HtÌuü<šè,Rq 0õ¦à äýü
- €ÛB'´Õ;—K!PÑ€ ©$*@b-[‹¦ë'"pm%m༮\[Wu¸¨gÎ)”…²ú¡WTÇÿF7C”£c¥**gÿèU%ú6͆©øÜ9±ÖÅK\è27àj0~
-jU“råÜ|—=éÑwf–£ÑÇëí@fÃÙnuoáûV/®P&Ý`eÑóé0¤2ØL…U¨¨ÎÚjlQ‚&L~ò”½3¹ Tt 0c!pD{>‘n¸‚îµÅ%I€,°è•·fGW¤?<’>j°®Súùê¢ûùjü«K¼\z#G4Ì^ÈÕ=Îhµì»<Dº¡·jv¢‘|ðªN±%„˜Íp _VÎy v#Y64ÓŒþ…Û2hþèÏ ™à¶#ÿõ´pì#¢¬í¨Fg›Ñ
-·4ú‘“ŠT6Ñ¡I
-èmŠW¡î¼7ÓšÃ)j¨€xgrXŠÞåÝå «èqKû&‹L&ôÝ--_èÛr~ÿ}1åm‚mwÀeXÃÓžGüŽ×£3 ®Á­Ú¡ÅÝüëGBØ ÚBK ÈÆž—þGràñ¶\½z6¢Ow‹ʶàR6úh÷i9]~$}QIwúoé¹NŒ>ã‘WøaE¥½×úÅM'Ã*\Pˆès÷³Ú&í¾fZ<¹Ùk¬Î«j¥Ž Ûü:ez‹9Å
-Xkö Ü `,¥]KðGp î4Nñìn¼€ë¼x(à-A«"…}Ù2DdX未wàrÍ/‚@׫™´XÜ^0ÝU¼Ýèb«a”éúª]¿{;® ¼7Âß2ãþtèU=¿º~¸¹&Ì¡ŸÜfS”nÝçn`«F sy~Åðúkäp4öFýžƒëù'œüm +Yendstream
-endobj
-1661 0 obj<</Type/Page/Parent 1372 0 R/Contents 1662 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1054 0 R>>endobj
-1662 0 obj<</Filter/FlateDecode/Length 1190 >>stream
-xVMSãF½ûWtqYSedYزÙ*/ UÙ…]»*‡8‡±4F³Œf!¿>o>d@–à²%u÷ô{¯ßÌ_ƒ ÅxMhžÐiJY9ˆ£˜ÒÅY4¥ébŽÿ¼kN{{>¾ý2˜&“(¥Ùt-¨¤é|ŽoÿKÒÚ%JN<ÑKt±Œ¯Îh2§ÍµÓt†¸MîrǴɆIÍ"ú]¨\?JbÔ]óúAdœnYvOÉñæ;RLi2ñ)N’9Êlòá¦àX+ÃÛð^3IL)ýÄTÆ =Š¦èe½M"ºQœôž ‘¤•|"VUœÕ(¸¢ÖuGŒÖ¬Ü1[8¦“Éi”Ør«â55š
-m<ŠU­÷B¢®¾ná6¡L
-®CB!cw7×%*¢M! 1cÚÒF¬ñ5É^í.y¹C-,»)8ù#Úµû%ì$/Ñ°”$Å=GO:ËښĞDc*ÝD!g’‚k4s­H×¹o'4vèÅ´4ûV"ÕÏÛhHOº Ðíêr{<úOËàì{^g×!©†X&É´U¥ë†Î±lÿHGýXžóÜ.Éa'SXþ=…'LNµf¥]L×SD×=`áá
-åi;\ú‹+®ϷǽÊLå”Õœ5œÊV6¢B¦LWÝ€u¨åÂÜ#ÑêæóòúKdՇ霌èõ…dD¼É¢(ÚG˜#,h˜reZí·ÃÙ¥K¦¨bw€S×Tj€™ó† ‰Ê À¥«Fh(v)¶íÚœ+ÿœÁ>y«YÉhî‘[®dV`Œî¤Þ1Ùƒäùi@]sə嶪– ݀®ì+DvÒÞXmh)õ£e 0‚ªurðªùèÓYç+S?þþôýÙ--vÖ5ìîw߃՜Әÿm…;Qïut3°zNqÇïä¢æY£ë'*CÌüݘ7FÊšÚ½@„¹÷ÅçaIg¼ „(ĪƩd×:¬;iX¿Kîiý<<AÏNö$š'HÍdµ¨ÐUHĹ‘î  CšÊ¸W€÷®†Ö׫ü?wi‹xŸ´×­Ùbžœc¬JH+ØnºÂëåç‹åvë,9zeѪÿ Ä»i.ö{l<ÀöÐ,ÌÄz¹¸SÞžüLú„ýʱ#Ùyy §£`¹s…£^Yl ƒÙ—÷`†í¤U7’Ú¨ñÕ[6êï>;èa¬‚9{O3ÀÙzÖT ë5•VÆÙZ(õbCüÚòúi¸\=SÙÔLlïàÌ;8sÈ6† ì,–—¿õ56ÉðDû¼P™l¡¡×8™úI~É]aC£Kh¨ÖÒ=¾J_œ*ÂÎøåfó‰>úýÙŠ:×`ÞmqnS}qL€¿ìpl±v¦|êÖnùÎ;yp)w\°ƒ²r{¿;9Gëøj0IqüZœÒç#7cN’t[ëï˜zDf8(@ýÖŠm»']ÀÉ<†åÿï5MQ:KpCÄätn3}Ú ¾þ>׃endstream
-endobj
-1663 0 obj<</Type/Page/Parent 1372 0 R/Contents 1664 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1063 0 R>>endobj
-1664 0 obj<</Filter/FlateDecode/Length 1663 >>stream
-x}W]Û6|÷¯X(z.ò·Ï h›¦I ô¡M òBK+‹9JTIê|þ÷%%ŸO¹ÉÙú —³³³CúßÉœfø7§›-7”דY6ÓóÇÇ“Åò6ÛÒf¾ÎTÓr±É–ý¡O“õ*[Ñf¶Èfx9ßndh¼“—ÛÛlM«Ù*½¼Ýbfº“—X„–·+D]mop-!S9™Ï—ò
-QVs}ƒién˜¶XˈѴ·»Éôý--f´+‘ÓæfK»"¦‚'ùÕ¯•j;Z,3úÈ­uA7zÛüËÝ×8s~“f¾Z
-¨]q…¡óŒþh‚³E—m›4tEóy?tq“mdè®bâZiCª({O¥u´ïHIÖJ÷>¨½a<2¬<{Òž¼ª÷êçø™YwÈÑ“9Ê´•:O
-õ*p^5:Wæ"h? ¥[ Ø¿âòÔS
-<
-æ™I—„A•ò”Wª9páÈi»@=äMzdªÕ #Ó$)Š`z¤NžÔHJ5Úפy+p9{>/\TX ^wy%ß’C®ùvžM)ÙVlZ
-Nåw|l†U3ú$%‘Ú žMÀŸ$rBò 6p1ªÂÁÙ®%[RËtб²toM׆àÆ'ð^“¿ÓÆxRMA\‚Ýà3úG‘³¾‡ö•£Z8OJÚÛ.£¹ OÈ`´rk½×{p?²Ã6æZ)DS)ýJ*Às”–†G
-Å~ÒÅ:3u
-¾gc[v£%K§1Èœ^\”H2 ™crŒŒã
-½³ÔXèÈûNj(³ú•‘‰$š
-êÈenë6k 6·Æg¾ÞSÃGßÓ™L‰BŒŽóDÁòvÔ¶hç>ÓηœGnC”a!4g-…c~{T@HSêCç”xÀy 6RL€ÎÅ[¤ …A©™„’²¤¸äØx…š+ü}¹A–„|¾¼¤õ ~le¨eç
-Fˆ/ÏáxÐ!äûh”zJûÈ{jÕ¶‡«Ú×ÓéÙ÷ÒÕ4b¿ôâèYðâEF¸a§ 馌üNß?ãÅo“o%ÏŠ.é[hFË‹ôuVí!™±sÖ¡'ÿZtò ptˆ†˜<Üîïµ…Êk¤,ÙŒrµ lLì§x‡¥~D;ÖÚ:‚¡ˆ‰Áj¡\1×7ö¡U®–²ÈõSˆbȲ¥äÖ¡F0Á¬éa\ãߥï±^
-XÁ—úºZëµÿ‰vbðøÏîDº–ÝI5ßtjß&ºÉMW0
-çBôŽ3h²P%Œ^-jÄË}‘ Õ —`™Òq?¨\4s”Þ¤°-qXXá%I‰r#*ÍH%þyH^a×í H~WG8
-ŽºB— m#déG剣EãA—ÇÍ2VŽPvFÒA´â‚´ÁËT ó”êõÛ1-£èæ3ÂùáˆiÏ,=D̥ŃÖi”?õ{J
-|sˆÛVÁØ.Í5( 9‰c!W›ö¡Bû;ò­Ê¿Ù·wb›©¾Åcad¶
-wªq‚K°ž‘Ý7ªKí1•T„òŠÓÆíVci1 ä«p„­E)tY´pë9ïœ
-endobj
-1665 0 obj<</Type/Page/Parent 1372 0 R/Contents 1666 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1666 0 obj<</Filter/FlateDecode/Length 1668 >>stream
-x•WMo7½ûWLu©IJ¾,ÛzpP0Ф©£à w—»b´Kª$ײþ}ß w-wmŠ @Â%93oÞ›Gýs2£)þÌèbN‹åÍÉt2¥óËÅä’–—ø÷½¦R>̳Éò­³ùÕÛ'–oø´>9»]ÒlFëÁW—´.§SZçãFåcõäÃúÇÉ”Nç+„\ãõF/Ý"_9:M6É-Ór㘴þÏû½T»Šjý¨kúu¸ß
-ëì¡qm ½‰Šˆöæ5…ÎÚê{âFEÚ¨@™Ö–Ú  2–\]hÏ!QÌl1™s1Úãl WÒ7ÕdŠ”Åf>ilÀ£•ÎS¦òí^ù"P&3µ‰>Ú@¥©u"v¸Œÿãª[ÍY›{­8ÿƒkH]#¥Üù‚SYSš\ÙXúœtY D/‹¤ìlŸ\À-*k\ˆ/v»ö²7HØFȺHV#ÄÕ1òSm´GeÊÒbB_´òÈC!E4a9Ó=Pãs‘Ô
-¡ ^¢KŸÉD|T`.ñ§R(½µúi§óˆB¸Qª¿ß€)ä[k%2Üîw™ÊE \5ུJÕÖ|+`¬¥W¹öLLìLñcÎ ¦Æ­¥}ƒ¸õˆ!Â÷ _€Ð€ÔCw!ꆂ+#/=|èÎõªD,Å‹\¡¥w8Ñd²Œ†0ô¹
-tSå¢k€CÆuõ þ|ΡŒZä&‡8HöÛçOÏÀ{mÓ5sBë(¤t òF
-óõ^¶5£!äc®nÿ!έ–:iW³²!¸º-Ðkô£k7# N:{éô˜|‡&ÃƵ5÷%¸®Ú¸=EÇg¼+Ú8þH¦¤ Á }•¨Q[Þ…2XíÎ
-6ºx+*KRB–¤ö)L%ö¦•Úí F`…@hþ „Qh³Â
-'üÂ!Ïn{Ãxá<U‘%ºqAiWï5/v©¢à–ïvÞ¨ˆ®«¸Av.f Vh_É“ªÃQ7b…³?³‰@.¼ ¥1Ÿ4*²§“OÛ6ìWL:†”Í©Âtäòx*h8îH q.ØÌBÂTm©|¤§ªËóÖ£™<΄œƒ°Â›ž¬ ä4$LWÐÖ²”sBÐ ™ZÙªåцx–ñY
-ð}ԓûÓ^ÓûyÑÃœ6‘ÝêÕŒ¯MæPë¯I$§À9~„Käpfn|ø 1Z{ç·„\H?©œ ïuB `&¯ ¡w·Ú¹­°!Jt­‚䮀oQ9òOä–3NGˆ$aL…VÎtXóÈI>‡AW:ûKBŽ¼çS纎 ¸Sq¥ªwf@Ž)þšémýÅ®[ Šà0’[kžtà–X°ÞG“·0Ïô'¨TÛ>Ñƨë
-endobj
-1667 0 obj<</Type/Page/Parent 1372 0 R/Contents 1668 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1668 0 obj<</Filter/FlateDecode/Length 1324 >>stream
-x•VÛnÜ6}÷W ö¥.h¯õ ÈÃÚ^' Ø»®%7 Š>p%Êb-‰
-Iy³ß3¤”:ªûPlq8—3gÎðëÑ”&ø™ÒéŒæ'”VG“hB‹óóèŒg§ø{†_#)÷ÓÓI4{ë`~ ¿_&Gã›sšM(ÉãäôŒ’Œà‚/éñU!' Í]+ñTk«ê':èÖÕN•æEšŸ“¿¼Ÿéiðó~¾@IvŒ‹ÓˆÖµ3:kS§tL4v¦³S¤Ó¤P–rUJJu턪- *•u¤srÒ:Ëq)55ÒäÚTä4½ˆReÂÉSü*'„u$J«q¹,Ãå}!¹BÂï³,œË„ÞOç!ÙT´Vúh°hŒÞ•²"$¥rRŽr¡àEÔÒuosëdcËÛ4ÂZ £²ä(8 yãïš]À»»ò@{mžå …\Õ2ê¾ÍN¢óUÛB·eF™¦åí­¯À{~Gªöÿi“¡M°Ú×}–Tˆ7Jf R*ŒÌÛQÓBkN«@e@¦r¦KR×ÿ„áHE#vªTN¡0´Zåì´ +…)Uïa˜7 á†YYg¯ ëxSM¦7˜Q%É_pxà¯#€•ii럜j‹Ì{ó…ÕíÐe©÷\x3@‘±a¤S™µ˜ ¿O% È×wè\k£,\àÌt p»As#3_ÇkRû†€Ô³ˆ–Ö¶UÔöáÇ7opz]{.0A©@†À¥­BèÐ,A¯É ØËÇ—ëñêá·Õƒ@ÐýU²¼º]¯6 í´+å£9Ì®'£Û†’Uœ||Ø>ÞÛ“’w¡n«*U
-d Á)·õРéÈ>E—kg‡.ÖžÒ~Æ^×ó\ë½/¸•Ÿ´W¼ ½ >`/ÀF&GÝV»óžc‚h¯07Á‘ïjoj»šeŽ\ÕŒ"úÒ‰‚È2†ÿØ]ä!§Ýp¤âÖøÿ4õ±/ØñøfBç½$-ÂäýöQ'[L#Ô©ª
-˜áexd¤à¡ÀD~ ƒ|ƒ@A?­â•ï`LË8~¼[¨¯·šG¼¶t»LÀŽí %ŸV/ï.—?®“UDñöWÛ»»åæ:îè¤.þ´ý¼¡ëõ5m¶ ­~_Ç ­7´Z>€U}”þV¯D÷¥„F
-ð0ûŽ59pÁïVÉD‹)·u=«3`ÆÎ;EÌ•Á¬§…LŸ¿{¢õ=yêiuÙú,á4Õ9Ü·ÒQÛD$Ÿ.èN€$‚°A1ÇÒ¥cïåų4ì§F+ Ø‚ƲÎB¨å7HÛpb–ØGí Œ0b)ò’v½‰»]J"M¢ÃaMhÀ«rz”ã€W¸ÂHªèy²G9m‰ô1£ K:ùiXk Sw;VÏ=zÌ›£–eÑb@AèËX#°~{¿#Ž÷_J9‡S^Þßm ¡üÔx?Ÿ„½5ó#­hÌ~Rž:)Wš)î ÆıÆ*-ð©{ô9ùZß‘iÃEZ^!o$ßïîž`ê
-endobj
-1669 0 obj<</Type/Page/Parent 1372 0 R/Contents 1670 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1670 0 obj<</Filter/FlateDecode/Length 1623 >>stream
-x½W[OÛH~çWùeA"& h¥>
-”VÎÍ‹[žáiqq{puKÁ•ÍZ¡DȺgó^çMÕ‘±¡QU¥‹´_t~œrÑ»7®á…T#[¯MU‘Õº Æfø†%… ´B5«&¡µ±…[“‹Å£4 ô€‚«¯Ý׃J°J­CPš‚ê¨dé
-þÍŠ^×
-
-m;ñ^³¥…æC‚A¨–pN)ÎVî³GåÉ+€™†uÅ[ìcY ¥‹¥ÎG{¯û|ñôff¤HvÁJù:·5º^9¯¼Ay°Œƒ£”í†3‹ÔF%  Ù´q_Îû¦Â7¶{EN‚š-Ò“Uïu‰¥
-ȉ-åLJ\· µŽýu/c¹>œ,3.LB@È;46®Åú×Ww‹Ëîè =ÌÓD%ÿ)ü$ #"°’&iŒ¯È[`ÙÛÏϪR5
-A/ ”ÀžèqüVAœiZkKD¼-*¨^ö2h%ÏVÊt®À³»ØjÍÐäÅЩªu£H—ÿâ 5ô¯ÑÆ¥Bç•=*]K¿‘j`ôÆà…tÙvÅq£)UÁõ„‰ÙØz†C1s¿;˜ñ~OÚTè’ ²øh÷dä,ƒùw¹€^‘7NúÞ šûâ£ÖvF§ru\p* ñ)é pLðBfóíC‘më,6¹ØÁbO]/M¾”*‰¹åP)4‚‰_ë‘Ž³Ö|U`
- gWŽ
-D1` D¹
-1Á „#Õá±Å¦¡5 ØE,ûnÿ‰×;ø:¥Ãõî(6êÿÅë%}¦³ëëaÿizʨ×Ã$›0n³Ù¤[ß]÷/Ó2\pz¨©Thœ(
-ÒßÙW¬ù|©,n~‘)&šóá.Ç‹o_ Ë/Žnþ\ ¼äp”¼GF‚æÛû÷06\)ú]›°d¨†éÑ8C«î«’MešN£÷Ûó5DÚGùî¯Q0gÂÍ€`¦Ô"{¸ ¹ª•Ö„Gü8äç­ÏÇÔ½$gH‘!7¸ó’øeÅ….MŽÀÌ»¾x¤n¼G¢ãG±o-þKáDÁÈè‘¥Ù ¯çìýž¤ÉÁ×ÓþcÖìš:=¤ã“ñÃÏÝÙçgtëÝÄ}q9.àˆ>†€!ž &'S¹xç3ÜÑñizüaŽÏ{x=;šñ´ËÅÎ_;ÿ
-endobj
-1671 0 obj<</Type/Page/Parent 1372 0 R/Contents 1672 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1672 0 obj<</Filter/FlateDecode/Length 1407 >>stream
-x…V]OãF}çWÜò[“/ô-°l…Ôݦ`Uª„„Æö8™eìIgƤüûž;3 Y/»hµû~œ{ι÷߃ ñoDçcšÌ¨l†ÙÎ.ÏñszÁ?Çøo%Õá‹ét–ßúb2eo}1;˦ýϯòƒÓOS(¯‘|vqNyEH<R^Ï[ãWÒRišÆ´TŠÎI25áCüâ7†¤µÆ:RŽVâYµKr¦‘~Å¿ m¥¨^ÈvmË#ÀÚXO£Éå ¹®\‘pt/šB|È¿ i0š £¼:~8Vò7rMQqÜíëµ5 ©Vújùá»—P«'IÕRy¡-„_mŒ}r]¯dùD/¦³1BVš¶¦ZiÙK]ÈÚ
-‡¸Ue¥s½~œô rÄUmi¬•¥Ïh¡¥ÀË€‹_ R >†½´µ(%Ý.h#ßÕ.Ùëg÷±ªÏ¨êg©SâPxHæÎ8p+Ô¤_ÈÈ*qKŦµYfmS„QeœàôÓ%
-ÖÖ€¼¤‹¹
-:Cà^
-endobj
-1673 0 obj<</Type/Page/Parent 1372 0 R/Contents 1674 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1674 0 obj<</Filter/FlateDecode/Length 1711 >>stream
-x}WmoÛ6þž_q0Ìj;~‰ã]¦k‡
-3fw„0—v%@gÖcXP±ªðô€YÏ>Ht˜W?‘?Æ–íÀw_h½šæ(S†f…ˆ©f-ñöŒÓ+…hýp‚'S4­¤°³d+½Îœ¥òÔìeÓ¸&0ƒe5£Õ oðšÕŽ4ô W LY Y k
-¬*
- ùó
-䢡ܶViƒxI¥x@75Øf}¢IÈü0»vöÔë~à o 5¶t˜YKwÿ"ºn‡×»Â™—Ìh_–¼Væ"å ªéeíp[Ž¾ZVþh¨OŽç:ŠÞ® V"’, ¼¢8I[ÔXC*ø0í}Œn$våÛOÉÝF¥¯Âqƒ7¼ÁûüÿL+Eºñ‹ô74`«qŒÕ‰GœO €´¼|„zy©ò6oû‡1ÍÈG†Ã7,ÄX8Ú™ú?–„-[¡© $˜„Xh¡HŒ6VE©¶œo å‘ØArX’ ¦{ì«ÛM0®z´r’ êP#N/ÁÜnè%_¬ªaû
-endobj
-1675 0 obj<</Type/Page/Parent 1372 0 R/Contents 1676 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1068 0 R>>endobj
-1676 0 obj<</Filter/FlateDecode/Length 1576 >>stream
-xWÛnÛF}÷WLõˆiQ’%9€Ñ:møÁ®k3 ŠºVäRbBî²\ÒŠþ¾gf©í^D¡HîÜΙ3£¿ŽBàoHÓ!&Gƒ`@“é$Òx6Åõÿ*M©<ÏNƒÙkFãÙë'†á ˜¼r^ƒAûñp}t6Äñp|ŠÏ‚Âé ^ü·œÂIˆ ‡RÐp2 ¦í7~ú!::¹SR”"•ÉlJQ"ÖÅý¥uµ TžÛ¥YŽLlEkÛTç™65=õqÃ5s£ëw¤ë8xzû6ú
-›gÁÛ<….“þpŒ‚³€"íj:ó¯í\Ùuÿ¡1T/5Ŷ(”Iü[§m€}‚jœ¦ïïé >Ü\?^>üvùðôÝÞšìô»mÈ-m“'4×TV¶(kHŠJåÜÊV »3œTû*[Ðq8B9ÐõÚx8®2×lÅ5q¬K›<_÷¨À¥Zè€nR2¶Þ­èþgr6­W
-DÈe&¶U¥ã:_ãÚÕ(.ŒÙªãVŠìŠy[“œ ¨Pß4ÜÞ¼Õ”HPêŠF)"œÌ”gF³[ÚZãHÚ ‚Öípâ1º©ß8Xr–Jë\6äõRI:ätõÌf•yS*÷lƒ ~ H*2ªÀÛ–ýä'%Ux[Eî)Lq‡Ñ€õ¢“¶J šzböœ>㻋ÛË[ç³ÔEù'ŒÆuf Ùt—Ú
-‰kêíN´ÞØÇ×q'Up¥5Ifë[b0'êu©A•¿¥ª+Y¤ÙwT—fá$ÓB­ÁN@Énܪ²Ä+·¶äÀ_ÖžŠl±ݸþ ,[ŠØ.ÖmÛYö8mGÚÄÕZh½‰
-9¯
-áàÐ úðÿÉB1Ï­ýÖ”t|KÑåctýð˧®€ªLŽíã …· —›i½¨, qÍ9˜=)U1W›^àB'ìÊ¡Ï@Ë­é@{XB¤ìáæž@ò
-rÁÄå;…r5Úg^Á
-þ‡Ävü
-üÛÈ^Ð&¬Ëm {^?uÞvúŒe
-\p”*h8ØüY!¶™¦––mûwÑ/_èó\sG8~o³Z“Z¨ÌH/dÝÒ¸:Ës±ö¥œÎF6 12Ôjˆ$É–} øÖaš¢¢p¾©€n÷UîU*—•N5´T¦ÄNmAÏi­Ý!ŸúÌGmD;%@eh[)¤¾Ô²\ÕMù_´ 7´ Ýli{…‘ã'†ÆÊ‚:"¶ÀïeUƒQºÏ®vtAB´ª¸8Ì–ödž$H8™ÛXåÒlùâg4µF&¹RÇYšA«ö
-þôö€³%êo)± _AzÚ–†©½žéøõéˆùѹ‰Ô-1w00 Y›Ú¹š™g•gÉVŽzD±S WýPNDòý5.žˆlÝq[5Æ0¯Ðw‘x÷dEÇvEßv¯0€ûÂ0)º2
-é-Õ<˳ÌGŸƒ(+{Çu®ŸuÎÓ¨©øÝÂ&¼0Z8"ú­3”àji›}5Þž:o%…mïKïÅÝGk§àoO¼ÐïV¾ÜE_nUŒ Õ΀ͮ%z.¼Ù¨¸Pô–”APY GWÑåƒì?¨
-ÊÜiÊÒV]-àñ5O}éWF‚ÙÈýÍ;%ˆç3Äʈ×ÐãÑx»2ŽzqJŽPgÐÑýxX)i9,ËØØ"n18( v|Âû‰^9ÑvÉ@Ê[š¡Ñ*§^?„çL–zmn·ô9÷Ošfq†W}—¶ö9Ž=ñoØ‘x€Ãn¼D›±¢pcÿ$Ÿ­0ȃ´âª° ¶šó¥7Í|[²ô"–fîâ*ãuÀ×íßÜ.5·(ÌpþÞÔJÏÑ\ دiY×åû““mþªM`³^ðö±¯Ù~›Ll, À–E¥JŒxþÁß²„üð™h2z /n?\Ð}e¿òRøÑÆM_Š7 >y¼9p<œ½þ3a<™“Ó!ˆtÃñ˜]FG¿ý ßä:ýendstream
-endobj
-1677 0 obj<</Count 34/First 1678 0 R/Last 1932 0 R>>endobj
-1678 0 obj<</Parent 1677 0 R/Title(Table of Contents)/Dest[1375 0 R/XYZ 0 756 0]/Next 1679 0 R>>endobj
-1679 0 obj<</Parent 1677 0 R/Count -1/First 1680 0 R/Last 1680 0 R/Title(SAMBA Project Documentation)/Dest[1389 0 R/XYZ 0 786 0]/Prev 1678 0 R/Next 1681 0 R>>endobj
-1680 0 obj<</Parent 1679 0 R/Title(SAMBA Team)/Dest[1389 0 R/XYZ 0 762 0]>>endobj
-1681 0 obj<</Parent 1677 0 R/Title(Abstract)/Dest[1391 0 R/XYZ 0 786 0]/Prev 1679 0 R/Next 1682 0 R>>endobj
-1682 0 obj<</Parent 1677 0 R/Title(I. General installation)/Dest[1399 0 R/XYZ 0 786 0]/Prev 1681 0 R/Next 1683 0 R>>endobj
-1683 0 obj<</Parent 1677 0 R/Title(Introduction)/Dest[1401 0 R/XYZ 0 786 0]/Prev 1682 0 R/Next 1684 0 R>>endobj
-1684 0 obj<</Parent 1677 0 R/Count -10/First 1685 0 R/Last 1696 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[1405 0 R/XYZ 0 786 0]/Prev 1683 0 R/Next 1703 0 R>>endobj
-1685 0 obj<</Parent 1684 0 R/Title(1.1. Read the man pages)/Dest[1405 0 R/XYZ 0 762 0]/Next 1686 0 R>>endobj
-1686 0 obj<</Parent 1684 0 R/Title(1.2. Building the Binaries)/Dest[1405 0 R/XYZ 0 621 0]/Prev 1685 0 R/Next 1687 0 R>>endobj
-1687 0 obj<</Parent 1684 0 R/Title(1.3. The all important step)/Dest[1405 0 R/XYZ 0 216 0]/Prev 1686 0 R/Next 1688 0 R>>endobj
-1688 0 obj<</Parent 1684 0 R/Title(1.4. Create the smb configuration file.)/Dest[1407 0 R/XYZ 0 786 0]/Prev 1687 0 R/Next 1689 0 R>>endobj
-1689 0 obj<</Parent 1684 0 R/Title(1.5. Test your config file with testparm)/Dest[1407 0 R/XYZ 0 437 0]/Prev 1688 0 R/Next 1690 0 R>>endobj
-1690 0 obj<</Parent 1684 0 R/Count -2/First 1691 0 R/Last 1692 0 R/Title(1.6. Starting the smbd and nmbd)/Dest[1407 0 R/XYZ 0 309 0]/Prev 1689 0 R/Next 1693 0 R>>endobj
-1691 0 obj<</Parent 1690 0 R/Title(1.6.1. Starting from inetd.conf)/Dest[1409 0 R/XYZ 0 786 0]/Next 1692 0 R>>endobj
-1692 0 obj<</Parent 1690 0 R/Title(1.6.2. Alternative: starting it as a daemon)/Dest[1409 0 R/XYZ 0 299 0]/Prev 1691 0 R>>endobj
-1693 0 obj<</Parent 1684 0 R/Title(1.7. Try listing the shares available on your server)/Dest[1411 0 R/XYZ 0 718 0]/Prev 1690 0 R/Next 1694 0 R>>endobj
-1694 0 obj<</Parent 1684 0 R/Title(1.8. Try connecting with the unix client)/Dest[1411 0 R/XYZ 0 551 0]/Prev 1693 0 R/Next 1695 0 R>>endobj
-1695 0 obj<</Parent 1684 0 R/Title(1.9. Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[1411 0 R/XYZ 0 383 0]/Prev 1694 0 R/Next 1696 0 R>>endobj
-1696 0 obj<</Parent 1684 0 R/Count -6/First 1697 0 R/Last 1702 0 R/Title(1.10. What If Things Don't Work?)/Dest[1413 0 R/XYZ 0 786 0]/Prev 1695 0 R>>endobj
-1697 0 obj<</Parent 1696 0 R/Title(1.10.1. Diagnosing Problems)/Dest[1413 0 R/XYZ 0 605 0]/Next 1698 0 R>>endobj
-1698 0 obj<</Parent 1696 0 R/Title(1.10.2. Scope IDs)/Dest[1413 0 R/XYZ 0 547 0]/Prev 1697 0 R/Next 1699 0 R>>endobj
-1699 0 obj<</Parent 1696 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[1413 0 R/XYZ 0 462 0]/Prev 1698 0 R/Next 1700 0 R>>endobj
-1700 0 obj<</Parent 1696 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[1415 0 R/XYZ 0 786 0]/Prev 1699 0 R/Next 1701 0 R>>endobj
-1701 0 obj<</Parent 1696 0 R/Title(1.10.5. Locking)/Dest[1415 0 R/XYZ 0 635 0]/Prev 1700 0 R/Next 1702 0 R>>endobj
-1702 0 obj<</Parent 1696 0 R/Title(1.10.6. Mapping Usernames)/Dest[1415 0 R/XYZ 0 181 0]/Prev 1701 0 R>>endobj
-1703 0 obj<</Parent 1677 0 R/Count -6/First 1704 0 R/Last 1709 0 R/Title(Chapter 2. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide)/Dest[1419 0 R/XYZ 0 786 0]/Prev 1684 0 R/Next 1710 0 R>>endobj
-1704 0 obj<</Parent 1703 0 R/Title(2.1. Discussion)/Dest[1419 0 R/XYZ 0 657 0]/Next 1705 0 R>>endobj
-1705 0 obj<</Parent 1703 0 R/Title(2.2. Use of the "Remote Announce" parameter)/Dest[1419 0 R/XYZ 0 212 0]/Prev 1704 0 R/Next 1706 0 R>>endobj
-1706 0 obj<</Parent 1703 0 R/Title(2.3. Use of the "Remote Browse Sync" parameter)/Dest[1421 0 R/XYZ 0 562 0]/Prev 1705 0 R/Next 1707 0 R>>endobj
-1707 0 obj<</Parent 1703 0 R/Title(2.4. Use of WINS)/Dest[1421 0 R/XYZ 0 384 0]/Prev 1706 0 R/Next 1708 0 R>>endobj
-1708 0 obj<</Parent 1703 0 R/Title(2.5. Do NOT use more than one \(1\) protocol on MS Windows machines)/Dest[1423 0 R/XYZ 0 547 0]/Prev 1707 0 R/Next 1709 0 R>>endobj
-1709 0 obj<</Parent 1703 0 R/Title(2.6. Name Resolution Order)/Dest[1423 0 R/XYZ 0 266 0]/Prev 1708 0 R>>endobj
-1710 0 obj<</Parent 1677 0 R/Count -8/First 1711 0 R/Last 1734 0 R/Title(Chapter 3. User information database)/Dest[1427 0 R/XYZ 0 786 0]/Prev 1703 0 R/Next 1737 0 R>>endobj
-1711 0 obj<</Parent 1710 0 R/Title(3.1. Introduction)/Dest[1427 0 R/XYZ 0 762 0]/Next 1712 0 R>>endobj
-1712 0 obj<</Parent 1710 0 R/Count -2/First 1713 0 R/Last 1714 0 R/Title(3.2. Important Notes About Security)/Dest[1427 0 R/XYZ 0 502 0]/Prev 1711 0 R/Next 1715 0 R>>endobj
-1713 0 obj<</Parent 1712 0 R/Title(3.2.1. Advantages of SMB Encryption)/Dest[1429 0 R/XYZ 0 729 0]/Next 1714 0 R>>endobj
-1714 0 obj<</Parent 1712 0 R/Title(3.2.2. Advantages of non-encrypted passwords)/Dest[1429 0 R/XYZ 0 612 0]/Prev 1713 0 R>>endobj
-1715 0 obj<</Parent 1710 0 R/Title(3.3. The smbpasswd Command)/Dest[1429 0 R/XYZ 0 505 0]/Prev 1712 0 R/Next 1716 0 R>>endobj
-1716 0 obj<</Parent 1710 0 R/Title(3.4. Plain text)/Dest[1431 0 R/XYZ 0 692 0]/Prev 1715 0 R/Next 1717 0 R>>endobj
-1717 0 obj<</Parent 1710 0 R/Title(3.5. TDB)/Dest[1431 0 R/XYZ 0 603 0]/Prev 1716 0 R/Next 1718 0 R>>endobj
-1718 0 obj<</Parent 1710 0 R/Count -9/First 1719 0 R/Last 1727 0 R/Title(3.6. LDAP)/Dest[1431 0 R/XYZ 0 528 0]/Prev 1717 0 R/Next 1728 0 R>>endobj
-1719 0 obj<</Parent 1718 0 R/Title(3.6.1. Introduction)/Dest[1431 0 R/XYZ 0 508 0]/Next 1720 0 R>>endobj
-1720 0 obj<</Parent 1718 0 R/Title(3.6.2. Introduction)/Dest[1431 0 R/XYZ 0 238 0]/Prev 1719 0 R/Next 1721 0 R>>endobj
-1721 0 obj<</Parent 1718 0 R/Title(3.6.3. Supported LDAP Servers)/Dest[1433 0 R/XYZ 0 401 0]/Prev 1720 0 R/Next 1722 0 R>>endobj
-1722 0 obj<</Parent 1718 0 R/Title(3.6.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[1433 0 R/XYZ 0 303 0]/Prev 1721 0 R/Next 1723 0 R>>endobj
-1723 0 obj<</Parent 1718 0 R/Title(3.6.5. Configuring Samba with LDAP)/Dest[1435 0 R/XYZ 0 599 0]/Prev 1722 0 R/Next 1724 0 R>>endobj
-1724 0 obj<</Parent 1718 0 R/Title(3.6.6. Accounts and Groups management)/Dest[1439 0 R/XYZ 0 786 0]/Prev 1723 0 R/Next 1725 0 R>>endobj
-1725 0 obj<</Parent 1718 0 R/Title(3.6.7. Security and sambaAccount)/Dest[1439 0 R/XYZ 0 596 0]/Prev 1724 0 R/Next 1726 0 R>>endobj
-1726 0 obj<</Parent 1718 0 R/Title(3.6.8. LDAP specials attributes for sambaAccounts)/Dest[1439 0 R/XYZ 0 217 0]/Prev 1725 0 R/Next 1727 0 R>>endobj
-1727 0 obj<</Parent 1718 0 R/Title(3.6.9. Example LDIF Entries for a sambaAccount)/Dest[1441 0 R/XYZ 0 203 0]/Prev 1726 0 R>>endobj
-1728 0 obj<</Parent 1710 0 R/Count -5/First 1729 0 R/Last 1733 0 R/Title(3.7. MySQL)/Dest[1443 0 R/XYZ 0 375 0]/Prev 1718 0 R/Next 1734 0 R>>endobj
-1729 0 obj<</Parent 1728 0 R/Title(3.7.1. Building)/Dest[1443 0 R/XYZ 0 355 0]/Next 1730 0 R>>endobj
-1730 0 obj<</Parent 1728 0 R/Title(3.7.2. Creating the database)/Dest[1443 0 R/XYZ 0 244 0]/Prev 1729 0 R/Next 1731 0 R>>endobj
-1731 0 obj<</Parent 1728 0 R/Title(3.7.3. Configuring)/Dest[1445 0 R/XYZ 0 786 0]/Prev 1730 0 R/Next 1732 0 R>>endobj
-1732 0 obj<</Parent 1728 0 R/Title(3.7.4. Using plaintext passwords or encrypted password)/Dest[1447 0 R/XYZ 0 731 0]/Prev 1731 0 R/Next 1733 0 R>>endobj
-1733 0 obj<</Parent 1728 0 R/Title(3.7.5. Getting non-column data from the table)/Dest[1447 0 R/XYZ 0 581 0]/Prev 1732 0 R>>endobj
-1734 0 obj<</Parent 1710 0 R/Count -2/First 1735 0 R/Last 1736 0 R/Title(3.8. Passdb XML plugin)/Dest[1447 0 R/XYZ 0 443 0]/Prev 1728 0 R>>endobj
-1735 0 obj<</Parent 1734 0 R/Title(3.8.1. Building)/Dest[1447 0 R/XYZ 0 423 0]/Next 1736 0 R>>endobj
-1736 0 obj<</Parent 1734 0 R/Title(3.8.2. Usage)/Dest[1447 0 R/XYZ 0 325 0]/Prev 1735 0 R>>endobj
-1737 0 obj<</Parent 1677 0 R/Title(II. Type of installation)/Dest[1449 0 R/XYZ 0 786 0]/Prev 1710 0 R/Next 1738 0 R>>endobj
-1738 0 obj<</Parent 1677 0 R/Title(Introduction)/Dest[1451 0 R/XYZ 0 786 0]/Prev 1737 0 R/Next 1739 0 R>>endobj
-1739 0 obj<</Parent 1677 0 R/Title(Chapter 4. User and Share security level \(for servers not in a domain\))/Dest[1453 0 R/XYZ 0 786 0]/Prev 1738 0 R/Next 1740 0 R>>endobj
-1740 0 obj<</Parent 1677 0 R/Count -9/First 1741 0 R/Last 1754 0 R/Title(Chapter 5. Samba as a NT4 or Win2k Primary Domain Controller)/Dest[1457 0 R/XYZ 0 786 0]/Prev 1739 0 R/Next 1755 0 R>>endobj
-1741 0 obj<</Parent 1740 0 R/Title(5.1. Prerequisite Reading)/Dest[1457 0 R/XYZ 0 738 0]/Next 1742 0 R>>endobj
-1742 0 obj<</Parent 1740 0 R/Title(5.2. Background)/Dest[1457 0 R/XYZ 0 637 0]/Prev 1741 0 R/Next 1743 0 R>>endobj
-1743 0 obj<</Parent 1740 0 R/Title(5.3. Configuring the Samba Domain Controller)/Dest[1459 0 R/XYZ 0 771 0]/Prev 1742 0 R/Next 1744 0 R>>endobj
-1744 0 obj<</Parent 1740 0 R/Count -3/First 1745 0 R/Last 1747 0 R/Title(5.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[1461 0 R/XYZ 0 665 0]/Prev 1743 0 R/Next 1748 0 R>>endobj
-1745 0 obj<</Parent 1744 0 R/Title(5.4.1. Manual Creation of Machine Trust Accounts)/Dest[1461 0 R/XYZ 0 279 0]/Next 1746 0 R>>endobj
-1746 0 obj<</Parent 1744 0 R/Title(5.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[1463 0 R/XYZ 0 368 0]/Prev 1745 0 R/Next 1747 0 R>>endobj
-1747 0 obj<</Parent 1744 0 R/Title(5.4.3. Joining the Client to the Domain)/Dest[1465 0 R/XYZ 0 786 0]/Prev 1746 0 R>>endobj
-1748 0 obj<</Parent 1740 0 R/Title(5.5. Common Problems and Errors)/Dest[1465 0 R/XYZ 0 437 0]/Prev 1744 0 R/Next 1749 0 R>>endobj
-1749 0 obj<</Parent 1740 0 R/Title(5.6. System Policies and Profiles)/Dest[1467 0 R/XYZ 0 182 0]/Prev 1748 0 R/Next 1750 0 R>>endobj
-1750 0 obj<</Parent 1740 0 R/Title(5.7. What other help can I get?)/Dest[1469 0 R/XYZ 0 177 0]/Prev 1749 0 R/Next 1751 0 R>>endobj
-1751 0 obj<</Parent 1740 0 R/Count -2/First 1752 0 R/Last 1753 0 R/Title(5.8. Domain Control for Windows 9x/ME)/Dest[1475 0 R/XYZ 0 560 0]/Prev 1750 0 R/Next 1754 0 R>>endobj
-1752 0 obj<</Parent 1751 0 R/Title(5.8.1. Configuration Instructions: Network Logons)/Dest[1477 0 R/XYZ 0 573 0]/Next 1753 0 R>>endobj
-1753 0 obj<</Parent 1751 0 R/Title(5.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[1479 0 R/XYZ 0 786 0]/Prev 1752 0 R>>endobj
-1754 0 obj<</Parent 1740 0 R/Title(5.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1487 0 R/XYZ 0 786 0]/Prev 1751 0 R>>endobj
-1755 0 obj<</Parent 1677 0 R/Count -5/First 1756 0 R/Last 1762 0 R/Title(Chapter 6. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1491 0 R/XYZ 0 786 0]/Prev 1740 0 R/Next 1765 0 R>>endobj
-1756 0 obj<</Parent 1755 0 R/Title(6.1. Prerequisite Reading)/Dest[1491 0 R/XYZ 0 738 0]/Next 1757 0 R>>endobj
-1757 0 obj<</Parent 1755 0 R/Title(6.2. Background)/Dest[1491 0 R/XYZ 0 650 0]/Prev 1756 0 R/Next 1758 0 R>>endobj
-1758 0 obj<</Parent 1755 0 R/Count -2/First 1759 0 R/Last 1760 0 R/Title(6.3. What qualifies a Domain Controller on the network?)/Dest[1491 0 R/XYZ 0 278 0]/Prev 1757 0 R/Next 1761 0 R>>endobj
-1759 0 obj<</Parent 1758 0 R/Title(6.3.1. How does a Workstation find its domain controller?)/Dest[1493 0 R/XYZ 0 786 0]/Next 1760 0 R>>endobj
-1760 0 obj<</Parent 1758 0 R/Title(6.3.2. When is the PDC needed?)/Dest[1493 0 R/XYZ 0 662 0]/Prev 1759 0 R>>endobj
-1761 0 obj<</Parent 1755 0 R/Title(6.4. Can Samba be a Backup Domain Controller to an NT PDC?)/Dest[1493 0 R/XYZ 0 577 0]/Prev 1758 0 R/Next 1762 0 R>>endobj
-1762 0 obj<</Parent 1755 0 R/Count -2/First 1763 0 R/Last 1764 0 R/Title(6.5. How do I set up a Samba BDC?)/Dest[1493 0 R/XYZ 0 376 0]/Prev 1761 0 R>>endobj
-1763 0 obj<</Parent 1762 0 R/Title(6.5.1. How do I replicate the smbpasswd file?)/Dest[1495 0 R/XYZ 0 593 0]/Next 1764 0 R>>endobj
-1764 0 obj<</Parent 1762 0 R/Title(6.5.2. Can I do this all with LDAP?)/Dest[1495 0 R/XYZ 0 443 0]/Prev 1763 0 R>>endobj
-1765 0 obj<</Parent 1677 0 R/Count -8/First 1766 0 R/Last 1774 0 R/Title(Chapter 7. Samba as a ADS domain member)/Dest[1497 0 R/XYZ 0 786 0]/Prev 1755 0 R/Next 1775 0 R>>endobj
-1766 0 obj<</Parent 1765 0 R/Title(7.1. Installing the required packages for Debian)/Dest[1497 0 R/XYZ 0 604 0]/Next 1767 0 R>>endobj
-1767 0 obj<</Parent 1765 0 R/Title(7.2. Installing the required packages for RedHat)/Dest[1497 0 R/XYZ 0 496 0]/Prev 1766 0 R/Next 1768 0 R>>endobj
-1768 0 obj<</Parent 1765 0 R/Title(7.3. Compile Samba)/Dest[1497 0 R/XYZ 0 320 0]/Prev 1767 0 R/Next 1769 0 R>>endobj
-1769 0 obj<</Parent 1765 0 R/Title(7.4. Setup your /etc/krb5.conf)/Dest[1499 0 R/XYZ 0 633 0]/Prev 1768 0 R/Next 1770 0 R>>endobj
-1770 0 obj<</Parent 1765 0 R/Count -1/First 1771 0 R/Last 1771 0 R/Title(7.5. Create the computer account)/Dest[1499 0 R/XYZ 0 317 0]/Prev 1769 0 R/Next 1772 0 R>>endobj
-1771 0 obj<</Parent 1770 0 R/Title(7.5.1. Possible errors)/Dest[1499 0 R/XYZ 0 255 0]>>endobj
-1772 0 obj<</Parent 1765 0 R/Title(7.6. Test your server setup)/Dest[1501 0 R/XYZ 0 786 0]/Prev 1770 0 R/Next 1773 0 R>>endobj
-1773 0 obj<</Parent 1765 0 R/Title(7.7. Testing with smbclient)/Dest[1501 0 R/XYZ 0 698 0]/Prev 1772 0 R/Next 1774 0 R>>endobj
-1774 0 obj<</Parent 1765 0 R/Title(7.8. Notes)/Dest[1501 0 R/XYZ 0 623 0]/Prev 1773 0 R>>endobj
-1775 0 obj<</Parent 1677 0 R/Count -3/First 1776 0 R/Last 1778 0 R/Title(Chapter 8. Samba as a NT4 or Win2k domain member)/Dest[1503 0 R/XYZ 0 786 0]/Prev 1765 0 R/Next 1779 0 R>>endobj
-1776 0 obj<</Parent 1775 0 R/Title(8.1. Joining an NT Domain with Samba 3.0)/Dest[1503 0 R/XYZ 0 738 0]/Next 1777 0 R>>endobj
-1777 0 obj<</Parent 1775 0 R/Title(8.2. Samba and Windows 2000 Domains)/Dest[1505 0 R/XYZ 0 547 0]/Prev 1776 0 R/Next 1778 0 R>>endobj
-1778 0 obj<</Parent 1775 0 R/Title(8.3. Why is this better than security = server?)/Dest[1505 0 R/XYZ 0 458 0]/Prev 1777 0 R>>endobj
-1779 0 obj<</Parent 1677 0 R/Title(III. Optional configuration)/Dest[1509 0 R/XYZ 0 786 0]/Prev 1775 0 R/Next 1780 0 R>>endobj
-1780 0 obj<</Parent 1677 0 R/Title(Introduction)/Dest[1511 0 R/XYZ 0 786 0]/Prev 1779 0 R/Next 1781 0 R>>endobj
-1781 0 obj<</Parent 1677 0 R/Count -6/First 1782 0 R/Last 1799 0 R/Title(Chapter 9. Integrating MS Windows networks with Samba)/Dest[1517 0 R/XYZ 0 786 0]/Prev 1780 0 R/Next 1800 0 R>>endobj
-1782 0 obj<</Parent 1781 0 R/Title(9.1. Agenda)/Dest[1517 0 R/XYZ 0 738 0]/Next 1783 0 R>>endobj
-1783 0 obj<</Parent 1781 0 R/Count -4/First 1784 0 R/Last 1787 0 R/Title(9.2. Name Resolution in a pure Unix/Linux world)/Dest[1517 0 R/XYZ 0 491 0]/Prev 1782 0 R/Next 1788 0 R>>endobj
-1784 0 obj<</Parent 1783 0 R/Title(9.2.1. /etc/hosts)/Dest[1517 0 R/XYZ 0 363 0]/Next 1785 0 R>>endobj
-1785 0 obj<</Parent 1783 0 R/Title(9.2.2. /etc/resolv.conf)/Dest[1519 0 R/XYZ 0 494 0]/Prev 1784 0 R/Next 1786 0 R>>endobj
-1786 0 obj<</Parent 1783 0 R/Title(9.2.3. /etc/host.conf)/Dest[1519 0 R/XYZ 0 356 0]/Prev 1785 0 R/Next 1787 0 R>>endobj
-1787 0 obj<</Parent 1783 0 R/Title(9.2.4. /etc/nsswitch.conf)/Dest[1519 0 R/XYZ 0 210 0]/Prev 1786 0 R>>endobj
-1788 0 obj<</Parent 1781 0 R/Count -5/First 1789 0 R/Last 1793 0 R/Title(9.3. Name resolution as used within MS Windows networking)/Dest[1521 0 R/XYZ 0 392 0]/Prev 1783 0 R/Next 1794 0 R>>endobj
-1789 0 obj<</Parent 1788 0 R/Title(9.3.1. The NetBIOS Name Cache)/Dest[1523 0 R/XYZ 0 319 0]/Next 1790 0 R>>endobj
-1790 0 obj<</Parent 1788 0 R/Title(9.3.2. The LMHOSTS file)/Dest[1525 0 R/XYZ 0 786 0]/Prev 1789 0 R/Next 1791 0 R>>endobj
-1791 0 obj<</Parent 1788 0 R/Title(9.3.3. HOSTS file)/Dest[1527 0 R/XYZ 0 512 0]/Prev 1790 0 R/Next 1792 0 R>>endobj
-1792 0 obj<</Parent 1788 0 R/Title(9.3.4. DNS Lookup)/Dest[1527 0 R/XYZ 0 414 0]/Prev 1791 0 R/Next 1793 0 R>>endobj
-1793 0 obj<</Parent 1788 0 R/Title(9.3.5. WINS Lookup)/Dest[1527 0 R/XYZ 0 276 0]/Prev 1792 0 R>>endobj
-1794 0 obj<</Parent 1781 0 R/Title(9.4. How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[1529 0 R/XYZ 0 723 0]/Prev 1788 0 R/Next 1795 0 R>>endobj
-1795 0 obj<</Parent 1781 0 R/Count -3/First 1796 0 R/Last 1798 0 R/Title(9.5. MS Windows security options and how to configure Samba for seemless integration)/Dest[1529 0 R/XYZ 0 179 0]/Prev 1794 0 R/Next 1799 0 R>>endobj
-1796 0 obj<</Parent 1795 0 R/Title(9.5.1. Use MS Windows NT as an authentication server)/Dest[1533 0 R/XYZ 0 786 0]/Next 1797 0 R>>endobj
-1797 0 obj<</Parent 1795 0 R/Title(9.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[1533 0 R/XYZ 0 537 0]/Prev 1796 0 R/Next 1798 0 R>>endobj
-1798 0 obj<</Parent 1795 0 R/Title(9.5.3. Configure Samba as an authentication server)/Dest[1533 0 R/XYZ 0 185 0]/Prev 1797 0 R>>endobj
-1799 0 obj<</Parent 1781 0 R/Title(9.6. Conclusions)/Dest[1535 0 R/XYZ 0 316 0]/Prev 1795 0 R>>endobj
-1800 0 obj<</Parent 1677 0 R/Count -7/First 1801 0 R/Last 1809 0 R/Title(Chapter 10. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[1537 0 R/XYZ 0 786 0]/Prev 1781 0 R/Next 1810 0 R>>endobj
-1801 0 obj<</Parent 1800 0 R/Title(10.1. Viewing and changing UNIX permissions using the NT security dialogs)/Dest[1537 0 R/XYZ 0 738 0]/Next 1802 0 R>>endobj
-1802 0 obj<</Parent 1800 0 R/Title(10.2. How to view file security on a Samba share)/Dest[1537 0 R/XYZ 0 590 0]/Prev 1801 0 R/Next 1803 0 R>>endobj
-1803 0 obj<</Parent 1800 0 R/Title(10.3. Viewing file ownership)/Dest[1537 0 R/XYZ 0 422 0]/Prev 1802 0 R/Next 1804 0 R>>endobj
-1804 0 obj<</Parent 1800 0 R/Count -2/First 1805 0 R/Last 1806 0 R/Title(10.4. Viewing file or directory permissions)/Dest[1539 0 R/XYZ 0 758 0]/Prev 1803 0 R/Next 1807 0 R>>endobj
-1805 0 obj<</Parent 1804 0 R/Title(10.4.1. File Permissions)/Dest[1539 0 R/XYZ 0 524 0]/Next 1806 0 R>>endobj
-1806 0 obj<</Parent 1804 0 R/Title(10.4.2. Directory Permissions)/Dest[1539 0 R/XYZ 0 281 0]/Prev 1805 0 R>>endobj
-1807 0 obj<</Parent 1800 0 R/Title(10.5. Modifying file or directory permissions)/Dest[1541 0 R/XYZ 0 771 0]/Prev 1804 0 R/Next 1808 0 R>>endobj
-1808 0 obj<</Parent 1800 0 R/Title(10.6. Interaction with the standard Samba create mask parameters)/Dest[1541 0 R/XYZ 0 339 0]/Prev 1807 0 R/Next 1809 0 R>>endobj
-1809 0 obj<</Parent 1800 0 R/Title(10.7. Interaction with the standard Samba file attribute mapping)/Dest[1545 0 R/XYZ 0 705 0]/Prev 1808 0 R>>endobj
-1810 0 obj<</Parent 1677 0 R/Count -3/First 1811 0 R/Last 1813 0 R/Title(Chapter 11. Configuring PAM for distributed but centrally managed authentication)/Dest[1547 0 R/XYZ 0 786 0]/Prev 1800 0 R/Next 1814 0 R>>endobj
-1811 0 obj<</Parent 1810 0 R/Title(11.1. Samba and PAM)/Dest[1547 0 R/XYZ 0 738 0]/Next 1812 0 R>>endobj
-1812 0 obj<</Parent 1810 0 R/Title(11.2. Distributed Authentication)/Dest[1549 0 R/XYZ 0 201 0]/Prev 1811 0 R/Next 1813 0 R>>endobj
-1813 0 obj<</Parent 1810 0 R/Title(11.3. PAM Configuration in smb.conf)/Dest[1551 0 R/XYZ 0 758 0]/Prev 1812 0 R>>endobj
-1814 0 obj<</Parent 1677 0 R/Count -1/First 1815 0 R/Last 1815 0 R/Title(Chapter 12. Hosting a Microsoft Distributed File System tree on Samba)/Dest[1553 0 R/XYZ 0 786 0]/Prev 1810 0 R/Next 1817 0 R>>endobj
-1815 0 obj<</Parent 1814 0 R/Count -1/First 1816 0 R/Last 1816 0 R/Title(12.1. Instructions)/Dest[1553 0 R/XYZ 0 738 0]>>endobj
-1816 0 obj<</Parent 1815 0 R/Title(12.1.1. Notes)/Dest[1555 0 R/XYZ 0 705 0]>>endobj
-1817 0 obj<</Parent 1677 0 R/Count -4/First 1818 0 R/Last 1830 0 R/Title(Chapter 13. Printing Support)/Dest[1557 0 R/XYZ 0 786 0]/Prev 1814 0 R/Next 1840 0 R>>endobj
-1818 0 obj<</Parent 1817 0 R/Title(13.1. Introduction)/Dest[1557 0 R/XYZ 0 762 0]/Next 1819 0 R>>endobj
-1819 0 obj<</Parent 1817 0 R/Count -5/First 1820 0 R/Last 1824 0 R/Title(13.2. Configuration)/Dest[1557 0 R/XYZ 0 370 0]/Prev 1818 0 R/Next 1825 0 R>>endobj
-1820 0 obj<</Parent 1819 0 R/Title(13.2.1. Creating [print$])/Dest[1557 0 R/XYZ 0 180 0]/Next 1821 0 R>>endobj
-1821 0 obj<</Parent 1819 0 R/Title(13.2.2. Setting Drivers for Existing Printers)/Dest[1561 0 R/XYZ 0 583 0]/Prev 1820 0 R/Next 1822 0 R>>endobj
-1822 0 obj<</Parent 1819 0 R/Title(13.2.3. Support a large number of printers)/Dest[1563 0 R/XYZ 0 786 0]/Prev 1821 0 R/Next 1823 0 R>>endobj
-1823 0 obj<</Parent 1819 0 R/Title(13.2.4. Adding New Printers via the Windows NT APW)/Dest[1563 0 R/XYZ 0 416 0]/Prev 1822 0 R/Next 1824 0 R>>endobj
-1824 0 obj<</Parent 1819 0 R/Title(13.2.5. Samba and Printer Ports)/Dest[1565 0 R/XYZ 0 237 0]/Prev 1823 0 R>>endobj
-1825 0 obj<</Parent 1817 0 R/Count -4/First 1826 0 R/Last 1829 0 R/Title(13.3. The Imprints Toolset)/Dest[1567 0 R/XYZ 0 745 0]/Prev 1819 0 R/Next 1830 0 R>>endobj
-1826 0 obj<</Parent 1825 0 R/Title(13.3.1. What is Imprints?)/Dest[1567 0 R/XYZ 0 643 0]/Next 1827 0 R>>endobj
-1827 0 obj<</Parent 1825 0 R/Title(13.3.2. Creating Printer Driver Packages)/Dest[1567 0 R/XYZ 0 519 0]/Prev 1826 0 R/Next 1828 0 R>>endobj
-1828 0 obj<</Parent 1825 0 R/Title(13.3.3. The Imprints server)/Dest[1567 0 R/XYZ 0 434 0]/Prev 1827 0 R/Next 1829 0 R>>endobj
-1829 0 obj<</Parent 1825 0 R/Title(13.3.4. The Installation Client)/Dest[1567 0 R/XYZ 0 336 0]/Prev 1828 0 R>>endobj
-1830 0 obj<</Parent 1817 0 R/Count -9/First 1831 0 R/Last 1839 0 R/Title(13.4. Diagnosis)/Dest[1569 0 R/XYZ 0 449 0]/Prev 1825 0 R>>endobj
-1831 0 obj<</Parent 1830 0 R/Title(13.4.1. Introduction)/Dest[1569 0 R/XYZ 0 429 0]/Next 1832 0 R>>endobj
-1832 0 obj<</Parent 1830 0 R/Title(13.4.2. Debugging printer problems)/Dest[1571 0 R/XYZ 0 482 0]/Prev 1831 0 R/Next 1833 0 R>>endobj
-1833 0 obj<</Parent 1830 0 R/Title(13.4.3. What printers do I have?)/Dest[1573 0 R/XYZ 0 718 0]/Prev 1832 0 R/Next 1834 0 R>>endobj
-1834 0 obj<</Parent 1830 0 R/Title(13.4.4. Setting up printcap and print servers)/Dest[1573 0 R/XYZ 0 537 0]/Prev 1833 0 R/Next 1835 0 R>>endobj
-1835 0 obj<</Parent 1830 0 R/Title(13.4.5. Job sent, no output)/Dest[1575 0 R/XYZ 0 786 0]/Prev 1834 0 R/Next 1836 0 R>>endobj
-1836 0 obj<</Parent 1830 0 R/Title(13.4.6. Job sent, strange output)/Dest[1575 0 R/XYZ 0 447 0]/Prev 1835 0 R/Next 1837 0 R>>endobj
-1837 0 obj<</Parent 1830 0 R/Title(13.4.7. Raw PostScript printed)/Dest[1577 0 R/XYZ 0 771 0]/Prev 1836 0 R/Next 1838 0 R>>endobj
-1838 0 obj<</Parent 1830 0 R/Title(13.4.8. Advanced Printing)/Dest[1577 0 R/XYZ 0 686 0]/Prev 1837 0 R/Next 1839 0 R>>endobj
-1839 0 obj<</Parent 1830 0 R/Title(13.4.9. Real debugging)/Dest[1577 0 R/XYZ 0 588 0]/Prev 1838 0 R>>endobj
-1840 0 obj<</Parent 1677 0 R/Count -7/First 1841 0 R/Last 1857 0 R/Title(Chapter 14. Unified Logons between Windows NT and UNIX using Winbind)/Dest[1579 0 R/XYZ 0 786 0]/Prev 1817 0 R/Next 1858 0 R>>endobj
-1841 0 obj<</Parent 1840 0 R/Title(14.1. Abstract)/Dest[1579 0 R/XYZ 0 738 0]/Next 1842 0 R>>endobj
-1842 0 obj<</Parent 1840 0 R/Title(14.2. Introduction)/Dest[1579 0 R/XYZ 0 597 0]/Prev 1841 0 R/Next 1843 0 R>>endobj
-1843 0 obj<</Parent 1840 0 R/Count -1/First 1844 0 R/Last 1844 0 R/Title(14.3. What Winbind Provides)/Dest[1579 0 R/XYZ 0 284 0]/Prev 1842 0 R/Next 1845 0 R>>endobj
-1844 0 obj<</Parent 1843 0 R/Title(14.3.1. Target Uses)/Dest[1581 0 R/XYZ 0 613 0]>>endobj
-1845 0 obj<</Parent 1840 0 R/Count -6/First 1846 0 R/Last 1851 0 R/Title(14.4. How Winbind Works)/Dest[1581 0 R/XYZ 0 462 0]/Prev 1843 0 R/Next 1852 0 R>>endobj
-1846 0 obj<</Parent 1845 0 R/Title(14.4.1. Microsoft Remote Procedure Calls)/Dest[1581 0 R/XYZ 0 347 0]/Next 1847 0 R>>endobj
-1847 0 obj<</Parent 1845 0 R/Title(14.4.2. Microsoft Active Directory Services)/Dest[1583 0 R/XYZ 0 786 0]/Prev 1846 0 R/Next 1848 0 R>>endobj
-1848 0 obj<</Parent 1845 0 R/Title(14.4.3. Name Service Switch)/Dest[1583 0 R/XYZ 0 688 0]/Prev 1847 0 R/Next 1849 0 R>>endobj
-1849 0 obj<</Parent 1845 0 R/Title(14.4.4. Pluggable Authentication Modules)/Dest[1583 0 R/XYZ 0 247 0]/Prev 1848 0 R/Next 1850 0 R>>endobj
-1850 0 obj<</Parent 1845 0 R/Title(14.4.5. User and Group ID Allocation)/Dest[1585 0 R/XYZ 0 613 0]/Prev 1849 0 R/Next 1851 0 R>>endobj
-1851 0 obj<</Parent 1845 0 R/Title(14.4.6. Result Caching)/Dest[1585 0 R/XYZ 0 435 0]/Prev 1850 0 R>>endobj
-1852 0 obj<</Parent 1840 0 R/Count -3/First 1853 0 R/Last 1855 0 R/Title(14.5. Installation and Configuration)/Dest[1585 0 R/XYZ 0 298 0]/Prev 1845 0 R/Next 1856 0 R>>endobj
-1853 0 obj<</Parent 1852 0 R/Title(14.5.1. Introduction)/Dest[1587 0 R/XYZ 0 786 0]/Next 1854 0 R>>endobj
-1854 0 obj<</Parent 1852 0 R/Title(14.5.2. Requirements)/Dest[1587 0 R/XYZ 0 503 0]/Prev 1853 0 R/Next 1855 0 R>>endobj
-1855 0 obj<</Parent 1852 0 R/Title(14.5.3. Testing Things Out)/Dest[1587 0 R/XYZ 0 234 0]/Prev 1854 0 R>>endobj
-1856 0 obj<</Parent 1840 0 R/Title(14.6. Limitations)/Dest[1603 0 R/XYZ 0 786 0]/Prev 1852 0 R/Next 1857 0 R>>endobj
-1857 0 obj<</Parent 1840 0 R/Title(14.7. Conclusion)/Dest[1603 0 R/XYZ 0 566 0]/Prev 1856 0 R>>endobj
-1858 0 obj<</Parent 1677 0 R/Count -11/First 1859 0 R/Last 1870 0 R/Title(Chapter 15. Improved browsing in samba)/Dest[1605 0 R/XYZ 0 786 0]/Prev 1840 0 R/Next 1871 0 R>>endobj
-1859 0 obj<</Parent 1858 0 R/Title(15.1. Overview of browsing)/Dest[1605 0 R/XYZ 0 762 0]/Next 1860 0 R>>endobj
-1860 0 obj<</Parent 1858 0 R/Title(15.2. Browsing support in samba)/Dest[1605 0 R/XYZ 0 568 0]/Prev 1859 0 R/Next 1861 0 R>>endobj
-1861 0 obj<</Parent 1858 0 R/Title(15.3. Problem resolution)/Dest[1605 0 R/XYZ 0 189 0]/Prev 1860 0 R/Next 1862 0 R>>endobj
-1862 0 obj<</Parent 1858 0 R/Count -1/First 1863 0 R/Last 1863 0 R/Title(15.4. Browsing across subnets)/Dest[1607 0 R/XYZ 0 586 0]/Prev 1861 0 R/Next 1864 0 R>>endobj
-1863 0 obj<</Parent 1862 0 R/Title(15.4.1. How does cross subnet browsing work ?)/Dest[1607 0 R/XYZ 0 326 0]>>endobj
-1864 0 obj<</Parent 1858 0 R/Title(15.5. Setting up a WINS server)/Dest[1613 0 R/XYZ 0 613 0]/Prev 1862 0 R/Next 1865 0 R>>endobj
-1865 0 obj<</Parent 1858 0 R/Title(15.6. Setting up Browsing in a WORKGROUP)/Dest[1615 0 R/XYZ 0 665 0]/Prev 1864 0 R/Next 1866 0 R>>endobj
-1866 0 obj<</Parent 1858 0 R/Title(15.7. Setting up Browsing in a DOMAIN)/Dest[1617 0 R/XYZ 0 675 0]/Prev 1865 0 R/Next 1867 0 R>>endobj
-1867 0 obj<</Parent 1858 0 R/Title(15.8. Forcing samba to be the master)/Dest[1617 0 R/XYZ 0 319 0]/Prev 1866 0 R/Next 1868 0 R>>endobj
-1868 0 obj<</Parent 1858 0 R/Title(15.9. Making samba the domain master)/Dest[1619 0 R/XYZ 0 573 0]/Prev 1867 0 R/Next 1869 0 R>>endobj
-1869 0 obj<</Parent 1858 0 R/Title(15.10. Note about broadcast addresses)/Dest[1621 0 R/XYZ 0 786 0]/Prev 1868 0 R/Next 1870 0 R>>endobj
-1870 0 obj<</Parent 1858 0 R/Title(15.11. Multiple interfaces)/Dest[1621 0 R/XYZ 0 698 0]/Prev 1869 0 R>>endobj
-1871 0 obj<</Parent 1677 0 R/Count -3/First 1872 0 R/Last 1877 0 R/Title(Chapter 16. Stackable VFS modules)/Dest[1623 0 R/XYZ 0 786 0]/Prev 1858 0 R/Next 1880 0 R>>endobj
-1872 0 obj<</Parent 1871 0 R/Title(16.1. Introduction and configuration)/Dest[1623 0 R/XYZ 0 762 0]/Next 1873 0 R>>endobj
-1873 0 obj<</Parent 1871 0 R/Count -3/First 1874 0 R/Last 1876 0 R/Title(16.2. Included modules)/Dest[1623 0 R/XYZ 0 437 0]/Prev 1872 0 R/Next 1877 0 R>>endobj
-1874 0 obj<</Parent 1873 0 R/Title(16.2.1. audit)/Dest[1623 0 R/XYZ 0 417 0]/Next 1875 0 R>>endobj
-1875 0 obj<</Parent 1873 0 R/Title(16.2.2. recycle)/Dest[1623 0 R/XYZ 0 268 0]/Prev 1874 0 R/Next 1876 0 R>>endobj
-1876 0 obj<</Parent 1873 0 R/Title(16.2.3. netatalk)/Dest[1625 0 R/XYZ 0 613 0]/Prev 1875 0 R>>endobj
-1877 0 obj<</Parent 1871 0 R/Count -2/First 1878 0 R/Last 1879 0 R/Title(16.3. VFS modules available elsewhere)/Dest[1625 0 R/XYZ 0 483 0]/Prev 1873 0 R>>endobj
-1878 0 obj<</Parent 1877 0 R/Title(16.3.1. DatabaseFS)/Dest[1625 0 R/XYZ 0 368 0]/Next 1879 0 R>>endobj
-1879 0 obj<</Parent 1877 0 R/Title(16.3.2. vscan)/Dest[1627 0 R/XYZ 0 786 0]/Prev 1878 0 R>>endobj
-1880 0 obj<</Parent 1677 0 R/Count -2/First 1881 0 R/Last 1882 0 R/Title(Chapter 17. Access Samba source code via CVS)/Dest[1629 0 R/XYZ 0 786 0]/Prev 1871 0 R/Next 1885 0 R>>endobj
-1881 0 obj<</Parent 1880 0 R/Title(17.1. Introduction)/Dest[1629 0 R/XYZ 0 762 0]/Next 1882 0 R>>endobj
-1882 0 obj<</Parent 1880 0 R/Count -2/First 1883 0 R/Last 1884 0 R/Title(17.2. CVS Access to samba.org)/Dest[1629 0 R/XYZ 0 634 0]/Prev 1881 0 R>>endobj
-1883 0 obj<</Parent 1882 0 R/Title(17.2.1. Access via CVSweb)/Dest[1629 0 R/XYZ 0 546 0]/Next 1884 0 R>>endobj
-1884 0 obj<</Parent 1882 0 R/Title(17.2.2. Access via cvs)/Dest[1629 0 R/XYZ 0 435 0]/Prev 1883 0 R>>endobj
-1885 0 obj<</Parent 1677 0 R/Title(Chapter 18. Group mapping HOWTO)/Dest[1633 0 R/XYZ 0 786 0]/Prev 1880 0 R/Next 1886 0 R>>endobj
-1886 0 obj<</Parent 1677 0 R/Count -10/First 1887 0 R/Last 1896 0 R/Title(Chapter 19. Samba performance issues)/Dest[1635 0 R/XYZ 0 786 0]/Prev 1885 0 R/Next 1897 0 R>>endobj
-1887 0 obj<</Parent 1886 0 R/Title(19.1. Comparisons)/Dest[1635 0 R/XYZ 0 762 0]/Next 1888 0 R>>endobj
-1888 0 obj<</Parent 1886 0 R/Title(19.2. Socket options)/Dest[1635 0 R/XYZ 0 502 0]/Prev 1887 0 R/Next 1889 0 R>>endobj
-1889 0 obj<</Parent 1886 0 R/Title(19.3. Read size)/Dest[1635 0 R/XYZ 0 242 0]/Prev 1888 0 R/Next 1890 0 R>>endobj
-1890 0 obj<</Parent 1886 0 R/Title(19.4. Max xmit)/Dest[1637 0 R/XYZ 0 692 0]/Prev 1889 0 R/Next 1891 0 R>>endobj
-1891 0 obj<</Parent 1886 0 R/Title(19.5. Log level)/Dest[1637 0 R/XYZ 0 511 0]/Prev 1890 0 R/Next 1892 0 R>>endobj
-1892 0 obj<</Parent 1886 0 R/Title(19.6. Read raw)/Dest[1637 0 R/XYZ 0 436 0]/Prev 1891 0 R/Next 1893 0 R>>endobj
-1893 0 obj<</Parent 1886 0 R/Title(19.7. Write raw)/Dest[1637 0 R/XYZ 0 268 0]/Prev 1892 0 R/Next 1894 0 R>>endobj
-1894 0 obj<</Parent 1886 0 R/Title(19.8. Slow Clients)/Dest[1639 0 R/XYZ 0 786 0]/Prev 1893 0 R/Next 1895 0 R>>endobj
-1895 0 obj<</Parent 1886 0 R/Title(19.9. Slow Logins)/Dest[1639 0 R/XYZ 0 658 0]/Prev 1894 0 R/Next 1896 0 R>>endobj
-1896 0 obj<</Parent 1886 0 R/Title(19.10. Client tuning)/Dest[1639 0 R/XYZ 0 583 0]/Prev 1895 0 R>>endobj
-1897 0 obj<</Parent 1677 0 R/Count -3/First 1898 0 R/Last 1904 0 R/Title(Chapter 20. Creating Group Profiles)/Dest[1643 0 R/XYZ 0 786 0]/Prev 1886 0 R/Next 1905 0 R>>endobj
-1898 0 obj<</Parent 1897 0 R/Title(20.1. Windows '9x)/Dest[1643 0 R/XYZ 0 762 0]/Next 1899 0 R>>endobj
-1899 0 obj<</Parent 1897 0 R/Count -4/First 1900 0 R/Last 1903 0 R/Title(20.2. Windows NT 4)/Dest[1643 0 R/XYZ 0 515 0]/Prev 1898 0 R/Next 1904 0 R>>endobj
-1900 0 obj<</Parent 1899 0 R/Title(20.2.1. Side bar Notes)/Dest[1643 0 R/XYZ 0 213 0]/Next 1901 0 R>>endobj
-1901 0 obj<</Parent 1899 0 R/Title(20.2.2. Mandatory profiles)/Dest[1645 0 R/XYZ 0 786 0]/Prev 1900 0 R/Next 1902 0 R>>endobj
-1902 0 obj<</Parent 1899 0 R/Title(20.2.3. moveuser.exe)/Dest[1645 0 R/XYZ 0 715 0]/Prev 1901 0 R/Next 1903 0 R>>endobj
-1903 0 obj<</Parent 1899 0 R/Title(20.2.4. Get SID)/Dest[1645 0 R/XYZ 0 643 0]/Prev 1902 0 R>>endobj
-1904 0 obj<</Parent 1897 0 R/Title(20.3. Windows 2000/XP)/Dest[1645 0 R/XYZ 0 479 0]/Prev 1899 0 R>>endobj
-1905 0 obj<</Parent 1677 0 R/Title(IV. Appendixes)/Dest[1649 0 R/XYZ 0 786 0]/Prev 1897 0 R/Next 1906 0 R>>endobj
-1906 0 obj<</Parent 1677 0 R/Count -4/First 1907 0 R/Last 1910 0 R/Title(Chapter 21. Portability)/Dest[1651 0 R/XYZ 0 786 0]/Prev 1905 0 R/Next 1911 0 R>>endobj
-1907 0 obj<</Parent 1906 0 R/Title(21.1. HPUX)/Dest[1651 0 R/XYZ 0 707 0]/Next 1908 0 R>>endobj
-1908 0 obj<</Parent 1906 0 R/Title(21.2. SCO Unix)/Dest[1651 0 R/XYZ 0 461 0]/Prev 1907 0 R/Next 1909 0 R>>endobj
-1909 0 obj<</Parent 1906 0 R/Title(21.3. DNIX)/Dest[1651 0 R/XYZ 0 346 0]/Prev 1908 0 R/Next 1910 0 R>>endobj
-1910 0 obj<</Parent 1906 0 R/Title(21.4. RedHat Linux Rembrandt-II)/Dest[1653 0 R/XYZ 0 280 0]/Prev 1909 0 R>>endobj
-1911 0 obj<</Parent 1677 0 R/Count -5/First 1912 0 R/Last 1924 0 R/Title(Chapter 22. Samba and other CIFS clients)/Dest[1655 0 R/XYZ 0 786 0]/Prev 1906 0 R/Next 1925 0 R>>endobj
-1912 0 obj<</Parent 1911 0 R/Title(22.1. Macintosh clients?)/Dest[1655 0 R/XYZ 0 721 0]/Next 1913 0 R>>endobj
-1913 0 obj<</Parent 1911 0 R/Count -4/First 1914 0 R/Last 1917 0 R/Title(22.2. OS2 Client)/Dest[1655 0 R/XYZ 0 513 0]/Prev 1912 0 R/Next 1918 0 R>>endobj
-1914 0 obj<</Parent 1913 0 R/Title(22.2.1. How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[1655 0 R/XYZ 0 493 0]/Next 1915 0 R>>endobj
-1915 0 obj<</Parent 1913 0 R/Title(22.2.2. How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1657 0 R/XYZ 0 786 0]/Prev 1914 0 R/Next 1916 0 R>>endobj
-1916 0 obj<</Parent 1913 0 R/Title(22.2.3. Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[1657 0 R/XYZ 0 575 0]/Prev 1915 0 R/Next 1917 0 R>>endobj
-1917 0 obj<</Parent 1913 0 R/Title(22.2.4. How do I get printer driver download working for OS/2 clients?)/Dest[1657 0 R/XYZ 0 461 0]/Prev 1916 0 R>>endobj
-1918 0 obj<</Parent 1911 0 R/Count -4/First 1919 0 R/Last 1922 0 R/Title(22.3. Windows for Workgroups)/Dest[1657 0 R/XYZ 0 204 0]/Prev 1913 0 R/Next 1923 0 R>>endobj
-1919 0 obj<</Parent 1918 0 R/Title(22.3.1. Use latest TCP/IP stack from Microsoft)/Dest[1657 0 R/XYZ 0 184 0]/Next 1920 0 R>>endobj
-1920 0 obj<</Parent 1918 0 R/Title(22.3.2. Delete .pwl files after password change)/Dest[1659 0 R/XYZ 0 679 0]/Prev 1919 0 R/Next 1921 0 R>>endobj
-1921 0 obj<</Parent 1918 0 R/Title(22.3.3. Configure WfW password handling)/Dest[1659 0 R/XYZ 0 528 0]/Prev 1920 0 R/Next 1922 0 R>>endobj
-1922 0 obj<</Parent 1918 0 R/Title(22.3.4. Case handling of passwords)/Dest[1659 0 R/XYZ 0 430 0]/Prev 1921 0 R>>endobj
-1923 0 obj<</Parent 1911 0 R/Title(22.4. Windows '95/'98)/Dest[1659 0 R/XYZ 0 345 0]/Prev 1918 0 R/Next 1924 0 R>>endobj
-1924 0 obj<</Parent 1911 0 R/Title(22.5. Windows 2000 Service Pack 2)/Dest[1661 0 R/XYZ 0 771 0]/Prev 1923 0 R>>endobj
-1925 0 obj<</Parent 1677 0 R/Count -6/First 1926 0 R/Last 1931 0 R/Title(Chapter 23. Reporting Bugs)/Dest[1663 0 R/XYZ 0 786 0]/Prev 1911 0 R/Next 1932 0 R>>endobj
-1926 0 obj<</Parent 1925 0 R/Title(23.1. Introduction)/Dest[1663 0 R/XYZ 0 762 0]/Next 1927 0 R>>endobj
-1927 0 obj<</Parent 1925 0 R/Title(23.2. General info)/Dest[1663 0 R/XYZ 0 476 0]/Prev 1926 0 R/Next 1928 0 R>>endobj
-1928 0 obj<</Parent 1925 0 R/Title(23.3. Debug levels)/Dest[1663 0 R/XYZ 0 335 0]/Prev 1927 0 R/Next 1929 0 R>>endobj
-1929 0 obj<</Parent 1925 0 R/Title(23.4. Internal errors)/Dest[1665 0 R/XYZ 0 665 0]/Prev 1928 0 R/Next 1930 0 R>>endobj
-1930 0 obj<</Parent 1925 0 R/Title(23.5. Attaching to a running process)/Dest[1665 0 R/XYZ 0 313 0]/Prev 1929 0 R/Next 1931 0 R>>endobj
-1931 0 obj<</Parent 1925 0 R/Title(23.6. Patches)/Dest[1665 0 R/XYZ 0 211 0]/Prev 1930 0 R>>endobj
-1932 0 obj<</Parent 1677 0 R/Count -4/First 1933 0 R/Last 1947 0 R/Title(Chapter 24. Diagnosing your samba server)/Dest[1667 0 R/XYZ 0 786 0]/Prev 1925 0 R>>endobj
-1933 0 obj<</Parent 1932 0 R/Title(24.1. Introduction)/Dest[1667 0 R/XYZ 0 762 0]/Next 1934 0 R>>endobj
-1934 0 obj<</Parent 1932 0 R/Title(24.2. Assumptions)/Dest[1667 0 R/XYZ 0 581 0]/Prev 1933 0 R/Next 1935 0 R>>endobj
-1935 0 obj<</Parent 1932 0 R/Count -11/First 1936 0 R/Last 1946 0 R/Title(24.3. Tests)/Dest[1667 0 R/XYZ 0 252 0]/Prev 1934 0 R/Next 1947 0 R>>endobj
-1936 0 obj<</Parent 1935 0 R/Title(24.3.1. Test 1)/Dest[1667 0 R/XYZ 0 231 0]/Next 1937 0 R>>endobj
-1937 0 obj<</Parent 1935 0 R/Title(24.3.2. Test 2)/Dest[1669 0 R/XYZ 0 786 0]/Prev 1936 0 R/Next 1938 0 R>>endobj
-1938 0 obj<</Parent 1935 0 R/Title(24.3.3. Test 3)/Dest[1669 0 R/XYZ 0 583 0]/Prev 1937 0 R/Next 1939 0 R>>endobj
-1939 0 obj<</Parent 1935 0 R/Title(24.3.4. Test 4)/Dest[1671 0 R/XYZ 0 679 0]/Prev 1938 0 R/Next 1940 0 R>>endobj
-1940 0 obj<</Parent 1935 0 R/Title(24.3.5. Test 5)/Dest[1671 0 R/XYZ 0 528 0]/Prev 1939 0 R/Next 1941 0 R>>endobj
-1941 0 obj<</Parent 1935 0 R/Title(24.3.6. Test 6)/Dest[1671 0 R/XYZ 0 403 0]/Prev 1940 0 R/Next 1942 0 R>>endobj
-1942 0 obj<</Parent 1935 0 R/Title(24.3.7. Test 7)/Dest[1673 0 R/XYZ 0 786 0]/Prev 1941 0 R/Next 1943 0 R>>endobj
-1943 0 obj<</Parent 1935 0 R/Title(24.3.8. Test 8)/Dest[1673 0 R/XYZ 0 424 0]/Prev 1942 0 R/Next 1944 0 R>>endobj
-1944 0 obj<</Parent 1935 0 R/Title(24.3.9. Test 9)/Dest[1675 0 R/XYZ 0 758 0]/Prev 1943 0 R/Next 1945 0 R>>endobj
-1945 0 obj<</Parent 1935 0 R/Title(24.3.10. Test 10)/Dest[1675 0 R/XYZ 0 567 0]/Prev 1944 0 R/Next 1946 0 R>>endobj
-1946 0 obj<</Parent 1935 0 R/Title(24.3.11. Test 11)/Dest[1675 0 R/XYZ 0 430 0]/Prev 1945 0 R>>endobj
-1947 0 obj<</Parent 1932 0 R/Title(24.4. Still having troubles?)/Dest[1675 0 R/XYZ 0 292 0]/Prev 1935 0 R>>endobj
-1948 0 obj<</Type/Catalog/Pages 1372 0 R/PageLayout/SinglePage/Outlines 1677 0 R/OpenAction[1389 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>8<</S/D/St 1/P()>>9<</S/D/St 2/P()>>13<</S/D/St 6/P()>>14<</S/D/St 7/P()>>16<</S/D/St 9/P()>>23<</S/D/St 16/P()>>27<</S/D/St 20/P()>>38<</S/D/St 31/P()>>39<</S/D/St 32/P()>>40<</S/D/St 33/P()>>42<</S/D/St 35/P()>>59<</S/D/St 52/P()>>62<</S/D/St 55/P()>>65<</S/D/St 58/P()>>68<</S/D/St 61/P()>>69<</S/D/St 62/P()>>72<</S/D/St 65/P()>>82<</S/D/St 75/P()>>87<</S/D/St 80/P()>>90<</S/D/St 83/P()>>92<</S/D/St 85/P()>>103<</S/D/St 96/P()>>116<</S/D/St 109/P()>>125<</S/D/St 118/P()>>128<</S/D/St 121/P()>>130<</S/D/St 123/P()>>131<</S/D/St 124/P()>>135<</S/D/St 128/P()>>138<</S/D/St 131/P()>>139<</S/D/St 132/P()>>141<</S/D/St 134/P()>>145<</S/D/St 138/P()>>147<</S/D/St 140/P()>>]>>>>endobj
+¸+JbÌ%7K®½ôÛ{†\I¶(
+C‚vÉáÌœ9s†þvÔ¡3üuhØ¥Þ€²üè,9£AoŒïþhˆï.>¥¤/`ëîëÃoGq2¦óÑ QNçã¤W?hš†cúƒŒsê ±xé|” ëÇœF]Xï×Ø{¿ßI0ëàäNý´;²×áýo#ëž÷`ÐëñQ9õ‡Ýä¼~Úš!¸ò¹œµoÆÔ=£Ù †#šÍC‚x“LEž
+fNÖ¯dIW“›)eZIãÝéì+lûÔéDÛVw”ta}2[)GÙJ™5^(ƒÁªå
+™©…ÊH™…-sá•5I<jLa}T¯Ÿôù¨[‘)ã­[mþò£×!ÒÆÖ¿¤Kh¶ªJ—nÈØ5­Ä‹$C¾
+ΩMSY¾pTBk9§_/>]S‹œ”|쵺ƒèw¶’òÒyRžÄ’ðô¨Ìܮϛ»ßw³€Ž 8!!ä›H*UZù )ç*ŽëÂð#¯rIvAëRye–ÍÚk§ ᬅ#á Q:@Cä,épb2ü<#oã;ªŠ¹ð.H¼¥Eª‘.hQJIˆÔh+æx²yp¾Åf-Ó¿NᜧŽå.qdCù
+%°t”JihYJáõ†¤Y “Éy3¤Kt‡À'­–­…úe2]Íåüé4”÷¸Ä0
+H¡ˆã:kPŸÃDæ6«v&¡©àÛ‡Ù4¹þ|ÝäëFöÌŹÿãÕCzPkÄû‹‡i#xÜmmpK°L`vw= D¼ÿtýaGDÄvüPZo3«Ý1 <’ã8y wxá&µt|U•%”Õ(xS6±Ø egÓÃûÄ>²+Lë¥$Så©,cØ˜Ï ŠŒN¸#ÔW è6ŠÄh«ˆÁßaÍÀ;fuœ(<eùtÂ*^ Øa‚–¤-t´JA²(>,·¶ˆ³U $h€y=[ñ¢”Î…Ä>Üaí¢7ÀÄ¢ÉLß+çM–êxÇÄÉô8¹›†){~+ Á „|Ì$ằÄ}¸¹Â¥¯Ì•±Ú.7û›ËV®x¾™ |GÈî›AOíþÖ…ëû_WöbÉ1§PÒ%È8~H·$ ŠæÁò“Vïs©C7.of31u1&@‘‚'¡8í›Ñþ2>¿F!»Ÿßàù¿ŽÁy7êu§¸{=;úóèZõ dendstream
+endobj
+1400 0 obj<</Type/Page/Parent 1119 0 R/Contents 1401 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 810 0 R>>endobj
+1401 0 obj<</Filter/FlateDecode/Length 1640 >>stream
+x­WÛnÛF}×W üR–"u±À(ìDnÄŠk©1Šº(VäJbBrY.iE/ýöžÙ]Z²£}h0¼ìÎœ9sffõW'¤>þ†tÑ`LqÞé‹>Þ<_îâ74ŽÆ¸æ ÏDäŸ2šw¢ñDŒŸ¿Çcqvðµ/&Øj/Õš Óhp.BNÎp?ã¶R´ê„ý·£~àç<#ÿÄ~ö€ì·4<ï‹so)‚5gh8ÄaÄNrŒÎÄÀ?yC48¾ßÆÈÂÁ^²g{W‹Np}Ná+P5žà&± õiŸþ¬·Ë‚n(ÖÅ*]7
+’T4µÙ¨,ë’JÒÚ‘fŠïóô&ìËJëú(Ú$­]íH¯ì›²%R)«:µXسLû=K eÞºtô霳Šá ¢^4ü
+éèOÔ¿0ªnJ¡¾©Ö?ªá•¥…ª·_²0;óŸV?%I»v/‘žG5@8TKví ™–R–LËäeft—]üP{š9!qÖ$*¡Ù4ê£$Uú)-U,9à©X6ëõNв=·´îÓ ½Íæ‡&Xx´—ZœàÙʬl–6QÀ,èêkP$© ,`%áxßao€0™ÇKDï¸Ê¹ä[`32´Ý¨Â©ýñ”?"…=¾að¹5‘ãáµB{`#L]¢±v6]Ðç›éWm[z'×,9–Ê]•¢Æ\¡Ð½2º©bEW•ÞUt©Ðd‹šðÈ`È°Ò!#Ò:ZÊ…~ÐåÎKYÇT:ü·š3Ü;ìµe‡!?nû6EEÁn›á#×(I™¬Á¢§‹ëâFÍÕ$!‹É2§›¡c㽬ô2S¹é’i€ì–•âXÓbM™Æeª
+™ûäùÖË/(IF2“J®×ÜFËêz€&ÊL‚Ï9W<÷~}Èçë"áüÝÐZ¡¼9KˆÏk:ÑÛ"Ó2!V}î‘Næ5e\§•©»W
+t5³aà1:pÿ~w3[¼¿ÿü`J[.°Ÿ%=¬N$X˜厕å;²‡Ã §hA3 ˼ÿˆ)Ž\L/ÿ´|ÊS“©}fB$dA[åÚ”
+¨@Z«Z]¥ë´ÙsK°Ž»VÇ<¯bF úŽ¡’#-\V#–ÙU«¼U3 ¶Bo|gгEKûŠÙ³\[~|R¬R  à¦kÑWdò%D±²PA<H^—Ð*ZS¹,é‚á×Ñ~N†íXó’s ÚAzzÒºò#‚Ã'Sª8]¥®à^Z<m¥{d§Kìžcc]·Ãd§}ëÅÊ$ñvò§Ñ®B½¬t–¡[ø13ÚGÓ’‰þr¸åÂòprðêDœ$ê)E°Í“ïÐ*±oéç;ú(Q™P£tÃ|zÿaº/¿x´­÷öÔ±‘O
+ªËê”ëßy‡ eY‚:K(öVV‘ºÈvžl7;¬|¢Øë™=¨k©vâ‘5ÔVbìk·/b»Ü«#¢mȸnPŸ»—ë½ò—;AX,®öÉßðØç ÂU"Ÿdš¹rþäŽFA«ÇÅâ‘vypZ“ÜkX€0c™âoÒ¼4nõIÂè(ô¶å1Íø ŠVÜƶ›½öÐðQä8P±¥œí[%N“|¨í †®ZÒd²+Ûsך¼=Žž{ƒ>Ný¿¿â4Àãµ¼xwÜÜ¡Éø«ëÛÏçÑ—*„7wˆåÍ íUÏQJp¸{"dÂc¥-`WÉ
+„â2´A§Ï4¦ ¦0Æ31ñ¥Žñ£d2À!?Æ#q~y{u‰Ù®y:Ñ{79ŽÒö°Êqá¼î¶ôÎú8&ÿßï7Üìøò¯¬Q„DÁA8°ãé¢óKç¾p,Jendstream
+endobj
+1402 0 obj<</Type/Page/Parent 1119 0 R/Contents 1403 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 813 0 R>>endobj
+1403 0 obj<</Filter/FlateDecode/Length 1639 >>stream
+x•W[oÚH~ϯ8êK©Ìý’Jû
+éz»÷–žëÈèKn€ô˜Û{­_Ü2¼³©ÌÕµ¬¨1÷x?)m`¦îKnÅ“›²Æê´¨Vì(ñ”1ÃLÇLlN±ƒ˜=F%÷¸Ji×ü¬‚;•S<¥«Q.à:¯
+øF³c¤ªPa#¶ äé ¸\Û ß—Æõj"-V´ÌqµÙ®u¶Õ0ÊÄ}¦d…aIÙ­>þ72ìP¿×+vìÅõÃÍ5aòüâ6k?w =wC«R >h^ýÏE±Ûzý^»„e§Ëú&Ë‹?/þ¦xendstream
+endobj
+1404 0 obj<</Type/Page/Parent 1119 0 R/Contents 1405 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 816 0 R>>endobj
+1405 0 obj<</Filter/FlateDecode/Length 1210 >>stream
+x…V]Sã6}ϯ¸³/ 3àÄ&_ì ,-3» Ûd¦M[ÁZlɵl(ýõ=W’xËB†€eݯsÏ=Ò߃˜ÆøÄ4OètFi9Gc¬¾~ÿu0IâhFÓ©¤É|-ÂSAkì_,°¿ûªïؘ&É4Ši²˜ãÿÙ<šS-iß÷ö&“Itö&Øï¶^l£«3Šç´Ù#ÁÙ"¦MæòÓ&þ¡tf-%cd»–õƒJ%ÝŠôž’£Íw˜N(†›ž$s¤¿É†›\µÀ¯•² ­Í“Щ´ô¨šœ^{½M"ºÑ’Ìžs•ædtñD¢ª¤¨aKM­UúŽ­E¹áâÓ(ápYÉšC¹± ¶â¡ªÍ^‡Õ~0J %ucIixìÞf¦JG´É•%am[²u.“xµ¸”å±v“KòŽi×6î)ì
+Y¢à¢ BÝKÔdÒ´­IíI5ìP›&
+>“Y4áb®5™:ó儵Ø6‚vßpõ³Â¶CÜ“©Ð€Æ‡èvu¹=:þ_ËàåâAú¾NC_‡¤iA¶­*S7tŽ´ý–®õCY&3N‰`àÉæÜßÎÜ ' ¦¤Úˆ’“éjŠèšÑ ¨åqgjgÝõÊ“ñ6 ô§¦¬
+´ÄΠ\üNºÂÑÎM8ôœ£ž¶Ã¥_\I­d¶=êE:£´–¢‘T¶E£*xJM¥P ºŽ&M™²÷p´ºù²¼þ1û0Óñ1½^HŽI6iEÛ£s„„€†-wQjô~;œþºš*q8MM¥˜™l„*™Á
+ËáJÁtW˜(z<ïÔµ,¤àÞVµBš
+½°(µPÿÂÄ‹k¦ö{œC
+&;œ²Õèê-UõoŸõ0eA«½ÄY à8Aßµ
+öèjöâ’l¾Þl>ÑG\3©3ƒÎ»ϱ/n ›n1¬Na¬ÑOÓò ÀI© ¢ån<(+wp ëÚ:ºZ„bܱƋSšLÁõÙ”õÆ‘’nkó
+endobj
+1406 0 obj<</Type/Page/Parent 1119 0 R/Contents 1407 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 825 0 R>>endobj
+1407 0 obj<</Filter/FlateDecode/Length 1680 >>stream
+xuWïoÛ6ýî¿âP`X
+$òoÇ)Pl+ºnöak ú…–ÎJÔH*Žÿû½#%ÇUR´‘-éx|w÷îýßdN3ü›Óí‚–ÊëÉ,›áÉùòéÉby—mi3_g ªi¹ØdËþÎÐçÉz•­h3[d3¼œo7bïäåö.[Ój¶J/ï¶X™îä%6¡åÝ
+^WÛ[|Žé0™Ï—ò
+^Vâs}‹eénX¶X‹ÅhÙ,Ûn|¸¸R í:›÷–Ë5ÅÞíÆqÂzúáŽ3ÚÍí–vEÌžäWŸ¸µ.覤w]é_ï¾MÄz~›¬o–Å®¸úØg‹.Ú6ÉhEóyo´¸Í6b´«˜¸VÚ*
+ÇÞÓÁ:Úw%°É.éÞµ7ŒG†•gOÚ“Wõ^ý¯™ue&X¾[£L[©ó0£$3bó•íLA¥¥`“«›ÀyÕè\™ §ý*Ty%`ÿŽÛSP÷LÀƒ®q±ØDx
+¸¨°â¼îòJ>%†\5òé<›ƒD[±i)8•ßÃøØ »fôYJ"µA=›€? ä„à .ØÀŨ
+¥³]Kö@-[¤ƒŽ•¥kº&0;ñ«qÞkò÷ÚOª)ˆÈnðý+„ÈY? M”£Zrž˜´·]ŒÄ.yB£[ë½Þ€kü‘6°1ÖJÁ›JáWº¬
+(
+"ß¿‡(R,Ã$·Õü Jãêþ)ý’Ã
+ŠÔW´Ðªl¬×þÚ‰´ãÿ»éZæ’jžõhß ºÉMW0JæBTs6Ð^¡JŸTZØÓˆŠûô@ ªAA,¥â~T¹°å(]/H!X<Êaa%/‰D”á—°Ez' hTÎKGò
+ó¶3Ðqøc½gAkDÖúaÿƒ¼xK™cª9¥R! L”Gb󞡱yJ…‘FåD—"ÁhåØcŽ;x€šBz#£ÐÙ’°Qø²õçDŢؠ³ã€Œuƒ
+:“Ñ{†·â"]ƒ~©è"Æ)uëG0-#Ýæ3™áˆe/l=x¥ÅƒÖiÞú9’—"qTŒi®‘2‘“¨bµiöÚß“oUþlVïD*Se‹§ÂÈj6ý°îÏXWѼM¯†²]û4=Ç‘7Ë®0(2i¸‘yF_.%ð “R§„J}@R‚¦8¸8·ôfüÖ¡Mm#“âˆO!æ=s 'èá=¼$Ý`˜ v!p0)ž²°ó›ú(çÙj¹ ›Å:Ûâ'µ3zKóÙ
+ÕÉWci3 äGœ¬p$„¾EQ)ôá
+&¤Û§ß$øá²^®…!Ïá¬6Ûl³^à×^Ï—YüûnòÏäóÅ…#endstream
+endobj
+1408 0 obj<</Type/Page/Parent 1119 0 R/Contents 1409 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1409 0 obj<</Filter/FlateDecode/Length 1659 >>stream
+x•WÁn7½û+¦ºTbY²lÙ)ЃƒÚ€&uµ@
+)¢1ÀË…¦€ŸK¤°.B¦³éGœJ|`ôF…rE_ß'«B£éÑÛ®Õ 7S¨RII-'7Ÿhæ2…çg™¤·.éà”%‚ñ¿Dc2_LÜÿÛZJl4Ò£Ñí×åõý׫ßéúþþûµ:F…È ðW:L&á£o„j™9 0BÑÓO]&”À-Rö ìí
+¡Ð9't›¸Ñ›à U0~À·iÁxi
+ôQ•¢g€CÁu  þr¶¡ +Â@{c:HöÛ—ÏÏÀxmó5sBË•h£ö òF
+òŽ•^w–ÑÚ1K+¿Åÿ?çf¥NÚXÖÔADHÍvz~ôífdÁFÒ š“ïPc\ùÎr_¢ï«¡•ßRò|&øª+Áþ}àdjÚø Ò˜Ðä@­Zó.”Á:÷N8±ÑÕ[QYŒ²6 …°Oa±30­Ôf+Ô
+o²¶Ó!aú‚ÖŽE ˜£nyÌX嚎Gâ9Æd©LÄ÷Ñ@Žà;ÌyMïçEcpÚ$ö©WÓÝš"( 6\“IN!ƒ³ÿ(áÌÜôðA&c´¶>¬ ¹~R%[Ýë„@ÀBÞ ÃàkÖûµ°!I"ô‚”¾‚¯Q9òÏä–3N{ˆ$aL…NÎôXóÈÉÞ‡ƒ®ôÆ—… yÓ¡®ÚÖ4\£ü€{_b~¿æxoX±“§ÎÜ€"z ãΙ'¹|É” 3ãÙéYãº'Zõ€SAø‰ÉÕµ„ßO ÂL*®ù uXܾA“:S!`åâ•G
+2Š>ˆ¼Eà ŠH›©ÕÛ £^Ê
+endobj
+1410 0 obj<</Type/Page/Parent 1119 0 R/Contents 1411 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1411 0 obj<</Filter/FlateDecode/Length 1344 >>stream
+x…VÛnÛF}÷W ôRˆ©«%Ù@”XNØ’k2Mƒ¢+r)nMr™]ÒŠþ¾gvÉÄa †m‰;;—3gÎðëÙ˜FøÓbBÓ9ÅÅÙ(Ñìê*XÒl¹Àç ~¤Ë%ýøcø2¢éh\µ¦³y0îlGptZÛñ|Lu '—Á¢ÿü]t6¼½¢Éˆ¢ÎKŠçOâó%¥¶ª<ÐI7†¬(ö‚¬4ÏÒüýëîŽþîÅtLpû|SÖF'M\+]z£Ç­ÑdÌÙ(Ê”¥Tå’b]ÖB•–åÊÖ¤Sª¥­-G¤X”TI“jSP­éYä*µôÙ„/² hS“È­Æå<÷—™¨©Î$ü>ÉüĹŒèb<õiÆ¢±ÒEƒEeô>—!)•’ª)
+^Dy"]vV0·µ¬,b9›JX+a”ç§>o|.Ù|±[±ÏOtÔæ (öRHU)ƒöÙd̘/¨ÚfºÉJ4­îî\ÎóR¥û¦M"ÑŒLË€>KÊÄ3‚%)F¦MŽ¨q¦5§•¡2 “9Ó&©Ë_
+.EáfÏh,(À3ð©ãð¶Å>À¤§˜:*LŒwäúÙ™Ú¶æ^™ƒº¨}iå@$ ¤Â=l/òxÓþD8a:q <_Ü7M]ìkv<¼Ñ‹Ñ8˜M't1¹ –øÉûqþébC‚ùÔ©(
+w°¿»¿_moÂ.“Vó»Ï[ºÙÜÐvÑú¯MÑfKëÕ#HöØEénu’ôKm¨ ®k Y`¡a ¥1 Q!­pˆçÎÈXªgéT’ô'œEˆ@Íâì©áÖ Ëå^¢c½”›2…°• Àcç­4¦Ê`èãLÆOß=Ñæ´:o\–pkƒŒjÜ·²¦¦
+H®é^€3пJz1‡²Ž‡Î˳#­_T•V˜ .ÜEñ[°-fÁ…bËoиþ
+#Ù«¢£½Ïå49ÒÇ@l[æ7æc©1[ÜíYFè1¯XÖG‹y³¬j•Àîü8Þ«’ñþþ~
+åw‹‹é¨]ýhìÒR8()×–(î™Æ°±Èe*Î|÷ñ¨]þ]®º7d‘ç•·Ç+évk»c ¸ÙCÌ1•;Šî©Ùª¿¤¤êÐáXåÞ[
+endobj
+1412 0 obj<</Type/Page/Parent 1119 0 R/Contents 1413 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1413 0 obj<</Filter/FlateDecode/Length 1651 >>stream
+x½WMOãH½ó+J¾,#ç BiÀ0+$–e‡h¥‘¸´ívÒƒíÎtÛ$ù÷ûªÚ&ÁÌîÜDBìvwÕ{õ^U~i„ß1Oh:£´<Å#:ñz:?ÇëNSŽó9í_Üðäì,·K§gñ´[;"<}ÑíqŸ…W >
+r맑¨ô¹Ïè-hçPb"R[Õ¨
+OªEȹR­Qi@òÀÑ:ÑàèI¡i”¯”(ˆi‹®‡©Í~¢“ ;O™®v¢¹(xJƒZ÷ XL8ň-?amÊ•%3Ï C²¢)Ö¯lÓõJ§Ï½³7­¯8z÷dã%I®þµre$*«u¹¶N9ƒô  %©j×Å,%ÖK Éù½ƒÛtwdªw¾“Ûr"ä\Á5¹Úαàë¹BS™dC”j'V–èNƒ¯fþj¼dXO½8w È?!Xg¦f'fƒÛu»Ÿï¯À3e
+ȉp+J™”°ß/ÔÖ0N‚Åí×r~ˆ,1Ö¼‡¹[4l…ýïn7÷ÜÐ9Z±˜?Ó@EÿYø‘‡7`ÅEÄÊ_)o5xn <_‡™v|HÖH=ÄSy¢g„õ¯q¢¹Ðš*‡µWYª—³ ZÈ«”*ð,†.²êŠ¦kî¢ Ô©*u ¡Hwÿ¢ Õõ­ÞÁ¹BÇ•3
+]JŸ‘l ôÚà†t×fÍv¡e1]Þ¶„‰ØXz†Í6ót܉ñ郴'¿ƒglIŒÄËæ½Ó£ž²¸ˆÌ¨Ë60
+endobj
+1414 0 obj<</Type/Page/Parent 1119 0 R/Contents 1415 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1415 0 obj<</Filter/FlateDecode/Length 1410 >>stream
+x…VkOã8ýί¸Ë˜ }Qè~ã¹BÚa»­´r§ñØۡÿßsí´t2Ì „Ô¦ñ}œ{Îñýº7¢!þFt:¦ÉŒòfo˜ éät˜ÌhzvŠÏcü[Ieøa:š'gïý0žŸ$Ó÷~˜Ìq¾é"Ý;¾™ÒhDi‰ä³³SJ BâáÒü°6f•‰ü™DQXé­U]S†Ô7Y3F?~J>¥_ö†4Ï7-ϵñ•´”›¦1šrÑ:I¦$<Ä¿6$­5Ö‘rT‰¥—ÔH_ñ'Q[)ŠW²­ÖüVÆzMæGäÚ¼"áèA4™è²Ž&ɘ³>*ù¹&+8îæxiMCJK_l"?~"cwÖêYÒ•Z*/êG ᫵±Ï.¡ËJ¢óWÓÚ!É.Ñy-{©3YÌÅÛW®Ør^ äP ªT $ŽHy ¡I¼…z¨6žq)më¼^ýÛPô*=‰Ò•qNeµì@EZ*…ª[dG ôú!¥ ·¿®¤f¼X†æ©3Ôsó™5¢È…CÜ8Ö^?NzNP9â*keîZÔR`‚yÀÅW‡ˆÏ€áE/m)rI· :ïørLÛdoÏbUŸQÕ¯Rw‰Cá!]˜;8ãÀ­PSýJ@LŒÜR±éÚ,ÝdaTœÇ7s›LñÁdišJ
+ŒY‡÷m ÅfÜöbxnW4¸ ‹Û?®ïÿ½¾§§§‡óÏçOOû ýgZr•ië‚–Àœáå`>L¥^¿±#'í ÃJë‹é6£ÂèƒR* ß ( ÊÕµ,~ÆZÃ@L 
+Ôgåóa3Ê^m‘µ»jb$jå¼ ÒÑÛbµ‘çi¿ò¿5¨-`e H !º˜ rͬJÕ¬ð‹Ô>ðƒ¡QQ†·VÂ
+xƒ„]À
+ÓÍHjHè¶ìU  Î^eºâL®â%4g´ðIr¹U+†4†°½
+}m¥Åb
+rrŸ,$b)]/sP¨“0TQÇÖÞ![p‰ Ó–œBSª…å h‡ï÷cAOÁ;FâoÅÀ¾Ï7g\>˜ð±PðEëM ÌÑU^ ­\ocÈ@\Õ2ˆ·›‰ü¶’„‚p7zØßÞ¾nŸÌŠw ÞC IÜaÐ̵ÅÔ^ÙûJµä šµ;Â:z£T¸A ^#Þ3„²Ù(»« Ôeûèì$м[E‚la•Ô’/o\$®q¹vÕã!ö@¢ŒJþÜñŽ-0&ì×åÈ ðÕ$2àÀ{ÅkëaomÚV°½ÎY›X=
+endobj
+1416 0 obj<</Type/Page/Parent 1119 0 R/Contents 1417 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1417 0 obj<</Filter/FlateDecode/Length 1706 >>stream
+x}WÛnÛF}÷W U€H²äk‚4@’&…&qcµE
+Ÿ`
+ÀßäGAš†‚ÚJŒ]«Òdduþ=£°¿Žú\ƒ0Ô adAôƒ÷:mÊ-Ý´5¨ÆixnˆIêl>‰Îæ±2 ÜÎßRe;²ü”æAÃ^ªP‰À4øÑÛãÞ#R¨µ,*s1‚† t?B¦Á¡xÂßu
+ÛÐèêþ-Û†2“1PàcmÀ „Úºv¾‘D¾¾ã¸ÇÃΫ–ÒõcCß³ ñ1|3 ÍSÒáÈL
+ üØܬZ¯¤/€›±5ñÛŸl4ßëíïòTT™G4rªÐø»¦‡ g
+NH[žwm™ìN•z­Ë¤oKpBQaVE¬KïJ[×®
+’Ã}Xý³³}d}„„µ‚Tü–HC Š±æÌ]ŽzWèô«.ÒÂ"S+_õN$÷ó½‡Þ)çÞ'´ËEÛÔo;}ÒkÕt‚x÷ñ-nÉ!
+C Ië©©ãøŠ5¼}'õÛùÿ‰6wÚ>1W~¬ÍÚ(úýÓ#|à {€Ô.:t~ñ@s‡ä‡
+x*«Â…ìæQöDøQ^Ô.î~‘?ý c2Ò)£:ðž„"òœ®kp;ÒÝòˆí‡é/xu‰«òøO˜âS-A>l&Ší“¶h€çT©tS‹5VMº<Á·égÎ^µîGºÆPc=‡™•÷Ï¢ë~h½)ƒ{ÎŒæ®aºË–$™«”—%¨¥ÈÛᶥZ^o¨$ÇóœGÄ`É KIÖ º²<J[5Ø?jøpý}Œn$v%-ÓqS˜´õ«»ãÕ]òÿ72­Ri!ôW4`¯qŒÕ‘GANR ýꮡ^"Ubónx7žýÈpHq»M‹F?KÿGØ’n½6h* & 6Y(£Q›5çÛCy v–$¨é‹ªBÇî&W=Z9Juh§H0·zIj€c±Û:
+endobj
+1418 0 obj<</Type/Page/Parent 1119 0 R/Contents 1419 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 830 0 R>>endobj
+1419 0 obj<</Filter/FlateDecode/Length 1557 >>stream
+xWÛnÛF}×WLõˆhQ–%9€Ñ:møÁ®k+ ŠªVäRbBî²\ÒŠþ¾gf©í^D¡Hî™Û™3£¿:! ð7¤ÉNÇåA0 ñd i4àzˆ¥¦DŒ¦gÁôµ§£éë'†á ¿rVƒAóñxÓ9âx8:ÃgNád
++þ[FOp‰ð”]Éi8“æ?ý0ëœ\( i– ”ñtB³XÐ4‹z+ë*¨,³kJÒ ‘Ø’6¶.)ÊRm*š÷pÃÕ £«w¤«(˜¿};û
+Ìs¸à1û§a€Ë¸7Ó®¢sÿxo²?d“½ÇÚPµÒÙ<W&öo5ŽõøT;MßßÓ>ÜÞ<]=þvõ8ŸÏîŽ!{ýnkr+[g1-4¥Í‹JÇâ¼¢B9·¶eÌæ Ó¼Ê(ꇧH#Z¢¢nãûUdšQ\EÚ¹¤Î²M—r\ª¥è6!c«hI?“³IµV @ê(5‘-KUÙ×®BRfË–YI®ËAdMrt. \}Ó0<y«+Õ!©N—4² ¥ÁÉtIYj4›¥{Ò84f‡c_›Ûê’³TXçÒJ]­”„CN—Ï «Ì›Š¹odk\ðc”¤$£r¼mÙ®A|’RåšYEì  8Ž“ÃÕ
+[ÅRqšº{AŸPãûË»«.£óÙ?ª¼ø Q•ZC6Ù‡¶Fàšºû5FbÿZæ$ ®°&NÍr‹¾#s¢Ú:–ªò·$Ev%Š$ýŽ¬âÒ,Dš« ؉R²ƒ[s(UQà•–Y[°ã/sOyº\nœ–‘"¶K ¤ÖM»Yö8mbGÚDåFh½õ„—ìîJ=KÄ'×ûjÞßÑßÑEË;cùÆ^zL "
+ÑÛr©õ&Š]—†ÒŠ*?ÐËIû.¡þ³„ƒc´ßÿSƒ|‘Yû­.¨G³«§ÙÍã/ŸÚ2
+ ‰RùBm[€óûT°k‡öv¨Uf…?G’ÃÊ!i` ·n—P æ+ßÉ•«Ð5‹(øŠÚ²+Ußyö‚-‰”8¶ÜÀ󲩳¦)Ð^¬N €£DA²AâÏ
+…Q ™©+éÔ¦-qmòµ†,/47‚c÷˜å†ÔR¥FZ m§ÆUi– >H—p8[µ0Ä•¡F:$HFöÌ÷ÃìDFa|¯MÝŠÛ« .JhH¨ ‡ƒ:5 ½ vÇ|ê1 µÉ•¡]¦úJcBÀU¨qYÕű5<Fß±õÆGŒ. déƒi_c©ºQá æ!©šAÁЪäœ0Iš“YŠÚ€7BÅÌF*kqeG?‰ù¨52È:J“ÊtçùÛ#ªBl”h½¥ØÖ|¡iP­Ò²ëÃÁñƒrë©[aÊ@ü1Y‰š)ššg•¥ñN|º„Bbs@‹ú‹ÀûkS<%àÙ¦e¶¬a:¡ ïgbÝs̨?Ø'}×´RxnÃ\h‹&„¶P‹4K+í V ]¬ã-Ó™~ÖÏžºäwsóÐçjረµN‘~WK·jïîÔE£$Œ}(´—÷ý­½^oU½9ñB­úr?ûr§"Ì£Fñ·›•¨·ðf«ÙBÑwX9©úËl8º¼ž]=ʶƒœ ¡Ìº(lÙ–
+WŽ9“&^Œ›mó‹;'IÒ(Å«¾?|öã@mÄv!ÔÀVh0–néŸä3°åR¶ÙxWÊ-(­|é¡™i+ÖZøR/\T¦<ö}ÆþÍìJss†ã÷Pk½@[-_ѪªŠ÷'';/üUÀvÕ»ä-ãP¤ýÖÛH¨ÏÈO¢OF9€ð…Ào
+YÂ1~ØLOi<6Õ»¼ûpI¥ýÊËßGÕ9~(Þtød{ ?œÿ §Áøl* ªáhȯ_Í:¿vþ›S3¤endstream
+endobj
+1420 0 obj<</Count 36/First 1421 0 R/Last 1665 0 R>>endobj
+1421 0 obj<</Parent 1420 0 R/Title(Table of Contents)/Dest[1122 0 R/XYZ 0 756 0]/Next 1422 0 R>>endobj
+1422 0 obj<</Parent 1420 0 R/Count -1/First 1423 0 R/Last 1423 0 R/Title(SAMBA Project Documentation)/Dest[1136 0 R/XYZ 0 786 0]/Prev 1421 0 R/Next 1424 0 R>>endobj
+1423 0 obj<</Parent 1422 0 R/Title(SAMBA Team)/Dest[1136 0 R/XYZ 0 762 0]>>endobj
+1424 0 obj<</Parent 1420 0 R/Title(Abstract)/Dest[1138 0 R/XYZ 0 786 0]/Prev 1422 0 R/Next 1425 0 R>>endobj
+1425 0 obj<</Parent 1420 0 R/Title(I. General installation)/Dest[1146 0 R/XYZ 0 786 0]/Prev 1424 0 R/Next 1426 0 R>>endobj
+1426 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1148 0 R/XYZ 0 786 0]/Prev 1425 0 R/Next 1427 0 R>>endobj
+1427 0 obj<</Parent 1420 0 R/Count -10/First 1428 0 R/Last 1439 0 R/Title(How to Install and Test SAMBA)/Dest[1150 0 R/XYZ 0 786 0]/Prev 1426 0 R/Next 1446 0 R>>endobj
+1428 0 obj<</Parent 1427 0 R/Title(Read the man pages)/Dest[1150 0 R/XYZ 0 762 0]/Next 1429 0 R>>endobj
+1429 0 obj<</Parent 1427 0 R/Title(Building the Binaries)/Dest[1150 0 R/XYZ 0 621 0]/Prev 1428 0 R/Next 1430 0 R>>endobj
+1430 0 obj<</Parent 1427 0 R/Title(The all important step)/Dest[1150 0 R/XYZ 0 216 0]/Prev 1429 0 R/Next 1431 0 R>>endobj
+1431 0 obj<</Parent 1427 0 R/Title(Create the smb configuration file.)/Dest[1152 0 R/XYZ 0 786 0]/Prev 1430 0 R/Next 1432 0 R>>endobj
+1432 0 obj<</Parent 1427 0 R/Title(Test your config file with testparm)/Dest[1152 0 R/XYZ 0 435 0]/Prev 1431 0 R/Next 1433 0 R>>endobj
+1433 0 obj<</Parent 1427 0 R/Count -2/First 1434 0 R/Last 1435 0 R/Title(Starting the smbd and nmbd)/Dest[1152 0 R/XYZ 0 307 0]/Prev 1432 0 R/Next 1436 0 R>>endobj
+1434 0 obj<</Parent 1433 0 R/Title(Starting from inetd.conf)/Dest[1154 0 R/XYZ 0 786 0]/Next 1435 0 R>>endobj
+1435 0 obj<</Parent 1433 0 R/Title(Alternative: starting it as a daemon)/Dest[1154 0 R/XYZ 0 297 0]/Prev 1434 0 R>>endobj
+1436 0 obj<</Parent 1427 0 R/Title(Try listing the shares available on your server)/Dest[1156 0 R/XYZ 0 718 0]/Prev 1433 0 R/Next 1437 0 R>>endobj
+1437 0 obj<</Parent 1427 0 R/Title(Try connecting with the unix client)/Dest[1156 0 R/XYZ 0 551 0]/Prev 1436 0 R/Next 1438 0 R>>endobj
+1438 0 obj<</Parent 1427 0 R/Title(Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[1156 0 R/XYZ 0 383 0]/Prev 1437 0 R/Next 1439 0 R>>endobj
+1439 0 obj<</Parent 1427 0 R/Count -6/First 1440 0 R/Last 1445 0 R/Title(What If Things Don't Work?)/Dest[1158 0 R/XYZ 0 786 0]/Prev 1438 0 R>>endobj
+1440 0 obj<</Parent 1439 0 R/Title(Diagnosing Problems)/Dest[1158 0 R/XYZ 0 605 0]/Next 1441 0 R>>endobj
+1441 0 obj<</Parent 1439 0 R/Title(Scope IDs)/Dest[1158 0 R/XYZ 0 547 0]/Prev 1440 0 R/Next 1442 0 R>>endobj
+1442 0 obj<</Parent 1439 0 R/Title(Choosing the Protocol Level)/Dest[1158 0 R/XYZ 0 462 0]/Prev 1441 0 R/Next 1443 0 R>>endobj
+1443 0 obj<</Parent 1439 0 R/Title(Printing from UNIX to a Client PC)/Dest[1160 0 R/XYZ 0 786 0]/Prev 1442 0 R/Next 1444 0 R>>endobj
+1444 0 obj<</Parent 1439 0 R/Title(Locking)/Dest[1160 0 R/XYZ 0 635 0]/Prev 1443 0 R/Next 1445 0 R>>endobj
+1445 0 obj<</Parent 1439 0 R/Title(Mapping Usernames)/Dest[1160 0 R/XYZ 0 181 0]/Prev 1444 0 R>>endobj
+1446 0 obj<</Parent 1420 0 R/Count -11/First 1447 0 R/Last 1458 0 R/Title(Improved browsing in samba)/Dest[1164 0 R/XYZ 0 786 0]/Prev 1427 0 R/Next 1459 0 R>>endobj
+1447 0 obj<</Parent 1446 0 R/Title(Overview of browsing)/Dest[1164 0 R/XYZ 0 762 0]/Next 1448 0 R>>endobj
+1448 0 obj<</Parent 1446 0 R/Title(Browsing support in samba)/Dest[1164 0 R/XYZ 0 568 0]/Prev 1447 0 R/Next 1449 0 R>>endobj
+1449 0 obj<</Parent 1446 0 R/Title(Problem resolution)/Dest[1164 0 R/XYZ 0 189 0]/Prev 1448 0 R/Next 1450 0 R>>endobj
+1450 0 obj<</Parent 1446 0 R/Count -1/First 1451 0 R/Last 1451 0 R/Title(Browsing across subnets)/Dest[1166 0 R/XYZ 0 586 0]/Prev 1449 0 R/Next 1452 0 R>>endobj
+1451 0 obj<</Parent 1450 0 R/Title(How does cross subnet browsing work ?)/Dest[1166 0 R/XYZ 0 326 0]>>endobj
+1452 0 obj<</Parent 1446 0 R/Title(Setting up a WINS server)/Dest[1172 0 R/XYZ 0 564 0]/Prev 1450 0 R/Next 1453 0 R>>endobj
+1453 0 obj<</Parent 1446 0 R/Title(Setting up Browsing in a WORKGROUP)/Dest[1174 0 R/XYZ 0 613 0]/Prev 1452 0 R/Next 1454 0 R>>endobj
+1454 0 obj<</Parent 1446 0 R/Title(Setting up Browsing in a DOMAIN)/Dest[1176 0 R/XYZ 0 619 0]/Prev 1453 0 R/Next 1455 0 R>>endobj
+1455 0 obj<</Parent 1446 0 R/Title(Forcing samba to be the master)/Dest[1176 0 R/XYZ 0 261 0]/Prev 1454 0 R/Next 1456 0 R>>endobj
+1456 0 obj<</Parent 1446 0 R/Title(Making samba the domain master)/Dest[1178 0 R/XYZ 0 507 0]/Prev 1455 0 R/Next 1457 0 R>>endobj
+1457 0 obj<</Parent 1446 0 R/Title(Note about broadcast addresses)/Dest[1180 0 R/XYZ 0 731 0]/Prev 1456 0 R/Next 1458 0 R>>endobj
+1458 0 obj<</Parent 1446 0 R/Title(Multiple interfaces)/Dest[1180 0 R/XYZ 0 643 0]/Prev 1457 0 R>>endobj
+1459 0 obj<</Parent 1420 0 R/Count -6/First 1460 0 R/Last 1465 0 R/Title(Quick Cross Subnet Browsing / Cross Workgroup Browsing guide)/Dest[1182 0 R/XYZ 0 786 0]/Prev 1446 0 R/Next 1466 0 R>>endobj
+1460 0 obj<</Parent 1459 0 R/Title(Discussion)/Dest[1182 0 R/XYZ 0 657 0]/Next 1461 0 R>>endobj
+1461 0 obj<</Parent 1459 0 R/Title(Use of the "Remote Announce" parameter)/Dest[1182 0 R/XYZ 0 212 0]/Prev 1460 0 R/Next 1462 0 R>>endobj
+1462 0 obj<</Parent 1459 0 R/Title(Use of the "Remote Browse Sync" parameter)/Dest[1184 0 R/XYZ 0 573 0]/Prev 1461 0 R/Next 1463 0 R>>endobj
+1463 0 obj<</Parent 1459 0 R/Title(Use of WINS)/Dest[1184 0 R/XYZ 0 391 0]/Prev 1462 0 R/Next 1464 0 R>>endobj
+1464 0 obj<</Parent 1459 0 R/Title(Do NOT use more than one \(1\) protocol on MS Windows machines)/Dest[1186 0 R/XYZ 0 547 0]/Prev 1463 0 R/Next 1465 0 R>>endobj
+1465 0 obj<</Parent 1459 0 R/Title(Name Resolution Order)/Dest[1186 0 R/XYZ 0 266 0]/Prev 1464 0 R>>endobj
+1466 0 obj<</Parent 1420 0 R/Count -3/First 1467 0 R/Last 1471 0 R/Title(LanMan and NT Password Encryption in Samba)/Dest[1190 0 R/XYZ 0 786 0]/Prev 1459 0 R/Next 1472 0 R>>endobj
+1467 0 obj<</Parent 1466 0 R/Title(Introduction)/Dest[1190 0 R/XYZ 0 762 0]/Next 1468 0 R>>endobj
+1468 0 obj<</Parent 1466 0 R/Count -2/First 1469 0 R/Last 1470 0 R/Title(Important Notes About Security)/Dest[1190 0 R/XYZ 0 608 0]/Prev 1467 0 R/Next 1471 0 R>>endobj
+1469 0 obj<</Parent 1468 0 R/Title(Advantages of SMB Encryption)/Dest[1192 0 R/XYZ 0 786 0]/Next 1470 0 R>>endobj
+1470 0 obj<</Parent 1468 0 R/Title(Advantages of non-encrypted passwords)/Dest[1192 0 R/XYZ 0 662 0]/Prev 1469 0 R>>endobj
+1471 0 obj<</Parent 1466 0 R/Title(The smbpasswd Command)/Dest[1192 0 R/XYZ 0 564 0]/Prev 1468 0 R>>endobj
+1472 0 obj<</Parent 1420 0 R/Title(II. Type of installation)/Dest[1196 0 R/XYZ 0 786 0]/Prev 1466 0 R/Next 1473 0 R>>endobj
+1473 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1198 0 R/XYZ 0 786 0]/Prev 1472 0 R/Next 1474 0 R>>endobj
+1474 0 obj<</Parent 1420 0 R/Title(User and Share security level \(for servers not in a domain\))/Dest[1200 0 R/XYZ 0 786 0]/Prev 1473 0 R/Next 1475 0 R>>endobj
+1475 0 obj<</Parent 1420 0 R/Count -9/First 1476 0 R/Last 1489 0 R/Title(How to Configure Samba as a NT4 Primary Domain Controller)/Dest[1204 0 R/XYZ 0 786 0]/Prev 1474 0 R/Next 1490 0 R>>endobj
+1476 0 obj<</Parent 1475 0 R/Title(Prerequisite Reading)/Dest[1204 0 R/XYZ 0 738 0]/Next 1477 0 R>>endobj
+1477 0 obj<</Parent 1475 0 R/Title(Background)/Dest[1204 0 R/XYZ 0 637 0]/Prev 1476 0 R/Next 1478 0 R>>endobj
+1478 0 obj<</Parent 1475 0 R/Title(Configuring the Samba Domain Controller)/Dest[1206 0 R/XYZ 0 771 0]/Prev 1477 0 R/Next 1479 0 R>>endobj
+1479 0 obj<</Parent 1475 0 R/Count -3/First 1480 0 R/Last 1482 0 R/Title(Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[1208 0 R/XYZ 0 665 0]/Prev 1478 0 R/Next 1483 0 R>>endobj
+1480 0 obj<</Parent 1479 0 R/Title(Manual Creation of Machine Trust Accounts)/Dest[1208 0 R/XYZ 0 279 0]/Next 1481 0 R>>endobj
+1481 0 obj<</Parent 1479 0 R/Title("On-the-Fly" Creation of Machine Trust Accounts)/Dest[1210 0 R/XYZ 0 369 0]/Prev 1480 0 R/Next 1482 0 R>>endobj
+1482 0 obj<</Parent 1479 0 R/Title(Joining the Client to the Domain)/Dest[1212 0 R/XYZ 0 786 0]/Prev 1481 0 R>>endobj
+1483 0 obj<</Parent 1475 0 R/Title(Common Problems and Errors)/Dest[1212 0 R/XYZ 0 437 0]/Prev 1479 0 R/Next 1484 0 R>>endobj
+1484 0 obj<</Parent 1475 0 R/Title(System Policies and Profiles)/Dest[1214 0 R/XYZ 0 179 0]/Prev 1483 0 R/Next 1485 0 R>>endobj
+1485 0 obj<</Parent 1475 0 R/Title(What other help can I get?)/Dest[1216 0 R/XYZ 0 177 0]/Prev 1484 0 R/Next 1486 0 R>>endobj
+1486 0 obj<</Parent 1475 0 R/Count -2/First 1487 0 R/Last 1488 0 R/Title(Domain Control for Windows 9x/ME)/Dest[1222 0 R/XYZ 0 560 0]/Prev 1485 0 R/Next 1489 0 R>>endobj
+1487 0 obj<</Parent 1486 0 R/Title(Configuration Instructions: Network Logons)/Dest[1224 0 R/XYZ 0 573 0]/Next 1488 0 R>>endobj
+1488 0 obj<</Parent 1486 0 R/Title(Configuration Instructions: Setting up Roaming User Profiles)/Dest[1226 0 R/XYZ 0 786 0]/Prev 1487 0 R>>endobj
+1489 0 obj<</Parent 1475 0 R/Title(DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1234 0 R/XYZ 0 755 0]/Prev 1486 0 R>>endobj
+1490 0 obj<</Parent 1420 0 R/Count -5/First 1491 0 R/Last 1497 0 R/Title(How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1238 0 R/XYZ 0 786 0]/Prev 1475 0 R/Next 1499 0 R>>endobj
+1491 0 obj<</Parent 1490 0 R/Title(Prerequisite Reading)/Dest[1238 0 R/XYZ 0 738 0]/Next 1492 0 R>>endobj
+1492 0 obj<</Parent 1490 0 R/Title(Background)/Dest[1238 0 R/XYZ 0 650 0]/Prev 1491 0 R/Next 1493 0 R>>endobj
+1493 0 obj<</Parent 1490 0 R/Count -2/First 1494 0 R/Last 1495 0 R/Title(What qualifies a Domain Controller on the network?)/Dest[1238 0 R/XYZ 0 275 0]/Prev 1492 0 R/Next 1496 0 R>>endobj
+1494 0 obj<</Parent 1493 0 R/Title(How does a Workstation find its domain controller?)/Dest[1240 0 R/XYZ 0 786 0]/Next 1495 0 R>>endobj
+1495 0 obj<</Parent 1493 0 R/Title(When is the PDC needed?)/Dest[1240 0 R/XYZ 0 662 0]/Prev 1494 0 R>>endobj
+1496 0 obj<</Parent 1490 0 R/Title(Can Samba be a Backup Domain Controller?)/Dest[1240 0 R/XYZ 0 577 0]/Prev 1493 0 R/Next 1497 0 R>>endobj
+1497 0 obj<</Parent 1490 0 R/Count -1/First 1498 0 R/Last 1498 0 R/Title(How do I set up a Samba BDC?)/Dest[1240 0 R/XYZ 0 436 0]/Prev 1496 0 R>>endobj
+1498 0 obj<</Parent 1497 0 R/Title(How do I replicate the smbpasswd file?)/Dest[1242 0 R/XYZ 0 670 0]>>endobj
+1499 0 obj<</Parent 1420 0 R/Count -8/First 1500 0 R/Last 1508 0 R/Title(Samba as a ADS domain member)/Dest[1244 0 R/XYZ 0 786 0]/Prev 1490 0 R/Next 1509 0 R>>endobj
+1500 0 obj<</Parent 1499 0 R/Title(Installing the required packages for Debian)/Dest[1244 0 R/XYZ 0 604 0]/Next 1501 0 R>>endobj
+1501 0 obj<</Parent 1499 0 R/Title(Installing the required packages for RedHat)/Dest[1244 0 R/XYZ 0 496 0]/Prev 1500 0 R/Next 1502 0 R>>endobj
+1502 0 obj<</Parent 1499 0 R/Title(Compile Samba)/Dest[1244 0 R/XYZ 0 320 0]/Prev 1501 0 R/Next 1503 0 R>>endobj
+1503 0 obj<</Parent 1499 0 R/Title(Setup your /etc/krb5.conf)/Dest[1246 0 R/XYZ 0 617 0]/Prev 1502 0 R/Next 1504 0 R>>endobj
+1504 0 obj<</Parent 1499 0 R/Count -1/First 1505 0 R/Last 1505 0 R/Title(Create the computer account)/Dest[1246 0 R/XYZ 0 297 0]/Prev 1503 0 R/Next 1506 0 R>>endobj
+1505 0 obj<</Parent 1504 0 R/Title(Possible errors)/Dest[1246 0 R/XYZ 0 209 0]>>endobj
+1506 0 obj<</Parent 1499 0 R/Title(Test your server setup)/Dest[1248 0 R/XYZ 0 745 0]/Prev 1504 0 R/Next 1507 0 R>>endobj
+1507 0 obj<</Parent 1499 0 R/Title(Testing with smbclient)/Dest[1248 0 R/XYZ 0 656 0]/Prev 1506 0 R/Next 1508 0 R>>endobj
+1508 0 obj<</Parent 1499 0 R/Title(Notes)/Dest[1248 0 R/XYZ 0 581 0]/Prev 1507 0 R>>endobj
+1509 0 obj<</Parent 1420 0 R/Count -3/First 1510 0 R/Last 1512 0 R/Title(Samba as a NT4 domain member)/Dest[1250 0 R/XYZ 0 786 0]/Prev 1499 0 R/Next 1513 0 R>>endobj
+1510 0 obj<</Parent 1509 0 R/Title(Joining an NT Domain with Samba 2.2)/Dest[1250 0 R/XYZ 0 762 0]/Next 1511 0 R>>endobj
+1511 0 obj<</Parent 1509 0 R/Title(Samba and Windows 2000 Domains)/Dest[1252 0 R/XYZ 0 415 0]/Prev 1510 0 R/Next 1512 0 R>>endobj
+1512 0 obj<</Parent 1509 0 R/Title(Why is this better than security = server?)/Dest[1252 0 R/XYZ 0 207 0]/Prev 1511 0 R>>endobj
+1513 0 obj<</Parent 1420 0 R/Title(III. Optional configuration)/Dest[1256 0 R/XYZ 0 786 0]/Prev 1509 0 R/Next 1514 0 R>>endobj
+1514 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1258 0 R/XYZ 0 786 0]/Prev 1513 0 R/Next 1515 0 R>>endobj
+1515 0 obj<</Parent 1420 0 R/Count -6/First 1516 0 R/Last 1533 0 R/Title(Integrating MS Windows networks with Samba)/Dest[1260 0 R/XYZ 0 786 0]/Prev 1514 0 R/Next 1534 0 R>>endobj
+1516 0 obj<</Parent 1515 0 R/Title(Agenda)/Dest[1260 0 R/XYZ 0 762 0]/Next 1517 0 R>>endobj
+1517 0 obj<</Parent 1515 0 R/Count -4/First 1518 0 R/Last 1521 0 R/Title(Name Resolution in a pure Unix/Linux world)/Dest[1260 0 R/XYZ 0 515 0]/Prev 1516 0 R/Next 1522 0 R>>endobj
+1518 0 obj<</Parent 1517 0 R/Title(/etc/hosts)/Dest[1260 0 R/XYZ 0 387 0]/Next 1519 0 R>>endobj
+1519 0 obj<</Parent 1517 0 R/Title(/etc/resolv.conf)/Dest[1262 0 R/XYZ 0 507 0]/Prev 1518 0 R/Next 1520 0 R>>endobj
+1520 0 obj<</Parent 1517 0 R/Title(/etc/host.conf)/Dest[1262 0 R/XYZ 0 369 0]/Prev 1519 0 R/Next 1521 0 R>>endobj
+1521 0 obj<</Parent 1517 0 R/Title(/etc/nsswitch.conf)/Dest[1262 0 R/XYZ 0 221 0]/Prev 1520 0 R>>endobj
+1522 0 obj<</Parent 1515 0 R/Count -5/First 1523 0 R/Last 1527 0 R/Title(Name resolution as used within MS Windows networking)/Dest[1264 0 R/XYZ 0 400 0]/Prev 1517 0 R/Next 1528 0 R>>endobj
+1523 0 obj<</Parent 1522 0 R/Title(The NetBIOS Name Cache)/Dest[1266 0 R/XYZ 0 348 0]/Next 1524 0 R>>endobj
+1524 0 obj<</Parent 1522 0 R/Title(The LMHOSTS file)/Dest[1268 0 R/XYZ 0 786 0]/Prev 1523 0 R/Next 1525 0 R>>endobj
+1525 0 obj<</Parent 1522 0 R/Title(HOSTS file)/Dest[1270 0 R/XYZ 0 509 0]/Prev 1524 0 R/Next 1526 0 R>>endobj
+1526 0 obj<</Parent 1522 0 R/Title(DNS Lookup)/Dest[1270 0 R/XYZ 0 411 0]/Prev 1525 0 R/Next 1527 0 R>>endobj
+1527 0 obj<</Parent 1522 0 R/Title(WINS Lookup)/Dest[1270 0 R/XYZ 0 273 0]/Prev 1526 0 R>>endobj
+1528 0 obj<</Parent 1515 0 R/Title(How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[1272 0 R/XYZ 0 720 0]/Prev 1522 0 R/Next 1529 0 R>>endobj
+1529 0 obj<</Parent 1515 0 R/Count -3/First 1530 0 R/Last 1532 0 R/Title(MS Windows security options and how to configure Samba for seemless integration)/Dest[1274 0 R/XYZ 0 786 0]/Prev 1528 0 R/Next 1533 0 R>>endobj
+1530 0 obj<</Parent 1529 0 R/Title(Use MS Windows NT as an authentication server)/Dest[1276 0 R/XYZ 0 745 0]/Next 1531 0 R>>endobj
+1531 0 obj<</Parent 1529 0 R/Title(Make Samba a member of an MS Windows NT security domain)/Dest[1276 0 R/XYZ 0 493 0]/Prev 1530 0 R/Next 1532 0 R>>endobj
+1532 0 obj<</Parent 1529 0 R/Title(Configure Samba as an authentication server)/Dest[1278 0 R/XYZ 0 786 0]/Prev 1531 0 R>>endobj
+1533 0 obj<</Parent 1515 0 R/Title(Conclusions)/Dest[1278 0 R/XYZ 0 225 0]/Prev 1529 0 R>>endobj
+1534 0 obj<</Parent 1420 0 R/Count -7/First 1535 0 R/Last 1543 0 R/Title(UNIX Permission Bits and Windows NT Access Control Lists)/Dest[1282 0 R/XYZ 0 786 0]/Prev 1515 0 R/Next 1544 0 R>>endobj
+1535 0 obj<</Parent 1534 0 R/Title(Viewing and changing UNIX permissions using the NT security dialogs)/Dest[1282 0 R/XYZ 0 738 0]/Next 1536 0 R>>endobj
+1536 0 obj<</Parent 1534 0 R/Title(How to view file security on a Samba share)/Dest[1282 0 R/XYZ 0 550 0]/Prev 1535 0 R/Next 1537 0 R>>endobj
+1537 0 obj<</Parent 1534 0 R/Title(Viewing file ownership)/Dest[1282 0 R/XYZ 0 383 0]/Prev 1536 0 R/Next 1538 0 R>>endobj
+1538 0 obj<</Parent 1534 0 R/Count -2/First 1539 0 R/Last 1540 0 R/Title(Viewing file or directory permissions)/Dest[1284 0 R/XYZ 0 718 0]/Prev 1537 0 R/Next 1541 0 R>>endobj
+1539 0 obj<</Parent 1538 0 R/Title(File Permissions)/Dest[1284 0 R/XYZ 0 485 0]/Next 1540 0 R>>endobj
+1540 0 obj<</Parent 1538 0 R/Title(Directory Permissions)/Dest[1284 0 R/XYZ 0 241 0]/Prev 1539 0 R>>endobj
+1541 0 obj<</Parent 1534 0 R/Title(Modifying file or directory permissions)/Dest[1286 0 R/XYZ 0 745 0]/Prev 1538 0 R/Next 1542 0 R>>endobj
+1542 0 obj<</Parent 1534 0 R/Title(Interaction with the standard Samba create mask parameters)/Dest[1286 0 R/XYZ 0 313 0]/Prev 1541 0 R/Next 1543 0 R>>endobj
+1543 0 obj<</Parent 1534 0 R/Title(Interaction with the standard Samba file attribute mapping)/Dest[1290 0 R/XYZ 0 652 0]/Prev 1542 0 R>>endobj
+1544 0 obj<</Parent 1420 0 R/Count -3/First 1545 0 R/Last 1547 0 R/Title(Configuring PAM for distributed but centrally managed authentication)/Dest[1292 0 R/XYZ 0 786 0]/Prev 1534 0 R/Next 1548 0 R>>endobj
+1545 0 obj<</Parent 1544 0 R/Title(Samba and PAM)/Dest[1292 0 R/XYZ 0 738 0]/Next 1546 0 R>>endobj
+1546 0 obj<</Parent 1544 0 R/Title(Distributed Authentication)/Dest[1294 0 R/XYZ 0 179 0]/Prev 1545 0 R/Next 1547 0 R>>endobj
+1547 0 obj<</Parent 1544 0 R/Title(PAM Configuration in smb.conf)/Dest[1296 0 R/XYZ 0 731 0]/Prev 1546 0 R>>endobj
+1548 0 obj<</Parent 1420 0 R/Count -1/First 1549 0 R/Last 1549 0 R/Title(Hosting a Microsoft Distributed File System tree on Samba)/Dest[1298 0 R/XYZ 0 786 0]/Prev 1544 0 R/Next 1551 0 R>>endobj
+1549 0 obj<</Parent 1548 0 R/Count -1/First 1550 0 R/Last 1550 0 R/Title(Instructions)/Dest[1298 0 R/XYZ 0 738 0]>>endobj
+1550 0 obj<</Parent 1549 0 R/Title(Notes)/Dest[1300 0 R/XYZ 0 705 0]>>endobj
+1551 0 obj<</Parent 1420 0 R/Count -4/First 1552 0 R/Last 1564 0 R/Title(Printing Support)/Dest[1302 0 R/XYZ 0 786 0]/Prev 1548 0 R/Next 1574 0 R>>endobj
+1552 0 obj<</Parent 1551 0 R/Title(Introduction)/Dest[1302 0 R/XYZ 0 762 0]/Next 1553 0 R>>endobj
+1553 0 obj<</Parent 1551 0 R/Count -5/First 1554 0 R/Last 1558 0 R/Title(Configuration)/Dest[1302 0 R/XYZ 0 370 0]/Prev 1552 0 R/Next 1559 0 R>>endobj
+1554 0 obj<</Parent 1553 0 R/Title(Creating [print$])/Dest[1302 0 R/XYZ 0 184 0]/Next 1555 0 R>>endobj
+1555 0 obj<</Parent 1553 0 R/Title(Setting Drivers for Existing Printers)/Dest[1306 0 R/XYZ 0 636 0]/Prev 1554 0 R/Next 1556 0 R>>endobj
+1556 0 obj<</Parent 1553 0 R/Title(Support a large number of printers)/Dest[1306 0 R/XYZ 0 221 0]/Prev 1555 0 R/Next 1557 0 R>>endobj
+1557 0 obj<</Parent 1553 0 R/Title(Adding New Printers via the Windows NT APW)/Dest[1308 0 R/XYZ 0 509 0]/Prev 1556 0 R/Next 1558 0 R>>endobj
+1558 0 obj<</Parent 1553 0 R/Title(Samba and Printer Ports)/Dest[1310 0 R/XYZ 0 336 0]/Prev 1557 0 R>>endobj
+1559 0 obj<</Parent 1551 0 R/Count -4/First 1560 0 R/Last 1563 0 R/Title(The Imprints Toolset)/Dest[1312 0 R/XYZ 0 786 0]/Prev 1553 0 R/Next 1564 0 R>>endobj
+1560 0 obj<</Parent 1559 0 R/Title(What is Imprints?)/Dest[1312 0 R/XYZ 0 685 0]/Next 1561 0 R>>endobj
+1561 0 obj<</Parent 1559 0 R/Title(Creating Printer Driver Packages)/Dest[1312 0 R/XYZ 0 560 0]/Prev 1560 0 R/Next 1562 0 R>>endobj
+1562 0 obj<</Parent 1559 0 R/Title(The Imprints server)/Dest[1312 0 R/XYZ 0 475 0]/Prev 1561 0 R/Next 1563 0 R>>endobj
+1563 0 obj<</Parent 1559 0 R/Title(The Installation Client)/Dest[1312 0 R/XYZ 0 377 0]/Prev 1562 0 R>>endobj
+1564 0 obj<</Parent 1551 0 R/Count -9/First 1565 0 R/Last 1573 0 R/Title(Diagnosis)/Dest[1314 0 R/XYZ 0 479 0]/Prev 1559 0 R>>endobj
+1565 0 obj<</Parent 1564 0 R/Title(Introduction)/Dest[1314 0 R/XYZ 0 459 0]/Next 1566 0 R>>endobj
+1566 0 obj<</Parent 1564 0 R/Title(Debugging printer problems)/Dest[1316 0 R/XYZ 0 503 0]/Prev 1565 0 R/Next 1567 0 R>>endobj
+1567 0 obj<</Parent 1564 0 R/Title(What printers do I have?)/Dest[1318 0 R/XYZ 0 718 0]/Prev 1566 0 R/Next 1568 0 R>>endobj
+1568 0 obj<</Parent 1564 0 R/Title(Setting up printcap and print servers)/Dest[1318 0 R/XYZ 0 532 0]/Prev 1567 0 R/Next 1569 0 R>>endobj
+1569 0 obj<</Parent 1564 0 R/Title(Job sent, no output)/Dest[1320 0 R/XYZ 0 771 0]/Prev 1568 0 R/Next 1570 0 R>>endobj
+1570 0 obj<</Parent 1564 0 R/Title(Job sent, strange output)/Dest[1320 0 R/XYZ 0 426 0]/Prev 1569 0 R/Next 1571 0 R>>endobj
+1571 0 obj<</Parent 1564 0 R/Title(Raw PostScript printed)/Dest[1322 0 R/XYZ 0 731 0]/Prev 1570 0 R/Next 1572 0 R>>endobj
+1572 0 obj<</Parent 1564 0 R/Title(Advanced Printing)/Dest[1322 0 R/XYZ 0 647 0]/Prev 1571 0 R/Next 1573 0 R>>endobj
+1573 0 obj<</Parent 1564 0 R/Title(Real debugging)/Dest[1322 0 R/XYZ 0 549 0]/Prev 1572 0 R>>endobj
+1574 0 obj<</Parent 1420 0 R/Count -7/First 1575 0 R/Last 1590 0 R/Title(Unified Logons between Windows NT and UNIX using Winbind)/Dest[1324 0 R/XYZ 0 786 0]/Prev 1551 0 R/Next 1591 0 R>>endobj
+1575 0 obj<</Parent 1574 0 R/Title(Abstract)/Dest[1324 0 R/XYZ 0 738 0]/Next 1576 0 R>>endobj
+1576 0 obj<</Parent 1574 0 R/Title(Introduction)/Dest[1324 0 R/XYZ 0 597 0]/Prev 1575 0 R/Next 1577 0 R>>endobj
+1577 0 obj<</Parent 1574 0 R/Count -1/First 1578 0 R/Last 1578 0 R/Title(What Winbind Provides)/Dest[1324 0 R/XYZ 0 284 0]/Prev 1576 0 R/Next 1579 0 R>>endobj
+1578 0 obj<</Parent 1577 0 R/Title(Target Uses)/Dest[1326 0 R/XYZ 0 613 0]>>endobj
+1579 0 obj<</Parent 1574 0 R/Count -5/First 1580 0 R/Last 1584 0 R/Title(How Winbind Works)/Dest[1326 0 R/XYZ 0 462 0]/Prev 1577 0 R/Next 1585 0 R>>endobj
+1580 0 obj<</Parent 1579 0 R/Title(Microsoft Remote Procedure Calls)/Dest[1326 0 R/XYZ 0 347 0]/Next 1581 0 R>>endobj
+1581 0 obj<</Parent 1579 0 R/Title(Name Service Switch)/Dest[1328 0 R/XYZ 0 786 0]/Prev 1580 0 R/Next 1582 0 R>>endobj
+1582 0 obj<</Parent 1579 0 R/Title(Pluggable Authentication Modules)/Dest[1328 0 R/XYZ 0 345 0]/Prev 1581 0 R/Next 1583 0 R>>endobj
+1583 0 obj<</Parent 1579 0 R/Title(User and Group ID Allocation)/Dest[1330 0 R/XYZ 0 718 0]/Prev 1582 0 R/Next 1584 0 R>>endobj
+1584 0 obj<</Parent 1579 0 R/Title(Result Caching)/Dest[1330 0 R/XYZ 0 541 0]/Prev 1583 0 R>>endobj
+1585 0 obj<</Parent 1574 0 R/Count -3/First 1586 0 R/Last 1588 0 R/Title(Installation and Configuration)/Dest[1330 0 R/XYZ 0 403 0]/Prev 1579 0 R/Next 1589 0 R>>endobj
+1586 0 obj<</Parent 1585 0 R/Title(Introduction)/Dest[1330 0 R/XYZ 0 262 0]/Next 1587 0 R>>endobj
+1587 0 obj<</Parent 1585 0 R/Title(Requirements)/Dest[1332 0 R/XYZ 0 652 0]/Prev 1586 0 R/Next 1588 0 R>>endobj
+1588 0 obj<</Parent 1585 0 R/Title(Testing Things Out)/Dest[1332 0 R/XYZ 0 383 0]/Prev 1587 0 R>>endobj
+1589 0 obj<</Parent 1574 0 R/Title(Limitations)/Dest[1346 0 R/XYZ 0 270 0]/Prev 1585 0 R/Next 1590 0 R>>endobj
+1590 0 obj<</Parent 1574 0 R/Title(Conclusion)/Dest[1348 0 R/XYZ 0 731 0]/Prev 1589 0 R>>endobj
+1591 0 obj<</Parent 1420 0 R/Count -4/First 1592 0 R/Last 1595 0 R/Title(Passdb MySQL plugin)/Dest[1350 0 R/XYZ 0 786 0]/Prev 1574 0 R/Next 1596 0 R>>endobj
+1592 0 obj<</Parent 1591 0 R/Title(Building)/Dest[1350 0 R/XYZ 0 762 0]/Next 1593 0 R>>endobj
+1593 0 obj<</Parent 1591 0 R/Title(Configuring)/Dest[1350 0 R/XYZ 0 647 0]/Prev 1592 0 R/Next 1594 0 R>>endobj
+1594 0 obj<</Parent 1591 0 R/Title(Using plaintext passwords or encrypted password)/Dest[1352 0 R/XYZ 0 564 0]/Prev 1593 0 R/Next 1595 0 R>>endobj
+1595 0 obj<</Parent 1591 0 R/Title(Getting non-column data from the table)/Dest[1352 0 R/XYZ 0 410 0]/Prev 1594 0 R>>endobj
+1596 0 obj<</Parent 1420 0 R/Count -2/First 1597 0 R/Last 1598 0 R/Title(Passdb XML plugin)/Dest[1354 0 R/XYZ 0 786 0]/Prev 1591 0 R/Next 1599 0 R>>endobj
+1597 0 obj<</Parent 1596 0 R/Title(Building)/Dest[1354 0 R/XYZ 0 762 0]/Next 1598 0 R>>endobj
+1598 0 obj<</Parent 1596 0 R/Title(Usage)/Dest[1354 0 R/XYZ 0 661 0]/Prev 1597 0 R>>endobj
+1599 0 obj<</Parent 1420 0 R/Count -3/First 1600 0 R/Last 1605 0 R/Title(Stackable VFS modules)/Dest[1356 0 R/XYZ 0 786 0]/Prev 1596 0 R/Next 1608 0 R>>endobj
+1600 0 obj<</Parent 1599 0 R/Title(Introduction and configuration)/Dest[1356 0 R/XYZ 0 762 0]/Next 1601 0 R>>endobj
+1601 0 obj<</Parent 1599 0 R/Count -3/First 1602 0 R/Last 1604 0 R/Title(Included modules)/Dest[1356 0 R/XYZ 0 435 0]/Prev 1600 0 R/Next 1605 0 R>>endobj
+1602 0 obj<</Parent 1601 0 R/Title(audit)/Dest[1356 0 R/XYZ 0 414 0]/Next 1603 0 R>>endobj
+1603 0 obj<</Parent 1601 0 R/Title(recycle)/Dest[1356 0 R/XYZ 0 265 0]/Prev 1602 0 R/Next 1604 0 R>>endobj
+1604 0 obj<</Parent 1601 0 R/Title(netatalk)/Dest[1358 0 R/XYZ 0 613 0]/Prev 1603 0 R>>endobj
+1605 0 obj<</Parent 1599 0 R/Count -2/First 1606 0 R/Last 1607 0 R/Title(VFS modules available elsewhere)/Dest[1358 0 R/XYZ 0 483 0]/Prev 1601 0 R>>endobj
+1606 0 obj<</Parent 1605 0 R/Title(DatabaseFS)/Dest[1358 0 R/XYZ 0 368 0]/Next 1607 0 R>>endobj
+1607 0 obj<</Parent 1605 0 R/Title(vscan)/Dest[1360 0 R/XYZ 0 786 0]/Prev 1606 0 R>>endobj
+1608 0 obj<</Parent 1420 0 R/Count -10/First 1609 0 R/Last 1620 0 R/Title(Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[1362 0 R/XYZ 0 786 0]/Prev 1599 0 R/Next 1621 0 R>>endobj
+1609 0 obj<</Parent 1608 0 R/Title(Purpose)/Dest[1362 0 R/XYZ 0 738 0]/Next 1610 0 R>>endobj
+1610 0 obj<</Parent 1608 0 R/Title(Introduction)/Dest[1362 0 R/XYZ 0 465 0]/Prev 1609 0 R/Next 1611 0 R>>endobj
+1611 0 obj<</Parent 1608 0 R/Title(Supported LDAP Servers)/Dest[1364 0 R/XYZ 0 626 0]/Prev 1610 0 R/Next 1612 0 R>>endobj
+1612 0 obj<</Parent 1608 0 R/Title(Schema and Relationship to the RFC 2307 posixAccount)/Dest[1364 0 R/XYZ 0 524 0]/Prev 1611 0 R/Next 1613 0 R>>endobj
+1613 0 obj<</Parent 1608 0 R/Count -2/First 1614 0 R/Last 1615 0 R/Title(Configuring Samba with LDAP)/Dest[1366 0 R/XYZ 0 786 0]/Prev 1612 0 R/Next 1616 0 R>>endobj
+1614 0 obj<</Parent 1613 0 R/Title(OpenLDAP configuration)/Dest[1366 0 R/XYZ 0 766 0]/Next 1615 0 R>>endobj
+1615 0 obj<</Parent 1613 0 R/Title(Configuring Samba)/Dest[1366 0 R/XYZ 0 191 0]/Prev 1614 0 R>>endobj
+1616 0 obj<</Parent 1608 0 R/Title(Accounts and Groups management)/Dest[1368 0 R/XYZ 0 280 0]/Prev 1613 0 R/Next 1617 0 R>>endobj
+1617 0 obj<</Parent 1608 0 R/Title(Security and sambaAccount)/Dest[1370 0 R/XYZ 0 758 0]/Prev 1616 0 R/Next 1618 0 R>>endobj
+1618 0 obj<</Parent 1608 0 R/Title(LDAP specials attributes for sambaAccounts)/Dest[1370 0 R/XYZ 0 373 0]/Prev 1617 0 R/Next 1619 0 R>>endobj
+1619 0 obj<</Parent 1608 0 R/Title(Example LDIF Entries for a sambaAccount)/Dest[1372 0 R/XYZ 0 362 0]/Prev 1618 0 R/Next 1620 0 R>>endobj
+1620 0 obj<</Parent 1608 0 R/Title(Comments)/Dest[1374 0 R/XYZ 0 531 0]/Prev 1619 0 R>>endobj
+1621 0 obj<</Parent 1420 0 R/Count -2/First 1622 0 R/Last 1623 0 R/Title(HOWTO Access Samba source code via CVS)/Dest[1376 0 R/XYZ 0 786 0]/Prev 1608 0 R/Next 1626 0 R>>endobj
+1622 0 obj<</Parent 1621 0 R/Title(Introduction)/Dest[1376 0 R/XYZ 0 762 0]/Next 1623 0 R>>endobj
+1623 0 obj<</Parent 1621 0 R/Count -2/First 1624 0 R/Last 1625 0 R/Title(CVS Access to samba.org)/Dest[1376 0 R/XYZ 0 634 0]/Prev 1622 0 R>>endobj
+1624 0 obj<</Parent 1623 0 R/Title(Access via CVSweb)/Dest[1376 0 R/XYZ 0 546 0]/Next 1625 0 R>>endobj
+1625 0 obj<</Parent 1623 0 R/Title(Access via cvs)/Dest[1376 0 R/XYZ 0 435 0]/Prev 1624 0 R>>endobj
+1626 0 obj<</Parent 1420 0 R/Title(Group mapping HOWTO)/Dest[1380 0 R/XYZ 0 786 0]/Prev 1621 0 R/Next 1627 0 R>>endobj
+1627 0 obj<</Parent 1420 0 R/Count -10/First 1628 0 R/Last 1637 0 R/Title(Samba performance issues)/Dest[1382 0 R/XYZ 0 786 0]/Prev 1626 0 R/Next 1638 0 R>>endobj
+1628 0 obj<</Parent 1627 0 R/Title(Comparisons)/Dest[1382 0 R/XYZ 0 762 0]/Next 1629 0 R>>endobj
+1629 0 obj<</Parent 1627 0 R/Title(Socket options)/Dest[1382 0 R/XYZ 0 502 0]/Prev 1628 0 R/Next 1630 0 R>>endobj
+1630 0 obj<</Parent 1627 0 R/Title(Read size)/Dest[1382 0 R/XYZ 0 242 0]/Prev 1629 0 R/Next 1631 0 R>>endobj
+1631 0 obj<</Parent 1627 0 R/Title(Max xmit)/Dest[1384 0 R/XYZ 0 692 0]/Prev 1630 0 R/Next 1632 0 R>>endobj
+1632 0 obj<</Parent 1627 0 R/Title(Log level)/Dest[1384 0 R/XYZ 0 511 0]/Prev 1631 0 R/Next 1633 0 R>>endobj
+1633 0 obj<</Parent 1627 0 R/Title(Read raw)/Dest[1384 0 R/XYZ 0 436 0]/Prev 1632 0 R/Next 1634 0 R>>endobj
+1634 0 obj<</Parent 1627 0 R/Title(Write raw)/Dest[1384 0 R/XYZ 0 268 0]/Prev 1633 0 R/Next 1635 0 R>>endobj
+1635 0 obj<</Parent 1627 0 R/Title(Slow Clients)/Dest[1386 0 R/XYZ 0 786 0]/Prev 1634 0 R/Next 1636 0 R>>endobj
+1636 0 obj<</Parent 1627 0 R/Title(Slow Logins)/Dest[1386 0 R/XYZ 0 658 0]/Prev 1635 0 R/Next 1637 0 R>>endobj
+1637 0 obj<</Parent 1627 0 R/Title(Client tuning)/Dest[1386 0 R/XYZ 0 583 0]/Prev 1636 0 R>>endobj
+1638 0 obj<</Parent 1420 0 R/Title(IV. Appendixes)/Dest[1390 0 R/XYZ 0 786 0]/Prev 1627 0 R/Next 1639 0 R>>endobj
+1639 0 obj<</Parent 1420 0 R/Count -4/First 1640 0 R/Last 1643 0 R/Title(Portability)/Dest[1392 0 R/XYZ 0 786 0]/Prev 1638 0 R/Next 1644 0 R>>endobj
+1640 0 obj<</Parent 1639 0 R/Title(HPUX)/Dest[1392 0 R/XYZ 0 707 0]/Next 1641 0 R>>endobj
+1641 0 obj<</Parent 1639 0 R/Title(SCO Unix)/Dest[1392 0 R/XYZ 0 461 0]/Prev 1640 0 R/Next 1642 0 R>>endobj
+1642 0 obj<</Parent 1639 0 R/Title(DNIX)/Dest[1392 0 R/XYZ 0 346 0]/Prev 1641 0 R/Next 1643 0 R>>endobj
+1643 0 obj<</Parent 1639 0 R/Title(RedHat Linux Rembrandt-II)/Dest[1394 0 R/XYZ 0 269 0]/Prev 1642 0 R>>endobj
+1644 0 obj<</Parent 1420 0 R/Count -5/First 1645 0 R/Last 1657 0 R/Title(Samba and other CIFS clients)/Dest[1398 0 R/XYZ 0 786 0]/Prev 1639 0 R/Next 1658 0 R>>endobj
+1645 0 obj<</Parent 1644 0 R/Title(Macintosh clients?)/Dest[1398 0 R/XYZ 0 721 0]/Next 1646 0 R>>endobj
+1646 0 obj<</Parent 1644 0 R/Count -4/First 1647 0 R/Last 1650 0 R/Title(OS2 Client)/Dest[1398 0 R/XYZ 0 513 0]/Prev 1645 0 R/Next 1651 0 R>>endobj
+1647 0 obj<</Parent 1646 0 R/Title(How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[1398 0 R/XYZ 0 493 0]/Next 1648 0 R>>endobj
+1648 0 obj<</Parent 1646 0 R/Title(How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1400 0 R/XYZ 0 786 0]/Prev 1647 0 R/Next 1649 0 R>>endobj
+1649 0 obj<</Parent 1646 0 R/Title(Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[1400 0 R/XYZ 0 573 0]/Prev 1648 0 R/Next 1650 0 R>>endobj
+1650 0 obj<</Parent 1646 0 R/Title(How do I get printer driver download working for OS/2 clients?)/Dest[1400 0 R/XYZ 0 475 0]/Prev 1649 0 R>>endobj
+1651 0 obj<</Parent 1644 0 R/Count -4/First 1652 0 R/Last 1655 0 R/Title(Windows for Workgroups)/Dest[1400 0 R/XYZ 0 218 0]/Prev 1646 0 R/Next 1656 0 R>>endobj
+1652 0 obj<</Parent 1651 0 R/Title(Use latest TCP/IP stack from Microsoft)/Dest[1400 0 R/XYZ 0 198 0]/Next 1653 0 R>>endobj
+1653 0 obj<</Parent 1651 0 R/Title(Delete .pwl files after password change)/Dest[1402 0 R/XYZ 0 705 0]/Prev 1652 0 R/Next 1654 0 R>>endobj
+1654 0 obj<</Parent 1651 0 R/Title(Configure WfW password handling)/Dest[1402 0 R/XYZ 0 554 0]/Prev 1653 0 R/Next 1655 0 R>>endobj
+1655 0 obj<</Parent 1651 0 R/Title(Case handling of passwords)/Dest[1402 0 R/XYZ 0 456 0]/Prev 1654 0 R>>endobj
+1656 0 obj<</Parent 1644 0 R/Title(Windows '95/'98)/Dest[1402 0 R/XYZ 0 371 0]/Prev 1651 0 R/Next 1657 0 R>>endobj
+1657 0 obj<</Parent 1644 0 R/Title(Windows 2000 Service Pack 2)/Dest[1404 0 R/XYZ 0 786 0]/Prev 1656 0 R>>endobj
+1658 0 obj<</Parent 1420 0 R/Count -6/First 1659 0 R/Last 1664 0 R/Title(Reporting Bugs)/Dest[1406 0 R/XYZ 0 786 0]/Prev 1644 0 R/Next 1665 0 R>>endobj
+1659 0 obj<</Parent 1658 0 R/Title(Introduction)/Dest[1406 0 R/XYZ 0 762 0]/Next 1660 0 R>>endobj
+1660 0 obj<</Parent 1658 0 R/Title(General info)/Dest[1406 0 R/XYZ 0 476 0]/Prev 1659 0 R/Next 1661 0 R>>endobj
+1661 0 obj<</Parent 1658 0 R/Title(Debug levels)/Dest[1406 0 R/XYZ 0 335 0]/Prev 1660 0 R/Next 1662 0 R>>endobj
+1662 0 obj<</Parent 1658 0 R/Title(Internal errors)/Dest[1408 0 R/XYZ 0 665 0]/Prev 1661 0 R/Next 1663 0 R>>endobj
+1663 0 obj<</Parent 1658 0 R/Title(Attaching to a running process)/Dest[1408 0 R/XYZ 0 313 0]/Prev 1662 0 R/Next 1664 0 R>>endobj
+1664 0 obj<</Parent 1658 0 R/Title(Patches)/Dest[1408 0 R/XYZ 0 211 0]/Prev 1663 0 R>>endobj
+1665 0 obj<</Parent 1420 0 R/Count -4/First 1666 0 R/Last 1680 0 R/Title(Diagnosing your samba server)/Dest[1410 0 R/XYZ 0 786 0]/Prev 1658 0 R>>endobj
+1666 0 obj<</Parent 1665 0 R/Title(Introduction)/Dest[1410 0 R/XYZ 0 762 0]/Next 1667 0 R>>endobj
+1667 0 obj<</Parent 1665 0 R/Title(Assumptions)/Dest[1410 0 R/XYZ 0 581 0]/Prev 1666 0 R/Next 1668 0 R>>endobj
+1668 0 obj<</Parent 1665 0 R/Count -11/First 1669 0 R/Last 1679 0 R/Title(Tests)/Dest[1410 0 R/XYZ 0 249 0]/Prev 1667 0 R/Next 1680 0 R>>endobj
+1669 0 obj<</Parent 1668 0 R/Title(Test 1)/Dest[1410 0 R/XYZ 0 229 0]/Next 1670 0 R>>endobj
+1670 0 obj<</Parent 1668 0 R/Title(Test 2)/Dest[1412 0 R/XYZ 0 786 0]/Prev 1669 0 R/Next 1671 0 R>>endobj
+1671 0 obj<</Parent 1668 0 R/Title(Test 3)/Dest[1412 0 R/XYZ 0 583 0]/Prev 1670 0 R/Next 1672 0 R>>endobj
+1672 0 obj<</Parent 1668 0 R/Title(Test 4)/Dest[1414 0 R/XYZ 0 652 0]/Prev 1671 0 R/Next 1673 0 R>>endobj
+1673 0 obj<</Parent 1668 0 R/Title(Test 5)/Dest[1414 0 R/XYZ 0 501 0]/Prev 1672 0 R/Next 1674 0 R>>endobj
+1674 0 obj<</Parent 1668 0 R/Title(Test 6)/Dest[1414 0 R/XYZ 0 377 0]/Prev 1673 0 R/Next 1675 0 R>>endobj
+1675 0 obj<</Parent 1668 0 R/Title(Test 7)/Dest[1416 0 R/XYZ 0 786 0]/Prev 1674 0 R/Next 1676 0 R>>endobj
+1676 0 obj<</Parent 1668 0 R/Title(Test 8)/Dest[1416 0 R/XYZ 0 424 0]/Prev 1675 0 R/Next 1677 0 R>>endobj
+1677 0 obj<</Parent 1668 0 R/Title(Test 9)/Dest[1418 0 R/XYZ 0 758 0]/Prev 1676 0 R/Next 1678 0 R>>endobj
+1678 0 obj<</Parent 1668 0 R/Title(Test 10)/Dest[1418 0 R/XYZ 0 567 0]/Prev 1677 0 R/Next 1679 0 R>>endobj
+1679 0 obj<</Parent 1668 0 R/Title(Test 11)/Dest[1418 0 R/XYZ 0 430 0]/Prev 1678 0 R>>endobj
+1680 0 obj<</Parent 1665 0 R/Title(Still having troubles?)/Dest[1418 0 R/XYZ 0 292 0]/Prev 1668 0 R>>endobj
+1681 0 obj<</Type/Catalog/Pages 1119 0 R/PageLayout/SinglePage/Outlines 1420 0 R/OpenAction[1136 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>8<</S/D/St 1/P()>>9<</S/D/St 2/P()>>13<</S/D/St 6/P()>>14<</S/D/St 7/P()>>15<</S/D/St 8/P()>>22<</S/D/St 15/P()>>31<</S/D/St 24/P()>>35<</S/D/St 28/P()>>38<</S/D/St 31/P()>>39<</S/D/St 32/P()>>40<</S/D/St 33/P()>>42<</S/D/St 35/P()>>59<</S/D/St 52/P()>>62<</S/D/St 55/P()>>65<</S/D/St 58/P()>>68<</S/D/St 61/P()>>69<</S/D/St 62/P()>>70<</S/D/St 63/P()>>81<</S/D/St 74/P()>>86<</S/D/St 79/P()>>89<</S/D/St 82/P()>>91<</S/D/St 84/P()>>102<</S/D/St 95/P()>>115<</S/D/St 108/P()>>117<</S/D/St 110/P()>>118<</S/D/St 111/P()>>121<</S/D/St 114/P()>>128<</S/D/St 121/P()>>130<</S/D/St 123/P()>>131<</S/D/St 124/P()>>135<</S/D/St 128/P()>>136<</S/D/St 129/P()>>139<</S/D/St 132/P()>>143<</S/D/St 136/P()>>145<</S/D/St 138/P()>>]>>>>endobj
xref
-0 1949
+0 1682
0000000000 65535 f
0000000015 00000 n
-0000000249 00000 n
-0000001815 00000 n
-0000001889 00000 n
-0000001968 00000 n
-0000002050 00000 n
-0000002136 00000 n
-0000002214 00000 n
-0000002291 00000 n
-0000002370 00000 n
-0000002454 00000 n
-0000002531 00000 n
-0000002613 00000 n
-0000002672 00000 n
-0000003099 00000 n
-0000003837 00000 n
-0000003939 00000 n
-0000004042 00000 n
-0000004144 00000 n
-0000004246 00000 n
-0000004348 00000 n
-0000004450 00000 n
-0000004553 00000 n
-0000004656 00000 n
-0000004759 00000 n
-0000004862 00000 n
-0000004965 00000 n
-0000005068 00000 n
-0000005171 00000 n
-0000005274 00000 n
-0000005377 00000 n
-0000005480 00000 n
-0000005583 00000 n
-0000005686 00000 n
-0000005789 00000 n
-0000005892 00000 n
-0000005995 00000 n
-0000006098 00000 n
-0000006201 00000 n
-0000006304 00000 n
-0000006406 00000 n
-0000006509 00000 n
-0000006612 00000 n
-0000006715 00000 n
-0000006818 00000 n
-0000006921 00000 n
-0000007024 00000 n
-0000007126 00000 n
-0000007229 00000 n
-0000007332 00000 n
-0000007435 00000 n
-0000007538 00000 n
-0000007641 00000 n
-0000007744 00000 n
-0000007847 00000 n
-0000007949 00000 n
-0000008050 00000 n
-0000008151 00000 n
-0000008461 00000 n
-0000008563 00000 n
-0000008666 00000 n
-0000008769 00000 n
-0000008872 00000 n
-0000008975 00000 n
-0000009078 00000 n
-0000009181 00000 n
-0000009284 00000 n
-0000009387 00000 n
-0000009490 00000 n
-0000009593 00000 n
-0000009696 00000 n
-0000009799 00000 n
-0000009902 00000 n
-0000010005 00000 n
-0000010108 00000 n
-0000010211 00000 n
-0000010313 00000 n
-0000010415 00000 n
-0000010517 00000 n
-0000010619 00000 n
-0000010722 00000 n
-0000010825 00000 n
-0000010928 00000 n
-0000011031 00000 n
-0000011134 00000 n
-0000011237 00000 n
-0000011340 00000 n
-0000011443 00000 n
-0000011546 00000 n
-0000011649 00000 n
-0000011752 00000 n
-0000011855 00000 n
-0000011958 00000 n
-0000012061 00000 n
-0000012163 00000 n
-0000012266 00000 n
-0000012369 00000 n
-0000012472 00000 n
-0000012575 00000 n
-0000012677 00000 n
-0000012779 00000 n
-0000012881 00000 n
-0000013201 00000 n
-0000013304 00000 n
-0000013408 00000 n
-0000013512 00000 n
-0000013615 00000 n
-0000013719 00000 n
-0000013823 00000 n
-0000013927 00000 n
-0000014031 00000 n
-0000014135 00000 n
-0000014239 00000 n
-0000014343 00000 n
-0000014447 00000 n
-0000014551 00000 n
-0000014654 00000 n
-0000014758 00000 n
-0000014862 00000 n
-0000014966 00000 n
-0000015069 00000 n
-0000015172 00000 n
-0000015275 00000 n
-0000015379 00000 n
-0000015483 00000 n
-0000015587 00000 n
-0000015691 00000 n
-0000015795 00000 n
-0000015899 00000 n
-0000016003 00000 n
-0000016107 00000 n
-0000016211 00000 n
-0000016315 00000 n
-0000016419 00000 n
-0000016523 00000 n
-0000016627 00000 n
-0000016731 00000 n
-0000016835 00000 n
-0000016939 00000 n
-0000017043 00000 n
-0000017147 00000 n
-0000017250 00000 n
-0000017353 00000 n
-0000017455 00000 n
-0000017557 00000 n
-0000017910 00000 n
-0000018013 00000 n
-0000018117 00000 n
-0000018221 00000 n
-0000018325 00000 n
-0000018429 00000 n
-0000018533 00000 n
-0000018637 00000 n
-0000018740 00000 n
-0000018844 00000 n
-0000018948 00000 n
-0000019052 00000 n
-0000019155 00000 n
-0000019259 00000 n
-0000019363 00000 n
-0000019466 00000 n
-0000019570 00000 n
-0000019674 00000 n
-0000019778 00000 n
-0000019882 00000 n
-0000019986 00000 n
-0000020090 00000 n
-0000020194 00000 n
-0000020298 00000 n
-0000020402 00000 n
-0000020506 00000 n
-0000020610 00000 n
-0000020714 00000 n
-0000020818 00000 n
-0000020922 00000 n
-0000021026 00000 n
-0000021130 00000 n
-0000021234 00000 n
-0000021338 00000 n
-0000021442 00000 n
-0000021546 00000 n
-0000021650 00000 n
-0000021754 00000 n
-0000021857 00000 n
-0000021961 00000 n
-0000022065 00000 n
-0000022169 00000 n
-0000022272 00000 n
-0000022374 00000 n
-0000022476 00000 n
-0000022845 00000 n
-0000022948 00000 n
-0000023052 00000 n
-0000023156 00000 n
-0000023260 00000 n
-0000023364 00000 n
-0000023468 00000 n
-0000023572 00000 n
-0000023676 00000 n
-0000023780 00000 n
-0000023884 00000 n
-0000023988 00000 n
-0000024092 00000 n
-0000024195 00000 n
-0000024299 00000 n
-0000024403 00000 n
-0000024507 00000 n
-0000024611 00000 n
-0000024715 00000 n
-0000024819 00000 n
-0000024923 00000 n
-0000025027 00000 n
-0000025131 00000 n
-0000025235 00000 n
-0000025339 00000 n
-0000025443 00000 n
-0000025546 00000 n
-0000025650 00000 n
-0000025754 00000 n
-0000025858 00000 n
-0000025962 00000 n
-0000026066 00000 n
-0000026170 00000 n
-0000026274 00000 n
-0000026378 00000 n
-0000026481 00000 n
-0000026585 00000 n
-0000026689 00000 n
-0000026793 00000 n
-0000026897 00000 n
-0000027000 00000 n
-0000027102 00000 n
-0000027204 00000 n
-0000027306 00000 n
-0000027667 00000 n
-0000027770 00000 n
-0000027874 00000 n
-0000027978 00000 n
-0000028082 00000 n
-0000028186 00000 n
-0000028290 00000 n
-0000028394 00000 n
-0000028498 00000 n
-0000028602 00000 n
-0000028705 00000 n
-0000028809 00000 n
-0000028913 00000 n
-0000029017 00000 n
-0000029121 00000 n
-0000029225 00000 n
-0000029329 00000 n
-0000029433 00000 n
-0000029536 00000 n
-0000029639 00000 n
-0000029743 00000 n
-0000029847 00000 n
-0000029951 00000 n
-0000030055 00000 n
-0000030158 00000 n
-0000030262 00000 n
-0000030366 00000 n
-0000030470 00000 n
-0000030574 00000 n
-0000030678 00000 n
-0000030782 00000 n
-0000030886 00000 n
-0000030990 00000 n
-0000031094 00000 n
-0000031198 00000 n
-0000031302 00000 n
-0000031406 00000 n
-0000031510 00000 n
-0000031613 00000 n
-0000031717 00000 n
-0000031821 00000 n
-0000031924 00000 n
-0000032026 00000 n
-0000032128 00000 n
-0000032489 00000 n
-0000032592 00000 n
+0000000250 00000 n
+0000001816 00000 n
+0000001890 00000 n
+0000001969 00000 n
+0000002051 00000 n
+0000002137 00000 n
+0000002215 00000 n
+0000002292 00000 n
+0000002371 00000 n
+0000002455 00000 n
+0000002532 00000 n
+0000002614 00000 n
+0000002673 00000 n
+0000002775 00000 n
+0000002878 00000 n
+0000002980 00000 n
+0000003082 00000 n
+0000003184 00000 n
+0000003286 00000 n
+0000003389 00000 n
+0000003492 00000 n
+0000003595 00000 n
+0000003698 00000 n
+0000003801 00000 n
+0000003904 00000 n
+0000004007 00000 n
+0000004110 00000 n
+0000004213 00000 n
+0000004316 00000 n
+0000004419 00000 n
+0000004522 00000 n
+0000004625 00000 n
+0000004728 00000 n
+0000004831 00000 n
+0000004934 00000 n
+0000005037 00000 n
+0000005140 00000 n
+0000005242 00000 n
+0000005345 00000 n
+0000005448 00000 n
+0000005551 00000 n
+0000005654 00000 n
+0000005757 00000 n
+0000005860 00000 n
+0000005963 00000 n
+0000006066 00000 n
+0000006169 00000 n
+0000006272 00000 n
+0000006375 00000 n
+0000006478 00000 n
+0000006580 00000 n
+0000006683 00000 n
+0000006785 00000 n
+0000006886 00000 n
+0000006987 00000 n
+0000007297 00000 n
+0000007399 00000 n
+0000007502 00000 n
+0000007605 00000 n
+0000007707 00000 n
+0000007810 00000 n
+0000007913 00000 n
+0000008016 00000 n
+0000008119 00000 n
+0000008222 00000 n
+0000008324 00000 n
+0000008426 00000 n
+0000008528 00000 n
+0000008630 00000 n
+0000008733 00000 n
+0000008836 00000 n
+0000008939 00000 n
+0000009042 00000 n
+0000009145 00000 n
+0000009248 00000 n
+0000009351 00000 n
+0000009454 00000 n
+0000009557 00000 n
+0000009660 00000 n
+0000009763 00000 n
+0000009866 00000 n
+0000009969 00000 n
+0000010072 00000 n
+0000010174 00000 n
+0000010277 00000 n
+0000010380 00000 n
+0000010483 00000 n
+0000010586 00000 n
+0000010689 00000 n
+0000010792 00000 n
+0000010895 00000 n
+0000010998 00000 n
+0000011100 00000 n
+0000011203 00000 n
+0000011305 00000 n
+0000011406 00000 n
+0000011507 00000 n
+0000011810 00000 n
+0000011912 00000 n
+0000012016 00000 n
+0000012120 00000 n
+0000012224 00000 n
+0000012328 00000 n
+0000012432 00000 n
+0000012535 00000 n
+0000012639 00000 n
+0000012743 00000 n
+0000012847 00000 n
+0000012950 00000 n
+0000013053 00000 n
+0000013156 00000 n
+0000013260 00000 n
+0000013364 00000 n
+0000013468 00000 n
+0000013572 00000 n
+0000013676 00000 n
+0000013780 00000 n
+0000013884 00000 n
+0000013988 00000 n
+0000014092 00000 n
+0000014196 00000 n
+0000014300 00000 n
+0000014404 00000 n
+0000014508 00000 n
+0000014612 00000 n
+0000014716 00000 n
+0000014820 00000 n
+0000014924 00000 n
+0000015028 00000 n
+0000015131 00000 n
+0000015235 00000 n
+0000015339 00000 n
+0000015443 00000 n
+0000015547 00000 n
+0000015651 00000 n
+0000015755 00000 n
+0000015859 00000 n
+0000015963 00000 n
+0000016066 00000 n
+0000016410 00000 n
+0000016513 00000 n
+0000016617 00000 n
+0000016721 00000 n
+0000016825 00000 n
+0000016928 00000 n
+0000017032 00000 n
+0000017136 00000 n
+0000017239 00000 n
+0000017343 00000 n
+0000017447 00000 n
+0000017551 00000 n
+0000017655 00000 n
+0000017759 00000 n
+0000017863 00000 n
+0000017967 00000 n
+0000018071 00000 n
+0000018175 00000 n
+0000018279 00000 n
+0000018383 00000 n
+0000018487 00000 n
+0000018591 00000 n
+0000018695 00000 n
+0000018799 00000 n
+0000018903 00000 n
+0000019007 00000 n
+0000019111 00000 n
+0000019215 00000 n
+0000019319 00000 n
+0000019423 00000 n
+0000019527 00000 n
+0000019630 00000 n
+0000019734 00000 n
+0000019838 00000 n
+0000019942 00000 n
+0000020046 00000 n
+0000020150 00000 n
+0000020254 00000 n
+0000020358 00000 n
+0000020462 00000 n
+0000020566 00000 n
+0000020670 00000 n
+0000020774 00000 n
+0000020877 00000 n
+0000020979 00000 n
+0000021081 00000 n
+0000021458 00000 n
+0000021561 00000 n
+0000021665 00000 n
+0000021769 00000 n
+0000021872 00000 n
+0000021976 00000 n
+0000022080 00000 n
+0000022184 00000 n
+0000022288 00000 n
+0000022391 00000 n
+0000022495 00000 n
+0000022599 00000 n
+0000022702 00000 n
+0000022806 00000 n
+0000022910 00000 n
+0000023014 00000 n
+0000023118 00000 n
+0000023222 00000 n
+0000023326 00000 n
+0000023430 00000 n
+0000023534 00000 n
+0000023637 00000 n
+0000023741 00000 n
+0000023845 00000 n
+0000023949 00000 n
+0000024053 00000 n
+0000024157 00000 n
+0000024261 00000 n
+0000024365 00000 n
+0000024469 00000 n
+0000024573 00000 n
+0000024677 00000 n
+0000024781 00000 n
+0000024885 00000 n
+0000024988 00000 n
+0000025092 00000 n
+0000025196 00000 n
+0000025300 00000 n
+0000025404 00000 n
+0000025507 00000 n
+0000025836 00000 n
+0000025939 00000 n
+0000026043 00000 n
+0000026147 00000 n
+0000026251 00000 n
+0000026355 00000 n
+0000026459 00000 n
+0000026563 00000 n
+0000026667 00000 n
+0000026771 00000 n
+0000026875 00000 n
+0000026979 00000 n
+0000027082 00000 n
+0000027185 00000 n
+0000027289 00000 n
+0000027393 00000 n
+0000027497 00000 n
+0000027601 00000 n
+0000027704 00000 n
+0000027808 00000 n
+0000027912 00000 n
+0000028016 00000 n
+0000028120 00000 n
+0000028224 00000 n
+0000028328 00000 n
+0000028432 00000 n
+0000028536 00000 n
+0000028640 00000 n
+0000028744 00000 n
+0000028848 00000 n
+0000028952 00000 n
+0000029056 00000 n
+0000029159 00000 n
+0000029263 00000 n
+0000029367 00000 n
+0000029471 00000 n
+0000029575 00000 n
+0000029679 00000 n
+0000029783 00000 n
+0000029886 00000 n
+0000029990 00000 n
+0000030093 00000 n
+0000030195 00000 n
+0000030297 00000 n
+0000030658 00000 n
+0000030761 00000 n
+0000030865 00000 n
+0000030969 00000 n
+0000031073 00000 n
+0000031177 00000 n
+0000031281 00000 n
+0000031385 00000 n
+0000031489 00000 n
+0000031593 00000 n
+0000031697 00000 n
+0000031801 00000 n
+0000031905 00000 n
+0000032018 00000 n
+0000032071 00000 n
+0000032158 00000 n
+0000032212 00000 n
+0000032298 00000 n
+0000032353 00000 n
+0000032440 00000 n
+0000032507 00000 n
+0000032593 00000 n
0000032696 00000 n
-0000032799 00000 n
-0000032903 00000 n
-0000033007 00000 n
-0000033111 00000 n
-0000033215 00000 n
-0000033319 00000 n
-0000033423 00000 n
-0000033527 00000 n
-0000033631 00000 n
-0000033735 00000 n
-0000033839 00000 n
-0000033943 00000 n
-0000034047 00000 n
-0000034151 00000 n
-0000034255 00000 n
-0000034359 00000 n
-0000034520 00000 n
-0000034573 00000 n
-0000034660 00000 n
-0000034714 00000 n
-0000034800 00000 n
-0000034855 00000 n
-0000034942 00000 n
-0000035009 00000 n
-0000035095 00000 n
-0000035198 00000 n
-0000035302 00000 n
-0000035406 00000 n
-0000035510 00000 n
-0000035614 00000 n
-0000035718 00000 n
-0000035822 00000 n
-0000035926 00000 n
-0000036030 00000 n
-0000036134 00000 n
-0000036238 00000 n
-0000036342 00000 n
-0000036446 00000 n
-0000036550 00000 n
-0000036654 00000 n
-0000036758 00000 n
-0000036862 00000 n
-0000036966 00000 n
-0000037070 00000 n
-0000037174 00000 n
-0000037278 00000 n
-0000037382 00000 n
-0000037486 00000 n
-0000037590 00000 n
-0000037694 00000 n
-0000037798 00000 n
-0000037902 00000 n
-0000038006 00000 n
-0000038109 00000 n
-0000038213 00000 n
-0000038317 00000 n
-0000038420 00000 n
-0000038522 00000 n
-0000038624 00000 n
-0000038945 00000 n
-0000039049 00000 n
-0000039153 00000 n
-0000039257 00000 n
-0000039361 00000 n
-0000039465 00000 n
-0000039569 00000 n
-0000039673 00000 n
-0000039777 00000 n
-0000039881 00000 n
-0000039985 00000 n
-0000040089 00000 n
-0000040193 00000 n
-0000040297 00000 n
-0000040401 00000 n
-0000040505 00000 n
-0000040609 00000 n
-0000040713 00000 n
-0000040817 00000 n
-0000040921 00000 n
-0000041025 00000 n
-0000041129 00000 n
-0000041233 00000 n
-0000041337 00000 n
-0000041441 00000 n
-0000041545 00000 n
-0000041648 00000 n
-0000041752 00000 n
-0000041856 00000 n
-0000041960 00000 n
-0000042064 00000 n
-0000042168 00000 n
-0000042272 00000 n
-0000042376 00000 n
-0000042480 00000 n
-0000042584 00000 n
-0000042688 00000 n
-0000042792 00000 n
-0000042896 00000 n
-0000043000 00000 n
-0000043104 00000 n
-0000043208 00000 n
-0000043312 00000 n
-0000043416 00000 n
-0000043520 00000 n
-0000043624 00000 n
-0000043728 00000 n
-0000043832 00000 n
-0000043936 00000 n
-0000044039 00000 n
-0000044141 00000 n
-0000044243 00000 n
-0000044668 00000 n
-0000044772 00000 n
-0000044876 00000 n
-0000044980 00000 n
-0000045084 00000 n
-0000045188 00000 n
-0000045292 00000 n
-0000045396 00000 n
-0000045500 00000 n
-0000045604 00000 n
-0000045708 00000 n
-0000045812 00000 n
-0000045916 00000 n
-0000046020 00000 n
-0000046124 00000 n
-0000046228 00000 n
-0000046332 00000 n
-0000046436 00000 n
-0000046540 00000 n
-0000046644 00000 n
-0000046748 00000 n
-0000046852 00000 n
-0000046956 00000 n
-0000047060 00000 n
-0000047164 00000 n
-0000047268 00000 n
-0000047372 00000 n
-0000047476 00000 n
-0000047580 00000 n
-0000047684 00000 n
-0000047788 00000 n
-0000047892 00000 n
-0000047996 00000 n
-0000048100 00000 n
-0000048204 00000 n
-0000048308 00000 n
-0000048412 00000 n
-0000048516 00000 n
-0000048620 00000 n
-0000048724 00000 n
-0000048828 00000 n
-0000048932 00000 n
-0000049036 00000 n
-0000049140 00000 n
-0000049244 00000 n
-0000049348 00000 n
-0000049451 00000 n
-0000049555 00000 n
-0000049659 00000 n
-0000049762 00000 n
-0000049864 00000 n
-0000049966 00000 n
-0000050391 00000 n
-0000050495 00000 n
-0000050599 00000 n
-0000050703 00000 n
-0000050807 00000 n
-0000050911 00000 n
-0000051015 00000 n
-0000051119 00000 n
-0000051223 00000 n
-0000051327 00000 n
-0000051431 00000 n
-0000051535 00000 n
-0000051639 00000 n
-0000051743 00000 n
-0000051847 00000 n
-0000051951 00000 n
-0000052055 00000 n
-0000052159 00000 n
-0000052263 00000 n
-0000052424 00000 n
-0000052527 00000 n
-0000052631 00000 n
-0000052735 00000 n
-0000052839 00000 n
-0000052943 00000 n
-0000053047 00000 n
-0000053151 00000 n
-0000053255 00000 n
-0000053359 00000 n
-0000053463 00000 n
-0000053567 00000 n
-0000053671 00000 n
-0000053775 00000 n
-0000053879 00000 n
+0000032800 00000 n
+0000032904 00000 n
+0000033008 00000 n
+0000033112 00000 n
+0000033216 00000 n
+0000033320 00000 n
+0000033424 00000 n
+0000033528 00000 n
+0000033632 00000 n
+0000033736 00000 n
+0000033840 00000 n
+0000033944 00000 n
+0000034048 00000 n
+0000034152 00000 n
+0000034256 00000 n
+0000034360 00000 n
+0000034464 00000 n
+0000034568 00000 n
+0000034672 00000 n
+0000034776 00000 n
+0000034880 00000 n
+0000034984 00000 n
+0000035088 00000 n
+0000035192 00000 n
+0000035296 00000 n
+0000035400 00000 n
+0000035504 00000 n
+0000035608 00000 n
+0000035712 00000 n
+0000035816 00000 n
+0000035919 00000 n
+0000036021 00000 n
+0000036123 00000 n
+0000036444 00000 n
+0000036548 00000 n
+0000036651 00000 n
+0000036755 00000 n
+0000036859 00000 n
+0000036963 00000 n
+0000037067 00000 n
+0000037171 00000 n
+0000037275 00000 n
+0000037379 00000 n
+0000037483 00000 n
+0000037587 00000 n
+0000037691 00000 n
+0000037795 00000 n
+0000037899 00000 n
+0000038003 00000 n
+0000038107 00000 n
+0000038211 00000 n
+0000038315 00000 n
+0000038419 00000 n
+0000038523 00000 n
+0000038627 00000 n
+0000038731 00000 n
+0000038835 00000 n
+0000038939 00000 n
+0000039043 00000 n
+0000039147 00000 n
+0000039251 00000 n
+0000039355 00000 n
+0000039459 00000 n
+0000039563 00000 n
+0000039667 00000 n
+0000039771 00000 n
+0000039874 00000 n
+0000039978 00000 n
+0000040082 00000 n
+0000040186 00000 n
+0000040290 00000 n
+0000040394 00000 n
+0000040498 00000 n
+0000040602 00000 n
+0000040706 00000 n
+0000040810 00000 n
+0000040914 00000 n
+0000041018 00000 n
+0000041122 00000 n
+0000041226 00000 n
+0000041330 00000 n
+0000041434 00000 n
+0000041537 00000 n
+0000041639 00000 n
+0000041741 00000 n
+0000042166 00000 n
+0000042270 00000 n
+0000042374 00000 n
+0000042478 00000 n
+0000042582 00000 n
+0000042686 00000 n
+0000042790 00000 n
+0000042894 00000 n
+0000042998 00000 n
+0000043102 00000 n
+0000043206 00000 n
+0000043310 00000 n
+0000043414 00000 n
+0000043518 00000 n
+0000043622 00000 n
+0000043726 00000 n
+0000043830 00000 n
+0000043934 00000 n
+0000044038 00000 n
+0000044142 00000 n
+0000044246 00000 n
+0000044350 00000 n
+0000044454 00000 n
+0000044558 00000 n
+0000044662 00000 n
+0000044766 00000 n
+0000044870 00000 n
+0000044974 00000 n
+0000045078 00000 n
+0000045182 00000 n
+0000045286 00000 n
+0000045390 00000 n
+0000045494 00000 n
+0000045598 00000 n
+0000045702 00000 n
+0000045806 00000 n
+0000045910 00000 n
+0000046014 00000 n
+0000046118 00000 n
+0000046222 00000 n
+0000046326 00000 n
+0000046430 00000 n
+0000046534 00000 n
+0000046638 00000 n
+0000046742 00000 n
+0000046846 00000 n
+0000046950 00000 n
+0000047054 00000 n
+0000047158 00000 n
+0000047261 00000 n
+0000047363 00000 n
+0000047465 00000 n
+0000047890 00000 n
+0000047994 00000 n
+0000048098 00000 n
+0000048202 00000 n
+0000048305 00000 n
+0000048409 00000 n
+0000048513 00000 n
+0000048617 00000 n
+0000048721 00000 n
+0000048825 00000 n
+0000048929 00000 n
+0000049033 00000 n
+0000049137 00000 n
+0000049241 00000 n
+0000049345 00000 n
+0000049449 00000 n
+0000049553 00000 n
+0000049657 00000 n
+0000049761 00000 n
+0000049865 00000 n
+0000049969 00000 n
+0000050073 00000 n
+0000050177 00000 n
+0000050281 00000 n
+0000050385 00000 n
+0000050489 00000 n
+0000050593 00000 n
+0000050697 00000 n
+0000050930 00000 n
+0000051033 00000 n
+0000051136 00000 n
+0000051239 00000 n
+0000051342 00000 n
+0000051391 00000 n
+0000051444 00000 n
+0000051531 00000 n
+0000051556 00000 n
+0000051603 00000 n
+0000051690 00000 n
+0000051715 00000 n
+0000051818 00000 n
+0000051921 00000 n
+0000052024 00000 n
+0000052127 00000 n
+0000052230 00000 n
+0000052287 00000 n
+0000052335 00000 n
+0000052422 00000 n
+0000052470 00000 n
+0000052557 00000 n
+0000052607 00000 n
+0000052694 00000 n
+0000052742 00000 n
+0000052829 00000 n
+0000052878 00000 n
+0000052926 00000 n
+0000053013 00000 n
+0000053061 00000 n
+0000053146 00000 n
+0000053191 00000 n
+0000053277 00000 n
+0000053320 00000 n
+0000053406 00000 n
+0000053447 00000 n
+0000053533 00000 n
+0000053582 00000 n
+0000053668 00000 n
+0000053714 00000 n
+0000053800 00000 n
+0000053845 00000 n
+0000053931 00000 n
0000053983 00000 n
-0000054087 00000 n
-0000054191 00000 n
-0000054295 00000 n
-0000054399 00000 n
-0000054502 00000 n
-0000054606 00000 n
-0000054710 00000 n
-0000054814 00000 n
-0000054918 00000 n
+0000054069 00000 n
+0000054119 00000 n
+0000054205 00000 n
+0000054251 00000 n
+0000054337 00000 n
+0000054380 00000 n
+0000054466 00000 n
+0000054510 00000 n
+0000054596 00000 n
+0000054639 00000 n
+0000054725 00000 n
+0000054770 00000 n
+0000054856 00000 n
+0000054894 00000 n
+0000054980 00000 n
0000055022 00000 n
-0000055126 00000 n
-0000055229 00000 n
-0000055333 00000 n
-0000055437 00000 n
-0000055541 00000 n
-0000055645 00000 n
-0000055749 00000 n
-0000055853 00000 n
-0000055957 00000 n
-0000056061 00000 n
-0000056165 00000 n
-0000056269 00000 n
-0000056373 00000 n
-0000056477 00000 n
-0000056581 00000 n
-0000056685 00000 n
-0000056788 00000 n
-0000056890 00000 n
-0000056992 00000 n
-0000057361 00000 n
-0000057465 00000 n
-0000057569 00000 n
-0000057673 00000 n
-0000057777 00000 n
-0000057881 00000 n
-0000057985 00000 n
-0000058089 00000 n
-0000058193 00000 n
-0000058297 00000 n
-0000058386 00000 n
-0000058439 00000 n
-0000058526 00000 n
-0000058551 00000 n
-0000058598 00000 n
-0000058685 00000 n
-0000058710 00000 n
-0000058766 00000 n
-0000058853 00000 n
-0000058922 00000 n
-0000059009 00000 n
-0000059060 00000 n
-0000059147 00000 n
-0000059232 00000 n
-0000059319 00000 n
-0000059375 00000 n
-0000059462 00000 n
-0000059512 00000 n
-0000059599 00000 n
-0000059664 00000 n
-0000059716 00000 n
-0000059803 00000 n
-0000059859 00000 n
-0000059946 00000 n
-0000059994 00000 n
-0000060081 00000 n
-0000060122 00000 n
-0000060170 00000 n
-0000060257 00000 n
-0000060282 00000 n
-0000060323 00000 n
-0000060410 00000 n
-0000060454 00000 n
-0000060541 00000 n
-0000060586 00000 n
-0000060673 00000 n
-0000060717 00000 n
-0000060804 00000 n
-0000060848 00000 n
-0000060935 00000 n
-0000060977 00000 n
-0000061064 00000 n
-0000061112 00000 n
-0000061199 00000 n
-0000061272 00000 n
-0000061320 00000 n
-0000061406 00000 n
-0000061431 00000 n
-0000061484 00000 n
-0000061570 00000 n
-0000061595 00000 n
-0000061698 00000 n
-0000061801 00000 n
-0000061905 00000 n
-0000062009 00000 n
-0000062113 00000 n
-0000062217 00000 n
-0000062321 00000 n
-0000062425 00000 n
-0000062529 00000 n
-0000062633 00000 n
-0000062737 00000 n
-0000062841 00000 n
-0000062945 00000 n
-0000063049 00000 n
-0000063153 00000 n
+0000055108 00000 n
+0000055151 00000 n
+0000055237 00000 n
+0000055275 00000 n
+0000055361 00000 n
+0000055403 00000 n
+0000055489 00000 n
+0000055533 00000 n
+0000055619 00000 n
+0000055666 00000 n
+0000055752 00000 n
+0000055800 00000 n
+0000055885 00000 n
+0000056086 00000 n
+0000056136 00000 n
+0000056223 00000 n
+0000056273 00000 n
+0000056359 00000 n
+0000056392 00000 n
+0000056441 00000 n
+0000056527 00000 n
+0000056574 00000 n
+0000056661 00000 n
+0000056694 00000 n
+0000056809 00000 n
+0000056896 00000 n
+0000056978 00000 n
+0000057065 00000 n
+0000057150 00000 n
+0000057237 00000 n
+0000057278 00000 n
+0000057333 00000 n
+0000057420 00000 n
+0000057476 00000 n
+0000057563 00000 n
+0000057596 00000 n
+0000057644 00000 n
+0000057731 00000 n
+0000057805 00000 n
+0000057892 00000 n
+0000057960 00000 n
+0000058047 00000 n
+0000058101 00000 n
+0000058188 00000 n
+0000058256 00000 n
+0000058343 00000 n
+0000058417 00000 n
+0000058504 00000 n
+0000058552 00000 n
+0000058639 00000 n
+0000058696 00000 n
+0000058783 00000 n
+0000058864 00000 n
+0000058919 00000 n
+0000059006 00000 n
+0000059087 00000 n
+0000059174 00000 n
+0000059207 00000 n
+0000059260 00000 n
+0000059347 00000 n
+0000059372 00000 n
+0000059421 00000 n
+0000059508 00000 n
+0000059556 00000 n
+0000059643 00000 n
+0000059685 00000 n
+0000059771 00000 n
+0000059812 00000 n
+0000059855 00000 n
+0000059942 00000 n
+0000059992 00000 n
+0000060079 00000 n
+0000060127 00000 n
+0000060214 00000 n
+0000060268 00000 n
+0000060353 00000 n
+0000060402 00000 n
+0000060447 00000 n
+0000060534 00000 n
+0000060591 00000 n
+0000060678 00000 n
+0000060774 00000 n
+0000060860 00000 n
+0000060901 00000 n
+0000061004 00000 n
+0000061107 00000 n
+0000061210 00000 n
+0000061313 00000 n
+0000061416 00000 n
+0000061519 00000 n
+0000061622 00000 n
+0000061725 00000 n
+0000061828 00000 n
+0000061931 00000 n
+0000062034 00000 n
+0000062137 00000 n
+0000062240 00000 n
+0000062361 00000 n
+0000062409 00000 n
+0000062496 00000 n
+0000062543 00000 n
+0000062629 00000 n
+0000062676 00000 n
+0000062762 00000 n
+0000062803 00000 n
+0000062848 00000 n
+0000062935 00000 n
+0000062980 00000 n
+0000063066 00000 n
+0000063099 00000 n
+0000063145 00000 n
+0000063232 00000 n
0000063257 00000 n
-0000063360 00000 n
-0000063464 00000 n
-0000063568 00000 n
-0000063672 00000 n
-0000063776 00000 n
-0000063880 00000 n
-0000063984 00000 n
-0000064088 00000 n
-0000064192 00000 n
-0000064296 00000 n
-0000064399 00000 n
-0000064503 00000 n
-0000064607 00000 n
-0000064711 00000 n
-0000064815 00000 n
-0000064919 00000 n
-0000065023 00000 n
-0000065127 00000 n
-0000065231 00000 n
-0000065335 00000 n
-0000065438 00000 n
-0000065542 00000 n
-0000065646 00000 n
-0000065750 00000 n
-0000066087 00000 n
-0000066135 00000 n
-0000066222 00000 n
-0000066270 00000 n
-0000066357 00000 n
-0000066407 00000 n
-0000066494 00000 n
-0000066542 00000 n
-0000066629 00000 n
-0000066678 00000 n
-0000066726 00000 n
-0000066813 00000 n
-0000066861 00000 n
-0000066946 00000 n
-0000066991 00000 n
-0000067077 00000 n
-0000067120 00000 n
-0000067206 00000 n
-0000067247 00000 n
-0000067333 00000 n
-0000067382 00000 n
-0000067468 00000 n
-0000067514 00000 n
-0000067600 00000 n
-0000067645 00000 n
-0000067731 00000 n
-0000067783 00000 n
-0000067869 00000 n
-0000067919 00000 n
-0000068005 00000 n
-0000068051 00000 n
-0000068137 00000 n
-0000068180 00000 n
-0000068266 00000 n
-0000068310 00000 n
-0000068396 00000 n
-0000068439 00000 n
-0000068525 00000 n
-0000068570 00000 n
-0000068656 00000 n
-0000068694 00000 n
-0000068780 00000 n
-0000068822 00000 n
-0000068908 00000 n
-0000068951 00000 n
-0000069037 00000 n
-0000069075 00000 n
-0000069161 00000 n
-0000069203 00000 n
-0000069289 00000 n
-0000069333 00000 n
-0000069419 00000 n
-0000069466 00000 n
-0000069552 00000 n
-0000069600 00000 n
-0000069685 00000 n
-0000069886 00000 n
-0000069936 00000 n
-0000070023 00000 n
-0000070073 00000 n
-0000070159 00000 n
-0000070192 00000 n
-0000070241 00000 n
-0000070327 00000 n
-0000070374 00000 n
-0000070461 00000 n
-0000070494 00000 n
-0000070609 00000 n
-0000070696 00000 n
-0000070778 00000 n
-0000070865 00000 n
-0000070950 00000 n
-0000071037 00000 n
-0000071078 00000 n
-0000071133 00000 n
-0000071220 00000 n
-0000071276 00000 n
-0000071363 00000 n
-0000071396 00000 n
-0000071444 00000 n
-0000071531 00000 n
-0000071605 00000 n
-0000071692 00000 n
+0000063303 00000 n
+0000063390 00000 n
+0000063436 00000 n
+0000063521 00000 n
+0000063565 00000 n
+0000063652 00000 n
+0000063703 00000 n
+0000063790 00000 n
+0000063839 00000 n
+0000063926 00000 n
+0000063974 00000 n
+0000064060 00000 n
+0000064125 00000 n
+0000064180 00000 n
+0000064265 00000 n
+0000064290 00000 n
+0000064343 00000 n
+0000064430 00000 n
+0000064480 00000 n
+0000064567 00000 n
+0000064600 00000 n
+0000064719 00000 n
+0000064805 00000 n
+0000064848 00000 n
+0000064935 00000 n
+0000064978 00000 n
+0000065065 00000 n
+0000065106 00000 n
+0000065169 00000 n
+0000065256 00000 n
+0000065314 00000 n
+0000065401 00000 n
+0000065495 00000 n
+0000065581 00000 n
+0000065622 00000 n
+0000065665 00000 n
+0000065751 00000 n
+0000065799 00000 n
+0000065886 00000 n
+0000065927 00000 n
+0000066014 00000 n
+0000066058 00000 n
+0000066145 00000 n
+0000066189 00000 n
+0000066275 00000 n
+0000066332 00000 n
+0000066378 00000 n
+0000066465 00000 n
+0000066514 00000 n
+0000066600 00000 n
+0000066633 00000 n
+0000066687 00000 n
+0000066774 00000 n
+0000066825 00000 n
+0000066912 00000 n
+0000066963 00000 n
+0000067049 00000 n
+0000067103 00000 n
+0000067190 00000 n
+0000067240 00000 n
+0000067327 00000 n
+0000067384 00000 n
+0000067434 00000 n
+0000067521 00000 n
+0000067571 00000 n
+0000067657 00000 n
+0000067690 00000 n
+0000067754 00000 n
+0000067841 00000 n
+0000067866 00000 n
+0000067928 00000 n
+0000068015 00000 n
+0000068040 00000 n
+0000068089 00000 n
+0000068176 00000 n
+0000068201 00000 n
+0000068249 00000 n
+0000068336 00000 n
+0000068386 00000 n
+0000068473 00000 n
+0000068517 00000 n
+0000068604 00000 n
+0000068648 00000 n
+0000068735 00000 n
+0000068785 00000 n
+0000068871 00000 n
+0000068921 00000 n
+0000069006 00000 n
+0000069055 00000 n
+0000069140 00000 n
+0000069213 00000 n
+0000069260 00000 n
+0000069347 00000 n
+0000069372 00000 n
+0000069461 00000 n
+0000069547 00000 n
+0000069610 00000 n
+0000069696 00000 n
+0000069729 00000 n
+0000069790 00000 n
+0000069876 00000 n
+0000069901 00000 n
+0000069957 00000 n
+0000070044 00000 n
+0000070113 00000 n
+0000070200 00000 n
+0000070251 00000 n
+0000070338 00000 n
+0000070423 00000 n
+0000070510 00000 n
+0000070566 00000 n
+0000070653 00000 n
+0000070703 00000 n
+0000070790 00000 n
+0000070855 00000 n
+0000070907 00000 n
+0000070994 00000 n
+0000071050 00000 n
+0000071137 00000 n
+0000071185 00000 n
+0000071272 00000 n
+0000071320 00000 n
+0000071407 00000 n
+0000071456 00000 n
+0000071497 00000 n
+0000071584 00000 n
+0000071628 00000 n
+0000071715 00000 n
0000071760 00000 n
0000071847 00000 n
-0000071901 00000 n
-0000071988 00000 n
-0000072056 00000 n
-0000072143 00000 n
-0000072217 00000 n
-0000072304 00000 n
-0000072352 00000 n
-0000072439 00000 n
-0000072496 00000 n
-0000072583 00000 n
-0000072664 00000 n
-0000072719 00000 n
-0000072806 00000 n
-0000072887 00000 n
-0000072974 00000 n
-0000073007 00000 n
-0000073060 00000 n
-0000073147 00000 n
-0000073172 00000 n
-0000073220 00000 n
-0000073307 00000 n
-0000073349 00000 n
-0000073436 00000 n
-0000073479 00000 n
-0000073566 00000 n
-0000073616 00000 n
-0000073703 00000 n
-0000073751 00000 n
-0000073838 00000 n
-0000073895 00000 n
-0000073938 00000 n
-0000074025 00000 n
-0000074079 00000 n
-0000074166 00000 n
-0000074211 00000 n
-0000074298 00000 n
-0000074339 00000 n
-0000074396 00000 n
-0000074483 00000 n
-0000074579 00000 n
-0000074665 00000 n
-0000074698 00000 n
-0000074801 00000 n
-0000074905 00000 n
-0000075009 00000 n
-0000075113 00000 n
-0000075217 00000 n
-0000075321 00000 n
-0000075425 00000 n
-0000075529 00000 n
-0000075633 00000 n
-0000075737 00000 n
-0000075841 00000 n
-0000075945 00000 n
-0000076049 00000 n
-0000076153 00000 n
-0000076257 00000 n
-0000076361 00000 n
-0000076465 00000 n
-0000076569 00000 n
-0000076673 00000 n
-0000076776 00000 n
-0000076880 00000 n
-0000076984 00000 n
-0000077088 00000 n
-0000077192 00000 n
-0000077296 00000 n
-0000077400 00000 n
-0000077504 00000 n
-0000077608 00000 n
-0000077712 00000 n
-0000077815 00000 n
-0000077919 00000 n
-0000078023 00000 n
-0000078127 00000 n
-0000078230 00000 n
-0000078334 00000 n
-0000078438 00000 n
-0000078541 00000 n
-0000078645 00000 n
-0000078749 00000 n
-0000078853 00000 n
-0000078957 00000 n
-0000079060 00000 n
-0000079162 00000 n
-0000079264 00000 n
-0000079633 00000 n
-0000079737 00000 n
-0000079841 00000 n
-0000079945 00000 n
-0000080049 00000 n
-0000080153 00000 n
-0000080257 00000 n
-0000080361 00000 n
-0000080465 00000 n
-0000080569 00000 n
-0000080673 00000 n
-0000080777 00000 n
-0000080881 00000 n
-0000080985 00000 n
-0000081089 00000 n
-0000081193 00000 n
-0000081296 00000 n
-0000081400 00000 n
-0000081504 00000 n
-0000081608 00000 n
-0000081712 00000 n
-0000081816 00000 n
-0000081920 00000 n
-0000082024 00000 n
-0000082128 00000 n
-0000082232 00000 n
-0000082336 00000 n
-0000082440 00000 n
-0000082544 00000 n
-0000082648 00000 n
-0000082752 00000 n
-0000082856 00000 n
-0000082960 00000 n
-0000083064 00000 n
-0000083167 00000 n
-0000083271 00000 n
-0000083375 00000 n
-0000083479 00000 n
-0000083583 00000 n
-0000083687 00000 n
-0000083791 00000 n
-0000083895 00000 n
-0000083999 00000 n
-0000084103 00000 n
-0000084207 00000 n
-0000084311 00000 n
-0000084415 00000 n
-0000084518 00000 n
-0000084622 00000 n
-0000084725 00000 n
-0000084827 00000 n
-0000084929 00000 n
-0000085354 00000 n
-0000085458 00000 n
-0000085562 00000 n
-0000085666 00000 n
-0000085770 00000 n
-0000085873 00000 n
-0000085977 00000 n
-0000086081 00000 n
-0000086185 00000 n
-0000086289 00000 n
-0000086392 00000 n
-0000086495 00000 n
-0000086599 00000 n
-0000086703 00000 n
-0000086807 00000 n
-0000086911 00000 n
-0000087015 00000 n
-0000087119 00000 n
-0000087223 00000 n
-0000087327 00000 n
-0000087431 00000 n
-0000087535 00000 n
-0000087638 00000 n
-0000087742 00000 n
-0000087846 00000 n
-0000087950 00000 n
-0000088054 00000 n
-0000088158 00000 n
-0000088262 00000 n
-0000088366 00000 n
-0000088615 00000 n
-0000088663 00000 n
+0000071891 00000 n
+0000071978 00000 n
+0000072022 00000 n
+0000072109 00000 n
+0000072151 00000 n
+0000072238 00000 n
+0000072286 00000 n
+0000072373 00000 n
+0000072446 00000 n
+0000072494 00000 n
+0000072580 00000 n
+0000072605 00000 n
+0000072658 00000 n
+0000072744 00000 n
+0000072769 00000 n
+0000072823 00000 n
+0000072910 00000 n
+0000072935 00000 n
+0000072998 00000 n
+0000073085 00000 n
+0000073148 00000 n
+0000073235 00000 n
+0000073289 00000 n
+0000073376 00000 n
+0000073417 00000 n
+0000073520 00000 n
+0000073623 00000 n
+0000073726 00000 n
+0000073829 00000 n
+0000073878 00000 n
+0000073933 00000 n
+0000074019 00000 n
+0000074087 00000 n
+0000074173 00000 n
+0000074248 00000 n
+0000074335 00000 n
+0000074405 00000 n
+0000074491 00000 n
+0000074570 00000 n
+0000074657 00000 n
+0000074714 00000 n
+0000074796 00000 n
+0000074882 00000 n
+0000074957 00000 n
+0000075044 00000 n
+0000075117 00000 n
+0000075204 00000 n
+0000075282 00000 n
+0000075369 00000 n
+0000075418 00000 n
+0000075466 00000 n
+0000075553 00000 n
+0000075578 00000 n
+0000075626 00000 n
+0000075713 00000 n
+0000075738 00000 n
+0000075786 00000 n
+0000075873 00000 n
+0000075937 00000 n
+0000076024 00000 n
+0000076079 00000 n
+0000076166 00000 n
+0000076213 00000 n
+0000076300 00000 n
+0000076349 00000 n
+0000076403 00000 n
+0000076490 00000 n
+0000076544 00000 n
+0000076631 00000 n
+0000076664 00000 n
+0000076698 00000 n
+0000076732 00000 n
+0000081490 00000 n
+0000081534 00000 n
+0000081578 00000 n
+0000081622 00000 n
+0000081666 00000 n
+0000081710 00000 n
+0000081754 00000 n
+0000081798 00000 n
+0000081842 00000 n
+0000081886 00000 n
+0000081930 00000 n
+0000081974 00000 n
+0000082018 00000 n
+0000082062 00000 n
+0000082106 00000 n
+0000082150 00000 n
+0000082194 00000 n
+0000082238 00000 n
+0000082282 00000 n
+0000082326 00000 n
+0000082370 00000 n
+0000082414 00000 n
+0000082458 00000 n
+0000082502 00000 n
+0000082546 00000 n
+0000082590 00000 n
+0000082634 00000 n
+0000082678 00000 n
+0000082722 00000 n
+0000082766 00000 n
+0000082810 00000 n
+0000082854 00000 n
+0000082898 00000 n
+0000082942 00000 n
+0000082986 00000 n
+0000083030 00000 n
+0000083074 00000 n
+0000083118 00000 n
+0000083162 00000 n
+0000083206 00000 n
+0000083250 00000 n
+0000083294 00000 n
+0000083338 00000 n
+0000083382 00000 n
+0000083426 00000 n
+0000083470 00000 n
+0000083514 00000 n
+0000083558 00000 n
+0000083602 00000 n
+0000083646 00000 n
+0000083690 00000 n
+0000083734 00000 n
+0000083778 00000 n
+0000083822 00000 n
+0000083866 00000 n
+0000083910 00000 n
+0000083954 00000 n
+0000083998 00000 n
+0000084042 00000 n
+0000084086 00000 n
+0000084130 00000 n
+0000084174 00000 n
+0000084218 00000 n
+0000084262 00000 n
+0000084306 00000 n
+0000084350 00000 n
+0000084394 00000 n
+0000084438 00000 n
+0000084482 00000 n
+0000084526 00000 n
+0000084570 00000 n
+0000084614 00000 n
+0000084658 00000 n
+0000084702 00000 n
+0000084746 00000 n
+0000084790 00000 n
+0000084834 00000 n
+0000084878 00000 n
+0000084922 00000 n
+0000084966 00000 n
+0000085010 00000 n
+0000085054 00000 n
+0000085098 00000 n
+0000085142 00000 n
+0000085186 00000 n
+0000085230 00000 n
+0000085274 00000 n
+0000085318 00000 n
+0000085362 00000 n
+0000085406 00000 n
+0000085450 00000 n
+0000085494 00000 n
+0000085538 00000 n
+0000085582 00000 n
+0000085626 00000 n
+0000085670 00000 n
+0000085714 00000 n
+0000085758 00000 n
+0000085802 00000 n
+0000085846 00000 n
+0000085890 00000 n
+0000085934 00000 n
+0000085978 00000 n
+0000086022 00000 n
+0000086066 00000 n
+0000086110 00000 n
+0000086154 00000 n
+0000086198 00000 n
+0000086242 00000 n
+0000086286 00000 n
+0000086330 00000 n
+0000086374 00000 n
+0000086418 00000 n
+0000086462 00000 n
+0000086506 00000 n
+0000086550 00000 n
+0000086594 00000 n
+0000086638 00000 n
+0000086682 00000 n
+0000086726 00000 n
+0000086770 00000 n
+0000086814 00000 n
+0000086858 00000 n
+0000086902 00000 n
+0000086946 00000 n
+0000086990 00000 n
+0000087034 00000 n
+0000087078 00000 n
+0000087122 00000 n
+0000087166 00000 n
+0000087210 00000 n
+0000087254 00000 n
+0000087298 00000 n
+0000087342 00000 n
+0000087386 00000 n
+0000087430 00000 n
+0000087474 00000 n
+0000087518 00000 n
+0000087562 00000 n
+0000087606 00000 n
+0000087650 00000 n
+0000087694 00000 n
+0000087738 00000 n
+0000087782 00000 n
+0000087826 00000 n
+0000087870 00000 n
+0000087914 00000 n
+0000087958 00000 n
+0000088002 00000 n
+0000088046 00000 n
+0000088090 00000 n
+0000088134 00000 n
+0000088178 00000 n
+0000088222 00000 n
+0000088266 00000 n
+0000088310 00000 n
+0000088354 00000 n
+0000088398 00000 n
+0000088442 00000 n
+0000088486 00000 n
+0000088530 00000 n
+0000088574 00000 n
+0000088618 00000 n
+0000088662 00000 n
+0000088706 00000 n
0000088750 00000 n
-0000088797 00000 n
-0000088883 00000 n
-0000088930 00000 n
-0000089016 00000 n
-0000089057 00000 n
-0000089102 00000 n
-0000089189 00000 n
-0000089234 00000 n
-0000089320 00000 n
-0000089353 00000 n
-0000089399 00000 n
-0000089484 00000 n
-0000089530 00000 n
-0000089613 00000 n
-0000089646 00000 n
-0000089690 00000 n
-0000089777 00000 n
-0000089828 00000 n
-0000089915 00000 n
+0000088794 00000 n
+0000088839 00000 n
+0000088884 00000 n
+0000088929 00000 n
+0000088974 00000 n
+0000089019 00000 n
+0000089064 00000 n
+0000089109 00000 n
+0000089154 00000 n
+0000089199 00000 n
+0000089244 00000 n
+0000089289 00000 n
+0000089334 00000 n
+0000089379 00000 n
+0000089424 00000 n
+0000089469 00000 n
+0000089514 00000 n
+0000089559 00000 n
+0000089604 00000 n
+0000089649 00000 n
+0000089694 00000 n
+0000089739 00000 n
+0000089784 00000 n
+0000089829 00000 n
+0000089874 00000 n
+0000089919 00000 n
0000089964 00000 n
-0000090051 00000 n
+0000090009 00000 n
+0000090054 00000 n
0000090099 00000 n
-0000090185 00000 n
+0000090144 00000 n
+0000090189 00000 n
0000090234 00000 n
-0000090289 00000 n
-0000090375 00000 n
-0000090400 00000 n
-0000090453 00000 n
-0000090540 00000 n
-0000090590 00000 n
-0000090677 00000 n
-0000090710 00000 n
-0000090829 00000 n
-0000090915 00000 n
-0000090958 00000 n
-0000091045 00000 n
-0000091088 00000 n
-0000091175 00000 n
-0000091216 00000 n
-0000091279 00000 n
-0000091366 00000 n
-0000091424 00000 n
-0000091511 00000 n
-0000091605 00000 n
-0000091691 00000 n
-0000091732 00000 n
-0000091775 00000 n
-0000091861 00000 n
-0000091909 00000 n
-0000091996 00000 n
-0000092037 00000 n
+0000090279 00000 n
+0000090324 00000 n
+0000090369 00000 n
+0000090414 00000 n
+0000090459 00000 n
+0000090504 00000 n
+0000090549 00000 n
+0000090594 00000 n
+0000090639 00000 n
+0000090684 00000 n
+0000090729 00000 n
+0000090774 00000 n
+0000090819 00000 n
+0000090864 00000 n
+0000090909 00000 n
+0000090954 00000 n
+0000090999 00000 n
+0000091044 00000 n
+0000091089 00000 n
+0000091134 00000 n
+0000091179 00000 n
+0000091224 00000 n
+0000091269 00000 n
+0000091314 00000 n
+0000091359 00000 n
+0000091404 00000 n
+0000091449 00000 n
+0000091494 00000 n
+0000091539 00000 n
+0000091584 00000 n
+0000091629 00000 n
+0000091674 00000 n
+0000091719 00000 n
+0000091764 00000 n
+0000091809 00000 n
+0000091854 00000 n
+0000091899 00000 n
+0000091944 00000 n
+0000091989 00000 n
+0000092034 00000 n
+0000092079 00000 n
0000092124 00000 n
-0000092168 00000 n
-0000092255 00000 n
-0000092299 00000 n
-0000092385 00000 n
-0000092442 00000 n
-0000092488 00000 n
-0000092575 00000 n
-0000092621 00000 n
-0000092708 00000 n
-0000092741 00000 n
-0000092790 00000 n
-0000092877 00000 n
-0000092931 00000 n
-0000093018 00000 n
+0000092169 00000 n
+0000092214 00000 n
+0000092259 00000 n
+0000092304 00000 n
+0000092349 00000 n
+0000092394 00000 n
+0000092439 00000 n
+0000092484 00000 n
+0000092529 00000 n
+0000092574 00000 n
+0000092619 00000 n
+0000092664 00000 n
+0000092709 00000 n
+0000092754 00000 n
+0000092799 00000 n
+0000092844 00000 n
+0000092889 00000 n
+0000092934 00000 n
+0000092979 00000 n
+0000093024 00000 n
0000093069 00000 n
-0000093156 00000 n
-0000093207 00000 n
-0000093293 00000 n
-0000093347 00000 n
-0000093434 00000 n
-0000093484 00000 n
-0000093569 00000 n
-0000093634 00000 n
-0000093684 00000 n
-0000093771 00000 n
-0000093821 00000 n
-0000093907 00000 n
-0000093971 00000 n
-0000094058 00000 n
-0000094099 00000 n
-0000094161 00000 n
-0000094248 00000 n
-0000094273 00000 n
-0000094322 00000 n
-0000094409 00000 n
-0000094434 00000 n
-0000094482 00000 n
-0000094567 00000 n
-0000094592 00000 n
-0000094642 00000 n
-0000094728 00000 n
-0000094772 00000 n
-0000094858 00000 n
-0000094902 00000 n
-0000094988 00000 n
-0000095038 00000 n
-0000095124 00000 n
-0000095174 00000 n
-0000095260 00000 n
-0000095309 00000 n
-0000095395 00000 n
-0000095442 00000 n
-0000095528 00000 n
-0000095601 00000 n
-0000095690 00000 n
-0000095776 00000 n
-0000095839 00000 n
-0000095925 00000 n
-0000095958 00000 n
-0000096019 00000 n
-0000096105 00000 n
-0000096130 00000 n
-0000096193 00000 n
-0000096280 00000 n
-0000096343 00000 n
-0000096430 00000 n
-0000096484 00000 n
-0000096571 00000 n
-0000096612 00000 n
-0000096715 00000 n
-0000096819 00000 n
-0000096923 00000 n
-0000097027 00000 n
-0000097131 00000 n
-0000097234 00000 n
-0000097338 00000 n
-0000097442 00000 n
-0000097546 00000 n
-0000097650 00000 n
-0000097754 00000 n
-0000097858 00000 n
-0000097962 00000 n
-0000098066 00000 n
-0000098171 00000 n
-0000098276 00000 n
-0000098381 00000 n
-0000098486 00000 n
-0000098591 00000 n
-0000098695 00000 n
-0000098800 00000 n
-0000098905 00000 n
-0000099010 00000 n
-0000099115 00000 n
-0000099220 00000 n
-0000099325 00000 n
-0000099429 00000 n
-0000099534 00000 n
-0000099639 00000 n
-0000099744 00000 n
-0000099849 00000 n
-0000099954 00000 n
-0000100059 00000 n
-0000100164 00000 n
-0000100269 00000 n
-0000100374 00000 n
-0000100479 00000 n
-0000100584 00000 n
-0000100689 00000 n
-0000100794 00000 n
-0000100899 00000 n
-0000101004 00000 n
-0000101386 00000 n
-0000101442 00000 n
-0000101530 00000 n
-0000101599 00000 n
-0000101687 00000 n
-0000101763 00000 n
-0000101852 00000 n
-0000101923 00000 n
-0000102011 00000 n
-0000102091 00000 n
-0000102180 00000 n
-0000102243 00000 n
-0000102326 00000 n
-0000102414 00000 n
-0000102490 00000 n
-0000102579 00000 n
-0000102653 00000 n
-0000102742 00000 n
-0000102821 00000 n
-0000102910 00000 n
-0000102964 00000 n
-0000103013 00000 n
-0000103102 00000 n
-0000103129 00000 n
-0000103178 00000 n
-0000103267 00000 n
-0000103294 00000 n
-0000103343 00000 n
-0000103432 00000 n
-0000103497 00000 n
-0000103586 00000 n
-0000103642 00000 n
-0000103731 00000 n
-0000103779 00000 n
-0000103868 00000 n
-0000103922 00000 n
-0000103977 00000 n
-0000104066 00000 n
-0000104121 00000 n
-0000104210 00000 n
-0000104246 00000 n
-0000104282 00000 n
-0000104318 00000 n
-0000109465 00000 n
-0000109510 00000 n
-0000109555 00000 n
-0000109600 00000 n
-0000109645 00000 n
-0000109690 00000 n
-0000109735 00000 n
-0000109780 00000 n
-0000109825 00000 n
-0000109870 00000 n
-0000109915 00000 n
-0000109960 00000 n
-0000110005 00000 n
-0000110050 00000 n
-0000110095 00000 n
-0000110140 00000 n
-0000110185 00000 n
-0000110230 00000 n
-0000110275 00000 n
-0000110320 00000 n
-0000110365 00000 n
-0000110410 00000 n
-0000110455 00000 n
-0000110500 00000 n
-0000110545 00000 n
-0000110590 00000 n
-0000110635 00000 n
-0000110680 00000 n
-0000110725 00000 n
-0000110770 00000 n
-0000110815 00000 n
-0000110860 00000 n
-0000110905 00000 n
-0000110950 00000 n
-0000110995 00000 n
-0000111040 00000 n
-0000111085 00000 n
-0000111130 00000 n
-0000111175 00000 n
-0000111220 00000 n
-0000111265 00000 n
-0000111310 00000 n
-0000111355 00000 n
-0000111400 00000 n
-0000111445 00000 n
-0000111490 00000 n
-0000111535 00000 n
-0000111580 00000 n
-0000111625 00000 n
-0000111670 00000 n
-0000111715 00000 n
-0000111760 00000 n
-0000111805 00000 n
+0000093114 00000 n
+0000093159 00000 n
+0000093204 00000 n
+0000093249 00000 n
+0000093294 00000 n
+0000093339 00000 n
+0000093384 00000 n
+0000093429 00000 n
+0000093474 00000 n
+0000093519 00000 n
+0000093564 00000 n
+0000093609 00000 n
+0000093654 00000 n
+0000093699 00000 n
+0000093744 00000 n
+0000093789 00000 n
+0000093834 00000 n
+0000093879 00000 n
+0000093924 00000 n
+0000093969 00000 n
+0000094014 00000 n
+0000094059 00000 n
+0000094104 00000 n
+0000094149 00000 n
+0000095548 00000 n
+0000095709 00000 n
+0000095878 00000 n
+0000096071 00000 n
+0000099760 00000 n
+0000099953 00000 n
+0000104259 00000 n
+0000104453 00000 n
+0000108285 00000 n
+0000108479 00000 n
0000111850 00000 n
-0000111895 00000 n
-0000111940 00000 n
-0000111985 00000 n
-0000112030 00000 n
-0000112075 00000 n
-0000112120 00000 n
-0000112165 00000 n
-0000112210 00000 n
-0000112255 00000 n
-0000112300 00000 n
-0000112345 00000 n
-0000112390 00000 n
-0000112435 00000 n
-0000112480 00000 n
-0000112525 00000 n
-0000112570 00000 n
-0000112615 00000 n
-0000112660 00000 n
-0000112705 00000 n
-0000112750 00000 n
-0000112795 00000 n
-0000112840 00000 n
-0000112885 00000 n
-0000112930 00000 n
-0000112975 00000 n
-0000113020 00000 n
-0000113065 00000 n
-0000113110 00000 n
-0000113155 00000 n
-0000113200 00000 n
-0000113245 00000 n
-0000113290 00000 n
-0000113335 00000 n
-0000113380 00000 n
-0000113425 00000 n
-0000113470 00000 n
-0000113515 00000 n
-0000113560 00000 n
-0000113605 00000 n
-0000113650 00000 n
-0000113695 00000 n
-0000113740 00000 n
-0000113785 00000 n
-0000113830 00000 n
-0000113875 00000 n
-0000113920 00000 n
-0000113965 00000 n
-0000114010 00000 n
-0000114055 00000 n
-0000114100 00000 n
-0000114145 00000 n
-0000114190 00000 n
-0000114235 00000 n
-0000114280 00000 n
-0000114325 00000 n
-0000114370 00000 n
-0000114415 00000 n
-0000114460 00000 n
-0000114505 00000 n
-0000114550 00000 n
-0000114595 00000 n
-0000114640 00000 n
-0000114685 00000 n
-0000114730 00000 n
-0000114775 00000 n
-0000114820 00000 n
-0000114865 00000 n
-0000114910 00000 n
-0000114955 00000 n
-0000115000 00000 n
-0000115045 00000 n
+0000112044 00000 n
+0000114896 00000 n
0000115090 00000 n
-0000115135 00000 n
-0000115180 00000 n
-0000115225 00000 n
-0000115270 00000 n
-0000115315 00000 n
-0000115360 00000 n
-0000115405 00000 n
-0000115450 00000 n
-0000115495 00000 n
-0000115540 00000 n
-0000115585 00000 n
-0000115630 00000 n
-0000115675 00000 n
-0000115720 00000 n
-0000115765 00000 n
-0000115810 00000 n
-0000115855 00000 n
-0000115900 00000 n
-0000115945 00000 n
-0000115990 00000 n
-0000116035 00000 n
-0000116080 00000 n
-0000116125 00000 n
-0000116170 00000 n
-0000116215 00000 n
-0000116260 00000 n
-0000116305 00000 n
-0000116350 00000 n
-0000116395 00000 n
-0000116440 00000 n
-0000116485 00000 n
-0000116530 00000 n
-0000116575 00000 n
-0000116620 00000 n
-0000116665 00000 n
-0000116710 00000 n
-0000116755 00000 n
-0000116800 00000 n
-0000116845 00000 n
-0000116890 00000 n
-0000116935 00000 n
-0000116980 00000 n
-0000117025 00000 n
-0000117070 00000 n
-0000117115 00000 n
-0000117160 00000 n
-0000117205 00000 n
-0000117250 00000 n
-0000117295 00000 n
-0000117340 00000 n
-0000117385 00000 n
-0000117430 00000 n
-0000117475 00000 n
-0000117520 00000 n
-0000117565 00000 n
-0000117610 00000 n
-0000117655 00000 n
-0000117700 00000 n
-0000117745 00000 n
-0000117790 00000 n
-0000117835 00000 n
-0000117880 00000 n
-0000117925 00000 n
-0000117970 00000 n
-0000118015 00000 n
-0000118060 00000 n
-0000118105 00000 n
-0000118150 00000 n
-0000118195 00000 n
-0000118240 00000 n
-0000118285 00000 n
-0000118330 00000 n
-0000118375 00000 n
-0000118420 00000 n
-0000118465 00000 n
-0000118510 00000 n
-0000118555 00000 n
-0000118600 00000 n
-0000118645 00000 n
-0000118690 00000 n
-0000118735 00000 n
-0000118780 00000 n
-0000118825 00000 n
-0000118870 00000 n
-0000118915 00000 n
-0000118960 00000 n
-0000119005 00000 n
-0000119050 00000 n
-0000119095 00000 n
-0000119140 00000 n
-0000119185 00000 n
-0000119230 00000 n
-0000119275 00000 n
-0000119320 00000 n
-0000119365 00000 n
-0000119410 00000 n
-0000119455 00000 n
-0000119500 00000 n
-0000119545 00000 n
-0000119590 00000 n
-0000119635 00000 n
-0000119680 00000 n
-0000119725 00000 n
-0000119770 00000 n
-0000119815 00000 n
-0000119860 00000 n
-0000119905 00000 n
-0000119950 00000 n
-0000119995 00000 n
-0000120040 00000 n
-0000120085 00000 n
-0000120130 00000 n
-0000120175 00000 n
-0000120220 00000 n
-0000120265 00000 n
-0000120310 00000 n
-0000120355 00000 n
-0000120400 00000 n
-0000120445 00000 n
-0000120490 00000 n
-0000120535 00000 n
-0000120580 00000 n
-0000120625 00000 n
-0000120670 00000 n
-0000120715 00000 n
-0000120760 00000 n
-0000120805 00000 n
-0000120850 00000 n
-0000120895 00000 n
-0000120940 00000 n
-0000120985 00000 n
-0000121030 00000 n
-0000121075 00000 n
-0000121120 00000 n
-0000121165 00000 n
-0000121210 00000 n
-0000121255 00000 n
-0000121300 00000 n
-0000121345 00000 n
-0000121390 00000 n
-0000121435 00000 n
-0000121480 00000 n
-0000121525 00000 n
-0000121570 00000 n
-0000121615 00000 n
-0000121660 00000 n
-0000121705 00000 n
-0000121750 00000 n
-0000121795 00000 n
-0000121840 00000 n
-0000121885 00000 n
-0000121930 00000 n
-0000121975 00000 n
-0000122020 00000 n
-0000122065 00000 n
-0000122110 00000 n
-0000122155 00000 n
-0000122200 00000 n
-0000122245 00000 n
-0000122290 00000 n
-0000122335 00000 n
-0000122380 00000 n
-0000122425 00000 n
-0000122470 00000 n
-0000122515 00000 n
-0000122560 00000 n
-0000122605 00000 n
-0000122650 00000 n
+0000118370 00000 n
+0000118564 00000 n
+0000119223 00000 n
+0000119384 00000 n
+0000119618 00000 n
+0000119822 00000 n
+0000122520 00000 n
0000122695 00000 n
-0000122740 00000 n
-0000122785 00000 n
-0000122830 00000 n
-0000122875 00000 n
-0000122920 00000 n
-0000122965 00000 n
-0000124382 00000 n
-0000124543 00000 n
-0000124712 00000 n
-0000124905 00000 n
-0000128845 00000 n
-0000129039 00000 n
-0000133591 00000 n
-0000133785 00000 n
-0000138337 00000 n
-0000138531 00000 n
-0000142593 00000 n
-0000142787 00000 n
-0000146401 00000 n
-0000146595 00000 n
-0000150431 00000 n
-0000150625 00000 n
-0000151714 00000 n
-0000151875 00000 n
-0000152109 00000 n
-0000152313 00000 n
-0000155026 00000 n
-0000155201 00000 n
-0000158846 00000 n
-0000159021 00000 n
-0000161306 00000 n
-0000161481 00000 n
-0000162406 00000 n
-0000162567 00000 n
-0000162755 00000 n
-0000162959 00000 n
-0000165774 00000 n
-0000165949 00000 n
-0000166560 00000 n
-0000166772 00000 n
-0000167933 00000 n
-0000168121 00000 n
-0000169583 00000 n
-0000169780 00000 n
-0000171150 00000 n
-0000171365 00000 n
-0000172601 00000 n
-0000172795 00000 n
-0000174374 00000 n
-0000174544 00000 n
-0000176360 00000 n
-0000176511 00000 n
-0000176752 00000 n
-0000176931 00000 n
-0000178637 00000 n
-0000178825 00000 n
-0000180580 00000 n
-0000180768 00000 n
-0000182419 00000 n
-0000182588 00000 n
-0000183308 00000 n
-0000183537 00000 n
-0000185315 00000 n
-0000185521 00000 n
-0000187106 00000 n
-0000187319 00000 n
-0000189112 00000 n
-0000189334 00000 n
-0000191497 00000 n
-0000191700 00000 n
-0000193251 00000 n
-0000193464 00000 n
-0000194891 00000 n
-0000195113 00000 n
-0000196884 00000 n
-0000197106 00000 n
-0000198986 00000 n
-0000199192 00000 n
-0000200390 00000 n
-0000200610 00000 n
-0000202128 00000 n
-0000202316 00000 n
-0000203434 00000 n
-0000203595 00000 n
-0000203785 00000 n
-0000203989 00000 n
-0000207035 00000 n
-0000207205 00000 n
-0000209164 00000 n
-0000209324 00000 n
-0000210004 00000 n
-0000210249 00000 n
-0000212043 00000 n
-0000212256 00000 n
-0000213758 00000 n
-0000213980 00000 n
-0000215808 00000 n
-0000216061 00000 n
-0000217745 00000 n
-0000217952 00000 n
-0000219645 00000 n
-0000219861 00000 n
-0000221794 00000 n
-0000222016 00000 n
-0000224029 00000 n
-0000224241 00000 n
-0000226327 00000 n
-0000226530 00000 n
-0000228794 00000 n
-0000229048 00000 n
-0000231276 00000 n
-0000231506 00000 n
-0000233547 00000 n
-0000233778 00000 n
-0000235351 00000 n
-0000235562 00000 n
-0000237584 00000 n
-0000237804 00000 n
-0000239854 00000 n
-0000240096 00000 n
-0000242032 00000 n
-0000242261 00000 n
-0000243981 00000 n
-0000244141 00000 n
-0000245133 00000 n
-0000245327 00000 n
-0000246906 00000 n
-0000247086 00000 n
-0000248827 00000 n
-0000249016 00000 n
-0000250217 00000 n
-0000250396 00000 n
-0000251485 00000 n
-0000251682 00000 n
-0000253053 00000 n
-0000253232 00000 n
-0000253957 00000 n
-0000254187 00000 n
-0000255664 00000 n
-0000255867 00000 n
-0000257676 00000 n
-0000257860 00000 n
-0000258395 00000 n
-0000258556 00000 n
-0000258747 00000 n
-0000258960 00000 n
-0000261909 00000 n
-0000262084 00000 n
-0000264566 00000 n
-0000264741 00000 n
-0000266021 00000 n
-0000266219 00000 n
-0000267581 00000 n
-0000267779 00000 n
-0000269465 00000 n
-0000269653 00000 n
-0000271334 00000 n
-0000271513 00000 n
-0000273615 00000 n
-0000273794 00000 n
-0000275567 00000 n
-0000275746 00000 n
-0000277427 00000 n
-0000277615 00000 n
-0000279468 00000 n
-0000279680 00000 n
-0000281715 00000 n
-0000281928 00000 n
-0000283479 00000 n
-0000283668 00000 n
-0000284942 00000 n
-0000285148 00000 n
-0000286922 00000 n
-0000287119 00000 n
-0000288881 00000 n
-0000289093 00000 n
-0000290796 00000 n
-0000290998 00000 n
-0000292377 00000 n
-0000292565 00000 n
-0000293456 00000 n
-0000293644 00000 n
-0000295169 00000 n
-0000295372 00000 n
-0000297081 00000 n
-0000297284 00000 n
-0000298101 00000 n
-0000298313 00000 n
-0000299791 00000 n
-0000299971 00000 n
-0000300733 00000 n
-0000300996 00000 n
-0000302719 00000 n
-0000302964 00000 n
-0000304855 00000 n
-0000305077 00000 n
-0000306871 00000 n
-0000307093 00000 n
-0000308972 00000 n
-0000309151 00000 n
-0000310374 00000 n
-0000310605 00000 n
-0000312271 00000 n
-0000312450 00000 n
-0000314031 00000 n
-0000314210 00000 n
-0000315757 00000 n
-0000315936 00000 n
-0000317439 00000 n
-0000317618 00000 n
-0000319284 00000 n
-0000319454 00000 n
-0000320199 00000 n
-0000320388 00000 n
-0000322081 00000 n
-0000322260 00000 n
-0000324005 00000 n
-0000324193 00000 n
-0000326028 00000 n
-0000326222 00000 n
-0000328079 00000 n
-0000328310 00000 n
-0000330425 00000 n
-0000330637 00000 n
-0000332073 00000 n
-0000332285 00000 n
-0000333649 00000 n
-0000333855 00000 n
-0000335128 00000 n
-0000335307 00000 n
-0000336327 00000 n
-0000336515 00000 n
-0000337983 00000 n
-0000338171 00000 n
-0000339570 00000 n
-0000339739 00000 n
-0000340573 00000 n
-0000340753 00000 n
-0000341814 00000 n
-0000341984 00000 n
-0000343662 00000 n
-0000343841 00000 n
-0000345654 00000 n
-0000345823 00000 n
-0000347662 00000 n
-0000347831 00000 n
-0000348819 00000 n
-0000348998 00000 n
-0000350645 00000 n
-0000350833 00000 n
-0000352324 00000 n
-0000352512 00000 n
-0000353934 00000 n
-0000354104 00000 n
-0000355770 00000 n
-0000355940 00000 n
-0000356497 00000 n
-0000356694 00000 n
-0000357906 00000 n
-0000358109 00000 n
-0000359454 00000 n
-0000359639 00000 n
-0000360115 00000 n
-0000360318 00000 n
-0000361851 00000 n
-0000362029 00000 n
-0000362697 00000 n
-0000362885 00000 n
-0000364373 00000 n
-0000364543 00000 n
-0000366050 00000 n
-0000366220 00000 n
-0000367617 00000 n
-0000367787 00000 n
-0000369337 00000 n
-0000369506 00000 n
-0000370469 00000 n
-0000370690 00000 n
-0000372308 00000 n
-0000372551 00000 n
-0000374120 00000 n
-0000374290 00000 n
-0000375365 00000 n
-0000375561 00000 n
-0000377747 00000 n
-0000377926 00000 n
-0000379453 00000 n
-0000379641 00000 n
-0000380609 00000 n
-0000380805 00000 n
-0000382535 00000 n
-0000382748 00000 n
-0000384429 00000 n
-0000384624 00000 n
-0000386375 00000 n
-0000386588 00000 n
-0000387853 00000 n
-0000388057 00000 n
-0000389795 00000 n
-0000389983 00000 n
-0000391726 00000 n
-0000391905 00000 n
-0000393304 00000 n
-0000393483 00000 n
-0000395181 00000 n
-0000395360 00000 n
-0000396842 00000 n
-0000397021 00000 n
-0000398807 00000 n
-0000399011 00000 n
-0000400662 00000 n
-0000400721 00000 n
-0000400824 00000 n
-0000400989 00000 n
-0000401071 00000 n
-0000401179 00000 n
-0000401302 00000 n
-0000401414 00000 n
-0000401593 00000 n
-0000401702 00000 n
-0000401828 00000 n
-0000401955 00000 n
-0000402094 00000 n
-0000402234 00000 n
-0000402403 00000 n
-0000402520 00000 n
-0000402649 00000 n
-0000402801 00000 n
-0000402941 00000 n
-0000403119 00000 n
-0000403275 00000 n
-0000403388 00000 n
-0000403505 00000 n
-0000403640 00000 n
-0000403781 00000 n
-0000403896 00000 n
-0000404007 00000 n
-0000404216 00000 n
-0000404317 00000 n
-0000404460 00000 n
-0000404606 00000 n
-0000404722 00000 n
-0000404889 00000 n
-0000405001 00000 n
-0000405175 00000 n
-0000405278 00000 n
-0000405451 00000 n
-0000405572 00000 n
-0000405702 00000 n
-0000405828 00000 n
-0000405943 00000 n
-0000406051 00000 n
-0000406198 00000 n
-0000406303 00000 n
-0000406422 00000 n
-0000406551 00000 n
-0000406710 00000 n
-0000406844 00000 n
-0000406981 00000 n
-0000407113 00000 n
-0000407262 00000 n
-0000407394 00000 n
-0000407542 00000 n
-0000407643 00000 n
-0000407771 00000 n
-0000407889 00000 n
-0000408043 00000 n
-0000408174 00000 n
-0000408320 00000 n
-0000408421 00000 n
-0000408519 00000 n
-0000408643 00000 n
-0000408755 00000 n
-0000408927 00000 n
-0000409125 00000 n
-0000409236 00000 n
-0000409351 00000 n
-0000409495 00000 n
-0000409703 00000 n
-0000409837 00000 n
-0000409991 00000 n
-0000410116 00000 n
-0000410247 00000 n
-0000410380 00000 n
-0000410511 00000 n
-0000410686 00000 n
-0000410821 00000 n
-0000410974 00000 n
-0000411119 00000 n
-0000411344 00000 n
-0000411455 00000 n
-0000411570 00000 n
-0000411763 00000 n
-0000411906 00000 n
-0000412022 00000 n
-0000412180 00000 n
-0000412337 00000 n
-0000412468 00000 n
-0000412589 00000 n
-0000412766 00000 n
-0000412900 00000 n
-0000413048 00000 n
-0000413166 00000 n
-0000413296 00000 n
-0000413466 00000 n
-0000413560 00000 n
-0000413687 00000 n
-0000413814 00000 n
-0000413910 00000 n
-0000414096 00000 n
-0000414222 00000 n
-0000414357 00000 n
-0000414490 00000 n
-0000414617 00000 n
-0000414729 00000 n
-0000414920 00000 n
-0000415017 00000 n
-0000415202 00000 n
-0000415305 00000 n
-0000415428 00000 n
-0000415549 00000 n
-0000415660 00000 n
-0000415855 00000 n
-0000415970 00000 n
-0000416093 00000 n
-0000416210 00000 n
-0000416327 00000 n
-0000416431 00000 n
-0000416619 00000 n
-0000416841 00000 n
-0000416979 00000 n
-0000417141 00000 n
-0000417277 00000 n
-0000417379 00000 n
-0000417585 00000 n
-0000417744 00000 n
-0000417892 00000 n
-0000418020 00000 n
-0000418201 00000 n
-0000418311 00000 n
-0000418426 00000 n
-0000418571 00000 n
-0000418735 00000 n
-0000418885 00000 n
-0000419103 00000 n
-0000419208 00000 n
-0000419340 00000 n
-0000419461 00000 n
-0000419668 00000 n
-0000419796 00000 n
-0000419881 00000 n
-0000420047 00000 n
-0000420151 00000 n
-0000420308 00000 n
-0000420419 00000 n
-0000420564 00000 n
-0000420706 00000 n
-0000420856 00000 n
-0000420973 00000 n
-0000421137 00000 n
-0000421248 00000 n
-0000421388 00000 n
-0000421515 00000 n
-0000421632 00000 n
-0000421771 00000 n
-0000421877 00000 n
-0000422011 00000 n
-0000422143 00000 n
-0000422288 00000 n
-0000422415 00000 n
-0000422547 00000 n
-0000422677 00000 n
-0000422802 00000 n
-0000422910 00000 n
-0000423116 00000 n
-0000423216 00000 n
-0000423334 00000 n
-0000423499 00000 n
-0000423590 00000 n
-0000423751 00000 n
-0000423877 00000 n
-0000424020 00000 n
-0000424147 00000 n
-0000424287 00000 n
-0000424423 00000 n
-0000424531 00000 n
-0000424705 00000 n
-0000424811 00000 n
-0000424931 00000 n
-0000425043 00000 n
-0000425160 00000 n
-0000425262 00000 n
-0000425439 00000 n
-0000425551 00000 n
-0000425682 00000 n
-0000425806 00000 n
-0000425973 00000 n
-0000426090 00000 n
-0000426220 00000 n
-0000426360 00000 n
-0000426497 00000 n
-0000426633 00000 n
-0000426769 00000 n
-0000426906 00000 n
-0000427018 00000 n
-0000427189 00000 n
-0000427311 00000 n
-0000427471 00000 n
-0000427570 00000 n
-0000427685 00000 n
-0000427787 00000 n
-0000427948 00000 n
-0000428052 00000 n
-0000428151 00000 n
-0000428333 00000 n
-0000428437 00000 n
-0000428590 00000 n
-0000428701 00000 n
-0000428809 00000 n
-0000428940 00000 n
-0000429115 00000 n
-0000429218 00000 n
-0000429338 00000 n
-0000429453 00000 n
-0000429567 00000 n
-0000429682 00000 n
-0000429796 00000 n
-0000429911 00000 n
-0000430029 00000 n
-0000430146 00000 n
-0000430252 00000 n
-0000430425 00000 n
-0000430528 00000 n
-0000430684 00000 n
-0000430792 00000 n
-0000430918 00000 n
-0000431038 00000 n
-0000431139 00000 n
-0000431246 00000 n
-0000431360 00000 n
-0000431521 00000 n
-0000431617 00000 n
-0000431731 00000 n
-0000431841 00000 n
-0000431958 00000 n
-0000432136 00000 n
-0000432246 00000 n
-0000432400 00000 n
-0000432569 00000 n
-0000432757 00000 n
-0000432938 00000 n
-0000433094 00000 n
-0000433260 00000 n
-0000433392 00000 n
-0000433539 00000 n
-0000433678 00000 n
-0000433798 00000 n
-0000433919 00000 n
-0000434038 00000 n
-0000434202 00000 n
-0000434306 00000 n
-0000434424 00000 n
-0000434542 00000 n
-0000434663 00000 n
-0000434799 00000 n
-0000434898 00000 n
-0000435062 00000 n
-0000435166 00000 n
-0000435283 00000 n
-0000435433 00000 n
-0000435533 00000 n
-0000435647 00000 n
-0000435761 00000 n
-0000435875 00000 n
-0000435989 00000 n
-0000436103 00000 n
-0000436217 00000 n
-0000436331 00000 n
-0000436445 00000 n
-0000436561 00000 n
-0000436663 00000 n
-0000436777 00000 n
+0000126304 00000 n
+0000126479 00000 n
+0000128781 00000 n
+0000128956 00000 n
+0000130064 00000 n
+0000130225 00000 n
+0000130413 00000 n
+0000130617 00000 n
+0000131272 00000 n
+0000131484 00000 n
+0000132628 00000 n
+0000132816 00000 n
+0000134311 00000 n
+0000134508 00000 n
+0000135923 00000 n
+0000136138 00000 n
+0000137366 00000 n
+0000137560 00000 n
+0000139126 00000 n
+0000139296 00000 n
+0000141097 00000 n
+0000141248 00000 n
+0000141484 00000 n
+0000141654 00000 n
+0000143312 00000 n
+0000143491 00000 n
+0000145323 00000 n
+0000145492 00000 n
+0000147346 00000 n
+0000147515 00000 n
+0000148624 00000 n
+0000148812 00000 n
+0000150513 00000 n
+0000150701 00000 n
+0000152179 00000 n
+0000152367 00000 n
+0000153852 00000 n
+0000154022 00000 n
+0000155683 00000 n
+0000155853 00000 n
+0000156594 00000 n
+0000156773 00000 n
+0000158506 00000 n
+0000158694 00000 n
+0000160494 00000 n
+0000160682 00000 n
+0000162327 00000 n
+0000162496 00000 n
+0000163266 00000 n
+0000163473 00000 n
+0000165095 00000 n
+0000165302 00000 n
+0000166898 00000 n
+0000167067 00000 n
+0000167394 00000 n
+0000167555 00000 n
+0000167745 00000 n
+0000167949 00000 n
+0000168761 00000 n
+0000168931 00000 n
+0000170877 00000 n
+0000171037 00000 n
+0000171709 00000 n
+0000171922 00000 n
+0000173683 00000 n
+0000173896 00000 n
+0000175434 00000 n
+0000175656 00000 n
+0000177485 00000 n
+0000177706 00000 n
+0000179399 00000 n
+0000179606 00000 n
+0000181291 00000 n
+0000181507 00000 n
+0000183486 00000 n
+0000183708 00000 n
+0000185716 00000 n
+0000185928 00000 n
+0000188008 00000 n
+0000188211 00000 n
+0000190473 00000 n
+0000190695 00000 n
+0000192900 00000 n
+0000193098 00000 n
+0000195105 00000 n
+0000195293 00000 n
+0000196839 00000 n
+0000197018 00000 n
+0000199003 00000 n
+0000199191 00000 n
+0000201155 00000 n
+0000201343 00000 n
+0000203299 00000 n
+0000203496 00000 n
+0000205246 00000 n
+0000205406 00000 n
+0000206395 00000 n
+0000206589 00000 n
+0000208179 00000 n
+0000208359 00000 n
+0000210106 00000 n
+0000210285 00000 n
+0000211182 00000 n
+0000211361 00000 n
+0000212427 00000 n
+0000212624 00000 n
+0000214136 00000 n
+0000214315 00000 n
+0000215120 00000 n
+0000215350 00000 n
+0000216838 00000 n
+0000217050 00000 n
+0000218798 00000 n
+0000218991 00000 n
+0000220345 00000 n
+0000220506 00000 n
+0000220697 00000 n
+0000220901 00000 n
+0000222168 00000 n
+0000222366 00000 n
+0000223796 00000 n
+0000223984 00000 n
+0000225675 00000 n
+0000225863 00000 n
+0000227642 00000 n
+0000227821 00000 n
+0000229885 00000 n
+0000230064 00000 n
+0000231881 00000 n
+0000232060 00000 n
+0000233798 00000 n
+0000233986 00000 n
+0000235835 00000 n
+0000236057 00000 n
+0000238068 00000 n
+0000238281 00000 n
+0000239834 00000 n
+0000240023 00000 n
+0000241415 00000 n
+0000241585 00000 n
+0000241928 00000 n
+0000242149 00000 n
+0000243909 00000 n
+0000244115 00000 n
+0000245988 00000 n
+0000246185 00000 n
+0000247764 00000 n
+0000247975 00000 n
+0000249490 00000 n
+0000249678 00000 n
+0000250563 00000 n
+0000250751 00000 n
+0000252274 00000 n
+0000252477 00000 n
+0000254181 00000 n
+0000254384 00000 n
+0000255331 00000 n
+0000255543 00000 n
+0000257053 00000 n
+0000257233 00000 n
+0000257988 00000 n
+0000258219 00000 n
+0000259925 00000 n
+0000260137 00000 n
+0000262121 00000 n
+0000262352 00000 n
+0000264309 00000 n
+0000264531 00000 n
+0000266309 00000 n
+0000266512 00000 n
+0000267818 00000 n
+0000268040 00000 n
+0000269631 00000 n
+0000269810 00000 n
+0000271432 00000 n
+0000271611 00000 n
+0000273196 00000 n
+0000273375 00000 n
+0000274933 00000 n
+0000275112 00000 n
+0000276728 00000 n
+0000276898 00000 n
+0000277772 00000 n
+0000277961 00000 n
+0000279632 00000 n
+0000279811 00000 n
+0000281542 00000 n
+0000281730 00000 n
+0000283624 00000 n
+0000283837 00000 n
+0000285690 00000 n
+0000285930 00000 n
+0000288023 00000 n
+0000288235 00000 n
+0000289815 00000 n
+0000290036 00000 n
+0000291285 00000 n
+0000291473 00000 n
+0000292752 00000 n
+0000292931 00000 n
+0000293992 00000 n
+0000294180 00000 n
+0000295744 00000 n
+0000295932 00000 n
+0000297348 00000 n
+0000297537 00000 n
+0000298800 00000 n
+0000298980 00000 n
+0000299631 00000 n
+0000299828 00000 n
+0000301303 00000 n
+0000301491 00000 n
+0000302586 00000 n
+0000302774 00000 n
+0000303307 00000 n
+0000303504 00000 n
+0000304723 00000 n
+0000304926 00000 n
+0000306256 00000 n
+0000306441 00000 n
+0000306911 00000 n
+0000307133 00000 n
+0000309200 00000 n
+0000309413 00000 n
+0000311462 00000 n
+0000311659 00000 n
+0000312859 00000 n
+0000313072 00000 n
+0000314687 00000 n
+0000314909 00000 n
+0000316732 00000 n
+0000316954 00000 n
+0000318723 00000 n
+0000318917 00000 n
+0000319693 00000 n
+0000319896 00000 n
+0000321414 00000 n
+0000321592 00000 n
+0000322258 00000 n
+0000322446 00000 n
+0000323974 00000 n
+0000324144 00000 n
+0000325636 00000 n
+0000325806 00000 n
+0000327192 00000 n
+0000327362 00000 n
+0000328904 00000 n
+0000329073 00000 n
+0000330058 00000 n
+0000330253 00000 n
+0000330674 00000 n
+0000330853 00000 n
+0000332401 00000 n
+0000332589 00000 n
+0000333633 00000 n
+0000333784 00000 n
+0000334018 00000 n
+0000334213 00000 n
+0000335926 00000 n
+0000336138 00000 n
+0000337853 00000 n
+0000338047 00000 n
+0000339761 00000 n
+0000339973 00000 n
+0000341258 00000 n
+0000341461 00000 n
+0000343216 00000 n
+0000343404 00000 n
+0000345138 00000 n
+0000345317 00000 n
+0000346736 00000 n
+0000346915 00000 n
+0000348641 00000 n
+0000348820 00000 n
+0000350305 00000 n
+0000350484 00000 n
+0000352265 00000 n
+0000352468 00000 n
+0000354100 00000 n
+0000354159 00000 n
+0000354262 00000 n
+0000354427 00000 n
+0000354509 00000 n
+0000354617 00000 n
+0000354740 00000 n
+0000354852 00000 n
+0000355020 00000 n
+0000355124 00000 n
+0000355245 00000 n
+0000355367 00000 n
+0000355501 00000 n
+0000355636 00000 n
+0000355800 00000 n
+0000355910 00000 n
+0000356032 00000 n
+0000356179 00000 n
+0000356314 00000 n
+0000356487 00000 n
+0000356637 00000 n
+0000356742 00000 n
+0000356851 00000 n
+0000356978 00000 n
+0000357111 00000 n
+0000357218 00000 n
+0000357321 00000 n
+0000357486 00000 n
+0000357592 00000 n
+0000357717 00000 n
+0000357835 00000 n
+0000357996 00000 n
+0000358105 00000 n
+0000358229 00000 n
+0000358363 00000 n
+0000358494 00000 n
+0000358624 00000 n
+0000358754 00000 n
+0000358884 00000 n
+0000358989 00000 n
+0000359187 00000 n
+0000359283 00000 n
+0000359421 00000 n
+0000359562 00000 n
+0000359673 00000 n
+0000359835 00000 n
+0000359942 00000 n
+0000360122 00000 n
+0000360220 00000 n
+0000360388 00000 n
+0000360502 00000 n
+0000360625 00000 n
+0000360732 00000 n
+0000360856 00000 n
+0000360968 00000 n
+0000361129 00000 n
+0000361324 00000 n
+0000361430 00000 n
+0000361540 00000 n
+0000361679 00000 n
+0000361882 00000 n
+0000362009 00000 n
+0000362156 00000 n
+0000362274 00000 n
+0000362400 00000 n
+0000362528 00000 n
+0000362654 00000 n
+0000362824 00000 n
+0000362952 00000 n
+0000363098 00000 n
+0000363238 00000 n
+0000363452 00000 n
+0000363558 00000 n
+0000363668 00000 n
+0000363856 00000 n
+0000363992 00000 n
+0000364101 00000 n
+0000364241 00000 n
+0000364393 00000 n
+0000364503 00000 n
+0000364669 00000 n
+0000364798 00000 n
+0000364941 00000 n
+0000365054 00000 n
+0000365179 00000 n
+0000365344 00000 n
+0000365431 00000 n
+0000365553 00000 n
+0000365675 00000 n
+0000365766 00000 n
+0000365932 00000 n
+0000366053 00000 n
+0000366183 00000 n
+0000366311 00000 n
+0000366438 00000 n
+0000366550 00000 n
+0000366730 00000 n
+0000366822 00000 n
+0000367002 00000 n
+0000367098 00000 n
+0000367214 00000 n
+0000367328 00000 n
+0000367432 00000 n
+0000367622 00000 n
+0000367730 00000 n
+0000367846 00000 n
+0000367956 00000 n
+0000368066 00000 n
+0000368163 00000 n
+0000368346 00000 n
+0000368563 00000 n
+0000368694 00000 n
+0000368849 00000 n
+0000368978 00000 n
+0000369075 00000 n
+0000369269 00000 n
+0000369422 00000 n
+0000369564 00000 n
+0000369686 00000 n
+0000369861 00000 n
+0000369963 00000 n
+0000370070 00000 n
+0000370209 00000 n
+0000370367 00000 n
+0000370511 00000 n
+0000370717 00000 n
+0000370816 00000 n
+0000370942 00000 n
+0000371057 00000 n
+0000371252 00000 n
+0000371374 00000 n
+0000371451 00000 n
+0000371605 00000 n
+0000371703 00000 n
+0000371854 00000 n
+0000371957 00000 n
+0000372094 00000 n
+0000372228 00000 n
+0000372370 00000 n
+0000372479 00000 n
+0000372637 00000 n
+0000372740 00000 n
+0000372872 00000 n
+0000372991 00000 n
+0000373100 00000 n
+0000373233 00000 n
+0000373331 00000 n
+0000373457 00000 n
+0000373581 00000 n
+0000373718 00000 n
+0000373837 00000 n
+0000373961 00000 n
+0000374083 00000 n
+0000374200 00000 n
+0000374300 00000 n
+0000374494 00000 n
+0000374588 00000 n
+0000374700 00000 n
+0000374859 00000 n
+0000374942 00000 n
+0000375097 00000 n
+0000375215 00000 n
+0000375334 00000 n
+0000375466 00000 n
+0000375594 00000 n
+0000375694 00000 n
+0000375862 00000 n
+0000375960 00000 n
+0000376072 00000 n
+0000376176 00000 n
+0000376287 00000 n
+0000376383 00000 n
+0000376540 00000 n
+0000376634 00000 n
+0000376745 00000 n
+0000376892 00000 n
+0000377016 00000 n
+0000377171 00000 n
+0000377265 00000 n
+0000377356 00000 n
+0000377515 00000 n
+0000377631 00000 n
+0000377785 00000 n
+0000377876 00000 n
+0000377983 00000 n
+0000378077 00000 n
+0000378232 00000 n
+0000378328 00000 n
+0000378419 00000 n
+0000378627 00000 n
+0000378720 00000 n
+0000378832 00000 n
+0000378954 00000 n
+0000379106 00000 n
+0000379271 00000 n
+0000379379 00000 n
+0000379482 00000 n
+0000379612 00000 n
+0000379737 00000 n
+0000379879 00000 n
+0000380018 00000 n
+0000380112 00000 n
+0000380288 00000 n
+0000380386 00000 n
+0000380533 00000 n
+0000380636 00000 n
+0000380736 00000 n
+0000380855 00000 n
+0000381018 00000 n
+0000381115 00000 n
+0000381229 00000 n
+0000381338 00000 n
+0000381446 00000 n
+0000381555 00000 n
+0000381663 00000 n
+0000381772 00000 n
+0000381884 00000 n
+0000381995 00000 n
+0000382094 00000 n
+0000382208 00000 n
+0000382357 00000 n
+0000382447 00000 n
+0000382555 00000 n
+0000382659 00000 n
+0000382770 00000 n
+0000382936 00000 n
+0000383040 00000 n
+0000383188 00000 n
+0000383349 00000 n
+0000383529 00000 n
+0000383702 00000 n
+0000383850 00000 n
+0000384010 00000 n
+0000384134 00000 n
+0000384273 00000 n
+0000384404 00000 n
+0000384516 00000 n
+0000384631 00000 n
+0000384744 00000 n
+0000384896 00000 n
+0000384994 00000 n
+0000385106 00000 n
+0000385218 00000 n
+0000385333 00000 n
+0000385463 00000 n
+0000385556 00000 n
+0000385708 00000 n
+0000385806 00000 n
+0000385917 00000 n
+0000386061 00000 n
+0000386153 00000 n
+0000386259 00000 n
+0000386365 00000 n
+0000386471 00000 n
+0000386577 00000 n
+0000386683 00000 n
+0000386789 00000 n
+0000386895 00000 n
+0000387001 00000 n
+0000387108 00000 n
+0000387201 00000 n
+0000387309 00000 n
trailer
-<</Size 1949/Root 1948 0 R/Info 1 0 R/ID[<116c97ced400123fda9c473dd7e06727><116c97ced400123fda9c473dd7e06727>]>>
+<</Size 1682/Root 1681 0 R/Info 1 0 R/ID[<660a7f239dce61a03b500db98cf508b1><660a7f239dce61a03b500db98cf508b1>]>>
startxref
-437645
+388219
%%EOF
diff --git a/docs/announce b/docs/announce
index 7310bdd737..f5716556ba 100644
--- a/docs/announce
+++ b/docs/announce
@@ -1,6 +1,3 @@
-This document is out of date
-
-
Announcing Samba version 2.2
============================
diff --git a/docs/docbook/configure b/docs/docbook/configure
index 8680e5b5ab..609c17ed87 100755
--- a/docs/docbook/configure
+++ b/docs/docbook/configure
@@ -557,13 +557,10 @@ else
echo "$ac_t""no" 1>&6
fi
-if test "x$JW" = x; then
- { echo "configure: error: "jw is required"" 1>&2; exit 1; }
-fi
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:567: checking for $ac_word" >&5
+echo "configure:564: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -595,13 +592,10 @@ else
echo "$ac_t""no" 1>&6
fi
-if test "x$PERL" = x; then
- { echo "configure: error: "perl is required"" 1>&2; exit 1; }
-fi
# Extract the first word of "htmldoc", so it can be a program name with args.
set dummy htmldoc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:605: checking for $ac_word" >&5
+echo "configure:599: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_HTMLDOC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -633,9 +627,6 @@ else
echo "$ac_t""no" 1>&6
fi
-if test "x$HTMLDOC" = x; then
- { echo "configure: error: "htmldoc is required"" 1>&2; exit 1; }
-fi
DOC_BUILD_DATE=`date '+%d-%m-%Y'`
diff --git a/docs/docbook/configure.in b/docs/docbook/configure.in
index 57482d134e..3a9ed51d16 100644
--- a/docs/docbook/configure.in
+++ b/docs/docbook/configure.in
@@ -1,18 +1,8 @@
AC_INIT(global.ent)
-# Jade wrapper
AC_PATH_PROG(JW, jw)
-if test "x$JW" = x; then
- AC_MSG_ERROR("jw is required")
-fi
AC_PATH_PROG(PERL, perl)
-if test "x$PERL" = x; then
- AC_MSG_ERROR("perl is required")
-fi
AC_PATH_PROG(HTMLDOC, htmldoc)
-if test "x$HTMLDOC" = x; then
- AC_MSG_ERROR("htmldoc is required")
-fi
DOC_BUILD_DATE=`date '+%d-%m-%Y'`
AC_SUBST(DOC_BUILD_DATE)
diff --git a/docs/docbook/devdoc/dev-doc.sgml b/docs/docbook/devdoc/dev-doc.sgml
index b5c934b1c8..e256dbe3a2 100644
--- a/docs/docbook/devdoc/dev-doc.sgml
+++ b/docs/docbook/devdoc/dev-doc.sgml
@@ -12,7 +12,6 @@
<!ENTITY wins SYSTEM "wins.sgml">
<!ENTITY sam SYSTEM "sam.sgml">
<!ENTITY encryption SYSTEM "encryption.sgml">
-<!ENTITY rpc-plugin SYSTEM "rpc_plugin.sgml">
]>
<book id="Samba-Developers-Guide">
@@ -67,6 +66,5 @@ url="http://www.fsf.org/licenses/gpl.txt">http://www.fsf.org/licenses/gpl.txt</u
&wins;
&sam;
&encryption;
-&rpc-plugin;
</book>
diff --git a/docs/docbook/devdoc/rpc_plugin.sgml b/docs/docbook/devdoc/rpc_plugin.sgml
deleted file mode 100644
index 21582a011d..0000000000
--- a/docs/docbook/devdoc/rpc_plugin.sgml
+++ /dev/null
@@ -1,76 +0,0 @@
-<chapter id="rpc-plugin">
-<chapterinfo>
- <author>
- <firstname>Anthony</firstname><surname>Liguori</surname>
- <affiliation>
- <orgname>IBM</orgname>
- <address><email>aliguor@us.ibm.com</email></address>
- </affiliation>
- </author>
- <pubdate>January 2003</pubdate>
-</chapterinfo>
-
-<title>RPC Pluggable Modules</title>
-
-<sect1>
-<title>About</title>
-
-<para>
-This document describes how to make use the new RPC Pluggable Modules features
-of Samba 3.0. This architecture was added to increase the maintainability of
-Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
-The RPM architecture will also allow third-party vendors to add functionality
-to Samba through plug-ins.
-</para>
-
-</sect1>
-
-<sect1>
-<title>General Overview</title>
-
-<para>
-When an RPC call is sent to smbd, smbd tries to load a shared library by the
-name <filename>librpc_&lt;pipename&gt;.so</filename> to handle the call if
-it doesn't know how to handle the call internally. For instance, LSA calls
-are handled by <filename>librpc_lsass.so</filename>..
-These shared libraries should be located in the <filename>&lt;sambaroot&gt;/lib/rpc</filename>. smbd then attempts to call the rpc_pipe_init function within
-the shared library.
-</para>
-
-<para>
-In the rpc_pipe_init function, the library should call
-rpc_pipe_register_commands(). This function takes the following arguments:
-</para>
-
-<para><programlisting>
-int rpc_pipe_register_commands(const char *clnt, const char *srv,
- const struct api_struct *cmds, int size);
-</programlisting></para>
-
-<variablelist>
-
-<varlistentry><term>clnt</term>
-<listitem><para>the Client name of the named pipe</para></listitem>
-</varlistentry>
-
-<varlistentry><term>srv</term>
-<listitem><para>the Server name of the named pipe</para></listitem>
-</varlistentry>
-
-<varlistentry><term>cmds</term>
-<listitem><para>a list of api_structs that map RPC ordinal numbers to function calls</para></listitem>
-</varlistentry>
-
-<varlistentry><term>size</term>
-<listitem><para>the number of api_structs contained in cmds</para></listitem>
-</varlistentry>
-
-</variablelist>
-
-<para>
-See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
-how to use this library.
-</para>
-
-</sect1>
-</chapter>
diff --git a/docs/docbook/faq/clientapp.sgml b/docs/docbook/faq/clientapp.sgml
index 3d44dd44c0..6d687bf772 100644
--- a/docs/docbook/faq/clientapp.sgml
+++ b/docs/docbook/faq/clientapp.sgml
@@ -1,8 +1,8 @@
-<chapter id="FAQ-ClientApp">
+<chapter id="ClientApp">
<title>Specific client application problems</title>
<sect1>
-<title>MS Office Setup reports "Cannot change properties of '\\MSOFFICE\\SETUP.INI'"</title>
+<title>MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</title>
<para>
When installing MS Office on a Samba drive for which you have admin
user permissions, ie. admin users = username, you will find the
@@ -60,16 +60,16 @@ set the following parameters on the share containing it:
</para>
<para><programlisting>
-[MSOP95]
- path = /where_you_put_it
- comment = Your comment
- volume = "The_CD_ROM_Label"
- read only = yes
- available = yes
- share modes = no
- locking = no
- browseable = yes
- public = yes
+ [MSOP95]
+ path = /where_you_put_it
+ comment = Your comment
+ volume = "The_CD_ROM_Label"
+ read only = yes
+ available = yes
+ share modes = no
+ locking = no
+ browseable = yes
+ public = yes
</programlisting></para>
</listitem>
diff --git a/docs/docbook/faq/config.sgml b/docs/docbook/faq/config.sgml
index db27102cdf..78f73252a2 100644
--- a/docs/docbook/faq/config.sgml
+++ b/docs/docbook/faq/config.sgml
@@ -1,4 +1,4 @@
-<chapter id="FAQ-Config">
+<chapter id="Config">
<title>Configuration problems</title>
<sect1>
@@ -8,18 +8,4 @@ When you have a user in 'admin users', samba will always do file operations for
this user as 'root', even if 'force user' has been set.
</para>
</sect1>
-
-<sect1>
-<title>I have just installed samba and I'm trying to log in from Windows, but samba refuses all logins!</title>
-
-<para>
-Newer windows clients(NT4, 2000, XP) send encrypted passwords. Samba can't compare these
-passwords to the unix password database, so it needs it's own user database. You can
-add users to this database using "smbpasswd -a user-name".
-</para>
-
-<para>
-See also the "User database" chapter of the samba HOWTO Collection.
-</para>
-</sect1>
</chapter>
diff --git a/docs/docbook/faq/errors.sgml b/docs/docbook/faq/errors.sgml
index 905e7c92c2..6476ec064e 100644
--- a/docs/docbook/faq/errors.sgml
+++ b/docs/docbook/faq/errors.sgml
@@ -1,4 +1,4 @@
-<chapter id="FAQ-errors">
+<chapter id="errors">
<title>Common errors</title>
@@ -49,6 +49,7 @@ the samba HOWTO Collection</member>
Windows NT in the chapter "Portability" of the samba HOWTO collection
</member>
</simplelist>
+</para>
</sect1>
@@ -62,6 +63,7 @@ the program always prompts for the password if the server is a Samba server.
It also ignores the "-N" argument when querying some (but not all) of our
NT servers.
</quote>
+</para>
<para>
No, it does not ignore -N, it is just that your server rejected the
diff --git a/docs/docbook/faq/features.sgml b/docs/docbook/faq/features.sgml
index 66b05379cc..bc1081e5c0 100644
--- a/docs/docbook/faq/features.sgml
+++ b/docs/docbook/faq/features.sgml
@@ -1,4 +1,4 @@
-<chapter id="FAQ-features">
+<chapter id="features">
<title>Features</title>
@@ -83,7 +83,9 @@ manual carefully.</para>
<title>Tools for printing faxes</title>
<para>Your incomed faxes are in:
-<filename>/var/spool/fax/incoming</filename>. Print it with:</para>
+<filename>/var/spool/fax/incoming</filename></para>
+
+<para>print it with:</para>
<para><programlisting>
for i in *
diff --git a/docs/docbook/faq/general.sgml b/docs/docbook/faq/general.sgml
index 3f7c2074f9..38bcdf49e3 100644
--- a/docs/docbook/faq/general.sgml
+++ b/docs/docbook/faq/general.sgml
@@ -1,4 +1,4 @@
-<chapter id="FAQ-general">
+<chapter id="general">
<title>General Information</title>
<sect1>
diff --git a/docs/docbook/faq/install.sgml b/docs/docbook/faq/install.sgml
index f8341dc65a..88520fc71d 100644
--- a/docs/docbook/faq/install.sgml
+++ b/docs/docbook/faq/install.sgml
@@ -1,4 +1,4 @@
-<chapter id="FAQ-Install">
+<chapter id="Install">
<title>Compiling and installing Samba on a Unix host</title>
<sect1>
@@ -22,7 +22,7 @@ client to client - check your client's documentation.
</sect1>
<sect1>
-<title>Some files that I KNOW are on the server don't show up when I view the files from my client!</title>
+<title>Some files that I KNOW are on the server doesn't show up when I view the files from my client!</title>
<para>See the next question.</para>
</sect1>
diff --git a/docs/docbook/faq/printing.sgml b/docs/docbook/faq/printing.sgml
deleted file mode 100644
index cc01a5d3b0..0000000000
--- a/docs/docbook/faq/printing.sgml
+++ /dev/null
@@ -1,36 +0,0 @@
-<chapter id="FAQ-Printing">
-<chapterinfo>
-<author>
- <firstname>Ronan</firstname><surname>Waide</surname>
-</author>
-</chapterinfo>
-
-<title>Printing problems</title>
-
-<sect1>
-<title>setdriver or cupsaddsmb failes</title>
-<para>
-setdriver expects the following setup:
-
-<simplelist>
-<member>you are a printer admin, or root. this is the smb.conf printer admin group, not the Printer Operators group in NT. I've not tried the latter, but I don't believe it will work based on the current code.</member>
-<member>printer admins has to be defined in [global]</member>
-<member>upload the driver files to \\server\print$\w32x86 and win40 as appropriate. DON'T put them in the 0 or 2 subdirectories.</member>
-<member>Make sure that the user you're connecting as is able to write to the print$ directories</member>
-<member>Use adddriver (with appropriate parameters) to create the driver. note, this will not just update samba's notion of drivers, it will also move the files from the w32x86 and win40 directories to an appropriate subdirectory (based on driver version, I think, but not important enough for me to find out)</member>
-<member>Use setdriver to associate the driver with a printer</member>
-</simplelist>
-
-<para>
-The setdriver call will fail if the printer doesn't already exist in
-samba's view of the world. Either create the printer in cups and
-restart samba, or create an add printer command (see smb.conf doco)
-and use RPC calls to create a printer. NB the add printer command MUST
-return a single line of text indicating which port the printer was
-added on. If it doesn't, Samba won't reload the printer
-definitions. Although samba doesn't really support the notion of
-ports, suitable add printer command and enumport command settings can
-allow you pretty good remote control of the samba printer setup.
-</para>
-</sect1>
-</chapter>
diff --git a/docs/docbook/faq/sambafaq.sgml b/docs/docbook/faq/sambafaq.sgml
index 2cc7d466fd..e9e5ed7a3c 100644
--- a/docs/docbook/faq/sambafaq.sgml
+++ b/docs/docbook/faq/sambafaq.sgml
@@ -5,7 +5,6 @@
<!ENTITY clientapp SYSTEM "clientapp.sgml">
<!ENTITY features SYSTEM "features.sgml">
<!ENTITY config SYSTEM "config.sgml">
-<!ENTITY printing SYSTEM "printing.sgml">
]>
<book id="Samba-FAQ">
@@ -35,5 +34,4 @@ and the old samba text documents which were mostly written by John Terpstra.
&clientapp;
&errors;
&features;
-&printing;
</book>
diff --git a/docs/docbook/manpages/findsmb.1.sgml b/docs/docbook/manpages/findsmb.1.sgml
index 090b1c8388..0b3bbca017 100644
--- a/docs/docbook/manpages/findsmb.1.sgml
+++ b/docs/docbook/manpages/findsmb.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="findsmb.1">
+<refentry id="findsmb">
<refmeta>
<refentrytitle>findsmb</refentrytitle>
@@ -23,16 +23,15 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This perl script is part of the <citerefentry>
- <refentrytitle>Samba</refentrytitle><manvolnum>7</manvolnum></citerefentry>
- suite.</para>
+ <para>This perl script is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>findsmb</command> is a perl script that
prints out several pieces of information about machines
on a subnet that respond to SMB name query requests.
- It uses <citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- and <citerefentry><refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- to obtain this information.
+ It uses <ulink url="nmblookup.1.html"><command>
+ nmblookup(1)</command></ulink> and <ulink url="smbclient.1.html">
+ <command>smbclient(1)</command></ulink> to obtain this information.
</para>
</refsect1>
@@ -46,17 +45,16 @@
bugs in Windows95 into account when trying to find a Netbios name
registered of the remote machine. This option is disabled by default
because it is specific to Windows 95 and Windows 95 machines only.
- If set, <citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ If set, <ulink url="nmblookup.1.html"><command>nmblookup</command></ulink>
will be called with <constant>-B</constant> option.</para></listitem>
</varlistentry>
<varlistentry>
<term>subnet broadcast address</term>
<listitem><para>Without this option, <command>findsmb
</command> will probe the subnet of the machine where
- <citerefentry><refentrytitle>findsmb</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- is run. This value is passed to
- <citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- as part of the <constant>-B</constant> option.</para></listitem>
+ <command>findsmb</command> is run. This value is passed
+ to <command>nmblookup</command> as part of the
+ <constant>-B</constant> option.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
@@ -78,21 +76,19 @@
version.</para>
<para>The command with <constant>-r</constant> option
- must be run on a system without <citerefentry>
- <refentrytitle>nmbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> running.
-
+ must be run on a system without <ulink
+ url="nmbd.8.html"><command>nmbd</command></ulink> running.
If <command>nmbd</command> is running on the system, you will
only get the IP address and the DNS name of the machine. To
get proper responses from Windows 95 and Windows 98 machines,
the command must be run as root and with <constant>-r</constant>
option on a machine without <command>nmbd</command> running.</para>
- <para>For example, running <command>findsmb</command>
- without <constant>-r</constant> option set would yield output similar
+ <para>For example, running <command>findsmb</command> without
+ <constant>-r</constant> option set would yield output similar
to the following</para>
-<screen>
+ <screen><computeroutput>
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
192.168.35.10 MINESET-TEST1 [DMVENGR]
@@ -105,7 +101,7 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
192.168.35.88 SCNT2 +[MVENGR] [Windows NT 4.0] [NT LAN Manager 4.0]
192.168.35.93 FROGSTAR-PC [MVENGR] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.35.97 HERBNT1 *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]
-</screen>
+ </computeroutput></screen>
</refsect1>
@@ -119,12 +115,10 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry>
- <refentrytitle>nmbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry><refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry>, and <citerefentry><refentrytitle>nmblookup</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>
+ <para><ulink url="nmbd.8.html"><command>nmbd(8)</command></ulink>,
+ <ulink url="smbclient.1.html"><command>smbclient(1)
+ </command></ulink>, and <ulink url="nmblookup.1.html">
+ <command>nmblookup(1)</command></ulink>
</para>
</refsect1>
@@ -138,11 +132,11 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink
- url="ftp://ftp.icce.rug.nl/pub/unix/">ftp://ftp.icce.rug.nl/pub/unix/</ulink>)
- and updated for the Samba 2.0 release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
+ release by Jeremy Allison. The conversion to DocBook for
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/lmhosts.5.sgml b/docs/docbook/manpages/lmhosts.5.sgml
index a8a5f2c072..7934c18e8e 100644
--- a/docs/docbook/manpages/lmhosts.5.sgml
+++ b/docs/docbook/manpages/lmhosts.5.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="lmhosts.5">
+<refentry id="lmhosts">
<refmeta>
<refentrytitle>lmhosts</refentrytitle>
@@ -13,15 +13,15 @@
</refnamediv>
<refsynopsisdiv>
- <para><filename>lmhosts</filename> is the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> NetBIOS name to IP address mapping file.</para>
+ <para><filename>lmhosts</filename> is the <ulink url="samba.7.html">
+ Samba</ulink> NetBIOS name to IP address mapping file.</para>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
- <para>This file is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This file is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><filename>lmhosts</filename> is the <emphasis>Samba
</emphasis> NetBIOS name to IP address mapping file. It
@@ -35,7 +35,7 @@
<para>It is an ASCII file containing one line for NetBIOS name.
The two fields on each line are separated from each other by
white space. Any entry beginning with '#' is ignored. Each line
- in the lmhosts file contains the following information:</para>
+ in the lmhosts file contains the following information :</para>
<itemizedlist>
<listitem><para>IP Address - in dotted decimal format.</para>
@@ -52,16 +52,16 @@
</listitem>
</itemizedlist>
- <para>An example follows:</para>
+ <para>An example follows :</para>
- <programlisting>
+ <para><programlisting>
#
# Sample Samba lmhosts file.
#
192.9.200.1 TESTPC
192.9.200.20 NTSERVER#20
192.9.200.21 SAMBASERVER
- </programlisting>
+ </programlisting></para>
<para>Contains three IP to NetBIOS name mappings. The first
and third will be returned for any queries for the names "TESTPC"
@@ -73,24 +73,24 @@
be resolved.</para>
<para>The default location of the <filename>lmhosts</filename> file
- is in the same directory as the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file.</para>
+ is in the same directory as the <ulink url="smb.conf.5.html">
+ smb.conf(5)></ulink> file.</para>
</refsect1>
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 3.0 of the Samba suite.</para>
+ <para>This man page is correct for version 2.2 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry>
- <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>, and <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>
+ <para><ulink url="smbclient.1.html"><command>smbclient(1)
+ </command></ulink>, <ulink url="smb.conf.5.html#NAMERESOLVEORDER">
+ smb.conf(5)</ulink>, and <ulink url="smbpasswd.8.html"><command>
+ smbpasswd(8)</command></ulink>
</para>
</refsect1>
@@ -108,8 +108,7 @@
<ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/net.8.sgml b/docs/docbook/manpages/net.8.sgml
index 62cee8c1d7..aab9032f14 100644
--- a/docs/docbook/manpages/net.8.sgml
+++ b/docs/docbook/manpages/net.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="net.8">
+<refentry id="net">
<refmeta>
<refentrytitle>net</refentrytitle>
@@ -42,8 +42,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>The samba net utility is meant to work just like the net utility
available for windows and DOS.</para>
@@ -65,8 +65,7 @@
<varlistentry>
<term>-w target-workgroup</term>
<listitem><para>
- Sets target workgroup or domain. You have to specify
- either this option or the IP address or the name of a server.
+ Sets target workgroup or domain. You have to specify either this option or the IP address or the name of a server.
</para></listitem>
</varlistentry>
@@ -87,8 +86,7 @@
<varlistentry>
<term>-I ip-address</term>
<listitem><para>
- IP address of target server to use. You have to
- specify either this option or a target workgroup or a target server.
+ IP address of target server to use. You have to specify either this option or a target workgroup or a target server.
</para></listitem>
</varlistentry>
@@ -116,8 +114,7 @@
<varlistentry>
<term>-S server</term>
<listitem><para>
- Name of target server. You should specify either
- this option or a target workgroup or a target IP address.
+ Name of target server. You should specify either this option or a target workgroup or a target IP address.
</para></listitem>
</varlistentry>
@@ -214,7 +211,7 @@
<varlistentry>
<term>SYSTEM</term>
<listitem><para>
- Displays the time on the remote server in a format ready for <command>/bin/date</command>
+ Displays the time on the remote server in a format ready for /bin/date
</para></listitem>
</varlistentry>
@@ -222,7 +219,7 @@
<term>SET</term>
<listitem><para>
Tries to set the date and time of the local server to that on
- the remote server using <command>/bin/date</command>.
+ the remote server using /bin/date.
</para></listitem>
</varlistentry>
@@ -279,7 +276,7 @@
</varlistentry>
<varlistentry>
- <term>USER ADD &lt;name&gt; [password] [-F user flags] [misc. options]</term>
+ <term>USER ADD &lt;name&gt; [password] [-F user flags] [misc. options</term>
<listitem><para>
Add specified user
</para></listitem>
diff --git a/docs/docbook/manpages/nmbd.8.sgml b/docs/docbook/manpages/nmbd.8.sgml
index 6c7ecce4e9..db920c79a1 100644
--- a/docs/docbook/manpages/nmbd.8.sgml
+++ b/docs/docbook/manpages/nmbd.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="nmbd.8">
+<refentry id="nmbd">
<refmeta>
<refentrytitle>nmbd</refentrytitle>
@@ -35,8 +35,7 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This program is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This program is part of the Samba suite.</para>
<para><command>nmbd</command> is a server that understands
and can reply to NetBIOS over IP name service requests, like
@@ -58,8 +57,8 @@
option (see OPTIONS below). Thus <command>nmbd</command> will
reply to broadcast queries for its own name(s). Additional
names for <command>nmbd</command> to respond on can be set
- via parameters in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> configuration file.</para>
+ via parameters in the <ulink url="smb.conf.5.html"><filename>
+ smb.conf(5)</filename></ulink> configuration file.</para>
<para><command>nmbd</command> can also be used as a WINS
(Windows Internet Name Server) server. What this basically means
@@ -125,7 +124,7 @@
server is executed on the command line of a shell. Setting this
parameter negates the implicit daemon mode when run from the
command line. <command>nmbd</command> also logs to standard
- output, as if the <constant>-S</constant> parameter had been
+ output, as if the <command>-S</command> parameter had been
given. </para></listitem>
</varlistentry>
@@ -148,10 +147,10 @@
<listitem><para>NetBIOS lmhosts file. The lmhosts
file is a list of NetBIOS names to IP addresses that
is loaded by the nmbd server and used via the name
- resolution mechanism <ulink url="smb.conf.5.html#nameresolveorder"><parameter>name resolve
- order</parameter></ulink> described in <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> to resolve any
- NetBIOS name queries needed by the server. Note
+ resolution mechanism <ulink url="smb.conf.5.html#nameresolveorder">
+ name resolve order</ulink> described in <ulink
+ url="smb.conf.5.html"> <filename>smb.conf(5)</filename></ulink>
+ to resolve any NetBIOS name queries needed by the server. Note
that the contents of this file are <emphasis>NOT</emphasis>
used by <command>nmbd</command> to answer any name queries.
Adding a line to this file affects name NetBIOS resolution
@@ -161,8 +160,9 @@
Samba as part of the build process. Common defaults
are <filename>/usr/local/samba/lib/lmhosts</filename>,
<filename>/usr/samba/lib/lmhosts</filename> or
- <filename>/etc/samba/lmhosts</filename>. See the <citerefentry><refentrytitle>lmhosts</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> man page for details on the contents of this file.</para></listitem>
+ <filename>/etc/lmhosts</filename>. See the
+ <ulink url="lmhosts.5.html"><filename>lmhosts(5)</filename></ulink>
+ man page for details on the contents of this file.</para></listitem>
</varlistentry>
<varlistentry>
@@ -191,9 +191,9 @@
cryptic.</para>
<para>Note that specifying this parameter here will override
- the <ulink url="smb.conf.5.html#loglevel"><parameter>log level</parameter></ulink>
- parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file.</para></listitem>
+ the <ulink url="smb.conf.5.html#loglevel">log level</ulink>
+ parameter in the <ulink url="smb.conf.5.html"><filename>
+ smb.conf(5)</filename></ulink> file.</para></listitem>
</varlistentry>
<varlistentry>
@@ -216,12 +216,11 @@
<term>-n &lt;primary NetBIOS name&gt;</term>
<listitem><para>This option allows you to override
the NetBIOS name that Samba uses for itself. This is identical
- to setting the <ulink url="smb.conf.5.html#netbiosname"><parameter>NetBIOS
- name</parameter></ulink> parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file. However, a command
+ to setting the <ulink url="smb.conf.5.html#netbiosname">
+ NetBIOS name</ulink> parameter in the <ulink url="smb.conf.5.html">
+ <filename>smb.conf</filename></ulink> file. However, a command
line setting will take precedence over settings in
- <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para></listitem>
+ <filename>smb.conf</filename>.</para></listitem>
</varlistentry>
@@ -242,8 +241,8 @@
this may be changed when Samba is autoconfigured.</para>
<para>The file specified contains the configuration details
- required by the server. See <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for more information.
+ required by the server. See <ulink url="smb.conf.5.html">
+ <filename>smb.conf(5)</filename></ulink> for more information.
</para></listitem>
</varlistentry>
</variablelist>
@@ -259,7 +258,7 @@
<command>inetd</command> meta-daemon, this file
must contain suitable startup information for the
meta-daemon. See the <ulink
- url="install.html">install</ulink> document
+ url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink> document
for details.
</para></listitem>
</varlistentry>
@@ -272,7 +271,7 @@
<para>If running the server as a daemon at startup,
this file will need to contain an appropriate startup
sequence for the server. See the <ulink
- url="install.html">"How to Install and Test SAMBA"</ulink> document
+ url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink> document
for details.</para></listitem>
</varlistentry>
@@ -282,23 +281,21 @@
meta-daemon <command>inetd</command>, this file
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
- See the <ulink url="install.html">"How to Install and Test SAMBA"</ulink>
+ See the <ulink url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink>
document for details.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/local/samba/lib/smb.conf</filename></term>
- <listitem><para>This is the default location of
- the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> server
- configuration file. Other common places that systems
+ <listitem><para>This is the default location of the
+ <ulink url="smb.conf.5.html"><filename>smb.conf</filename></ulink>
+ server configuration file. Other common places that systems
install this file are <filename>/usr/samba/lib/smb.conf</filename>
- and <filename>/etc/samba/smb.conf</filename>.</para>
+ and <filename>/etc/smb.conf</filename>.</para>
<para>When run as a WINS server (see the
- <ulink url="smb.conf.5.html#WINSSUPPORT"><constant>wins support</constant></ulink>
- parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> man page),
+ <ulink url="smb.conf.5.html#WINSSUPPORT">wins support</ulink>
+ parameter in the <filename>smb.conf(5)</filename> man page),
<command>nmbd</command>
will store the WINS database in the file <filename>wins.dat</filename>
in the <filename>var/locks</filename> directory configured under
@@ -306,9 +303,9 @@
<para>If <command>nmbd</command> is acting as a <emphasis>
browse master</emphasis> (see the <ulink
- url="smb.conf.5.html#LOCALMASTER"><constant>local master</constant></ulink>
- parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> man page, <command>nmbd</command>
+ url="smb.conf.5.html#LOCALMASTER">local master</ulink>
+ parameter in the <filename>smb.conf(5)</filename> man page,
+ <command>nmbd</command>
will store the browsing database in the file <filename>browse.dat
</filename> in the <filename>var/locks</filename> directory
configured under wherever Samba was configured to install itself.
@@ -334,11 +331,10 @@
cause <command>nmbd</command> to dump out its server database in
the <filename>log.nmb</filename> file.</para>
- <para>The debug log level of nmbd may be raised or lowered
- using <citerefentry><refentrytitle>smbcontrol</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> (SIGUSR[1|2] signals
- are no longer used since Samba 2.2). This is to allow
- transient problems to be diagnosed, whilst still running
+ <para>The debug log level of nmbd may be raised or lowered using
+ <ulink url="smbcontrol.1.html"><command>smbcontrol(1)</command>
+ </ulink> (SIGUSR[1|2] signals are no longer used in Samba 2.2). This is
+ to allow transient problems to be diagnosed, whilst still running
at a normally low log level.</para>
</refsect1>
@@ -352,15 +348,14 @@
<refsect1>
<title>SEE ALSO</title>
- <para>
- <citerefentry><refentrytitle>inetd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testprns</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, and the Internet
- RFC's <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>.
+ <para><command>inetd(8)</command>, <ulink
+ url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="smb.conf.5.html"><filename>smb.conf(5)</filename>
+ </ulink>, <ulink url="smbclient.1.html"><command>smbclient(1)
+ </command></ulink>, <ulink url="testparm.1.html"><command>
+ testparm(1)</command></ulink>, <ulink url="testprns.1.html">
+ <command>testprns(1)</command></ulink>, and the Internet RFC's
+ <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>.
In addition the CIFS (formerly SMB) specification is available
as a link from the Web page <ulink url="http://samba.org/cifs/">
http://samba.org/cifs/</ulink>.</para>
@@ -376,11 +371,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/nmblookup.1.sgml b/docs/docbook/manpages/nmblookup.1.sgml
index 7dd7f105d7..33ae631ed9 100644
--- a/docs/docbook/manpages/nmblookup.1.sgml
+++ b/docs/docbook/manpages/nmblookup.1.sgml
@@ -36,8 +36,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>nmblookup</command> is used to query NetBIOS names
and map them to IP addresses in a network using NetBIOS over TCP/IP
@@ -66,7 +66,7 @@
query to a machine running a WINS server and the user wishes
to query the names in the WINS server. If this bit is unset
the normal (broadcast responding) NetBIOS processing code
- on a machine is used instead. See RFC1001, RFC1002 for details.
+ on a machine is used instead. See rfc1001, rfc1002 for details.
</para></listitem>
</varlistentry>
@@ -86,8 +86,8 @@
where it ignores the source port of the requesting packet
and only replies to UDP port 137. Unfortunately, on most UNIX
systems root privilege is needed to bind to this port, and
- in addition, if the <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon is running on this machine it also binds to this port.
+ in addition, if the <ulink url="nmbd.8.html">nmbd(8)</ulink>
+ daemon is running on this machine it also binds to this port.
</para></listitem>
</varlistentry>
@@ -115,8 +115,7 @@
query to the broadcast address of the network interfaces as
either auto-detected or defined in the <ulink
url="smb.conf.5.html#INTERFACES"><parameter>interfaces</parameter>
- </ulink> parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file.
+ </ulink> parameter of the <filename>smb.conf (5)</filename> file.
</para></listitem>
</varlistentry>
@@ -199,7 +198,7 @@
<listitem><para>This is the NetBIOS name being queried. Depending
upon the previous options this may be a NetBIOS name or IP address.
If a NetBIOS name then the different name types may be specified
- by appending '#&lt;type&gt;' to the name. This name may also be
+ by appending '#&lt;type&gt' to the name. This name may also be
'*', which will return all registered names within a broadcast
area.</para></listitem>
</varlistentry>
@@ -212,8 +211,8 @@
<para><command>nmblookup</command> can be used to query
a WINS server (in the same way <command>nslookup</command> is
- used to query DNS servers). To query a WINS server, <command>nmblookup</command>
- must be called like this:</para>
+ used to query DNS servers). To query a WINS server,
+ <command>nmblookup</command> must be called like this:</para>
<para><command>nmblookup -U server -R 'name'</command></para>
@@ -234,10 +233,10 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>, and <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para>
+ <para><ulink url="nmbd.8.html"><command>nmbd(8)</command></ulink>,
+ <ulink url="samba.7.html">samba(7)</ulink>, and <ulink
+ url="smb.conf.5.html">smb.conf(5)</ulink>
+ </para>
</refsect1>
<refsect1>
@@ -250,11 +249,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/pdbedit.8.sgml b/docs/docbook/manpages/pdbedit.8.sgml
index e6231bfa8c..1484bfec9a 100644
--- a/docs/docbook/manpages/pdbedit.8.sgml
+++ b/docs/docbook/manpages/pdbedit.8.sgml
@@ -1,7 +1,7 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY % globalentities SYSTEM '../global.ent'> %globalentities;
]>
-<refentry id="pdbedit.8">
+<refentry id="pdbedit">
<refmeta>
<refentrytitle>pdbedit</refentrytitle>
@@ -42,8 +42,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>The pdbedit program is used to manage the users accounts
stored in the sam database and can only be run by root.</para>
@@ -67,11 +67,12 @@
present in the users database.
This option prints a list of user/uid pairs separated by
the ':' character.</para>
+
<para>Example: <command>pdbedit -l</command></para>
- <para><screen>
-sorce:500:Simo Sorce
-samba:45:Test User
-</screen></para>
+ <para><programlisting>
+ sorce:500:Simo Sorce
+ samba:45:Test User
+ </programlisting></para>
</listitem>
</varlistentry>
@@ -84,26 +85,26 @@ samba:45:Test User
out the account fields in a descriptive format.</para>
<para>Example: <command>pdbedit -l -v</command></para>
- <para><screen>
----------------
-username: sorce
-user ID/Group: 500/500
-user RID/GRID: 2000/2001
-Full Name: Simo Sorce
-Home Directory: \\BERSERKER\sorce
-HomeDir Drive: H:
-Logon Script: \\BERSERKER\netlogon\sorce.bat
-Profile Path: \\BERSERKER\profile
----------------
-username: samba
-user ID/Group: 45/45
-user RID/GRID: 1090/1091
-Full Name: Test User
-Home Directory: \\BERSERKER\samba
-HomeDir Drive:
-Logon Script:
-Profile Path: \\BERSERKER\profile
-</screen></para>
+ <para><programlisting>
+ ---------------
+ username: sorce
+ user ID/Group: 500/500
+ user RID/GRID: 2000/2001
+ Full Name: Simo Sorce
+ Home Directory: \\BERSERKER\sorce
+ HomeDir Drive: H:
+ Logon Script: \\BERSERKER\netlogon\sorce.bat
+ Profile Path: \\BERSERKER\profile
+ ---------------
+ username: samba
+ user ID/Group: 45/45
+ user RID/GRID: 1090/1091
+ Full Name: Test User
+ Home Directory: \\BERSERKER\samba
+ HomeDir Drive:
+ Logon Script:
+ Profile Path: \\BERSERKER\profile
+ </programlisting></para>
</listitem>
</varlistentry>
@@ -114,15 +115,14 @@ Profile Path: \\BERSERKER\profile
<listitem><para>This option sets the "smbpasswd" listing format.
It will make pdbedit list the users in the database, printing
out the account fields in a format compatible with the
- <filename>smbpasswd</filename> file format. (see the
- <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for details)</para>
+ <filename>smbpasswd</filename> file format. (see the <ulink
+ url="smbpasswd.5.html"><filename>smbpasswd(5)</filename></ulink> for details)</para>
<para>Example: <command>pdbedit -l -w</command></para>
- <screen>
-sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
-samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:
-</screen>
+ <para><programlisting>
+ sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
+ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:
+ </programlisting></para>
</listitem>
</varlistentry>
@@ -136,6 +136,8 @@ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX
operations.</para>
</listitem>
</varlistentry>
+
+
<varlistentry>
<term>-f fullname</term>
@@ -160,6 +162,7 @@ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX
</listitem>
</varlistentry>
+
<varlistentry>
<term>-D drive</term>
<listitem><para>This option can be used while adding or
@@ -204,10 +207,9 @@ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX
ask for the password to be used.</para>
<para>Example: <command>pdbedit -a -u sorce</command>
-<programlisting>new password:
-retype new password
-</programlisting>
-</para>
+ <programlisting>new password:
+ retype new password</programlisting>
+ </para>
</listitem>
</varlistentry>
@@ -279,9 +281,9 @@ retype new password
maximum password age and bad lockout attempt.</para>
<para>Example: <command>pdbedit -P "bad lockout attempt"</command></para>
-<para><programlisting>
-account policy value for bad lockout attempt is 0
-</programlisting></para>
+ <para><programlisting>
+ account policy value for bad lockout attempt is 0
+ </programlisting></para>
</listitem>
</varlistentry>
@@ -294,10 +296,10 @@ account policy value for bad lockout attempt is 0
</para>
<para>Example: <command>pdbedit -P "bad lockout attempt" -V 3</command></para>
-<para><programlisting>
-account policy value for bad lockout attempt was 0
-account policy value for bad lockout attempt is now 3
-</programlisting></para>
+ <para><programlisting>
+ account policy value for bad lockout attempt was 0
+ account policy value for bad lockout attempt is now 3
+ </programlisting></para>
</listitem>
</varlistentry>
@@ -325,9 +327,9 @@ account policy value for bad lockout attempt is now 3
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry></para>
+ <para><ulink url="smbpasswd.8.html">smbpasswd(8)</ulink>,
+ <ulink url="samba.7.html">samba(7)</ulink>
+ </para>
</refsect1>
<refsect1>
@@ -340,11 +342,11 @@ account policy value for bad lockout attempt is now 3
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/rpcclient.1.sgml b/docs/docbook/manpages/rpcclient.1.sgml
index 933938d438..10e0ff438d 100644
--- a/docs/docbook/manpages/rpcclient.1.sgml
+++ b/docs/docbook/manpages/rpcclient.1.sgml
@@ -1,7 +1,7 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY % globalentities SYSTEM '../global.ent'> %globalentities;
]>
-<refentry id="rpcclient.1">
+<refentry id="rpcclient">
<refmeta>
<refentrytitle>rpcclient</refentrytitle>
@@ -36,8 +36,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>rpcclient</command> is a utility initially developed
to test MS-RPC functionality in Samba itself. It has undergone
@@ -56,8 +56,8 @@
<listitem><para>NetBIOS name of Server to which to connect.
The server can be any SMB/CIFS server. The name is
resolved using the <ulink url="smb.conf.5.html#NAMERESOLVEORDER">
- <parameter>name resolve order</parameter></ulink> line from <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para></listitem>
+ <parameter>name resolve order</parameter></ulink> line from
+ <filename>smb.conf(5)</filename>.</para></listitem>
</varlistentry>
@@ -68,11 +68,11 @@
password used in the connection. The format of the file is
</para>
-<para><programlisting>
-username = &lt;value&gt;
-password = &lt;value&gt;
-domain = &lt;value&gt;
-</programlisting></para>
+ <para><programlisting>
+ username = &lt;value&gt;
+ password = &lt;value&gt;
+ domain = &lt;value&gt;
+ </programlisting></para>
<para>Make certain that the permissions on the file restrict
access from unwanted users. </para></listitem>
@@ -85,10 +85,13 @@ domain = &lt;value&gt;
<listitem><para>execute semicolon separated commands (listed
below)) </para></listitem>
</varlistentry>
+
+
+
- &stdarg.help;
&stdarg.debuglevel;
-
+ &stdarg.help;
+
<varlistentry>
<term>-I IP-address</term>
<listitem><para><replaceable>IP address</replaceable> is the address of the server to connect to.
@@ -160,6 +163,9 @@ domain = &lt;value&gt;
it in directly. </para></listitem>
</varlistentry>
+
+
+
<varlistentry>
<term>-W|--workgroup=domain</term>
<listitem><para>Set the SMB domain of the username. This
@@ -169,6 +175,7 @@ domain = &lt;value&gt;
opposed to the Domain SAM). </para></listitem>
</varlistentry>
+
</variablelist>
</refsect1>
@@ -207,10 +214,12 @@ domain = &lt;value&gt;
</itemizedlist>
<para> </para>
+
+
<para><emphasis>SPOOLSS</emphasis></para>
<itemizedlist>
- <listitem><para><command>adddriver &lt;arch&gt; &lt;config&gt;</command>
+ <listitem><para><command>adddriver &lt;arch&gt &lt;config&gt;</command>
- Execute an AddPrinterDriver() RPC to install the printer driver
information on the server. Note that the driver files should
already exist in the directory returned by
@@ -220,16 +229,16 @@ domain = &lt;value&gt;
The <parameter>config</parameter> parameter is defined as
follows: </para>
-<para><programlisting>
-Long Printer Name:\
-Driver File Name:\
-Data File Name:\
-Config File Name:\
-Help File Name:\
-Language Monitor Name:\
-Default Data Type:\
-Comma Separated list of Files
-</programlisting></para>
+ <para><programlisting>
+ Long Printer Name:\
+ Driver File Name:\
+ Data File Name:\
+ Config File Name:\
+ Help File Name:\
+ Language Monitor Name:\
+ Default Data Type:\
+ Comma Separated list of Files
+ </programlisting></para>
<para>Any empty fields should be enter as the string "NULL". </para>
@@ -239,7 +248,10 @@ Comma Separated list of Files
be "NULL". On a remote NT print server, the Print Monitor for a
driver must already be installed prior to adding the driver or
else the RPC will fail. </para></listitem>
-
+
+
+
+
<listitem><para><command>addprinter &lt;printername&gt;
&lt;sharename&gt; &lt;drivername&gt; &lt;port&gt;</command>
- Add a printer on the remote server. This printer
@@ -375,7 +387,7 @@ Comma Separated list of Files
<para>From Luke Leighton's original rpcclient man page:</para>
- <para><emphasis>WARNING!</emphasis> The MSRPC over SMB code has
+ <para><emphasis>"WARNING!</emphasis> The MSRPC over SMB code has
been developed from examining Network traces. No documentation is
available from the original creators (Microsoft) on how MSRPC over
SMB works, or how the individual MSRPC services work. Microsoft's
@@ -383,13 +395,12 @@ Comma Separated list of Files
to be... a bit flaky in places. </para>
<para>The development of Samba's implementation is also a bit rough,
- and as more of the services are understood, it can even result in
- versions of <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>rpcclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> that are incompatible for some commands or services. Additionally,
+ and as more of the services are understood, it can even result in
+ versions of <command>smbd(8)</command> and <command>rpcclient(1)</command>
+ that are incompatible for some commands or services. Additionally,
the developers are sending reports to Microsoft, and problems found
or reported to Microsoft are fixed in Service Packs, which may
- result in incompatibilities.</para>
+ result in incompatibilities." </para>
</refsect1>
@@ -411,8 +422,7 @@ Comma Separated list of Files
<para>The original rpcclient man page was written by Matthew
Geddes, Luke Kenneth Casson Leighton, and rewritten by Gerald Carter.
The conversion to DocBook for Samba 2.2 was done by Gerald
- Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was
- done by Alexander Bokovoy.</para>
+ Carter.</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/samba.7.sgml b/docs/docbook/manpages/samba.7.sgml
index a352a6a7c6..17865edd81 100644
--- a/docs/docbook/manpages/samba.7.sgml
+++ b/docs/docbook/manpages/samba.7.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="samba.7">
+<refentry id="samba">
<refmeta>
<refentrytitle>samba</refentrytitle>
@@ -8,7 +8,7 @@
<refnamediv>
- <refname>Samba</refname>
+ <refname>SAMBA</refname>
<refpurpose>A Windows SMB/CIFS fileserver for UNIX</refpurpose>
</refnamediv>
@@ -29,30 +29,26 @@
<variablelist>
<varlistentry>
- <term><citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></term>
- <listitem><para>The <command>smbd</command> daemon provides the file and print services to
+ <term><command>smbd</command></term>
+ <listitem><para>The <command>smbd </command>
+ daemon provides the file and print services to
SMB clients, such as Windows 95/98, Windows NT, Windows
for Workgroups or LanManager. The configuration file
- for this daemon is described in <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>
+ for this daemon is described in <filename>smb.conf</filename>
</para></listitem>
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></term>
+ <term><command>nmbd</command></term>
<listitem><para>The <command>nmbd</command>
daemon provides NetBIOS nameservice and browsing
support. The configuration file for this daemon
- is described in <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></para>
+ is described in <filename>smb.conf</filename></para>
</listitem>
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>smbclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></term>
+ <term><command>smbclient</command></term>
<listitem><para>The <command>smbclient</command>
program implements a simple ftp-like client. This
is useful for accessing SMB shares on other compatible
@@ -63,17 +59,15 @@
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></term>
+ <term><command>testparm</command></term>
<listitem><para>The <command>testparm</command>
- utility is a simple syntax checker for Samba's <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> configuration file.</para>
+ utility is a simple syntax checker for Samba's
+ <filename>smb.conf</filename>configuration file.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>testprns</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></term>
+ <term><command>testprns</command></term>
<listitem><para>The <command>testprns</command>
utility supports testing printer names defined
in your <filename>printcap</filename> file used
@@ -82,8 +76,7 @@
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>smbstatus</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></term>
+ <term><command>smbstatus</command></term>
<listitem><para>The <command>smbstatus</command>
tool provides access to information about the
current connections to <command>smbd</command>.</para>
@@ -91,8 +84,7 @@
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>nmblookup</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></term>
+ <term><command>nmblookup</command></term>
<listitem><para>The <command>nmblookup</command>
tools allows NetBIOS name queries to be made
from a UNIX host.</para>
@@ -100,18 +92,15 @@
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>smbgroupedit</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></term>
- <listitem><para>The <command>smbgroupedit</command>
- tool allows for mapping unix groups to NT Builtin,
- Domain, or Local groups. Also it allows setting
- priviledges for that group, such as saAddUser, etc.</para>
+ <term><command>make_smbcodepage</command></term>
+ <listitem><para>The <command>make_smbcodepage</command>
+ utility provides a means of creating SMB code page
+ definition files for your <command>smbd</command> server.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></term>
+ <term><command>smbpasswd</command></term>
<listitem><para>The <command>smbpasswd</command>
command is a tool for changing LanMan and Windows NT
password hashes on Samba and Windows NT servers.</para>
@@ -158,8 +147,8 @@
list. Details on how to join the mailing list are given in
the README file that comes with Samba.</para>
- <para>If you have access to a WWW viewer (such as Mozilla
- or Konqueror) then you will also find lots of useful information,
+ <para>If you have access to a WWW viewer (such as Netscape
+ or Mosaic) then you will also find lots of useful information,
including back issues of the Samba mailing list, at
<ulink url="http://lists.samba.org/">http://lists.samba.org</ulink>.</para>
</refsect1>
@@ -167,7 +156,7 @@
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 3.0 of the
+ <para>This man page is correct for version 2.2 of the
Samba suite. </para>
</refsect1>
@@ -181,8 +170,8 @@
<para>If you have patches to submit, visit
<ulink url="http://devel.samba.org/">http://devel.samba.org/</ulink>
- for information on how to do it properly. We prefer patches
- in <command>diff -u</command> format.</para>
+ for information on how to do it properly. We prefer patches in
+ <command>diff -u</command> format.</para>
</refsect1>
<refsect1>
@@ -217,11 +206,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML
- 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smb.conf.5.sgml b/docs/docbook/manpages/smb.conf.5.sgml
index fb1e829700..01f767d256 100644
--- a/docs/docbook/manpages/smb.conf.5.sgml
+++ b/docs/docbook/manpages/smb.conf.5.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smb.conf.5">
+<refentry id="smb.conf">
<refmeta>
<refentrytitle>smb.conf</refentrytitle>
@@ -15,13 +15,14 @@
<refsect1>
<title>SYNOPSIS</title>
- <para>The <filename>smb.conf</filename> file is a configuration
- file for the Samba suite. <filename>smb.conf</filename> contains
- runtime configuration information for the Samba programs. The <filename>smb.conf</filename> file
- is designed to be configured and administered by the <citerefentry><refentrytitle>swat</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> program. The complete
- description of the file format and possible parameters held within
- are here for reference purposes.</para> </refsect1>
+ <para>The <filename>smb.conf</filename> file is a configuration
+ file for the Samba suite. <filename>smb.conf</filename> contains
+ runtime configuration information for the Samba programs. The
+ <filename>smb.conf</filename> file is designed to be configured and
+ administered by the <ulink url="swat.8.html"><command>swat(8)</command>
+ </ulink> program. The complete description of the file format and
+ possible parameters held within are here for reference purposes.</para>
+</refsect1>
<refsect1>
<title id="FILEFORMATSECT">FILE FORMAT</title>
@@ -104,13 +105,13 @@
The user has write access to the path <filename>/home/bar</filename>.
The share is accessed via the share name "foo":</para>
-<screen>
-<computeroutput>
-[foo]
- path = /home/bar
- read only = no
-</computeroutput>
-</screen>
+ <screen>
+ <computeroutput>
+ [foo]
+ path = /home/bar
+ read only = no
+ </computeroutput>
+ </screen>
<para>The following sample section defines a printable share.
The share is readonly, but printable. That is, the only write
@@ -119,15 +120,15 @@
access will be permitted as the default guest user (specified
elsewhere):</para>
-<screen>
-<computeroutput>
-[aprinter]
- path = /usr/spool/public
- read only = yes
- printable = yes
- guest ok = yes
-</computeroutput>
-</screen>
+ <screen>
+ <computeroutput>
+ [aprinter]
+ path = /usr/spool/public
+ read only = yes
+ printable = yes
+ guest ok = yes
+ </computeroutput>
+ </screen>
</refsect1>
<refsect1>
@@ -191,12 +192,12 @@
than others. The following is a typical and suitable [homes]
section:</para>
-<screen>
-<computeroutput>
-[homes]
- read only = no
-</computeroutput>
-</screen>
+ <screen>
+ <computeroutput>
+ [homes]
+ read only = no
+ </computeroutput>
+ </screen>
<para>An important point is that if guest access is specified
in the [homes] section, all home directories will be
@@ -256,12 +257,12 @@
it. A typical [printers] entry would look like
this:</para>
-<screen><computeroutput>
-[printers]
- path = /usr/spool/public
- guest ok = yes
- printable = yes
-</computeroutput></screen>
+ <screen><computeroutput>
+ [printers]
+ path = /usr/spool/public
+ guest ok = yes
+ printable = yes
+ </computeroutput></screen>
<para>All aliases given for a printer in the printcap file
are legitimate printer names as far as the server is concerned.
@@ -269,11 +270,11 @@
to set up a pseudo-printcap. This is a file consisting of one or
more lines like this:</para>
-<screen>
-<computeroutput>
-alias|alias|alias|alias...
-</computeroutput>
-</screen>
+ <screen>
+ <computeroutput>
+ alias|alias|alias|alias...
+ </computeroutput>
+ </screen>
<para>Each alias should be an acceptable printer name for
your printing subsystem. In the [global] section, specify
@@ -471,7 +472,7 @@ alias|alias|alias|alias...
</variablelist>
<para>There are some quite creative things that can be done
- with these substitutions and other smb.conf options.</para>
+ with these substitutions and other smb.conf options.</para
</refsect1>
<refsect1>
@@ -551,7 +552,7 @@ alias|alias|alias|alias...
then steps 1 to 5 are skipped.</para>
- <orderedlist numeration="arabic">
+ <orderedlist numeration="Arabic">
<listitem><para>If the client has passed a username/password
pair and that username/password pair is validated by the UNIX
system's password programs then the connection is made as that
@@ -683,7 +684,6 @@ alias|alias|alias|alias...
<listitem><para><link linkend="LOGONSCRIPT"><parameter>logon script</parameter></link></para></listitem>
<listitem><para><link linkend="LPQCACHETIME"><parameter>lpq cache time</parameter></link></para></listitem>
<listitem><para><link linkend="MACHINEPASSWORDTIMEOUT"><parameter>machine password timeout</parameter></link></para></listitem>
- <listitem><para><link linkend="MANGLEPREFIX"><parameter>mangle prefix</parameter></link></para></listitem>
<listitem><para><link linkend="MANGLEDSTACK"><parameter>mangled stack</parameter></link></para></listitem>
<listitem><para><link linkend="MAPTOGUEST"><parameter>map to guest</parameter></link></para></listitem>
<listitem><para><link linkend="MAXDISKSIZE"><parameter>max disk size</parameter></link></para></listitem>
@@ -729,6 +729,7 @@ alias|alias|alias|alias...
<listitem><para><link linkend="PRELOAD"><parameter>preload</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTCAP"><parameter>printcap</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTCAPNAME"><parameter>printcap name</parameter></link></para></listitem>
+ <listitem><para><link linkend="PRINTERDRIVERFILE"><parameter>printer driver file</parameter></link></para></listitem>
<listitem><para><link linkend="PRIVATEDIR"><parameter>private dir</parameter></link></para></listitem>
<listitem><para><link linkend="PROTOCOL"><parameter>protocol</parameter></link></para></listitem>
<listitem><para><link linkend="READBMPX"><parameter>read bmpx</parameter></link></para></listitem>
@@ -768,6 +769,7 @@ alias|alias|alias|alias...
<listitem><para><link linkend="UNIXPASSWORDSYNC"><parameter>unix password sync</parameter></link></para></listitem>
<listitem><para><link linkend="UPDATEENCRYPTED"><parameter>update encrypted</parameter></link></para></listitem>
<listitem><para><link linkend="USEMMAP"><parameter>use mmap</parameter></link></para></listitem>
+ <listitem><para><link linkend="USERHOSTS"><parameter>use rhosts</parameter></link></para></listitem>
<listitem><para><link linkend="USESENDFILE"><parameter>use sendfile</parameter></link></para></listitem>
<listitem><para><link linkend="USERNAMELEVEL"><parameter>username level</parameter></link></para></listitem>
<listitem><para><link linkend="USERNAMEMAP"><parameter>username map</parameter></link></para></listitem>
@@ -803,7 +805,7 @@ alias|alias|alias|alias...
<listitem><para><link linkend="ALLOWHOSTS"><parameter>allow hosts</parameter></link></para></listitem>
<listitem><para><link linkend="AVAILABLE"><parameter>available</parameter></link></para></listitem>
<listitem><para><link linkend="BLOCKINGLOCKS"><parameter>blocking locks</parameter></link></para></listitem>
- <listitem><para><link linkend="BLOCKSIZE"><parameter>block size</parameter></link></para></listitem>
+<listitem><para><link linkend="BLOCKSIZE"><parameter>block size</parameter></link></para></listitem>
<listitem><para><link linkend="BROWSABLE"><parameter>browsable</parameter></link></para></listitem>
<listitem><para><link linkend="BROWSEABLE"><parameter>browseable</parameter></link></para></listitem>
<listitem><para><link linkend="CASESENSITIVE"><parameter>case sensitive</parameter></link></para></listitem>
@@ -879,6 +881,7 @@ alias|alias|alias|alias...
<listitem><para><link linkend="PATH"><parameter>path</parameter></link></para></listitem>
<listitem><para><link linkend="POSIXLOCKING"><parameter>posix locking</parameter></link></para></listitem>
<listitem><para><link linkend="POSTEXEC"><parameter>postexec</parameter></link></para></listitem>
+ <listitem><para><link linkend="POSTSCRIPT"><parameter>postscript</parameter></link></para></listitem>
<listitem><para><link linkend="PREEXEC"><parameter>preexec</parameter></link></para></listitem>
<listitem><para><link linkend="PREEXECCLOSE"><parameter>preexec close</parameter></link></para></listitem>
<listitem><para><link linkend="PRESERVECASE"><parameter>preserve case</parameter></link></para></listitem>
@@ -887,6 +890,8 @@ alias|alias|alias|alias...
<listitem><para><link linkend="PRINTABLE"><parameter>printable</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTER"><parameter>printer</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTERADMIN"><parameter>printer admin</parameter></link></para></listitem>
+ <listitem><para><link linkend="PRINTERDRIVER"><parameter>printer driver</parameter></link></para></listitem>
+ <listitem><para><link linkend="PRINTERDRIVERLOCATION"><parameter>printer driver location</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTERNAME"><parameter>printer name</parameter></link></para></listitem>
<listitem><para><link linkend="PRINTING"><parameter>printing</parameter></link></para></listitem>
<listitem><para><link linkend="PUBLIC"><parameter>public</parameter></link></para></listitem>
@@ -932,10 +937,10 @@ alias|alias|alias|alias...
<variablelist>
<varlistentry>
- <term><anchor id="ABORTSHUTDOWNSCRIPT"/>abort shutdown script (G)</term>
+ <term><anchor id="ABORTSHUTDOWNSCRIPT">abort shutdown script (G)</term>
<listitem><para><emphasis>This parameter only exists in the HEAD cvs branch</emphasis>
- This a full path name to a script called by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> that
+ This a full path name to a script called by
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink> that
should stop a shutdown procedure issued by the <link
linkend="SHUTDOWNSCRIPT"><parameter>shutdown script</parameter></link>.</para>
@@ -947,7 +952,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ADDPRINTERCOMMAND"/>addprinter command (G)</term>
+ <term><anchor id="ADDPRINTERCOMMAND">addprinter command (G)</term>
<listitem><para>With the introduction of MS-RPC based printing
support for Windows NT/2000 clients in Samba 2.2, The MS Add
Printer Wizard (APW) icon is now also available in the
@@ -961,12 +966,12 @@ alias|alias|alias|alias...
will perform the necessary operations for adding the printer
to the print system and to add the appropriate service definition
to the <filename>smb.conf</filename> file in order that it can be
- shared by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>.</para>
+ shared by <ulink url="smbd.8.html"><command>smbd(8)</command>
+ </ulink>.</para>
<para>The <parameter>addprinter command</parameter> is
automatically invoked with the following parameter (in
- order):</para>
+ order:</para>
<itemizedlist>
<listitem><para><parameter>printer name</parameter></para></listitem>
@@ -983,22 +988,16 @@ alias|alias|alias|alias...
driver location" parameter is included for backwards compatibility
only. The remaining fields in the structure are generated from answers
to the APW questions.</para>
-
+
<para>Once the <parameter>addprinter command</parameter> has
been executed, <command>smbd</command> will reparse the <filename>
smb.conf</filename> to determine if the share defined by the APW
exists. If the sharename is still invalid, then <command>smbd
</command> will return an ACCESS_DENIED error to the client.</para>
-
- <para>
- The "add printer command" program can output a single line of text,
- which Samba will set as the port the new printer is connected to.
- If this line isn't output, Samba won't reload its printer shares.
- </para>
<para>See also <link linkend="DELETEPRINTERCOMMAND"><parameter>
deleteprinter command</parameter></link>, <link
- linkend="PRINTING"><parameter>printing</parameter></link>,
+ linkend="printing"><parameter>printing</parameter></link>,
<link linkend="SHOWADDPRINTERWIZARD"><parameter>show add
printer wizard</parameter></link></para>
@@ -1011,7 +1010,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="ADDSHARECOMMAND"/>add share command (G)</term>
+ <term><anchor id="ADDSHARECOMMAND">add share command (G)</term>
<listitem><para>Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
<parameter>add share command</parameter> is used to define an
@@ -1065,10 +1064,9 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="ADDMACHINESCRIPT"/>add machine script (G)</term>
+ <term><anchor id="ADDMACHINESCRIPT">add machine script (G)</term>
<listitem><para>This is the full pathname to a script that will
- be run by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when a machine is added
+ be run by <ulink url="smbd.8.html">smbd(8)</ulink> when a machine is added
to it's domain using the administrator username and password method. </para>
<para>This option is only required when using sam back-ends tied to the
@@ -1084,7 +1082,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ADSSERVER"/>ads server (G)</term>
+ <term><anchor id="ADSSERVER">ads server (G)</term>
<listitem><para>If this option is specified, samba does
not try to figure out what ads server to use itself, but
uses the specified ads server. Either one DNS name or IP
@@ -1097,10 +1095,10 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ADDUSERSCRIPT"/>add user script (G)</term>
+ <term><anchor id="ADDUSERSCRIPT">add user script (G)</term>
<listitem><para>This is the full pathname to a script that will
- be run <emphasis>AS ROOT</emphasis> by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> under special circumstances described below.</para>
+ be run <emphasis>AS ROOT</emphasis> by <ulink url="smbd.8.html">smbd(8)
+ </ulink> under special circumstances described below.</para>
<para>Normally, a Samba server requires that UNIX users are
created for all users accessing files on this server. For sites
@@ -1110,16 +1108,16 @@ alias|alias|alias|alias...
url="smbd.8.html">smbd</ulink> to create the required UNIX users
<emphasis>ON DEMAND</emphasis> when a user accesses the Samba server.</para>
- <para>In order to use this option, <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> must <emphasis>NOT</emphasis> be set to <parameter>security = share</parameter>
+ <para>In order to use this option, <ulink url="smbd.8.html">smbd</ulink>
+ must <emphasis>NOT</emphasis> be set to <parameter>security = share</parameter>
and <parameter>add user script</parameter>
must be set to a full pathname for a script that will create a UNIX
user given one argument of <parameter>%u</parameter>, which expands into
the UNIX user name to create.</para>
<para>When the Windows user attempts to access the Samba server,
- at login (session setup in the SMB protocol) time, <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> contacts the <parameter>password server</parameter> and
+ at login (session setup in the SMB protocol) time, <ulink url="smbd.8.html">
+ smbd</ulink> contacts the <parameter>password server</parameter> and
attempts to authenticate the given user with the given password. If the
authentication succeeds then <command>smbd</command>
attempts to find a UNIX user in the UNIX password database to map the
@@ -1147,10 +1145,10 @@ alias|alias|alias|alias...
</listitem>
</varlistentry>
- <varlistentry><term><anchor id="ADDGROUPSCRIPT"/>add group script (G)</term>
+ <varlistentry><term><anchor id="ADDGROUPSCRIPT">add group script (G)</term>
<listitem><para>This is the full pathname to a script that will
- be run <emphasis>AS ROOT</emphasis> by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when a new group is
+ be run <emphasis>AS ROOT</emphasis> by <ulink
+ url="smbd.8.html">smbd(8)</ulink> when a new group is
requested. It will expand any
<parameter>%g</parameter> to the group name passed.
This script is only useful for installations using the
@@ -1163,7 +1161,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ADMINUSERS"/>admin users (S)</term>
+ <term><anchor id="ADMINUSERS">admin users (S)</term>
<listitem><para>This is a list of users who will be granted
administrative privileges on the share. This means that they
will do all file operations as the super-user (root).</para>
@@ -1179,13 +1177,13 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ADDUSERTOGROUPSCRIPT"/>add user to group script (G)</term>
+ <term><anchor id="ADDUSERTOGROUPSCRIPT">add user to group script (G)</term>
<listitem><para>Full path to the script that will be called when
a user is added to a group using the Windows NT domain administration
- tools. It will be run by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> <emphasis>AS ROOT</emphasis>.
- Any <parameter>%g</parameter> will be replaced with the group name and
- any <parameter>%u</parameter> will be replaced with the user name.
+ tools. It will be run by <ulink url="smbd.8.html">smbd(8)</ulink>
+ <emphasis>AS ROOT</emphasis>. Any <parameter>%g</parameter> will be
+ replaced with the group name and any <parameter>%u</parameter> will
+ be replaced with the user name.
</para>
<para>Default: <command>add user to group script = </command></para>
@@ -1196,13 +1194,13 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ALLOWHOSTS"/>allow hosts (S)</term>
+ <term><anchor id="ALLOWHOSTS">allow hosts (S)</term>
<listitem><para>Synonym for <link linkend="HOSTSALLOW">
<parameter>hosts allow</parameter></link>.</para></listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="ALGORITHMICRIDBASE"/>algorithmic rid base (G)</term>
+ <term><anchor id="ALGORITHMICRIDBASE">algorithmic rid base (G)</term>
<listitem><para>This determines how Samba will use its
algorithmic mapping from uids/gid to the RIDs needed to construct
NT Security Identifiers.</para>
@@ -1225,7 +1223,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ALLOWTRUSTEDDOMAINS"/>allow trusted domains (G)</term>
+ <term><anchor id="ALLOWTRUSTEDDOMAINS">allow trusted domains (G)</term>
<listitem><para>This option only takes effect when the <link
linkend="SECURITY"><parameter>security</parameter></link> option is set to
<constant>server</constant> or <constant>domain</constant>.
@@ -1249,9 +1247,10 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="ANNOUNCEAS"/>announce as (G)</term>
- <listitem><para>This specifies what type of server <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will announce itself as, to a network neighborhood browse
+ <term><anchor id="ANNOUNCEAS">announce as (G)</term>
+ <listitem><para>This specifies what type of server
+ <ulink url="nmbd.8.html"><command>nmbd</command></ulink>
+ will announce itself as, to a network neighborhood browse
list. By default this is set to Windows NT. The valid options
are : "NT Server" (which can also be written as "NT"),
"NT Workstation", "Win95" or "WfW" meaning Windows NT Server,
@@ -1270,7 +1269,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="ANNOUNCEVERSION"/>announce version (G)</term>
+ <term><anchor id="ANNOUNCEVERSION">announce version (G)</term>
<listitem><para>This specifies the major and minor version numbers
that nmbd will use when announcing itself as a server. The default
is 4.9. Do not change this parameter unless you have a specific
@@ -1285,7 +1284,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="AUTOSERVICES"/>auto services (G)</term>
+ <term><anchor id="AUTOSERVICES">auto services (G)</term>
<listitem><para>This is a synonym for the <link linkend="PRELOAD">
<parameter>preload</parameter></link>.</para>
</listitem>
@@ -1294,7 +1293,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="AUTHMETHODS"/>auth methods (G)</term>
+ <term><anchor id="AUTHMETHODS">auth methods (G)</term>
<listitem><para>This option allows the administrator to chose what
authentication methods <command>smbd</command> will use when authenticating
a user. This option defaults to sensible values based on <link linkend="SECURITY"><parameter>
@@ -1312,7 +1311,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="AVAILABLE"/>available (S)</term>
+ <term><anchor id="AVAILABLE">available (S)</term>
<listitem><para>This parameter lets you "turn off" a service. If
<parameter>available = no</parameter>, then <emphasis>ALL</emphasis>
attempts to connect to the service will fail. Such failures are
@@ -1326,12 +1325,12 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="BINDINTERFACESONLY"/>bind interfaces only (G)</term>
+ <term><anchor id="BINDINTERFACESONLY">bind interfaces only (G)</term>
<listitem><para>This global parameter allows the Samba admin
to limit what interfaces on a machine will serve SMB requests. It
- affects file service <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and name service <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> in a slightly different ways.</para>
+ affects file service <ulink url="smbd.8.html">smbd(8)</ulink> and
+ name service <ulink url="nmbd.8.html">nmbd(8)</ulink> in slightly
+ different ways.</para>
<para>For name service it causes <command>nmbd</command> to bind
to ports 137 and 138 on the interfaces listed in the <link
@@ -1351,9 +1350,8 @@ alias|alias|alias|alias...
does defeat this simple check, however, so it must not be used
seriously as a security feature for <command>nmbd</command>.</para>
- <para>For file service it causes <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to bind only to the interface list
- given in the <link linkend="INTERFACES">
+ <para>For file service it causes <ulink url="smbd.8.html">smbd(8)</ulink>
+ to bind only to the interface list given in the <link linkend="INTERFACES">
interfaces</link> parameter. This restricts the networks that
<command>smbd</command> will serve to packets coming in those
interfaces. Note that you should not use this parameter for machines
@@ -1362,9 +1360,10 @@ alias|alias|alias|alias...
<para>If <parameter>bind interfaces only</parameter> is set then
unless the network address <emphasis>127.0.0.1</emphasis> is added
- to the <parameter>interfaces</parameter> parameter list <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>swat</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> may not work as expected due to the reasons covered below.</para>
+ to the <parameter>interfaces</parameter> parameter list <ulink
+ url="smbpasswd.8.html"><command>smbpasswd(8)</command></ulink>
+ and <ulink url="swat.8.html"><command>swat(8)</command></ulink> may
+ not work as expected due to the reasons covered below.</para>
<para>To change a users SMB password, the <command>smbpasswd</command>
by default connects to the <emphasis>localhost - 127.0.0.1</emphasis>
@@ -1374,9 +1373,9 @@ alias|alias|alias|alias...
<parameter>interfaces</parameter> parameter list then <command>
smbpasswd</command> will fail to connect in it's default mode.
<command>smbpasswd</command> can be forced to use the primary IP interface
- of the local host by using its <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> <parameter>-r <replaceable>remote machine</replaceable></parameter>
- parameter, with <replaceable>remote machine</replaceable> set
+ of the local host by using its <ulink url="smbpasswd.8.html#minusr">
+ <parameter>-r <replaceable>remote machine</replaceable></parameter>
+ </ulink> parameter, with <replaceable>remote machine</replaceable> set
to the IP name of the primary interface of the local host.</para>
<para>The <command>swat</command> status page tries to connect with
@@ -1396,10 +1395,9 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="BLOCKINGLOCKS"/>blocking locks (S)</term>
- <listitem><para>This parameter controls the behavior
- of <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when given a request by a client
+ <term><anchor id="BLOCKINGLOCKS">blocking locks (S)</term>
+ <listitem><para>This parameter controls the behavior of <ulink
+ url="smbd.8.html">smbd(8)</ulink> when given a request by a client
to obtain a byte range lock on a region of an open file, and the
request has a time limit associated with it.</para>
@@ -1419,9 +1417,9 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="BLOCKSIZE"/>block size (S)</term>
- <listitem><para>This parameter controls the behavior of <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when reporting disk free
+ <term><anchor id="BLOCKSIZE">block size (S)</term>
+ <listitem><para>This parameter controls the behavior of
+ <ulink url="smbd.8.html">smbd(8)</ulink> when reporting disk free
sizes. By default, this reports a disk block size of 1024 bytes.
</para>
@@ -1435,19 +1433,27 @@ alias|alias|alias|alias...
<para>Changing this option does not change the disk free reporting
size, just the block size unit reported to the client.</para>
- </listitem>
- </varlistentry>
+
+ <para>Default: <command>block size = 1024</command></para>
+ <para>Example: <command>block size = 65536</command></para>
+
+ </listitem>
+ </varlistentry>
+
+
<varlistentry>
- <term><anchor id="BROWSABLE"/>browsable (S)</term>
+ <term><anchor id="BROWSABLE">browsable (S)</term>
<listitem><para>See the <link linkend="BROWSEABLE"><parameter>
browseable</parameter></link>.</para></listitem>
</varlistentry>
+
+
<varlistentry>
- <term><anchor id="BROWSELIST"/>browse list (G)</term>
- <listitem><para>This controls whether <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will serve a browse list to
+ <term><anchor id="BROWSELIST">browse list (G)</term>
+ <listitem><para>This controls whether <ulink url="smbd.8.html">
+ <command>smbd(8)</command></ulink> will serve a browse list to
a client doing a <command>NetServerEnum</command> call. Normally
set to <constant>yes</constant>. You should never need to change
this.</para>
@@ -1458,7 +1464,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="BROWSEABLE"/>browseable (S)</term>
+ <term><anchor id="BROWSEABLE">browseable (S)</term>
<listitem><para>This controls whether this share is seen in
the list of available shares in a net view and in the browse list.</para>
@@ -1469,7 +1475,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CASESENSITIVE"/>case sensitive (S)</term>
+ <term><anchor id="CASESENSITIVE">case sensitive (S)</term>
<listitem><para>See the discussion in the section <link
linkend="NAMEMANGLINGSECT">NAME MANGLING</link>.</para>
@@ -1480,7 +1486,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CASESIGNAMES"/>casesignames (S)</term>
+ <term><anchor id="CASESIGNAMES">casesignames (S)</term>
<listitem><para>Synonym for <link linkend="CASESENSITIVE">case
sensitive</link>.</para></listitem>
</varlistentry>
@@ -1488,12 +1494,12 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CHANGENOTIFYTIMEOUT"/>change notify timeout (G)</term>
+ <term><anchor id="CHANGENOTIFYTIMEOUT">change notify timeout (G)</term>
<listitem><para>This SMB allows a client to tell a server to
"watch" a particular directory for any changes and only reply to
the SMB request when a change has occurred. Such constant scanning of
- a directory is expensive under UNIX, hence an <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon only performs such a scan
+ a directory is expensive under UNIX, hence an <ulink url="smbd.8.html">
+ <command>smbd(8)</command></ulink> daemon only performs such a scan
on each requested directory once every <parameter>change notify
timeout</parameter> seconds.</para>
@@ -1506,7 +1512,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CHANGESHARECOMMAND"/>change share command (G)</term>
+ <term><anchor id="CHANGESHARECOMMAND">change share command (G)</term>
<listitem><para>Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
<parameter>change share command</parameter> is used to define an
@@ -1556,8 +1562,12 @@ alias|alias|alias|alias...
</listitem>
</varlistentry>
+
+
+
+
<varlistentry>
- <term><anchor id="COMMENT"/>comment (S)</term>
+ <term><anchor id="COMMENT">comment (S)</term>
<listitem><para>This is a text field that is seen next to a share
when a client does a queries the server, either via the network
neighborhood or via <command>net view</command> to list what shares
@@ -1574,7 +1584,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CONFIGFILE"/>config file (G)</term>
+ <term><anchor id="CONFIGFILE">config file (G)</term>
<listitem><para>This allows you to override the config file
to use, instead of the default (usually <filename>smb.conf</filename>).
There is a chicken and egg problem here as this option is set
@@ -1598,7 +1608,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="COPY"/>copy (S)</term>
+ <term><anchor id="COPY">copy (S)</term>
<listitem><para>This parameter allows you to "clone" service
entries. The specified service is simply duplicated under the
current service's name. Any parameters specified in the current
@@ -1616,7 +1626,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CREATEMASK"/>create mask (S)</term>
+ <term><anchor id="CREATEMASK">create mask (S)</term>
<listitem><para>A synonym for this parameter is
<link linkend="CREATEMODE"><parameter>create mode</parameter>
</link>.</para>
@@ -1660,14 +1670,14 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="CREATEMODE"/>create mode (S)</term>
+ <term><anchor id="CREATEMODE">create mode (S)</term>
<listitem><para>This is a synonym for <link linkend="CREATEMASK"><parameter>
create mask</parameter></link>.</para></listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="CSCPOLICY"/>csc policy (S)</term>
+ <term><anchor id="CSCPOLICY">csc policy (S)</term>
<listitem><para>This stands for <emphasis>client-side caching
policy</emphasis>, and specifies how clients capable of offline
caching will cache the files in the share. The valid values
@@ -1686,7 +1696,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="DEADTIME"/>deadtime (G)</term>
+ <term><anchor id="DEADTIME">deadtime (G)</term>
<listitem><para>The value of the parameter (a decimal integer)
represents the number of minutes of inactivity before a connection
is considered dead, and it is disconnected. The deadtime only takes
@@ -1712,7 +1722,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEBUGHIRESTIMESTAMP"/>debug hires timestamp (G)</term>
+ <term><anchor id="DEBUGHIRESTIMESTAMP">debug hires timestamp (G)</term>
<listitem><para>Sometimes the timestamps in the log messages
are needed with a resolution of higher that seconds, this
boolean parameter adds microsecond resolution to the timestamp
@@ -1729,7 +1739,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEBUGPID"/>debug pid (G)</term>
+ <term><anchor id="DEBUGPID">debug pid (G)</term>
<listitem><para>When using only one log file for more then one
forked <ulink url="smbd.8.html">smbd</ulink>-process there may be hard to follow which process
outputs which message. This boolean parameter is adds the process-id
@@ -1744,7 +1754,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEBUGTIMESTAMP"/>debug timestamp (G)</term>
+ <term><anchor id="DEBUGTIMESTAMP">debug timestamp (G)</term>
<listitem><para>Samba debug log messages are timestamped
by default. If you are running at a high <link linkend="DEBUGLEVEL">
<parameter>debug level</parameter></link> these timestamps
@@ -1757,7 +1767,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEBUGUID"/>debug uid (G)</term>
+ <term><anchor id="DEBUGUID">debug uid (G)</term>
<listitem><para>Samba is sometimes run as root and sometime
run as the connected user, this boolean parameter inserts the
current euid, egid, uid and gid to the timestamp message headers
@@ -1773,7 +1783,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEBUGLEVEL"/>debuglevel (G)</term>
+ <term><anchor id="DEBUGLEVEL">debuglevel (G)</term>
<listitem><para>Synonym for <link linkend="LOGLEVEL"><parameter>
log level</parameter></link>.</para>
</listitem>
@@ -1782,7 +1792,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEFAULT"/>default (G)</term>
+ <term><anchor id="DEFAULT">default (G)</term>
<listitem><para>A synonym for <link linkend="DEFAULTSERVICE"><parameter>
default service</parameter></link>.</para></listitem>
</varlistentry>
@@ -1790,7 +1800,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEFAULTCASE"/>default case (S)</term>
+ <term><anchor id="DEFAULTCASE">default case (S)</term>
<listitem><para>See the section on <link linkend="NAMEMANGLINGSECT">
NAME MANGLING</link>. Also note the <link linkend="SHORTPRESERVECASE">
<parameter>short preserve case</parameter></link> parameter.</para>
@@ -1802,7 +1812,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEFAULTDEVMODE"/>default devmode (S)</term>
+ <term><anchor id="DEFAULTDEVMODE">default devmode (S)</term>
<listitem><para>This parameter is only applicable to <link
linkend="PRINTOK">printable</link> services. When smbd is serving
Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba
@@ -1840,7 +1850,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DEFAULTSERVICE"/>default service (G)</term>
+ <term><anchor id="DEFAULTSERVICE">default service (G)</term>
<listitem><para>This parameter specifies the name of a service
which will be connected to if the service actually requested cannot
be found. Note that the square brackets are <emphasis>NOT</emphasis>
@@ -1866,27 +1876,24 @@ alias|alias|alias|alias...
<para>Example:</para>
-<para><programlisting>
+ <para><programlisting>
[global]
default service = pub
[pub]
path = /%S
-</programlisting></para>
+ </programlisting></para>
</listitem>
</varlistentry>
- <varlistentry><term><anchor id="DELETEGROUPSCRIPT"/>delete group script (G)</term>
+ <varlistentry><term><anchor id="DELETEGROUPSCRIPT">delete group script (G)</term>
<listitem><para>This is the full pathname to a script that will
- be run <emphasis>AS ROOT</emphasis> <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when a group is requested to be deleted.
- It will expand any <parameter>%g</parameter> to the group name passed.
- This script is only useful for installations using the Windows NT domain administration tools.
+ be run <emphasis>AS ROOT</emphasis> by <ulink url="smbd.8.html">smbd(8)</ulink> when a group is requested to be deleted. It will expand any <parameter>%g</parameter> to the group name passed. This script is only useful for installations using the Windows NT domain administration tools.
</para></listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="DELETEPRINTERCOMMAND"/>deleteprinter command (G)</term>
+ <term><anchor id="DELETEPRINTERCOMMAND">deleteprinter command (G)</term>
<listitem><para>With the introduction of MS-RPC based printer
support for Windows NT/2000 clients in Samba 2.2, it is now
possible to delete printer at run time by issuing the
@@ -1912,7 +1919,7 @@ alias|alias|alias|alias...
<para>See also <link linkend="ADDPRINTERCOMMAND"><parameter>
addprinter command</parameter></link>, <link
- linkend="PRINTING"><parameter>printing</parameter></link>,
+ linkend="printing"><parameter>printing</parameter></link>,
<link linkend="SHOWADDPRINTERWIZARD"><parameter>show add
printer wizard</parameter></link></para>
@@ -1928,7 +1935,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DELETEREADONLY"/>delete readonly (S)</term>
+ <term><anchor id="DELETEREADONLY">delete readonly (S)</term>
<listitem><para>This parameter allows readonly files to be deleted.
This is not normal DOS semantics, but is allowed by UNIX.</para>
@@ -1942,7 +1949,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DELETESHARECOMMAND"/>delete share command (G)</term>
+ <term><anchor id="DELETESHARECOMMAND">delete share command (G)</term>
<listitem><para>Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
<parameter>delete share command</parameter> is used to define an
@@ -1990,11 +1997,10 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DELETEUSERSCRIPT"/>delete user script (G)</term>
+ <term><anchor id="DELETEUSERSCRIPT">delete user script (G)</term>
<listitem><para>This is the full pathname to a script that will
- be run by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when managing users
- with remote RPC (NT) tools.
+ be run by <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
+ when managing user's with remote RPC (NT) tools.
</para>
<para>This script is called when a remote client removes a user
@@ -2012,13 +2018,13 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="DELETEUSERFROMGROUPSCRIPT"/>delete user from group script (G)</term>
+ <term><anchor id="DELETEUSERFROMGROUPSCRIPT">delete user from group script (G)</term>
<listitem><para>Full path to the script that will be called when
a user is removed from a group using the Windows NT domain administration
- tools. It will be run by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> <emphasis>AS ROOT</emphasis>.
- Any <parameter>%g</parameter> will be replaced with the group name and
- any <parameter>%u</parameter> will be replaced with the user name.
+ tools. It will be run by <ulink url="smbd.8.html">smbd(8)</ulink>
+ <emphasis>AS ROOT</emphasis>. Any <parameter>%g</parameter> will be
+ replaced with the group name and any <parameter>%u</parameter> will
+ be replaced with the user name.
</para>
<para>Default: <command>delete user from group script = </command></para>
@@ -2029,7 +2035,7 @@ alias|alias|alias|alias...
</varlistentry>
<varlistentry>
- <term><anchor id="DELETEVETOFILES"/>delete veto files (S)</term>
+ <term><anchor id="DELETEVETOFILES">delete veto files (S)</term>
<listitem><para>This option is used when Samba is attempting to
delete a directory that contains one or more vetoed directories
(see the <link linkend="VETOFILES"><parameter>veto files</parameter></link>
@@ -2058,7 +2064,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DENYHOSTS"/>deny hosts (S)</term>
+ <term><anchor id="DENYHOSTS">deny hosts (S)</term>
<listitem><para>Synonym for <link linkend="HOSTSDENY"><parameter>hosts
deny</parameter></link>.</para></listitem>
</varlistentry>
@@ -2067,7 +2073,7 @@ alias|alias|alias|alias...
<varlistentry>
- <term><anchor id="DFREECOMMAND"/>dfree command (G)</term>
+ <term><anchor id="DFREECOMMAND">dfree command (G)</term>
<listitem><para>The <parameter>dfree command</parameter> setting should
only be used on systems where a problem occurs with the internal
disk space calculations. This has been known to happen with Ultrix,
@@ -2100,17 +2106,17 @@ alias|alias|alias|alias...
<para>Where the script dfree (which must be made executable) could be:</para>
-<para><programlisting>
-#!/bin/sh
-df $1 | tail -1 | awk '{print $2" "$4}'
-</programlisting></para>
+ <para><programlisting>
+ #!/bin/sh
+ df $1 | tail -1 | awk '{print $2" "$4}'
+ </programlisting></para>
<para>or perhaps (on Sys V based systems):</para>
-<para><programlisting>
-#!/bin/sh
-/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
-</programlisting></para>
+ <para><programlisting>
+ #!/bin/sh
+ /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+ </programlisting></para>
<para>Note that you may have to replace the command names
with full path names on some systems.</para>
@@ -2121,7 +2127,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DIRECTORY"/>directory (S)</term>
+ <term><anchor id="DIRECTORY">directory (S)</term>
<listitem><para>Synonym for <link linkend="PATH"><parameter>path
</parameter></link>.</para></listitem>
</varlistentry>
@@ -2129,7 +2135,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DIRECTORYMASK"/>directory mask (S)</term>
+ <term><anchor id="DIRECTORYMASK">directory mask (S)</term>
<listitem><para>This parameter is the octal modes which are
used when converting DOS modes to UNIX modes when creating UNIX
directories.</para>
@@ -2177,7 +2183,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DIRECTORYMODE"/>directory mode (S)</term>
+ <term><anchor id="DIRECTORYMODE">directory mode (S)</term>
<listitem><para>Synonym for <link linkend="DIRECTORYMASK"><parameter>
directory mask</parameter></link></para></listitem>
</varlistentry>
@@ -2185,7 +2191,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DIRECTORYSECURITYMASK"/>directory security mask (S)</term>
+ <term><anchor id="DIRECTORYSECURITYMASK">directory security mask (S)</term>
<listitem><para>This parameter controls what UNIX permission bits
can be modified when a Windows NT client is manipulating the UNIX
permission on a directory using the native NT security dialog
@@ -2220,7 +2226,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DISABLENETBIOS"/>disable netbios (G)</term>
+ <term><anchor id="DISABLENETBIOS">disable netbios (G)</term>
<listitem><para>Enabling this parameter will disable netbios support
in Samba. Netbios is the only available form of browsing in
all windows versions except for 2000 and XP. </para>
@@ -2235,7 +2241,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="DISABLESPOOLSS"/>disable spoolss (G)</term>
+ <term><anchor id="DISABLESPOOLSS">disable spoolss (G)</term>
<listitem><para>Enabling this parameter will disable Samba's support
for the SPOOLSS set of MS-RPC's and will yield identical behavior
as Samba 2.0.x. Windows NT/2000 clients will downgrade to using
@@ -2256,7 +2262,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="DISPLAYCHARSET"/>display charset (G)</term>
+ <term><anchor id="DISPLAYCHARSET">display charset (G)</term>
<listitem><para>Specifies the charset that samba will use
to print messages to stdout and stderr and SWAT will use.
Should generally be the same as the <command>unix charset</command>.
@@ -2271,12 +2277,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DNSPROXY"/>dns proxy (G)</term>
- <listitem><para>Specifies that <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when acting as a WINS server and
- finding that a NetBIOS name has not been registered, should treat the
- NetBIOS name word-for-word as a DNS name and do a lookup with the DNS server
- for that name on behalf of the name-querying client.</para>
+ <term><anchor id="DNSPROXY">dns proxy (G)</term>
+ <listitem><para>Specifies that <ulink url="nmbd.8.html">nmbd(8)</ulink>
+ when acting as a WINS server and finding that a NetBIOS name has not
+ been registered, should treat the NetBIOS name word-for-word as a DNS
+ name and do a lookup with the DNS server for that name on behalf of
+ the name-querying client.</para>
<para>Note that the maximum length for a NetBIOS name is 15
characters, so the DNS name (or DNS alias) can likewise only be
@@ -2294,7 +2300,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DOMAINLOGONS"/>domain logons (G)</term>
+ <term><anchor id="DOMAINLOGONS">domain logons (G)</term>
<listitem><para>If set to <constant>yes</constant>, the Samba server will serve
Windows 95/98 Domain logons for the <link linkend="WORKGROUP">
<parameter>workgroup</parameter></link> it is in. Samba 2.2
@@ -2309,20 +2315,20 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DOMAINMASTER"/>domain master (G)</term>
- <listitem><para>Tell <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to enable WAN-wide browse list
+ <term><anchor id="DOMAINMASTER">domain master (G)</term>
+ <listitem><para>Tell <ulink url="nmbd.8.html"><command>
+ nmbd(8)</command></ulink> to enable WAN-wide browse list
collation. Setting this option causes <command>nmbd</command> to
claim a special domain specific NetBIOS name that identifies
it as a domain master browser for its given <link linkend="WORKGROUP">
<parameter>workgroup</parameter></link>. Local master browsers
in the same <parameter>workgroup</parameter> on broadcast-isolated
subnets will give this <command>nmbd</command> their local browse lists,
- and then ask <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> for a complete copy of the browse
- list for the whole wide area network. Browser clients will then contact
- their local master browser, and will receive the domain-wide browse list,
- instead of just the list for their broadcast-isolated subnet.</para>
+ and then ask <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
+ for a complete copy of the browse list for the whole wide area
+ network. Browser clients will then contact their local master browser,
+ and will receive the domain-wide browse list, instead of just the list
+ for their broadcast-isolated subnet.</para>
<para>Note that Windows NT Primary Domain Controllers expect to be
able to claim this <parameter>workgroup</parameter> specific special
@@ -2347,7 +2353,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DONTDESCEND"/>dont descend (S)</term>
+ <term><anchor id="DONTDESCEND">dont descend (S)</term>
<listitem><para>There are certain directories on some systems
(e.g., the <filename>/proc</filename> tree under Linux) that are either not
of interest to clients or are infinitely deep (recursive). This
@@ -2366,7 +2372,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="DOSCHARSET"/>dos charset (G)</term>
+ <term><anchor id="DOSCHARSET">dos charset (G)</term>
<listitem><para>DOS SMB clients assume the server has
the same charset as they do. This option specifies which
charset Samba should talk to DOS clients.
@@ -2374,14 +2380,14 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>The default depends on which charsets you have instaled.
Samba tries to use charset 850 but falls back to ASCII in
- case it is not available. Run <citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> to check the default on your system.
+ case it is not available. Run <ulink url="testparm.1.html">testparm(1)
+ </ulink> to check the default on your system.
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="DOSFILEMODE"/>dos filemode (S)</term>
+ <term><anchor id="DOSFILEMODE">dos filemode (S)</term>
<listitem><para> The default behavior in Samba is to provide
UNIX-like behavior where only the owner of a file/directory is
able to change the permissions on it. However, this behavior
@@ -2400,13 +2406,13 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DOSFILETIMERESOLUTION"/>dos filetime resolution (S)</term>
+ <term><anchor id="DOSFILETIMERESOLUTION">dos filetime resolution (S)</term>
<listitem><para>Under the DOS and Windows FAT filesystem, the finest
granularity on time resolution is two seconds. Setting this parameter
for a share causes Samba to round the reported time down to the
nearest two second boundary when a query call that requires one second
- resolution is made to <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>.</para>
+ resolution is made to <ulink url="smbd.8.html"><command>smbd(8)</command>
+ </ulink>.</para>
<para>This option is mainly used as a compatibility option for Visual
C++ when used against Samba shares. If oplocks are enabled on a
@@ -2426,15 +2432,14 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="DOSFILETIMES"/>dos filetimes (S)</term>
+ <term><anchor id="DOSFILETIMES">dos filetimes (S)</term>
<listitem><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
timestamp on a file if the user <command>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
+ yes</constant> allows DOS semantics and <ulink url="smbd.8.html">smbd</ulink> will change the file
timestamp as DOS requires.</para>
<para>Default: <command>dos filetimes = no</command></para></listitem>
@@ -2443,7 +2448,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="ENCRYPTPASSWORDS"/>encrypt passwords (G)</term>
+ <term><anchor id="ENCRYPTPASSWORDS">encrypt passwords (G)</term>
<listitem><para>This boolean controls whether encrypted passwords
will be negotiated with the client. Note that Windows NT 4.0 SP3 and
above and also Windows 98 will by default expect encrypted passwords
@@ -2452,11 +2457,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
directory <filename>docs/</filename> shipped with the source code.</para>
<para>In order for encrypted passwords to work correctly
- <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> must either
- have access to a local <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file (see the <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> program for information on how to set up
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink> must either
+ have access to a local <ulink url="smbpasswd.5.html"><filename>smbpasswd(5)
+ </filename></ulink> file (see the <ulink url="smbpasswd.8.html"><command>
+ smbpasswd(8)</command></ulink> program for information on how to set up
and maintain this file), or set the <link
linkend="SECURITY">security = [server|domain|ads]</link> parameter which
causes <command>smbd</command> to authenticate against another
@@ -2467,7 +2471,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="ENHANCEDBROWSING"/>enhanced browsing (G)</term>
+ <term><anchor id="ENHANCEDBROWSING">enhanced browsing (G)</term>
<listitem><para>This option enables a couple of enhancements to
cross-subnet browse propagation that have been added in Samba
but which are not standard in Microsoft implementations.
@@ -2493,7 +2497,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="ENUMPORTSCOMMAND"/>enumports command (G)</term>
+ <term><anchor id="ENUMPORTSCOMMAND">enumports command (G)</term>
<listitem><para>The concept of a "port" is fairly foreign
to UNIX hosts. Under Windows NT/2000 print servers, a port
is associated with a port monitor and generally takes the form of
@@ -2516,7 +2520,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="EXEC"/>exec (S)</term>
+ <term><anchor id="EXEC">exec (S)</term>
<listitem><para>This is a synonym for <link linkend="PREEXEC">
<parameter>preexec</parameter></link>.</para></listitem>
</varlistentry>
@@ -2524,7 +2528,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FAKEDIRECTORYCREATETIMES"/>fake directory create times (S)</term>
+ <term><anchor id="FAKEDIRECTORYCREATETIMES">fake directory create times (S)</term>
<listitem><para>NTFS and Windows VFAT file systems keep a create
time for all files and directories. This is not the same as the
ctime - status change time - that Unix keeps, so Samba by default
@@ -2558,7 +2562,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FAKEOPLOCKS"/>fake oplocks (S)</term>
+ <term><anchor id="FAKEOPLOCKS">fake oplocks (S)</term>
<listitem><para>Oplocks are the way that SMB clients get permission
from a server to locally cache file operations. If a server grants
an oplock (opportunistic lock) then the client is free to assume
@@ -2590,11 +2594,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FOLLOWSYMLINKS"/>follow symlinks (S)</term>
+ <term><anchor id="FOLLOWSYMLINKS">follow symlinks (S)</term>
<listitem><para>This parameter allows the Samba administrator
- to stop <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> from following symbolic
- links in a particular share. Setting this
+ to stop <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
+ from following symbolic links in a particular share. Setting this
parameter to <constant>no</constant> prevents any file or directory
that is a symbolic link from being followed (the user will get an
error). This option is very useful to stop users from adding a
@@ -2611,7 +2614,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FORCECREATEMODE"/>force create mode (S)</term>
+ <term><anchor id="FORCECREATEMODE">force create mode (S)</term>
<listitem><para>This parameter specifies a set of UNIX mode bit
permissions that will <emphasis>always</emphasis> be set on a
file created by Samba. This is done by bitwise 'OR'ing these bits onto
@@ -2639,7 +2642,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FORCEDIRECTORYMODE"/>force directory mode (S)</term>
+ <term><anchor id="FORCEDIRECTORYMODE">force directory mode (S)</term>
<listitem><para>This parameter specifies a set of UNIX mode bit
permissions that will <emphasis>always</emphasis> be set on a directory
created by Samba. This is done by bitwise 'OR'ing these bits onto the
@@ -2668,7 +2671,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FORCEDIRECTORYSECURITYMODE"/>force directory security mode (S)</term>
+ <term><anchor id="FORCEDIRECTORYSECURITYMODE">force directory security mode (S)</term>
<listitem><para>This parameter controls what UNIX permission bits
can be modified when a Windows NT client is manipulating the UNIX
permission on a directory using the native NT security dialog box.</para>
@@ -2704,7 +2707,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FORCEGROUP"/>force group (S)</term>
+ <term><anchor id="FORCEGROUP">force group (S)</term>
<listitem><para>This specifies a UNIX group name that will be
assigned as the default primary group for all users connecting
to this service. This is useful for sharing files by ensuring
@@ -2740,7 +2743,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="FORCESECURITYMODE"/>force security mode (S)</term>
+ <term><anchor id="FORCESECURITYMODE">force security mode (S)</term>
<listitem><para>This parameter controls what UNIX permission
bits can be modified when a Windows NT client is manipulating
the UNIX permission on a file using the native NT security dialog
@@ -2778,7 +2781,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FORCEUSER"/>force user (S)</term>
+ <term><anchor id="FORCEUSER">force user (S)</term>
<listitem><para>This specifies a UNIX user name that will be
assigned as the default user for all users connecting to this service.
This is useful for sharing files. You should also use it carefully
@@ -2806,11 +2809,11 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="FSTYPE"/>fstype (S)</term>
+ <term><anchor id="FSTYPE">fstype (S)</term>
<listitem><para>This parameter allows the administrator to
configure the string that specifies the type of filesystem a share
- is using that is reported by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when a client queries the filesystem type
+ is using that is reported by <ulink url="smbd.8.html"><command>smbd(8)
+ </command></ulink> when a client queries the filesystem type
for a share. The default type is <constant>NTFS</constant> for
compatibility with Windows NT but this can be changed to other
strings such as <constant>Samba</constant> or <constant>FAT
@@ -2823,7 +2826,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="GETWDCACHE"/>getwd cache (G)</term>
+ <term><anchor id="GETWDCACHE">getwd cache (G)</term>
<listitem><para>This is a tuning option. When this is enabled a
caching algorithm will be used to reduce the time taken for getwd()
calls. This can have a significant impact on performance, especially
@@ -2837,7 +2840,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="GROUP"/>group (S)</term>
+ <term><anchor id="GROUP">group (S)</term>
<listitem><para>Synonym for <link linkend="FORCEGROUP"><parameter>force
group</parameter></link>.</para></listitem>
</varlistentry>
@@ -2845,7 +2848,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="GUESTACCOUNT"/>guest account (S)</term>
+ <term><anchor id="GUESTACCOUNT">guest account (S)</term>
<listitem><para>This is a username which will be used for access
to services which are specified as <link linkend="GUESTOK"><parameter>
guest ok</parameter></link> (see below). Whatever privileges this
@@ -2875,16 +2878,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="GUESTOK"/>guest ok (S)</term>
+ <term><anchor id="GUESTOK">guest ok (S)</term>
<listitem><para>If this parameter is <constant>yes</constant> for
a service, then no password is required to connect to the service.
Privileges will be those of the <link linkend="GUESTACCOUNT"><parameter>
guest account</parameter></link>.</para>
- <para>This paramater nullifies the benifits of setting
- <link linkend="RESTRICTANONYMOUS"><parameter>restrict
- anonymous</parameter></link> = 2</para>
-
<para>See the section below on <link linkend="SECURITY"><parameter>
security</parameter></link> for more information about this option.
</para>
@@ -2895,7 +2894,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="GUESTONLY"/>guest only (S)</term>
+ <term><anchor id="GUESTONLY">guest only (S)</term>
<listitem><para>If this parameter is <constant>yes</constant> for
a service, then only guest connections to the service are permitted.
This parameter will have no effect if <link linkend="GUESTOK">
@@ -2911,7 +2910,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HIDEDOTFILES"/>hide dot files (S)</term>
+ <term><anchor id="HIDEDOTFILES">hide dot files (S)</term>
<listitem><para>This is a boolean parameter that controls whether
files starting with a dot appear as hidden files.</para>
@@ -2921,7 +2920,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HIDEFILES"/>hide files(S)</term>
+ <term><anchor id="HIDEFILES">hide files(S)</term>
<listitem><para>This is a list of files or directories that are not
visible but are accessible. The DOS 'hidden' attribute is applied
to any files or directories that match.</para>
@@ -2959,7 +2958,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HIDELOCALUSERS"/>hide local users(G)</term>
+ <term><anchor id="HIDELOCALUSERS">hide local users(G)</term>
<listitem><para>This parameter toggles the hiding of local UNIX
users (root, wheel, floppy, etc) from remote clients.</para>
@@ -2969,7 +2968,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HIDEUNREADABLE"/>hide unreadable (G)</term>
+ <term><anchor id="HIDEUNREADABLE">hide unreadable (G)</term>
<listitem><para>This parameter prevents clients from seeing the
existance of files that cannot be read. Defaults to off.</para>
@@ -2978,7 +2977,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="HIDEUNWRITEABLEFILES"/>hide unwriteable files (G)</term>
+ <term><anchor id="HIDEUNWRITEABLEFILES">hide unwriteable files (G)</term>
<listitem><para>This parameter prevents clients from seeing
the existance of files that cannot be written to. Defaults to off.
Note that unwriteable directories are shown as usual.
@@ -2989,7 +2988,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="HIDESPECIALFILES"/>hide special files (G)</term>
+ <term><anchor id="HIDESPECIALFILES">hide special files (G)</term>
<listitem><para>This parameter prevents clients from seeing
special files such as sockets, devices and fifo's in directory
listings.
@@ -3000,10 +2999,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="HOMEDIRMAP"/>homedir map (G)</term>
+ <term><anchor id="HOMEDIRMAP">homedir map (G)</term>
<listitem><para>If<link linkend="NISHOMEDIR"><parameter>nis homedir
- </parameter></link> is <constant>yes</constant>, and <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> is also acting
+ </parameter></link> is <constant>yes</constant>, and <ulink
+ url="smbd.8.html"><command>smbd(8)</command></ulink> is also acting
as a Win95/98 <parameter>logon server</parameter> then this parameter
specifies the NIS (or YP) map from which the server for the user's
home directory should be extracted. At present, only the Sun
@@ -3033,7 +3032,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HOSTMSDFS"/>host msdfs (G)</term>
+ <term><anchor id="HOSTMSDFS">host msdfs (G)</term>
<listitem><para>This boolean parameter is only available
if Samba has been configured and compiled with the <command>
--with-msdfs</command> option. If set to <constant>yes</constant>,
@@ -3051,7 +3050,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="HOSTNAMELOOKUPS"/>hostname lookups (G)</term>
+ <term><anchor id="HOSTNAMELOOKUPS">hostname lookups (G)</term>
<listitem><para>Specifies whether samba should use (expensive)
hostname lookups or use the ip addresses instead. An example place
where hostname lookups are currently used is when checking
@@ -3067,7 +3066,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HOSTSALLOW"/>hosts allow (S)</term>
+ <term><anchor id="HOSTSALLOW">hosts allow (S)</term>
<listitem><para>A synonym for this parameter is <parameter>allow
hosts</parameter>.</para>
@@ -3116,9 +3115,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>Note that access still requires suitable user-level passwords.</para>
- <para>See <citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> for a way of testing your host access
- to see if it does what you expect.</para>
+ <para>See <ulink url="testparm.1.html"><command>testparm(1)</command>
+ </ulink> for a way of testing your host access to see if it does
+ what you expect.</para>
<para>Default: <emphasis>none (i.e., all hosts permitted access)
</emphasis></para>
@@ -3131,7 +3130,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HOSTSDENY"/>hosts deny (S)</term>
+ <term><anchor id="HOSTSDENY">hosts deny (S)</term>
<listitem><para>The opposite of <parameter>hosts allow</parameter>
- hosts listed here are <emphasis>NOT</emphasis> permitted access to
services unless the specific services have their own lists to override
@@ -3148,7 +3147,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="HOSTSEQUIV"/>hosts equiv (G)</term>
+ <term><anchor id="HOSTSEQUIV">hosts equiv (G)</term>
<listitem><para>If this global parameter is a non-null string,
it specifies the name of a file to read for the names of hosts
and users who will be allowed access without specifying a password.
@@ -3177,7 +3176,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="INCLUDE"/>include (G)</term>
+ <term><anchor id="INCLUDE">include (G)</term>
<listitem><para>This allows you to include one config file
inside another. The file is included literally, as though typed
in place.</para>
@@ -3194,7 +3193,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="INHERITACLS"/>inherit acls (S)</term>
+ <term><anchor id="INHERITACLS">inherit acls (S)</term>
<listitem><para>This parameter can be used to ensure
that if default acls exist on parent directories,
they are always honored when creating a subdirectory.
@@ -3212,7 +3211,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="INHERITPERMISSIONS"/>inherit permissions (S)</term>
+ <term><anchor id="INHERITPERMISSIONS">inherit permissions (S)</term>
<listitem><para>The permissions on new files and directories
are normally governed by <link linkend="CREATEMASK"><parameter>
create mask</parameter></link>, <link linkend="DIRECTORYMASK">
@@ -3253,7 +3252,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="INTERFACES"/>interfaces (G)</term>
+ <term><anchor id="INTERFACES">interfaces (G)</term>
<listitem><para>This option allows you to override the default
network interfaces list that Samba will use for browsing, name
registration and other NBT traffic. By default Samba will query
@@ -3305,7 +3304,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="INVALIDUSERS"/>invalid users (S)</term>
+ <term><anchor id="INVALIDUSERS">invalid users (S)</term>
<listitem><para>This is a list of users that should not be allowed
to login to this service. This is really a <emphasis>paranoid</emphasis>
check to absolutely ensure an improper setting does not breach
@@ -3317,12 +3316,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>A name starting with '+' is interpreted only
by looking in the UNIX group database. A name starting with
- '&amp;' is interpreted only by looking in the NIS netgroup database
+ '&' is interpreted only by looking in the NIS netgroup database
(this requires NIS to be working on your system). The characters
- '+' and '&amp;' may be used at the start of the name in either order
+ '+' and '&' may be used at the start of the name in either order
so the value <parameter>+&amp;group</parameter> means check the
UNIX group database, followed by the NIS netgroup database, and
- the value <parameter>&amp;+group</parameter> means check the NIS
+ the value <parameter>&+group</parameter> means check the NIS
netgroup database, followed by the UNIX group database (the
same as the '@' prefix).</para>
@@ -3341,7 +3340,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="KEEPALIVE"/>keepalive (G)</term>
+ <term><anchor id="KEEPALIVE">keepalive (G)</term>
<listitem><para>The value of the parameter (an integer) represents
the number of seconds between <parameter>keepalive</parameter>
packets. If this parameter is zero, no keepalive packets will be
@@ -3361,7 +3360,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="KERNELOPLOCKS"/>kernel oplocks (G)</term>
+ <term><anchor id="KERNELOPLOCKS">kernel oplocks (G)</term>
<listitem><para>For UNIXes that support kernel based <link
linkend="OPLOCKS"><parameter>oplocks</parameter></link>
(currently only IRIX and the Linux 2.4 kernel), this parameter
@@ -3369,10 +3368,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>Kernel oplocks support allows Samba <parameter>oplocks
</parameter> to be broken whenever a local UNIX process or NFS operation
- accesses a file that <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> has oplocked. This allows complete
- data consistency between SMB/CIFS, NFS and local file access (and is
- a <emphasis>very</emphasis> cool feature :-).</para>
+ accesses a file that <ulink url="smbd.8.html"><command>smbd(8)</command>
+ </ulink> has oplocked. This allows complete data consistency between
+ SMB/CIFS, NFS and local file access (and is a <emphasis>very</emphasis>
+ cool feature :-).</para>
<para>This parameter defaults to <constant>on</constant>, but is translated
to a no-op on systems that no not have the necessary kernel support.
@@ -3390,12 +3389,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LANMANAUTH"/>lanman auth (G)</term>
- <listitem><para>This parameter determines whether or not <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will attempt to authenticate users
- using the LANMAN password hash. If disabled, only clients which support NT
- password hashes (e.g. Windows NT/2000 clients, smbclient, etc... but not
- Windows 95/98 or the MS DOS network client) will be able to connect to the Samba host.</para>
+ <term><anchor id="LANMANAUTH">lanman auth (G)</term>
+ <listitem><para>This parameter determines whether or not <ulink url="smbd.8.html">smbd</ulink> will
+ attempt to authenticate users using the LANMAN password hash.
+ If disabled, only clients which support NT password hashes (e.g. Windows
+ NT/2000 clients, smbclient, etc... but not Windows 95/98 or the MS DOS
+ network client) will be able to connect to the Samba host.</para>
<para>Default : <command>lanman auth = yes</command></para>
</listitem>
@@ -3406,10 +3405,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LARGEREADWRITE"/>large readwrite (G)</term>
- <listitem><para>This parameter determines whether or not <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> supports the new 64k streaming
- read and write varient SMB requests introduced
+ <term><anchor id="LARGEREADWRITE">large readwrite (G)</term>
+ <listitem><para>This parameter determines whether or not <ulink url="smbd.8.html">smbd</ulink>
+ supports the new 64k streaming read and write varient SMB requests introduced
with Windows 2000. Note that due to Windows 2000 client redirector bugs
this requires Samba to be running on a 64-bit capable operating system such
as IRIX, Solaris or a Linux 2.4 kernel. Can improve performance by 10% with
@@ -3424,15 +3422,14 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPADMINDN"/>ldap admin dn (G)</term>
+ <term><anchor id="LDAPADMINDN">ldap admin dn (G)</term>
<listitem><para> The <parameter>ldap admin dn</parameter> defines the Distinguished
Name (DN) name used by Samba to contact the ldap server when retreiving
user account information. The <parameter>ldap
admin dn</parameter> is used in conjunction with the admin dn password
stored in the <filename>private/secrets.tdb</filename> file. See the
- <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> man page for more information on how
- to accmplish this.
+ <ulink url="smbpasswd.8.html"><command>smbpasswd(8)</command></ulink> man
+ page for more information on how to accmplish this.
</para>
@@ -3444,7 +3441,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPFILTER"/>ldap filter (G)</term>
+ <term><anchor id="LDAPFILTER">ldap filter (G)</term>
<listitem><para>This parameter specifies the RFC 2254 compliant LDAP search filter.
The default is to match the login name with the <constant>uid</constant>
attribute for all entries matching the <constant>sambaAccount</constant>
@@ -3458,7 +3455,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPPORT"/>ldap port (G)</term>
+ <term><anchor id="LDAPPORT">ldap port (G)</term>
<listitem><para>This parameter is only available if Samba has been
configure to include the <command>--with-ldapsam</command> option
at compile time.
@@ -3480,7 +3477,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPSERVER"/>ldap server (G)</term>
+ <term><anchor id="LDAPSERVER">ldap server (G)</term>
<listitem><para>This parameter is only available if Samba has been
configure to include the <command>--with-ldapsam</command> option
at compile time.
@@ -3497,7 +3494,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPSSL"/>ldap ssl (G)</term>
+ <term><anchor id="LDAPSSL">ldap ssl (G)</term>
<listitem><para>This option is used to define whether or not Samba should
use SSL when connecting to the ldap server
This is <emphasis>NOT</emphasis> related to
@@ -3531,7 +3528,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPSUFFIX"/>ldap suffix (G)</term>
+ <term><anchor id="LDAPSUFFIX">ldap suffix (G)</term>
<listitem>
<para>Specifies where user and machine accounts are added to the tree. Can be overriden by <command>ldap user suffix</command> and <command>ldap machine suffix</command>. It also used as the base dn for all ldap searches. </para>
@@ -3542,7 +3539,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPUSERSUFFIX"/>ldap user suffix (G)</term>
+ <term><anchor id="LDAPUSERSUFFIX">ldap user suffix (G)</term>
<listitem><para>It specifies where users are added to the tree.
</para>
@@ -3555,7 +3552,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LDAPMACHINESUFFIX"/>ldap machine suffix (G)</term>
+ <term><anchor id="LDAPMACHINESUFFIX">ldap machine suffix (G)</term>
<listitem><para>It specifies where machines should be
added to the ldap tree.
</para>
@@ -3567,7 +3564,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="LDAPPASSWDSYNC"/>ldap passwd sync (G)</term>
+ <term><anchor id="LDAPPASSWDSYNC">ldap passwd sync (G)</term>
<listitem><para>This option is used to define whether
or not Samba should sync the LDAP password with the NT
and LM hashes for normal accounts (NOT for
@@ -3591,7 +3588,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="LDAPTRUSTIDS"/>ldap trust ids (G)</term>
+ <term><anchor id="LDAPTRUSTIDS">ldap trust ids (G)</term>
<listitem><para>Normally, Samba validates each entry
in the LDAP server against getpwnam(). This allows
LDAP to be used for Samba with the unix system using
@@ -3610,7 +3607,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="LEVEL2OPLOCKS"/>level2 oplocks (S)</term>
+ <term><anchor id="LEVEL2OPLOCKS">level2 oplocks (S)</term>
<listitem><para>This parameter controls whether Samba supports
level2 (read-only) oplocks on a share.</para>
@@ -3654,9 +3651,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LMANNOUNCE"/>lm announce (G)</term>
- <listitem><para>This parameter determines if <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will produce Lanman announce
+ <term><anchor id="LMANNOUNCE">lm announce (G)</term>
+ <listitem><para>This parameter determines if <ulink url="nmbd.8.html">
+ <command>nmbd(8)</command></ulink> will produce Lanman announce
broadcasts that are needed by OS/2 clients in order for them to see
the Samba server in their browse list. This parameter can have three
values, <constant>yes</constant>, <constant>no</constant>, or
@@ -3681,7 +3678,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LMINTERVAL"/>lm interval (G)</term>
+ <term><anchor id="LMINTERVAL">lm interval (G)</term>
<listitem><para>If Samba is set to produce Lanman announce
broadcasts needed by OS/2 clients (see the <link linkend="LMANNOUNCE">
<parameter>lm announce</parameter></link> parameter) then this
@@ -3701,7 +3698,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOADPRINTERS"/>load printers (G)</term>
+ <term><anchor id="LOADPRINTERS">load printers (G)</term>
<listitem><para>A boolean variable that controls whether all
printers in the printcap will be loaded for browsing by default.
See the <link linkend="PRINTERSSECT">printers</link> section for
@@ -3714,9 +3711,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCALMASTER"/>local master (G)</term>
- <listitem><para>This option allows <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to try and become a local master browser
+ <term><anchor id="LOCALMASTER">local master (G)</term>
+ <listitem><para>This option allows <ulink url="nmbd.8.html"><command>
+ nmbd(8)</command></ulink> to try and become a local master browser
on a subnet. If set to <constant>no</constant> then <command>
nmbd</command> will not attempt to become a local master browser
on a subnet and will also lose in all browsing elections. By
@@ -3735,7 +3732,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCKDIR"/>lock dir (G)</term>
+ <term><anchor id="LOCKDIR">lock dir (G)</term>
<listitem><para>Synonym for <link linkend="LOCKDIRECTORY"><parameter>
lock directory</parameter></link>.</para></listitem>
</varlistentry>
@@ -3743,7 +3740,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCKDIRECTORY"/>lock directory (G)</term>
+ <term><anchor id="LOCKDIRECTORY">lock directory (G)</term>
<listitem><para>This option specifies the directory where lock
files will be placed. The lock files are used to implement the
<link linkend="MAXCONNECTIONS"><parameter>max connections</parameter>
@@ -3757,7 +3754,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCKSPINCOUNT"/>lock spin count (G)</term>
+ <term><anchor id="LOCKSPINCOUNT">lock spin count (G)</term>
<listitem><para>This parameter controls the number of times
that smbd should attempt to gain a byte range lock on the
behalf of a client request. Experiments have shown that
@@ -3776,7 +3773,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCKSPINTIME"/>lock spin time (G)</term>
+ <term><anchor id="LOCKSPINTIME">lock spin time (G)</term>
<listitem><para>The time in microseconds that smbd should
pause before attempting to gain a failed lock. See
<link linkend="LOCKSPINCOUNT"><parameter>lock spin
@@ -3790,7 +3787,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOCKING"/>locking (S)</term>
+ <term><anchor id="LOCKING">locking (S)</term>
<listitem><para>This controls whether or not locking will be
performed by the server in response to lock requests from the
client.</para>
@@ -3818,7 +3815,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGFILE"/>log file (G)</term>
+ <term><anchor id="LOGFILE">log file (G)</term>
<listitem><para>This option allows you to override the name
of the Samba log file (also known as the debug file).</para>
@@ -3832,7 +3829,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGLEVEL"/>log level (G)</term>
+ <term><anchor id="LOGLEVEL">log level (G)</term>
<listitem><para>The value of the parameter (a astring) allows
the debug level (logging level) to be specified in the
<filename>smb.conf</filename> file. This parameter has been
@@ -3850,7 +3847,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGONDRIVE"/>logon drive (G)</term>
+ <term><anchor id="LOGONDRIVE">logon drive (G)</term>
<listitem><para>This parameter specifies the local path to
which the home directory will be connected (see <link
linkend="LOGONHOME"><parameter>logon home</parameter></link>)
@@ -3867,7 +3864,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGONHOME"/>logon home (G)</term>
+ <term><anchor id="LOGONHOME">logon home (G)</term>
<listitem><para>This parameter specifies the home directory
location when a Win95/98 or NT Workstation logs into a Samba PDC.
It allows you to do </para>
@@ -3909,7 +3906,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGONPATH"/>logon path (G)</term>
+ <term><anchor id="LOGONPATH">logon path (G)</term>
<listitem><para>This parameter specifies the home directory
where roaming profiles (NTuser.dat etc files for Windows NT) are
stored. Contrary to previous versions of these manual pages, it has
@@ -3957,7 +3954,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LOGONSCRIPT"/>logon script (G)</term>
+ <term><anchor id="LOGONSCRIPT">logon script (G)</term>
<listitem><para>This parameter specifies the batch file (.bat) or
NT command file (.cmd) to be downloaded and run on a machine when
a user successfully logs in. The file must contain the DOS
@@ -3999,7 +3996,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LPPAUSECOMMAND"/>lppause command (S)</term>
+ <term><anchor id="LPPAUSECOMMAND">lppause command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to stop printing or spooling
a specific print job.</para>
@@ -4043,7 +4040,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LPQCACHETIME"/>lpq cache time (G)</term>
+ <term><anchor id="LPQCACHETIME">lpq cache time (G)</term>
<listitem><para>This controls how long lpq info will be cached
for to prevent the <command>lpq</command> command being called too
often. A separate cache is kept for each variation of the <command>
@@ -4072,7 +4069,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LPQCOMMAND"/>lpq command (S)</term>
+ <term><anchor id="LPQCOMMAND">lpq command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to obtain <command>lpq
</command>-style printer status information.</para>
@@ -4116,7 +4113,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LPRESUMECOMMAND"/>lpresume command (S)</term>
+ <term><anchor id="LPRESUMECOMMAND">lpresume command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to restart or continue
printing or spooling a specific print job.</para>
@@ -4156,7 +4153,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="LPRMCOMMAND"/>lprm command (S)</term>
+ <term><anchor id="LPRMCOMMAND">lprm command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to delete a print job.</para>
@@ -4186,7 +4183,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MACHINEPASSWORDTIMEOUT"/>machine password timeout (G)</term>
+ <term><anchor id="MACHINEPASSWORDTIMEOUT">machine password timeout (G)</term>
<listitem><para>If a Samba server is a member of a Windows
NT Domain (see the <link linkend="SECURITYEQUALSDOMAIN">security = domain</link>)
parameter) then periodically a running <ulink url="smbd.8.html">
@@ -4196,8 +4193,8 @@ df $1 | tail -1 | awk '{print $2" "$4}'
will be changed, in seconds. The default is one week (expressed in
seconds), the same as a Windows NT Domain member server.</para>
- <para>See also <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, and the <link linkend="SECURITYEQUALSDOMAIN">
+ <para>See also <ulink url="smbpasswd.8.html"><command>smbpasswd(8)
+ </command></ulink>, and the <link linkend="SECURITYEQUALSDOMAIN">
security = domain</link>) parameter.</para>
<para>Default: <command>machine password timeout = 604800</command></para>
@@ -4206,7 +4203,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAGICOUTPUT"/>magic output (S)</term>
+ <term><anchor id="MAGICOUTPUT">magic output (S)</term>
<listitem><para>This parameter specifies the name of a file
which will contain output created by a magic script (see the
<link linkend="MAGICSCRIPT"><parameter>magic script</parameter></link>
@@ -4226,7 +4223,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAGICSCRIPT"/>magic script (S)</term>
+ <term><anchor id="MAGICSCRIPT">magic script (S)</term>
<listitem><para>This parameter specifies the name of a file which,
if opened, will be executed by the server when the file is closed.
This allows a UNIX script to be sent to the Samba host and
@@ -4257,7 +4254,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MANGLECASE"/>mangle case (S)</term>
+ <term><anchor id="MANGLECASE">mangle case (S)</term>
<listitem><para>See the section on <link linkend="NAMEMANGLINGSECT">
NAME MANGLING</link></para>
@@ -4267,7 +4264,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MANGLEDMAP"/>mangled map (S)</term>
+ <term><anchor id="MANGLEDMAP">mangled map (S)</term>
<listitem><para>This is for those who want to directly map UNIX
file names which cannot be represented on Windows/DOS. The mangling
of names is not always what is needed. In particular you may have
@@ -4292,7 +4289,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MANGLEDNAMES"/>mangled names (S)</term>
+ <term><anchor id="MANGLEDNAMES">mangled names (S)</term>
<listitem><para>This controls whether non-DOS names under UNIX
should be mapped to DOS-compatible names ("mangled") and made visible,
or whether non-DOS names should simply be ignored.</para>
@@ -4351,7 +4348,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="MANGLINGMETHOD"/>mangling method (G)</term>
+ <term><anchor id="MANGLINGMETHOD">mangling method (G)</term>
<listitem><para> controls the algorithm used for the generating
the mangled names. Can take two different values, "hash" and
"hash2". "hash" is the default and is the algorithm that has been
@@ -4366,7 +4363,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="MANGLEPREFIX"/>mangle prefix (G)</term>
+ <term><anchor id="MANGLEPREFIX">mangle prefix (G)</term>
<listitem><para> controls the number of prefix
characters from the original name used when generating
the mangled names. A larger value will give a weaker
@@ -4378,10 +4375,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="MANGLEDSTACK"/>mangled stack (G)</term>
+ <term><anchor id="MANGLEDSTACK">mangled stack (G)</term>
<listitem><para>This parameter controls the number of mangled names
- that should be cached in the Samba server <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>.</para>
+ that should be cached in the Samba server <ulink url="smbd.8.html">
+ smbd(8)</ulink>.</para>
<para>This stack is a list of recently mangled base names
(extensions are only maintained if they are longer than 3 characters
@@ -4405,7 +4402,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MANGLINGCHAR"/>mangling char (S)</term>
+ <term><anchor id="MANGLINGCHAR">mangling char (S)</term>
<listitem><para>This controls what character is used as
the <emphasis>magic</emphasis> character in <link
linkend="NAMEMANGLINGSECT">name mangling</link>. The default is a '~'
@@ -4422,7 +4419,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAPARCHIVE"/>map archive (S)</term>
+ <term><anchor id="MAPARCHIVE">map archive (S)</term>
<listitem><para>This controls whether the DOS archive attribute
should be mapped to the UNIX owner execute bit. The DOS archive bit
is set when a file has been modified since its last backup. One
@@ -4442,7 +4439,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAPHIDDEN"/>map hidden (S)</term>
+ <term><anchor id="MAPHIDDEN">map hidden (S)</term>
<listitem><para>This controls whether DOS style hidden files
should be mapped to the UNIX world execute bit.</para>
@@ -4457,7 +4454,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAPSYSTEM"/>map system (S)</term>
+ <term><anchor id="MAPSYSTEM">map system (S)</term>
<listitem><para>This controls whether DOS style system files
should be mapped to the UNIX group execute bit.</para>
@@ -4472,15 +4469,14 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAPTOGUEST"/>map to guest (G)</term>
+ <term><anchor id="MAPTOGUEST">map to guest (G)</term>
<listitem><para>This parameter is only useful in <link linkend="SECURITY">
security</link> modes other than <parameter>security = share</parameter>
- i.e. <constant>user</constant>, <constant>server</constant>,
and <constant>domain</constant>.</para>
<para>This parameter can take three different values, which tell
- <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> what to do with user
+ <ulink url="smbd.8.html">smbd(8)</ulink> what to do with user
login requests that don't match a valid UNIX user in some way.</para>
<para>The three settings are :</para>
@@ -4528,7 +4524,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXCONNECTIONS"/>max connections (S)</term>
+ <term><anchor id="MAXCONNECTIONS">max connections (S)</term>
<listitem><para>This option allows the number of simultaneous
connections to a service to be limited. If <parameter>max connections
</parameter> is greater than 0 then connections will be refused if
@@ -4548,7 +4544,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXDISKSIZE"/>max disk size (G)</term>
+ <term><anchor id="MAXDISKSIZE">max disk size (G)</term>
<listitem><para>This option allows you to put an upper limit
on the apparent size of disks. If you set this option to 100
then all shares will appear to be not larger than 100 MB in
@@ -4575,7 +4571,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXLOGSIZE"/>max log size (G)</term>
+ <term><anchor id="MAXLOGSIZE">max log size (G)</term>
<listitem><para>This option (an integer in kilobytes) specifies
the max size the log file should grow to. Samba periodically checks
the size and if it is exceeded it will rename the file, adding
@@ -4591,7 +4587,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXMUX"/>max mux (G)</term>
+ <term><anchor id="MAXMUX">max mux (G)</term>
<listitem><para>This option controls the maximum number of
outstanding simultaneous SMB operations that Samba tells the client
it will allow. You should never need to set this parameter.</para>
@@ -4603,10 +4599,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXOPENFILES"/>max open files (G)</term>
+ <term><anchor id="MAXOPENFILES">max open files (G)</term>
<listitem><para>This parameter limits the maximum number of
- open files that one <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> file
+ open files that one <ulink url="smbd.8.html">smbd(8)</ulink> file
serving process may have open for a client at any one time. The
default for this parameter is set very high (10,000) as Samba uses
only one bit per unopened file.</para>
@@ -4622,11 +4617,11 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXPRINTJOBS"/>max print jobs (S)</term>
+ <term><anchor id="MAXPRINTJOBS">max print jobs (S)</term>
<listitem><para>This parameter limits the maximum number of
jobs allowable in a Samba printer queue at any given moment.
- If this number is exceeded, <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will remote "Out of Space" to the client.
+ If this number is exceeded, <ulink url="smbd.8.html"><command>
+ smbd(8)</command></ulink> will remote "Out of Space" to the client.
See all <link linkend="TOTALPRINTJOBS"><parameter>total
print jobs</parameter></link>.
</para>
@@ -4638,7 +4633,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXPROTOCOL"/>max protocol (G)</term>
+ <term><anchor id="MAXPROTOCOL">max protocol (G)</term>
<listitem><para>The value of the parameter (a string) is the highest
protocol level that will be supported by the server.</para>
@@ -4676,15 +4671,14 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXSMBDPROCESSES"/>max smbd processes (G)</term>
+ <term><anchor id="MAXSMBDPROCESSES">max smbd processes (G)</term>
<listitem><para>This parameter limits the maximum number of
<ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
processes concurrently running on a system and is intended
as a stopgap to prevent degrading service to clients in the event
that the server has insufficient resources to handle more than this
number of connections. Remember that under normal operating
- conditions, each user will have an <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> associated with him or her
+ conditions, each user will have an <ulink url="smbd.8.html">smbd</ulink> associated with him or her
to handle connections to all shares from a given host.
</para>
@@ -4697,9 +4691,8 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXTTL"/>max ttl (G)</term>
- <listitem><para>This option tells <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>
+ <term><anchor id="MAXTTL">max ttl (G)</term>
+ <listitem><para>This option tells <ulink url="nmbd.8.html">nmbd(8)</ulink>
what the default 'time to live' of NetBIOS names should be (in seconds)
when <command>nmbd</command> is requesting a name using either a
broadcast packet or from a WINS server. You should never need to
@@ -4712,9 +4705,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXWINSTTL"/>max wins ttl (G)</term>
- <listitem><para>This option tells <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> when acting as a WINS server (<link linkend="WINSSUPPORT">
+ <term><anchor id="MAXWINSTTL">max wins ttl (G)</term>
+ <listitem><para>This option tells <ulink url="nmbd.8.html">nmbd(8)
+ </ulink> when acting as a WINS server (<link linkend="WINSSUPPORT">
<parameter>wins support = yes</parameter></link>) what the maximum
'time to live' of NetBIOS names that <command>nmbd</command>
will grant will be (in seconds). You should never need to change this
@@ -4730,7 +4723,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MAXXMIT"/>max xmit (G)</term>
+ <term><anchor id="MAXXMIT">max xmit (G)</term>
<listitem><para>This option controls the maximum packet size
that will be negotiated by Samba. The default is 65535, which
is the maximum. In some cases you may find you get better performance
@@ -4745,7 +4738,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MESSAGECOMMAND"/>message command (G)</term>
+ <term><anchor id="MESSAGECOMMAND">message command (G)</term>
<listitem><para>This specifies what command to run when the
server receives a WinPopup style message.</para>
@@ -4755,13 +4748,13 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>An example is:</para>
- <para><command>message command = csh -c 'xedit %s;rm %s' &amp;</command>
+ <para><command>message command = csh -c 'xedit %s;rm %s' &</command>
</para>
<para>This delivers the message using <command>xedit</command>, then
removes it afterwards. <emphasis>NOTE THAT IT IS VERY IMPORTANT
THAT THIS COMMAND RETURN IMMEDIATELY</emphasis>. That's why I
- have the '&amp;' on the end. If it doesn't return immediately then
+ have the '&' on the end. If it doesn't return immediately then
your PCs may freeze when sending messages (they should recover
after 30 seconds, hopefully).</para>
@@ -4806,7 +4799,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>Default: <emphasis>no message command</emphasis></para>
<para>Example: <command>message command = csh -c 'xedit %s;
- rm %s' &amp;</command></para>
+ rm %s' &</command></para>
</listitem>
</varlistentry>
@@ -4814,7 +4807,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MINPASSWDLENGTH"/>min passwd length (G)</term>
+ <term><anchor id="MINPASSWDLENGTH">min passwd length (G)</term>
<listitem><para>Synonym for <link linkend="MINPASSWORDLENGTH">
<parameter>min password length</parameter></link>.</para>
</listitem>
@@ -4823,7 +4816,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MINPASSWORDLENGTH"/>min password length (G)</term>
+ <term><anchor id="MINPASSWORDLENGTH">min password length (G)</term>
<listitem><para>This option sets the minimum length in characters
of a plaintext password that <command>smbd</command> will accept when performing
UNIX password changing.</para>
@@ -4841,7 +4834,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MINPRINTSPACE"/>min print space (S)</term>
+ <term><anchor id="MINPRINTSPACE">min print space (S)</term>
<listitem><para>This sets the minimum amount of free disk
space that must be available before a user will be able to spool
a print job. It is specified in kilobytes. The default is 0, which
@@ -4859,7 +4852,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MINPROTOCOL"/>min protocol (G)</term>
+ <term><anchor id="MINPROTOCOL">min protocol (G)</term>
<listitem><para>The value of the parameter (a string) is the
lowest SMB protocol dialect than Samba will support. Please refer
to the <link linkend="MAXPROTOCOL"><parameter>max protocol</parameter></link>
@@ -4883,9 +4876,8 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MINWINSTTL"/>min wins ttl (G)</term>
- <listitem><para>This option tells <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>
+ <term><anchor id="MINWINSTTL">min wins ttl (G)</term>
+ <listitem><para>This option tells <ulink url="nmbd.8.html">nmbd(8)</ulink>
when acting as a WINS server (<link linkend="WINSSUPPORT"><parameter>
wins support = yes</parameter></link>) what the minimum 'time to live'
of NetBIOS names that <command>nmbd</command> will grant will be (in
@@ -4898,7 +4890,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MSDFSPROXY"/>msdfs proxy (S)</term>
+ <term><anchor id="MSDFSPROXY">msdfs proxy (S)</term>
<listitem><para>This parameter indicates that the share is a
stand-in for another CIFS share whose location is specified by
the value of the parameter. When clients attempt to connect to
@@ -4909,7 +4901,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
and
<link linkend="HOSTMSDFS"><parameter>host msdfs</parameter></link>
options to find out how to set up a Dfs root share.</para>
- <para>Example: <command>msdfs proxy = \\\\otherserver\\someshare</command></para>
+ <para>Example: <command>msdfs proxy = \otherserver\someshare</command></para>
</listitem>
</varlistentry>
@@ -4917,17 +4909,17 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="MSDFSROOT"/>msdfs root (S)</term>
+ <term><anchor id="MSDFSROOT">msdfs root (S)</term>
<listitem><para>This boolean parameter is only available if
Samba is configured and compiled with the <command>
--with-msdfs</command> option. If set to <constant>yes</constant>,
Samba treats the share as a Dfs root and allows clients to browse
the distributed file system tree rooted at the share directory.
Dfs links are specified in the share directory by symbolic
- links of the form <filename>msdfs:serverA\\shareA,serverB\\shareB</filename>
+ links of the form <filename>msdfs:serverA\shareA,serverB\shareB</filename>
and so on. For more information on setting up a Dfs tree
- on Samba, refer to <ulink url="msdfs.html">"Hosting a Microsoft
- Distributed File System tree on Samba"</ulink> document.</para>
+ on Samba, refer to <ulink url="msdfs_setup.html">msdfs_setup.html
+ </ulink>.</para>
<para>See also <link linkend="HOSTMSDFS"><parameter>host msdfs
</parameter></link></para>
@@ -4937,7 +4929,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="NAMECACHETIMEOUT"/>name cache timeout (G)</term>
+ <term><anchor id="NAMECACHETIMEOUT">name cache timeout (G)</term>
<listitem><para>Specifies the number of seconds it takes before
entries in samba's hostname resolve cache time out. If
the timeout is set to 0. the caching is disabled.
@@ -4950,7 +4942,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="NAMERESOLVEORDER"/>name resolve order (G)</term>
+ <term><anchor id="NAMERESOLVEORDER">name resolve order (G)</term>
<listitem><para>This option is used by the programs in the Samba
suite to determine what naming services to use and in what order
to resolve host names to IP addresses. The option takes a space
@@ -5003,7 +4995,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NETBIOSALIASES"/>netbios aliases (G)</term>
+ <term><anchor id="NETBIOSALIASES">netbios aliases (G)</term>
<listitem><para>This is a list of NetBIOS names that <ulink
url="nmbd.8.html">nmbd(8)</ulink> will advertise as additional
names by which the Samba server is known. This allows one machine
@@ -5024,7 +5016,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NETBIOSNAME"/>netbios name (G)</term>
+ <term><anchor id="NETBIOSNAME">netbios name (G)</term>
<listitem><para>This sets the NetBIOS name by which a Samba
server is known. By default it is the same as the first component
of the host's DNS name. If a machine is a browse server or
@@ -5043,7 +5035,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NETBIOSSCOPE"/>netbios scope (G)</term>
+ <term><anchor id="NETBIOSSCOPE">netbios scope (G)</term>
<listitem><para>This sets the NetBIOS scope that Samba will
operate under. This should not be set unless every machine
on your LAN also sets this value.</para>
@@ -5052,7 +5044,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NISHOMEDIR"/>nis homedir (G)</term>
+ <term><anchor id="NISHOMEDIR">nis homedir (G)</term>
<listitem><para>Get the home share server from a NIS map. For
UNIX systems that use an automounter, the user's home directory
will often be mounted on a workstation on demand from a remote
@@ -5085,7 +5077,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NONUNIXACCOUNTRANGE"/>non unix account range (G)</term>
+ <term><anchor id="NONUNIXACCOUNTRANGE">non unix account range (G)</term>
<listitem><para>The non unix account range parameter specifies
the range of 'user ids' that are allocated by the various 'non unix
account' passdb backends. These backends allow
@@ -5109,7 +5101,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NTACLSUPPORT"/>nt acl support (S)</term>
+ <term><anchor id="NTACLSUPPORT">nt acl support (S)</term>
<listitem><para>This boolean parameter controls whether
<ulink url="smbd.8.html">smbd(8)</ulink> will attempt to map
UNIX permissions into Windows NT access control lists.
@@ -5123,10 +5115,9 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NTPIPESUPPORT"/>nt pipe support (G)</term>
+ <term><anchor id="NTPIPESUPPORT">nt pipe support (G)</term>
<listitem><para>This boolean parameter controls whether
- <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will allow Windows NT
+ <ulink url="smbd.8.html">smbd(8)</ulink> will allow Windows NT
clients to connect to the NT SMB specific <constant>IPC$</constant>
pipes. This is a developer debugging option and can be left
alone.</para>
@@ -5138,7 +5129,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NTSTATUSSUPPORT"/>nt status support (G)</term>
+ <term><anchor id="NTSTATUSSUPPORT">nt status support (G)</term>
<listitem><para>This boolean parameter controls whether <ulink
url="smbd.8.html">smbd(8)</ulink> will negotiate NT specific status
support with Windows NT/2k/XP clients. This is a developer
@@ -5155,12 +5146,11 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="NULLPASSWORDS"/>null passwords (G)</term>
+ <term><anchor id="NULLPASSWORDS">null passwords (G)</term>
<listitem><para>Allow or disallow client access to accounts
that have null passwords. </para>
- <para>See also <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para>
+ <para>See also <ulink url="smbpasswd.5.html">smbpasswd (5)</ulink>.</para>
<para>Default: <command>null passwords = no</command></para>
</listitem>
@@ -5170,7 +5160,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="OBEYPAMRESTRICTIONS"/>obey pam restrictions (G)</term>
+ <term><anchor id="OBEYPAMRESTRICTIONS">obey pam restrictions (G)</term>
<listitem><para>When Samba 2.2 is configured to enable PAM support
(i.e. --with-pam), this parameter will control whether or not Samba
should obey PAM's account and session management directives. The
@@ -5191,7 +5181,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="ONLYUSER"/>only user (S)</term>
+ <term><anchor id="ONLYUSER">only user (S)</term>
<listitem><para>This is a boolean option that controls whether
connections with usernames not in the <parameter>user</parameter>
list will be allowed. By default this option is disabled so that a
@@ -5219,7 +5209,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="ONLYGUEST"/>only guest (S)</term>
+ <term><anchor id="ONLYGUEST">only guest (S)</term>
<listitem><para>A synonym for <link linkend="GUESTONLY"><parameter>
guest only</parameter></link>.</para>
</listitem>
@@ -5228,7 +5218,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="OPLOCKBREAKWAITTIME"/>oplock break wait time (G)</term>
+ <term><anchor id="OPLOCKBREAKWAITTIME">oplock break wait time (G)</term>
<listitem><para>This is a tuning parameter added due to bugs in
both Windows 9x and WinNT. If Samba responds to a client too
quickly when that client issues an SMB that can cause an oplock
@@ -5246,15 +5236,15 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="OPLOCKCONTENTIONLIMIT"/>oplock contention limit (S)</term>
+ <term><anchor id="OPLOCKCONTENTIONLIMIT">oplock contention limit (S)</term>
<listitem><para>This is a <emphasis>very</emphasis> advanced
<ulink url="smbd.8.html">smbd(8)</ulink> tuning option to
improve the efficiency of the granting of oplocks under multiple
client contention for the same file.</para>
- <para>In brief it specifies a number, which causes <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>not to grant an oplock even when requested
- if the approximate number of clients contending for an oplock on the same file goes over this
+ <para>In brief it specifies a number, which causes <ulink url="smbd.8.html">smbd</ulink> not to
+ grant an oplock even when requested if the approximate number of
+ clients contending for an oplock on the same file goes over this
limit. This causes <command>smbd</command> to behave in a similar
way to Windows NT.</para>
@@ -5270,7 +5260,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="OPLOCKS"/>oplocks (S)</term>
+ <term><anchor id="OPLOCKS">oplocks (S)</term>
<listitem><para>This boolean option tells <command>smbd</command> whether to
issue oplocks (opportunistic locks) to file open requests on this
share. The oplock code can dramatically (approx. 30% or more) improve
@@ -5298,16 +5288,13 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="NTLMAUTH"/>ntlm auth (G)</term>
- <listitem><para>This parameter determines
- whether or not <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will
+ <term><anchor id="NTLMAUTH">ntlm auth (G)</term>
+ <listitem><para>This parameter determines whether or not <ulink url="smbd.8.html">smbd</ulink> will
attempt to authenticate users using the NTLM password hash.
If disabled, only the lanman password hashes will be used.
</para>
- <para>Please note that at least this option or <command>lanman auth</command> should
- be enabled in order to be able to log in.
+ <para>Please note that at least this option or <command>lanman auth</command> should be enabled in order to be able to log in.
</para>
<para>Default : <command>ntlm auth = yes</command></para>
@@ -5315,11 +5302,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="OSLEVEL"/>os level (G)</term>
+ <term><anchor id="OSLEVEL">os level (G)</term>
<listitem><para>This integer value controls what level Samba
advertises itself as for browse elections. The value of this
- parameter determines whether <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>
+ parameter determines whether <ulink url="nmbd.8.html">nmbd(8)</ulink>
has a chance of becoming a local master browser for the <parameter>
WORKGROUP</parameter> in the local broadcast area.</para>
@@ -5339,7 +5325,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="OS2DRIVERMAP"/>os2 driver map (G)</term>
+ <term><anchor id="OS2DRIVERMAP">os2 driver map (G)</term>
<listitem><para>The parameter is used to define the absolute
path to a file containing a mapping of Windows NT printer driver
names to OS/2 printer driver names. The format is:</para>
@@ -5352,9 +5338,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
LaserJet 5L</command>.</para>
<para>The need for the file is due to the printer driver namespace
- problem described in the <ulink url="printing.html">Samba
+ problem described in the <ulink url="printer_driver2.html">Samba
Printing HOWTO</ulink>. For more details on OS/2 clients, please
- refer to the OS2-Client-HOWTO containing in the Samba documentation.</para>
+ refer to the <ulink url="OS2-Client-HOWTO.html">OS2-Client-HOWTO
+ </ulink> containing in the Samba documentation.</para>
<para>Default: <command>os2 driver map = &lt;empty string&gt;
</command></para>
@@ -5363,7 +5350,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PAMPASSWORDCHANGE"/>pam password change (G)</term>
+ <term><anchor id="PAMPASSWORDCHANGE">pam password change (G)</term>
<listitem><para>With the addition of better PAM support in Samba 2.2,
this parameter, it is possible to use PAM's password change control
flag for Samba. If enabled, then PAM will be used for password
@@ -5381,12 +5368,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PANICACTION"/>panic action (G)</term>
+ <term><anchor id="PANICACTION">panic action (G)</term>
<listitem><para>This is a Samba developer option that allows a
- system command to be called when either <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> or <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> crashes. This is usually used to
- draw attention to the fact that a problem occurred.</para>
+ system command to be called when either <ulink url="smbd.8.html">
+ smbd(8)</ulink> or <ulink url="nmbd.8.html">nmbd(8)</ulink>
+ crashes. This is usually used to draw attention to the fact that
+ a problem occurred.</para>
<para>Default: <command>panic action = &lt;empty string&gt;</command></para>
<para>Example: <command>panic action = "/bin/sleep 90000"</command></para>
@@ -5394,24 +5381,20 @@ df $1 | tail -1 | awk '{print $2" "$4}'
</varlistentry>
<varlistentry>
- <term><anchor id="PARANOIDSERVERSECURITY"/>paranoid server security (G)</term>
+ <term><anchor id="PARANOIDSERVERSECURITY">paranoid server security (G)</term>
<listitem><para>Some version of NT 4.x allow non-guest
users with a bad passowrd. When this option is enabled, samba will not
use a broken NT 4.x server as password server, but instead complain
- to the logs and exit.
+ to the logs and exit.
</para>
- <para>Disabling this option prevents Samba from making
- this check, which involves deliberatly attempting a
- bad logon to the remote server.</para>
-
<para>Default: <command>paranoid server security = yes</command></para>
</listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="PASSDBBACKEND"/>passdb backend (G)</term>
+ <term><anchor id="PASSDBBACKEND">passdb backend (G)</term>
<listitem><para>This option allows the administrator to chose which backends to retrieve and store passwords with. This allows (for example) both
smbpasswd and tdbsam to be used without a recompile.
Multiple backends can be specified, separated by spaces. The backends will be searched in the order they are specified. New users are always added to the first backend specified.
@@ -5504,13 +5487,13 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PASSWDCHAT"/>passwd chat (G)</term>
+ <term><anchor id="PASSWDCHAT">passwd chat (G)</term>
<listitem><para>This string controls the <emphasis>"chat"</emphasis>
- conversation that takes places between <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and the local password changing
+ conversation that takes places between <ulink
+ url="smbd.8.html">smbd</ulink> and the local password changing
program to change the user's password. The string describes a
- sequence of response-receive pairs that <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> uses to determine what to send to the
+ sequence of response-receive pairs that <ulink url="smbd.8.html">
+ smbd(8)</ulink> uses to determine what to send to the
<link linkend="PASSWDPROGRAM"><parameter>passwd program</parameter>
</link> and what to expect back. If the expected output is not
received then the password is not changed.</para>
@@ -5532,8 +5515,8 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>The string can contain the macro <parameter>%n</parameter> which is substituted
for the new password. The chat sequence can also contain the standard
- macros <constant>\\n</constant>, <constant>\\r</constant>, <constant>
- \\t</constant> and <constant>\\s</constant> to give line-feed,
+ macros <constant>\n</constant>, <constant>\r</constant>, <constant>
+ \t</constant> and <constant>\s</constant> to give line-feed,
carriage-return, tab and space. The chat sequence string can also contain
a '*' which matches any sequence of characters.
Double quotes can be used to collect strings with spaces
@@ -5555,10 +5538,10 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<parameter>passwd chat debug</parameter></link> and <link linkend="PAMPASSWORDCHANGE">
<parameter>pam password change</parameter></link>.</para>
- <para>Default: <command>passwd chat = *new*password* %n\\n
- *new*password* %n\\n *changed*</command></para>
- <para>Example: <command>passwd chat = "*Enter OLD password*" %o\\n
- "*Enter NEW password*" %n\\n "*Reenter NEW password*" %n\\n "*Password
+ <para>Default: <command>passwd chat = *new*password* %n\n
+ *new*password* %n\n *changed*</command></para>
+ <para>Example: <command>passwd chat = "*Enter OLD password*" %o\n
+ "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password
changed*"</command></para>
</listitem>
</varlistentry>
@@ -5566,12 +5549,11 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PASSWDCHATDEBUG"/>passwd chat debug (G)</term>
+ <term><anchor id="PASSWDCHATDEBUG">passwd chat debug (G)</term>
<listitem><para>This boolean specifies if the passwd chat script
parameter is run in <emphasis>debug</emphasis> mode. In this mode the
strings passed to and received from the passwd chat are printed
- in the <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> log with a
+ in the <ulink url="smbd.8.html">smbd(8)</ulink> log with a
<link linkend="DEBUGLEVEL"><parameter>debug level</parameter></link>
of 100. This is a dangerous option as it will allow plaintext passwords
to be seen in the <command>smbd</command> log. It is available to help
@@ -5594,7 +5576,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PASSWDPROGRAM"/>passwd program (G)</term>
+ <term><anchor id="PASSWDPROGRAM">passwd program (G)</term>
<listitem><para>The name of a program that can be used to set
UNIX user passwords. Any occurrences of <parameter>%u</parameter>
will be replaced with the user name. The user name is checked for
@@ -5632,7 +5614,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PASSWORDLEVEL"/>password level (G)</term>
+ <term><anchor id="PASSWORDLEVEL">password level (G)</term>
<listitem><para>Some client/server combinations have difficulty
with mixed-case passwords. One offending client is Windows for
Workgroups, which for some reason forces passwords to upper
@@ -5675,7 +5657,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PASSWORDSERVER"/>password server (G)</term>
+ <term><anchor id="PASSWORDSERVER">password server (G)</term>
<listitem><para>By specifying the name of another SMB server (such
as a WinNT box) with this option, and using <command>security = domain
</command> or <command>security = server</command> you can get Samba
@@ -5770,7 +5752,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PATH"/>path (S)</term>
+ <term><anchor id="PATH">path (S)</term>
<listitem><para>This parameter specifies a directory to which
the user of the service is to be given access. In the case of
printable services, this is where print data will spool prior to
@@ -5801,7 +5783,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PIDDIRECTORY"/>pid directory (G)</term>
+ <term><anchor id="PIDDIRECTORY">pid directory (G)</term>
<listitem><para>This option specifies the directory where pid
files will be placed. </para>
@@ -5813,9 +5795,8 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="POSIXLOCKING"/>posix locking (S)</term>
- <listitem><para>The <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>
+ <term><anchor id="POSIXLOCKING">posix locking (S)</term>
+ <listitem><para>The <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
daemon maintains an database of file locks obtained by SMB clients.
The default behavior is to map this internal database to POSIX
locks. This means that file locks obtained by SMB clients are
@@ -5831,7 +5812,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="POSTEXEC"/>postexec (S)</term>
+ <term><anchor id="POSTEXEC">postexec (S)</term>
<listitem><para>This option specifies a command to be run
whenever the service is disconnected. It takes the usual
substitutions. The command may be run as the root on some
@@ -5856,7 +5837,23 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PREEXEC"/>preexec (S)</term>
+ <term><anchor id="POSTSCRIPT">postscript (S)</term>
+ <listitem><para>This parameter forces a printer to interpret
+ the print files as PostScript. This is done by adding a <constant>%!
+ </constant> to the start of print output.</para>
+
+ <para>This is most useful when you have lots of PCs that persist
+ in putting a control-D at the start of print jobs, which then
+ confuses your printer.</para>
+
+ <para>Default: <command>postscript = no</command></para>
+ </listitem>
+ </varlistentry>
+
+
+
+ <varlistentry>
+ <term><anchor id="PREEXEC">preexec (S)</term>
<listitem><para>This option specifies a command to be run whenever
the service is connected to. It takes the usual substitutions.</para>
@@ -5865,12 +5862,12 @@ df $1 | tail -1 | awk '{print $2" "$4}'
is an example:</para>
<para><command>preexec = csh -c 'echo \"Welcome to %S!\" |
- /usr/local/samba/bin/smbclient -M %m -I %I' &amp; </command></para>
+ /usr/local/samba/bin/smbclient -M %m -I %I' & </command></para>
<para>Of course, this could get annoying after a while :-)</para>
<para>See also <link linkend="PREEXECCLOSE"><parameter>preexec close
- </parameter></link> and <link linkend="POSTEXEC"><parameter>postexec
+ </parameter</link> and <link linkend="POSTEXEC"><parameter>postexec
</parameter></link>.</para>
<para>Default: <emphasis>none (no command executed)</emphasis></para>
@@ -5882,7 +5879,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PREEXECCLOSE"/>preexec close (S)</term>
+ <term><anchor id="PREEXECCLOSE">preexec close (S)</term>
<listitem><para>This boolean option controls whether a non-zero
return code from <link linkend="PREEXEC"><parameter>preexec
</parameter></link> should close the service being connected to.</para>
@@ -5893,7 +5890,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PREFERREDMASTER"/>preferred master (G)</term>
+ <term><anchor id="PREFERREDMASTER">preferred master (G)</term>
<listitem><para>This boolean parameter controls if <ulink
url="nmbd.8.html">nmbd(8)</ulink> is a preferred master browser
for its workgroup.</para>
@@ -5922,7 +5919,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PREFEREDMASTER"/>prefered master (G)</term>
+ <term><anchor id="PREFEREDMASTER">prefered master (G)</term>
<listitem><para>Synonym for <link linkend="PREFERREDMASTER"><parameter>
preferred master</parameter></link> for people who cannot spell :-).</para>
</listitem>
@@ -5931,7 +5928,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRELOAD"/>preload (G)</term>
+ <term><anchor id="PRELOAD">preload (G)</term>
<listitem><para>This is a list of services that you want to be
automatically added to the browse lists. This is most useful
for homes and printers services that would otherwise not be
@@ -5949,7 +5946,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRESERVECASE"/>preserve case (S)</term>
+ <term><anchor id="PRESERVECASE">preserve case (S)</term>
<listitem><para> This controls if new filenames are created
with the case that the client passes, or if they are forced to
be the <link linkend="DEFAULTCASE"><parameter>default case
@@ -5965,7 +5962,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRINTCOMMAND"/>print command (S)</term>
+ <term><anchor id="PRINTCOMMAND">print command (S)</term>
<listitem><para>After a print job has finished spooling to
a service, this command will be used via a <command>system()</command>
call to process the spool file. Typically the command specified will
@@ -6055,7 +6052,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRINTOK"/>print ok (S)</term>
+ <term><anchor id="PRINTOK">print ok (S)</term>
<listitem><para>Synonym for <link linkend="PRINTABLE">
<parameter>printable</parameter></link>.</para>
</listitem>
@@ -6065,7 +6062,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRINTABLE"/>printable (S)</term>
+ <term><anchor id="PRINTABLE">printable (S)</term>
<listitem><para>If this parameter is <constant>yes</constant>, then
clients may open, write to and submit spool files on the directory
specified for the service. </para>
@@ -6083,7 +6080,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRINTCAP"/>printcap (G)</term>
+ <term><anchor id="PRINTCAP">printcap (G)</term>
<listitem><para>Synonym for <link linkend="PRINTCAPNAME"><parameter>
printcap name</parameter></link>.</para>
</listitem>
@@ -6093,7 +6090,7 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<varlistentry>
- <term><anchor id="PRINTCAPNAME"/>printcap name (G)</term>
+ <term><anchor id="PRINTCAPNAME">printcap name (G)</term>
<listitem><para>This parameter may be used to override the
compiled-in default printcap name used by the server (usually <filename>
/etc/printcap</filename>). See the discussion of the <link
@@ -6119,13 +6116,13 @@ df $1 | tail -1 | awk '{print $2" "$4}'
<para>A minimal printcap file would look something like this:</para>
-<para><programlisting>
-print1|My Printer 1
-print2|My Printer 2
-print3|My Printer 3
-print4|My Printer 4
-print5|My Printer 5
-</programlisting></para>
+ <para><programlisting>
+ print1|My Printer 1
+ print2|My Printer 2
+ print3|My Printer 3
+ print4|My Printer 4
+ print5|My Printer 5
+ </programlisting></para>
<para>where the '|' separates aliases of a printer. The fact
that the second alias has a space in it gives a hint to Samba
@@ -6146,7 +6143,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PRINTERADMIN"/>printer admin (S)</term>
+ <term><anchor id="PRINTERADMIN">printer admin (S)</term>
<listitem><para>This is a list of users that can do anything to
printers via the remote administration interfaces offered by MS-RPC
(usually using a NT workstation). Note that the root user always
@@ -6160,8 +6157,113 @@ print5|My Printer 5
+
+
+ <varlistentry>
+ <term><anchor id="PRINTERDRIVER">printer driver (S)</term>
+ <listitem><para><emphasis>Note :</emphasis>This is a deprecated
+ parameter and will be removed in the next major release
+ following version 2.2. Please see the instructions in
+ the <ulink url="printer_driver2.html">Samba 2.2. Printing
+ HOWTO</ulink> for more information
+ on the new method of loading printer drivers onto a Samba server.
+ </para>
+
+ <para>This option allows you to control the string
+ that clients receive when they ask the server for the printer driver
+ associated with a printer. If you are using Windows95 or Windows NT
+ then you can use this to automate the setup of printers on your
+ system.</para>
+
+ <para>You need to set this parameter to the exact string (case
+ sensitive) that describes the appropriate printer driver for your
+ system. If you don't know the exact string to use then you should
+ first try with no <link linkend="PRINTERDRIVER"><parameter>
+ printer driver</parameter></link> option set and the client will
+ give you a list of printer drivers. The appropriate strings are
+ shown in a scroll box after you have chosen the printer manufacturer.</para>
+
+ <para>See also <link linkend="PRINTERDRIVERFILE"><parameter>printer
+ driver file</parameter></link>.</para>
+
+ <para>Example: <command>printer driver = HP LaserJet 4L</command></para>
+ </listitem>
+ </varlistentry>
+
+
+
<varlistentry>
- <term><anchor id="PRINTERNAME"/>printer name (S)</term>
+ <term><anchor id="PRINTERDRIVERFILE">printer driver file (G)</term>
+ <listitem><para><emphasis>Note :</emphasis>This is a deprecated
+ parameter and will be removed in the next major release
+ following version 2.2. Please see the instructions in
+ the <ulink url="printer_driver2.html">Samba 2.2. Printing
+ HOWTO</ulink> for more information
+ on the new method of loading printer drivers onto a Samba server.
+ </para>
+
+ <para>This parameter tells Samba where the printer driver
+ definition file, used when serving drivers to Windows 95 clients, is
+ to be found. If this is not set, the default is :</para>
+
+ <para><filename><replaceable>SAMBA_INSTALL_DIRECTORY</replaceable>
+ /lib/printers.def</filename></para>
+
+ <para>This file is created from Windows 95 <filename>msprint.inf
+ </filename> files found on the Windows 95 client system. For more
+ details on setting up serving of printer drivers to Windows 95
+ clients, see the outdated documentation file in the <filename>docs/</filename>
+ directory, <filename>PRINTER_DRIVER.txt</filename>.</para>
+
+ <para>See also <link linkend="PRINTERDRIVERLOCATION"><parameter>
+ printer driver location</parameter></link>.</para>
+
+ <para>Default: <emphasis>None (set in compile).</emphasis></para>
+
+ <para>Example: <command>printer driver file =
+ /usr/local/samba/printers/drivers.def</command></para>
+ </listitem>
+ </varlistentry>
+
+
+
+
+ <varlistentry>
+ <term><anchor id="PRINTERDRIVERLOCATION">printer driver location (S)</term>
+ <listitem><para><emphasis>Note :</emphasis>This is a deprecated
+ parameter and will be removed in the next major release
+ following version 2.2. Please see the instructions in
+ the <ulink url="printer_driver2.html">Samba 2.2. Printing
+ HOWTO</ulink> for more information
+ on the new method of loading printer drivers onto a Samba server.
+ </para>
+
+ <para>This parameter tells clients of a particular printer
+ share where to find the printer driver files for the automatic
+ installation of drivers for Windows 95 machines. If Samba is set up
+ to serve printer drivers to Windows 95 machines, this should be set to</para>
+
+ <para><command>\\MACHINE\PRINTER$</command></para>
+
+ <para>Where MACHINE is the NetBIOS name of your Samba server,
+ and PRINTER$ is a share you set up for serving printer driver
+ files. For more details on setting this up see the outdated documentation
+ file in the <filename>docs/</filename> directory, <filename>
+ PRINTER_DRIVER.txt</filename>.</para>
+
+ <para>See also <link linkend="PRINTERDRIVERFILE"><parameter>
+ printer driver file</parameter></link>.</para>
+
+ <para>Default: <command>none</command></para>
+ <para>Example: <command>printer driver location = \\MACHINE\PRINTER$
+ </command></para>
+ </listitem>
+ </varlistentry>
+
+
+
+ <varlistentry>
+ <term><anchor id="PRINTERNAME">printer name (S)</term>
<listitem><para>This parameter specifies the name of the printer
to which print jobs spooled through a printable service will be sent.</para>
@@ -6178,7 +6280,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PRINTER"/>printer (S)</term>
+ <term><anchor id="PRINTER">printer (S)</term>
<listitem><para>Synonym for <link linkend="PRINTERNAME"><parameter>
printer name</parameter></link>.</para>
</listitem>
@@ -6187,7 +6289,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PRINTING"/>printing (S)</term>
+ <term><anchor id="PRINTING">printing (S)</term>
<listitem><para>This parameters controls how printer status
information is interpreted on your system. It also affects the
default values for the <parameter>print command</parameter>,
@@ -6218,7 +6320,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PRIVATEDIR"/>private dir (G)</term>
+ <term><anchor id="PRIVATEDIR">private dir (G)</term>
<listitem><para>This parameters defines the directory
smbd will use for storing such files as <filename>smbpasswd</filename>
and <filename>secrets.tdb</filename>.
@@ -6232,7 +6334,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PROTOCOL"/>protocol (G)</term>
+ <term><anchor id="PROTOCOL">protocol (G)</term>
<listitem><para>Synonym for <link linkend="MAXPROTOCOL">
<parameter>max protocol</parameter></link>.</para></listitem>
</varlistentry>
@@ -6241,7 +6343,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="PUBLIC"/>public (S)</term>
+ <term><anchor id="PUBLIC">public (S)</term>
<listitem><para>Synonym for <link linkend="GUESTOK"><parameter>guest
ok</parameter></link>.</para>
</listitem>
@@ -6250,7 +6352,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="QUEUEPAUSECOMMAND"/>queuepause command (S)</term>
+ <term><anchor id="QUEUEPAUSECOMMAND">queuepause command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to pause the printer queue.</para>
@@ -6279,7 +6381,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="QUEUERESUMECOMMAND"/>queueresume command (S)</term>
+ <term><anchor id="QUEUERESUMECOMMAND">queueresume command (S)</term>
<listitem><para>This parameter specifies the command to be
executed on the server host in order to resume the printer queue. It
is the command to undo the behavior that is caused by the
@@ -6314,7 +6416,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="READBMPX"/>read bmpx (G)</term>
+ <term><anchor id="READBMPX">read bmpx (G)</term>
<listitem><para>This boolean parameter controls whether <ulink
url="smbd.8.html">smbd(8)</ulink> will support the "Read
Block Multiplex" SMB. This is now rarely used and defaults to
@@ -6329,7 +6431,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="READLIST"/>read list (S)</term>
+ <term><anchor id="READLIST">read list (S)</term>
<listitem><para>This is a list of users that are given read-only
access to a service. If the connecting user is in this list then
they will not be given write access, no matter what the <link
@@ -6351,7 +6453,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="READONLY"/>read only (S)</term>
+ <term><anchor id="READONLY">read only (S)</term>
<listitem><para>An inverted synonym is <link linkend="WRITEABLE">
<parameter>writeable</parameter></link>.</para>
@@ -6370,7 +6472,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="READRAW"/>read raw (G)</term>
+ <term><anchor id="READRAW">read raw (G)</term>
<listitem><para>This parameter controls whether or not the server
will support the raw read SMB requests when transferring data
to clients.</para>
@@ -6393,7 +6495,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="READSIZE"/>read size (G)</term>
+ <term><anchor id="READSIZE">read size (G)</term>
<listitem><para>The option <parameter>read size</parameter>
affects the overlap of disk reads/writes with network reads/writes.
If the amount of data being transferred in several of the SMB
@@ -6420,7 +6522,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="REALM"/>realm (G)</term>
+ <term><anchor id="REALM">realm (G)</term>
<listitem><para>
This option specifies the kerberos realm to use. The realm is
used as the ADS equivalent of the NT4<command>domain</command>. It
@@ -6433,7 +6535,7 @@ print5|My Printer 5
</varlistentry>
<varlistentry>
- <term><anchor id="REMOTEANNOUNCE"/>remote announce (G)</term>
+ <term><anchor id="REMOTEANNOUNCE">remote announce (G)</term>
<listitem><para>This option allows you to setup <ulink
url="nmbd.8.html">nmbd(8)</ulink> to periodically announce itself
to arbitrary IP addresses with an arbitrary workgroup name.</para>
@@ -6458,7 +6560,7 @@ print5|My Printer 5
addresses of the remote networks, but can also be the IP addresses
of known browse masters if your network config is that stable.</para>
- <para>See the documentation file <ulink url="improved-browsing.html">BROWSING</ulink>
+ <para>See the documentation file <filename>BROWSING.txt</filename>
in the <filename>docs/</filename> directory.</para>
<para>Default: <command>remote announce = &lt;empty string&gt;
@@ -6469,7 +6571,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="REMOTEBROWSESYNC"/>remote browse sync (G)</term>
+ <term><anchor id="REMOTEBROWSESYNC">remote browse sync (G)</term>
<listitem><para>This option allows you to setup <ulink
url="nmbd.8.html">nmbd(8)</ulink> to periodically request
synchronization of browse lists with the master browser of a Samba
@@ -6507,7 +6609,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="RESTRICTANONYMOUS"/>restrict anonymous (G)</term>
+ <term><anchor id="RESTRICTANONYMOUS">restrict anonymous (G)</term>
<listitem><para>This is a integer parameter, and
mirrors as much as possible the functinality the
<constant>RestrictAnonymous</constant>
@@ -6520,7 +6622,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="ROOT"/>root (G)</term>
+ <term><anchor id="ROOT">root (G)</term>
<listitem><para>Synonym for <link linkend="ROOTDIRECTORY">
<parameter>root directory"</parameter></link>.</para>
</listitem>
@@ -6529,7 +6631,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="ROOTDIR"/>root dir (G)</term>
+ <term><anchor id="ROOTDIR">root dir (G)</term>
<listitem><para>Synonym for <link linkend="ROOTDIRECTORY">
<parameter>root directory"</parameter></link>.</para>
</listitem>
@@ -6537,7 +6639,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="ROOTDIRECTORY"/>root directory (G)</term>
+ <term><anchor id="ROOTDIRECTORY">root directory (G)</term>
<listitem><para>The server will <command>chroot()</command> (i.e.
Change its root directory) to this directory on startup. This is
not strictly necessary for secure operation. Even without it the
@@ -6569,7 +6671,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="ROOTPOSTEXEC"/>root postexec (S)</term>
+ <term><anchor id="ROOTPOSTEXEC">root postexec (S)</term>
<listitem><para>This is the same as the <parameter>postexec</parameter>
parameter except that the command is run as root. This
is useful for unmounting filesystems
@@ -6584,7 +6686,7 @@ print5|My Printer 5
</varlistentry>
<varlistentry>
- <term><anchor id="ROOTPREEXEC"/>root preexec (S)</term>
+ <term><anchor id="ROOTPREEXEC">root preexec (S)</term>
<listitem><para>This is the same as the <parameter>preexec</parameter>
parameter except that the command is run as root. This
is useful for mounting filesystems (such as CDROMs) when a
@@ -6602,7 +6704,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="ROOTPREEXECCLOSE"/>root preexec close (S)</term>
+ <term><anchor id="ROOTPREEXECCLOSE">root preexec close (S)</term>
<listitem><para>This is the same as the <parameter>preexec close
</parameter> parameter except that the command is run as root.</para>
@@ -6616,14 +6718,14 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SECURITY"/>security (G)</term>
+ <term><anchor id="SECURITY">security (G)</term>
<listitem><para>This option affects how clients respond to
Samba and is one of the most important settings in the <filename>
smb.conf</filename> file.</para>
<para>The option sets the "security mode bit" in replies to
- protocol negotiations with <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to turn share level security on or off. Clients decide
+ protocol negotiations with <ulink url="smbd.8.html">smbd(8)
+ </ulink> to turn share level security on or off. Clients decide
based on this bit whether (and how) to transfer user and password
information to the server.</para>
@@ -6668,7 +6770,7 @@ print5|My Printer 5
<para>The different settings will now be explained.</para>
- <para><anchor id="SECURITYEQUALSSHARE"/><emphasis>SECURITY = SHARE
+ <para><anchor id="SECURITYEQUALSSHARE"><emphasis>SECURITY = SHARE
</emphasis></para>
<para>When clients connect to a share level security server they
@@ -6737,10 +6839,10 @@ print5|My Printer 5
<para>See also the section <link linkend="VALIDATIONSECT">
NOTE ABOUT USERNAME/PASSWORD VALIDATION</link>.</para>
- <para><anchor id="SECURITYEQUALSUSER"/><emphasis>SECURITY = USER
+ <para><anchor id="SECURITYEQUALSUSER"><emphasis>SECURITY = USER
</emphasis></para>
- <para>This is the default security setting in Samba 3.0.
+ <para>This is the default security setting in Samba 2.2.
With user-level security a client must first "log-on" with a
valid username and password (which can be mapped using the <link
linkend="USERNAMEMAP"><parameter>username map</parameter></link>
@@ -6764,27 +6866,24 @@ print5|My Printer 5
<para>See also the section <link linkend="VALIDATIONSECT">
NOTE ABOUT USERNAME/PASSWORD VALIDATION</link>.</para>
- <para><anchor id="SECURITYEQUALSDOMAIN"/><emphasis>SECURITY = DOMAIN
-
+ <para><anchor id="SECURITYEQUALSSERVER"><emphasis>SECURITY = SERVER
</emphasis></para>
- <para>This mode will only work correctly if <citerefentry><refentrytitle>net</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> has been used to add this
- machine into a Windows NT Domain. It expects the <link
- linkend="ENCRYPTPASSWORDS"><parameter>encrypted passwords</parameter>
- </link> parameter to be set to <constant>yes</constant>. In this
- mode Samba will try to validate the username/password by passing
- it to a Windows NT Primary or Backup Domain Controller, in exactly
- the same way that a Windows NT Server would do.</para>
-
- <para><emphasis>Note</emphasis> that a valid UNIX user must still
- exist as well as the account on the Domain Controller to allow
- Samba to have a valid UNIX account to map file access to.</para>
+ <para>In this mode Samba will try to validate the username/password
+ by passing it to another SMB server, such as an NT box. If this
+ fails it will revert to <command>security = user</command>, but note
+ that if encrypted passwords have been negotiated then Samba cannot
+ revert back to checking the UNIX password file, it must have a valid
+ <filename>smbpasswd</filename> file to check users against. See the
+ documentation file in the <filename>docs/</filename> directory
+ <filename>ENCRYPTION.txt</filename> for details on how to set this
+ up.</para>
- <para><emphasis>Note</emphasis> that from the client's point
- of view <command>security = domain</command> is the same as <command>security = user
- </command>. It only affects how the server deals with the authentication,
- it does not in any way affect what the client sees.</para>
+ <para><emphasis>Note</emphasis> that from the client's point of
+ view <command>security = server</command> is the same as <command>
+ security = user</command>. It only affects how the server deals
+ with the authentication, it does not in any way affect what the
+ client sees.</para>
<para><emphasis>Note</emphasis> that the name of the resource being
requested is <emphasis>not</emphasis> sent to the server until after
@@ -6802,42 +6901,27 @@ print5|My Printer 5
server</parameter></link> parameter and the <link
linkend="ENCRYPTPASSWORDS"><parameter>encrypted passwords</parameter>
</link> parameter.</para>
-
- <para><anchor id="SECURITYEQUALSSERVER"/><emphasis>SECURITY = SERVER
+
+ <para><anchor id="SECURITYEQUALSDOMAIN"><emphasis>SECURITY = DOMAIN
</emphasis></para>
- <para>In this mode Samba will try to validate the username/password
- by passing it to another SMB server, such as an NT box. If this
- fails it will revert to <command>security =
- user</command>. It expects the <link
+ <para>This mode will only work correctly if <ulink
+ url="smbpasswd.8.html">smbpasswd(8)</ulink> has been used to add this
+ machine into a Windows NT Domain. It expects the <link
linkend="ENCRYPTPASSWORDS"><parameter>encrypted passwords</parameter>
- </link> parameter to be set to
- <constant>yes</constant>, unless the remote server
- does not support them. However note
- that if encrypted passwords have been negotiated then Samba cannot
- revert back to checking the UNIX password file, it must have a valid
- <filename>smbpasswd</filename> file to check users against. See the
- documentation file in the <filename>docs/</filename> directory
- <filename>ENCRYPTION.txt</filename> for details on how to set this
- up.</para>
+ </link> parameter to be set to <constant>yes</constant>. In this
+ mode Samba will try to validate the username/password by passing
+ it to a Windows NT Primary or Backup Domain Controller, in exactly
+ the same way that a Windows NT Server would do.</para>
- <para><emphasis>Note</emphasis> this mode of operation
- has significant pitfalls, due to the fact that is
- activly initiates a man-in-the-middle attack on the
- remote SMB server. In particular, this mode of
- operation can cause significant resource consuption on
- the PDC, as it must maintain an active connection for
- the duration of the user's session. Furthermore, if
- this connection is lost, there is no way to
- reestablish it, and futher authenticaions to the Samba
- server may fail. (From a single client, till it
- disconnects). </para>
+ <para><emphasis>Note</emphasis> that a valid UNIX user must still
+ exist as well as the account on the Domain Controller to allow
+ Samba to have a valid UNIX account to map file access to.</para>
- <para><emphasis>Note</emphasis> that from the client's point of
- view <command>security = server</command> is the same as <command>
- security = user</command>. It only affects how the server deals
- with the authentication, it does not in any way affect what the
- client sees.</para>
+ <para><emphasis>Note</emphasis> that from the client's point
+ of view <command>security = domain</command> is the same as <command>security = user
+ </command>. It only affects how the server deals with the authentication,
+ it does not in any way affect what the client sees.</para>
<para><emphasis>Note</emphasis> that the name of the resource being
requested is <emphasis>not</emphasis> sent to the server until after
@@ -6848,6 +6932,14 @@ print5|My Printer 5
See the <link linkend="MAPTOGUEST"><parameter>map to guest</parameter>
</link> parameter for details on doing this.</para>
+ <para><emphasis>BUG:</emphasis> There is currently a bug in the
+ implementation of <command>security = domain</command> with respect
+ to multi-byte character set usernames. The communication with a
+ Domain Controller must be done in UNICODE and Samba currently
+ does not widen multi-byte user names to UNICODE correctly, thus
+ a multi-byte username will not be recognized correctly at the
+ Domain Controller. This issue will be addressed in a future release.</para>
+
<para>See also the section <link linkend="VALIDATIONSECT">
NOTE ABOUT USERNAME/PASSWORD VALIDATION</link>.</para>
@@ -6855,17 +6947,16 @@ print5|My Printer 5
server</parameter></link> parameter and the <link
linkend="ENCRYPTPASSWORDS"><parameter>encrypted passwords</parameter>
</link> parameter.</para>
-
+
<para>Default: <command>security = USER</command></para>
<para>Example: <command>security = DOMAIN</command></para>
-
</listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="SECURITYMASK"/>security mask (S)</term>
+ <term><anchor id="SECURITYMASK">security mask (S)</term>
<listitem><para>This parameter controls what UNIX permission
bits can be modified when a Windows NT client is manipulating
the UNIX permission on a file using the native NT security
@@ -6900,7 +6991,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SERVERSTRING"/>server string (G)</term>
+ <term><anchor id="SERVERSTRING">server string (G)</term>
<listitem><para>This controls what string will show up in the
printer comment box in print manager and next to the IPC connection
in <command>net view</command>. It can be any string that you wish
@@ -6925,7 +7016,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SETDIRECTORY"/>set directory (S)</term>
+ <term><anchor id="SETDIRECTORY">set directory (S)</term>
<listitem><para>If <command>set directory = no</command>, then
users of the service may not use the setdir command to change
directory.</para>
@@ -6941,7 +7032,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SHAREMODES"/>share modes (S)</term>
+ <term><anchor id="SHAREMODES">share modes (S)</term>
<listitem><para>This enables or disables the honoring of
the <parameter>share modes</parameter> during a file open. These
modes are used by clients to gain exclusive read or write access
@@ -6970,7 +7061,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SHORTPRESERVECASE"/>short preserve case (S)</term>
+ <term><anchor id="SHORTPRESERVECASE">short preserve case (S)</term>
<listitem><para>This boolean parameter controls if new files
which conform to 8.3 syntax, that is all in upper case and of
suitable length, are created upper case, or if they are forced
@@ -6990,7 +7081,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SHOWADDPRINTERWIZARD"/>show add printer wizard (G)</term>
+ <term><anchor id="SHOWADDPRINTERWIZARD">show add printer wizard (G)</term>
<listitem><para>With the introduction of MS-RPC based printing support
for Windows NT/2000 client in Samba 2.2, a "Printers..." folder will
appear on Samba hosts in the share listing. Normally this folder will
@@ -7025,7 +7116,7 @@ print5|My Printer 5
<varlistentry>
- <term><anchor id="SHUTDOWNSCRIPT"/>shutdown script (G)</term>
+ <term><anchor id="SHUTDOWNSCRIPT">shutdown script (G)</term>
<listitem><para><emphasis>This parameter only exists in the HEAD cvs branch</emphasis>
This a full path name to a script called by
<ulink url="smbd.8.html"><command>smbd(8)</command></ulink> that
@@ -7051,15 +7142,15 @@ print5|My Printer 5
<para>Default: <emphasis>None</emphasis>.</para>
<para>Example: <command>abort shutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f</command></para>
<para>Shutdown script example:
-<programlisting>
-#!/bin/bash
+ <programlisting>
+ #!/bin/bash
-$time=0
-let "time/60"
-let "time++"
+ $time=0
+ let "time/60"
+ let "time++"
-/sbin/shutdown $3 $4 +$time $1 &amp;
-</programlisting>
+ /sbin/shutdown $3 $4 +$time $1 &
+ </programlisting>
Shutdown does not return so we need to launch it in background.
</para>
@@ -7069,7 +7160,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SMBPASSWDFILE"/>smb passwd file (G)</term>
+ <term><anchor id="SMBPASSWDFILE">smb passwd file (G)</term>
<listitem><para>This option sets the path to the encrypted
smbpasswd file. By default the path to the smbpasswd file
is compiled into Samba.</para>
@@ -7084,7 +7175,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SMBPORTS"/>smb ports (G)</term>
+ <term><anchor id="SMBPORTS">smb ports (G)</term>
<listitem><para>Specifies which ports the server should listen on
for SMB traffic.
</para>
@@ -7095,7 +7186,7 @@ let "time++"
</varlistentry>
<varlistentry>
- <term><anchor id="SOCKETADDRESS"/>socket address (G)</term>
+ <term><anchor id="SOCKETADDRESS">socket address (G)</term>
<listitem><para>This option allows you to control what
address Samba will listen for connections on. This is used to
support multiple virtual interfaces on the one server, each
@@ -7112,7 +7203,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SOCKETOPTIONS"/>socket options (G)</term>
+ <term><anchor id="SOCKETOPTIONS">socket options (G)</term>
<listitem><para>This option allows you to set socket options
to be used when talking with the client.</para>
@@ -7185,7 +7276,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SOURCEENVIRONMENT"/>source environment (G)</term>
+ <term><anchor id="SOURCEENVIRONMENT">source environment (G)</term>
<listitem><para>This parameter causes Samba to set environment
variables as per the content of the file named.</para>
@@ -7207,23 +7298,17 @@ let "time++"
/usr/local/smb_env_vars</command></para>
</listitem>
</varlistentry>
+<varlistentry>
+<term><anchor id="SPNEGO">use spnego (G)</term>
+<listitem><para> This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism. As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller. It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.</para>
+<para>Default: <emphasis>use spnego = yes</emphasis></para>
+</listitem>
+</varlistentry>
<varlistentry>
- <term><anchor id="SPNEGO"/>use spnego (G)</term>
- <listitem><para> This variable controls controls whether samba will try
- to use Simple and Protected NEGOciation (as specified by rfc2478) with
- WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism.
- Unless further issues are discovered with our SPNEGO
- implementation, there is no reason this should ever be
- disabled.</para>
- <para>Default: <emphasis>use spnego = yes</emphasis></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><anchor id="STATCACHE"/>stat cache (G)</term>
- <listitem><para>This parameter determines if <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will use a cache in order to
+ <term><anchor id="STATCACHE">stat cache (G)</term>
+ <listitem><para>This parameter determines if <ulink
+ url="smbd.8.html">smbd(8)</ulink> will use a cache in order to
speed up case insensitive name mappings. You should never need
to change this parameter.</para>
@@ -7232,7 +7317,7 @@ let "time++"
</varlistentry>
<varlistentry>
- <term><anchor id="STATCACHESIZE"/>stat cache size (G)</term>
+ <term><anchor id="STATCACHESIZE">stat cache size (G)</term>
<listitem><para>This parameter determines the number of
entries in the <parameter>stat cache</parameter>. You should
never need to change this parameter.</para>
@@ -7244,7 +7329,7 @@ let "time++"
<varlistentry>
- <term><anchor id="STRICTALLOCATE"/>strict allocate (S)</term>
+ <term><anchor id="STRICTALLOCATE">strict allocate (S)</term>
<listitem><para>This is a boolean that controls the handling of
disk space allocation in the server. When this is set to <constant>yes</constant>
the server will change from UNIX behaviour of not committing real
@@ -7268,7 +7353,7 @@ let "time++"
<varlistentry>
- <term><anchor id="STRICTLOCKING"/>strict locking (S)</term>
+ <term><anchor id="STRICTLOCKING">strict locking (S)</term>
<listitem><para>This is a boolean that controls the handling of
file locking in the server. When this is set to <constant>yes</constant>
the server will check every read and write access for file locks, and
@@ -7288,7 +7373,7 @@ let "time++"
<varlistentry>
- <term><anchor id="STRICTSYNC"/>strict sync (S)</term>
+ <term><anchor id="STRICTSYNC">strict sync (S)</term>
<listitem><para>Many Windows applications (including the Windows
98 explorer shell) seem to confuse flushing buffer contents to
disk with doing a sync to disk. Under UNIX, a sync call forces
@@ -7296,8 +7381,7 @@ let "time++"
all outstanding data in kernel disk buffers has been safely stored
onto stable storage. This is very slow and should only be done
rarely. Setting this parameter to <constant>no</constant> (the
- default) means that <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> ignores the Windows applications requests for
+ default) means that <ulink url="smbd.8.html">smbd</ulink> ignores the Windows applications requests for
a sync call. There is only a possibility of losing data if the
operating system itself that Samba is running on crashes, so there is
little danger in this default setting. In addition, this fixes many
@@ -7313,7 +7397,7 @@ let "time++"
<varlistentry>
- <term><anchor id="STRIPDOT"/>strip dot (G)</term>
+ <term><anchor id="STRIPDOT">strip dot (G)</term>
<listitem><para>This is a boolean that controls whether to
strip trailing dots off UNIX filenames. This helps with some
CDROMs that have filenames ending in a single dot.</para>
@@ -7325,7 +7409,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SYNCALWAYS"/>sync always (S)</term>
+ <term><anchor id="SYNCALWAYS">sync always (S)</term>
<listitem><para>This is a boolean parameter that controls
whether writes will always be written to stable storage before
the write call returns. If this is <constant>no</constant> then the server will be
@@ -7347,7 +7431,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SYSLOG"/>syslog (G)</term>
+ <term><anchor id="SYSLOG">syslog (G)</term>
<listitem><para>This parameter maps how Samba debug messages
are logged onto the system syslog logging levels. Samba debug
level zero maps onto syslog <constant>LOG_ERR</constant>, debug
@@ -7367,7 +7451,7 @@ let "time++"
<varlistentry>
- <term><anchor id="SYSLOGONLY"/>syslog only (G)</term>
+ <term><anchor id="SYSLOGONLY">syslog only (G)</term>
<listitem><para>If this parameter is set then Samba debug
messages are logged into the system syslog only, and not to
the debug log files.</para>
@@ -7379,7 +7463,7 @@ let "time++"
<varlistentry>
- <term><anchor id="TEMPLATEHOMEDIR"/>template homedir (G)</term>
+ <term><anchor id="TEMPLATEHOMEDIR">template homedir (G)</term>
<listitem><para>When filling out the user information for a Windows NT
user, the <ulink url="winbindd.8.html">winbindd(8)</ulink> daemon
uses this parameter to fill in the home directory for that user.
@@ -7395,10 +7479,9 @@ let "time++"
<varlistentry>
- <term><anchor id="TEMPLATESHELL"/>template shell (G)</term>
+ <term><anchor id="TEMPLATESHELL">template shell (G)</term>
<listitem><para>When filling out the user information for a Windows NT
- user, the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon
+ user, the <ulink url="winbindd.8.html">winbindd(8)</ulink> daemon
uses this parameter to fill in the login shell for that user.</para>
<para>Default: <command>template shell = /bin/false</command></para>
@@ -7408,7 +7491,7 @@ let "time++"
<varlistentry>
- <term><anchor id="TIMEOFFSET"/>time offset (G)</term>
+ <term><anchor id="TIMEOFFSET">time offset (G)</term>
<listitem><para>This parameter is a setting in minutes to add
to the normal GMT to local time conversion. This is useful if
you are serving a lot of PCs that have incorrect daylight
@@ -7422,9 +7505,9 @@ let "time++"
<varlistentry>
- <term><anchor id="TIMESERVER"/>time server (G)</term>
- <listitem><para>This parameter determines if <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> advertises itself as a time server to Windows
+ <term><anchor id="TIMESERVER">time server (G)</term>
+ <listitem><para>This parameter determines if <ulink url="nmbd.8.html">
+ nmbd(8)</ulink> advertises itself as a time server to Windows
clients.</para>
<para>Default: <command>time server = no</command></para>
@@ -7433,7 +7516,7 @@ let "time++"
<varlistentry>
- <term><anchor id="TIMESTAMPLOGS"/>timestamp logs (G)</term>
+ <term><anchor id="TIMESTAMPLOGS">timestamp logs (G)</term>
<listitem><para>Synonym for <link linkend="DEBUGTIMESTAMP"><parameter>
debug timestamp</parameter></link>.</para>
</listitem>
@@ -7444,17 +7527,16 @@ let "time++"
<varlistentry>
- <term><anchor id="TOTALPRINTJOBS"/>total print jobs (G)</term>
+ <term><anchor id="TOTALPRINTJOBS">total print jobs (G)</term>
<listitem><para>This parameter accepts an integer value which defines
a limit on the maximum number of print jobs that will be accepted
system wide at any given time. If a print job is submitted
- by a client which will exceed this number, then <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> will return an
+ by a client which will exceed this number, then <ulink url="smbd.8.html">smbd</ulink> will return an
error indicating that no space is available on the server. The
default value of 0 means that no such limit exists. This parameter
can be used to prevent a server from exceeding its capacity and is
designed as a printing throttle. See also
- <link linkend="MAXPRINTJOBS"><parameter>max print jobs</parameter></link>.
+ <link linkend="MAXPRINTJOBS"><parameter>max print jobs</parameter</link>.
</para>
<para>Default: <command>total print jobs = 0</command></para>
@@ -7463,7 +7545,7 @@ let "time++"
</varlistentry>
<varlistentry>
- <term><anchor id="UNICODE"/>unicode (G)</term>
+ <term><anchor id="UNICODE">unicode (G)</term>
<listitem><para>Specifies whether Samba should try
to use unicode on the wire by default. Note: This does NOT
mean that samba will assume that the unix machine uses unicode!
@@ -7475,19 +7557,19 @@ let "time++"
</varlistentry>
<varlistentry>
- <term><anchor id="UNIXCHARSET"/>unix charset (G)</term>
+ <term><anchor id="UNIXCHARSET">unix charset (G)</term>
<listitem><para>Specifies the charset the unix machine
Samba runs on uses. Samba needs to know this in order to be able to
convert text to the charsets other SMB clients use.
</para>
- <para>Default: <command>unix charset = UTF8</command></para>
- <para>Example: <command>unix charset = ASCII</command></para>
+ <para>Default: <command>unix charset = ASCII</command></para>
+ <para>Example: <command>unix charset = UTF8</command></para>
</listitem>
</varlistentry>
<varlistentry>
- <term><anchor id="UNIXEXTENSIONS"/>unix extensions(G)</term>
+ <term><anchor id="UNIXEXTENSIONS">unix extensions(G)</term>
<listitem><para>This boolean parameter controls whether Samba
implments the CIFS UNIX extensions, as defined by HP.
These extensions enable Samba to better serve UNIX CIFS clients
@@ -7503,7 +7585,7 @@ let "time++"
<varlistentry>
- <term><anchor id="UNIXPASSWORDSYNC"/>unix password sync (G)</term>
+ <term><anchor id="UNIXPASSWORDSYNC">unix password sync (G)</term>
<listitem><para>This boolean parameter controls whether Samba
attempts to synchronize the UNIX password with the SMB password
when the encrypted SMB password in the smbpasswd file is changed.
@@ -7524,7 +7606,7 @@ let "time++"
<varlistentry>
- <term><anchor id="UPDATEENCRYPTED"/>update encrypted (G)</term>
+ <term><anchor id="UPDATEENCRYPTED">update encrypted (G)</term>
<listitem><para>This boolean parameter allows a user logging
on with a plaintext password to have their encrypted (hashed)
password in the smbpasswd file to be updated automatically as
@@ -7555,7 +7637,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USECLIENTDRIVER"/>use client driver (S)</term>
+ <term><anchor id="USECLIENTDRIVER">use client driver (S)</term>
<listitem><para>This parameter applies only to Windows NT/2000
clients. It has no affect on Windows 95/98/ME clients. When
serving a printer to Windows NT/2000 clients without first installing
@@ -7593,7 +7675,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USEMMAP"/>use mmap (G)</term>
+ <term><anchor id="USEMMAP">use mmap (G)</term>
<listitem><para>This global parameter determines if the tdb internals of Samba can
depend on mmap working correctly on the running system. Samba requires a coherent
mmap/read-write system memory cache. Currently only HPUX does not have such a
@@ -7611,7 +7693,27 @@ let "time++"
<varlistentry>
- <term><anchor id="USER"/>user (S)</term>
+ <term><anchor id="USERHOSTS">use rhosts (G)</term>
+ <listitem><para>If this global parameter is <constant>yes</constant>, it specifies
+ that the UNIX user's <filename>.rhosts</filename> file in their home directory
+ will be read to find the names of hosts and users who will be allowed
+ access without specifying a password.</para>
+
+ <para><emphasis>NOTE:</emphasis> The use of <parameter>use rhosts
+ </parameter> can be a major security hole. This is because you are
+ trusting the PC to supply the correct username. It is very easy to
+ get a PC to supply a false username. I recommend that the <parameter>
+ use rhosts</parameter> option be only used if you really know what
+ you are doing.</para>
+
+ <para>Default: <command>use rhosts = no</command></para>
+ </listitem>
+ </varlistentry>
+
+
+
+ <varlistentry>
+ <term><anchor id="USER">user (S)</term>
<listitem><para>Synonym for <link linkend="USERNAME"><parameter>
username</parameter></link>.</para>
</listitem>
@@ -7620,7 +7722,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USERS"/>users (S)</term>
+ <term><anchor id="USERS">users (S)</term>
<listitem><para>Synonym for <link linkend="USERNAME"><parameter>
username</parameter></link>.</para>
</listitem>
@@ -7628,7 +7730,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USERNAME"/>username (S)</term>
+ <term><anchor id="USERNAME">username (S)</term>
<listitem><para>Multiple users may be specified in a comma-delimited
list, in which case the supplied password will be tested against
each username in turn (left to right).</para>
@@ -7669,7 +7771,7 @@ let "time++"
will be looked up only in the UNIX groups database and will
expand to a list of all users in the group of that name.</para>
- <para>If any of the usernames begin with a '&amp;' then the name
+ <para>If any of the usernames begin with a '&'then the name
will be looked up only in the NIS netgroups database (if Samba
is compiled with netgroup support) and will expand to a list
of all users in the netgroup group of that name.</para>
@@ -7693,7 +7795,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USERNAMELEVEL"/>username level (G)</term>
+ <term><anchor id="USERNAMELEVEL">username level (G)</term>
<listitem><para>This option helps Samba to try and 'guess' at
the real UNIX username, as many DOS clients send an all-uppercase
username. By default Samba tries all lowercase, followed by the
@@ -7716,7 +7818,7 @@ let "time++"
<varlistentry>
- <term><anchor id="USERNAMEMAP"/>username map (G)</term>
+ <term><anchor id="USERNAMEMAP">username map (G)</term>
<listitem><para>This option allows you to specify a file containing
a mapping of usernames from the clients to the server. This can be
used for several purposes. The most common is to map usernames
@@ -7779,10 +7881,10 @@ let "time++"
'!' to tell Samba to stop processing if it gets a match on
that line.</para>
-<para><programlisting>
-!sys = mary fred
-guest = *
-</programlisting></para>
+ <para><programlisting>
+ !sys = mary fred
+ guest = *
+ </programlisting></para>
<para>Note that the remapping is applied to all occurrences
of usernames. Thus if you connect to \\server\fred and <constant>
@@ -7808,7 +7910,7 @@ guest = *
<varlistentry>
- <term><anchor id="USESENDFILE"/>use sendfile (S)</term>
+ <term><anchor id="USESENDFILE">use sendfile (S)</term>
<listitem><para>If this parameter is <constant>yes</constant>, and Samba
was built with the --with-sendfile-support option, and the underlying operating
system supports sendfile system call, then some SMB read calls (mainly ReadAndX
@@ -7825,7 +7927,7 @@ guest = *
<varlistentry>
- <term><anchor id="UTMP"/>utmp (G)</term>
+ <term><anchor id="UTMP">utmp (G)</term>
<listitem><para>This boolean parameter is only available if
Samba has been configured and compiled with the option <command>
--with-utmp</command>. If set to <constant>yes</constant> then Samba will attempt
@@ -7847,7 +7949,7 @@ guest = *
</varlistentry>
<varlistentry>
- <term><anchor id="UTMPDIRECTORY"/>utmp directory(G)</term>
+ <term><anchor id="UTMPDIRECTORY">utmp directory(G)</term>
<listitem><para>This parameter is only available if Samba has
been configured and compiled with the option <command>
--with-utmp</command>. It specifies a directory pathname that is
@@ -7864,7 +7966,7 @@ guest = *
</varlistentry>
<varlistentry>
- <term><anchor id="WTMPDIRECTORY"/>wtmp directory(G)</term>
+ <term><anchor id="WTMPDIRECTORY">wtmp directory(G)</term>
<listitem><para>This parameter is only available if Samba has
been configured and compiled with the option <command>
--with-utmp</command>. It specifies a directory pathname that is
@@ -7886,9 +7988,9 @@ guest = *
<varlistentry>
- <term><anchor id="VALIDUSERS"/>valid users (S)</term>
+ <term><anchor id="VALIDUSERS">valid users (S)</term>
<listitem><para>This is a list of users that should be allowed
- to login to this service. Names starting with '@', '+' and '&amp;'
+ to login to this service. Names starting with '@', '+' and '&'
are interpreted using the same rules as described in the
<parameter>invalid users</parameter> parameter.</para>
@@ -7913,7 +8015,7 @@ guest = *
<varlistentry>
- <term><anchor id="VETOFILES"/>veto files(S)</term>
+ <term><anchor id="VETOFILES">veto files(S)</term>
<listitem><para>This is a list of files and directories that
are neither visible nor accessible. Each entry in the list must
be separated by a '/', which allows spaces to be included
@@ -7961,7 +8063,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="VETOOPLOCKFILES"/>veto oplock files (S)</term>
+ <term><anchor id="VETOOPLOCKFILES">veto oplock files (S)</term>
<listitem><para>This parameter is only valid when the <link
linkend="OPLOCKS"><parameter>oplocks</parameter></link>
parameter is turned on for a share. It allows the Samba administrator
@@ -7987,7 +8089,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
</varlistentry>
<varlistentry>
- <term><anchor id="VFSPATH"/>vfs path (S)</term>
+ <term><anchor id="VFSPATH">vfs path (S)</term>
<listitem><para>This parameter specifies the directory
to look in for vfs modules. The name of every <command>vfs object
</command> will be prepended by this directory
@@ -8000,7 +8102,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
</varlistentry>
<varlistentry>
- <term><anchor id="VFSOBJECT"/>vfs object (S)</term>
+ <term><anchor id="VFSOBJECT">vfs object (S)</term>
<listitem><para>This parameter specifies a shared object files that
are used for Samba VFS I/O operations. By default, normal
disk I/O operations are used but these can be overloaded
@@ -8014,7 +8116,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="VFSOPTIONS"/>vfs options (S)</term>
+ <term><anchor id="VFSOPTIONS">vfs options (S)</term>
<listitem><para>This parameter allows parameters to be passed
to the vfs layer at initialization time.
See also <link linkend="VFSOBJECT"><parameter>
@@ -8027,7 +8129,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="VOLUME"/>volume (S)</term>
+ <term><anchor id="VOLUME">volume (S)</term>
<listitem><para> This allows you to override the volume label
returned for a share. Useful for CDROMs with installation programs
that insist on a particular volume label.</para>
@@ -8039,7 +8141,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WIDELINKS"/>wide links (S)</term>
+ <term><anchor id="WIDELINKS">wide links (S)</term>
<listitem><para>This parameter controls whether or not links
in the UNIX file system may be followed by the server. Links
that point to areas within the directory tree exported by the
@@ -8058,10 +8160,9 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDCACHETIME"/>winbind cache time (G)</term>
- <listitem><para>This parameter specifies the number of
- seconds the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon will cache
+ <term><anchor id="WINBINDCACHETIME">winbind cache time (G)</term>
+ <listitem><para>This parameter specifies the number of seconds the
+ <ulink url="winbindd.8.html">winbindd(8)</ulink> daemon will cache
user and group information before querying a Windows NT server
again.</para>
@@ -8071,10 +8172,11 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDENUMUSERS"/>winbind enum users (G)</term>
- <listitem><para>On large installations using <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> it may be
- necessary to suppress the enumeration of users through the <command>setpwent()</command>,
+ <term><anchor id="WINBINDENUMUSERS">winbind enum users (G)</term>
+ <listitem><para>On large installations using
+ <ulink url="winbindd.8.html">winbindd(8)</ulink> it may be
+ necessary to suppress the enumeration of users through the
+ <command> setpwent()</command>,
<command>getpwent()</command> and
<command>endpwent()</command> group of system calls. If
the <parameter>winbind enum users</parameter> parameter is
@@ -8092,10 +8194,11 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
</varlistentry>
<varlistentry>
- <term><anchor id="WINBINDENUMGROUPS"/>winbind enum groups (G)</term>
- <listitem><para>On large installations using <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> it may be necessary to suppress
- the enumeration of groups through the <command>setgrent()</command>,
+ <term><anchor id="WINBINDENUMGROUPS">winbind enum groups (G)</term>
+ <listitem><para>On large installations using
+ <ulink url="winbindd.8.html">winbindd(8)</ulink> it may be
+ necessary to suppress the enumeration of groups through the
+ <command> setgrent()</command>,
<command>getgrent()</command> and
<command>endgrent()</command> group of system calls. If
the <parameter>winbind enum groups</parameter> parameter is
@@ -8112,10 +8215,10 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDGID"/>winbind gid (G)</term>
+ <term><anchor id="WINBINDGID">winbind gid (G)</term>
<listitem><para>The winbind gid parameter specifies the range of group
- ids that are allocated by the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon. This range of group ids should have no
+ ids that are allocated by the <ulink url="winbindd.8.html">
+ winbindd(8)</ulink> daemon. This range of group ids should have no
existing local or NIS groups within it as strange conflicts can
occur otherwise.</para>
@@ -8128,7 +8231,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDSEPARATOR"/>winbind separator (G)</term>
+ <term><anchor id="WINBINDSEPARATOR">winbind separator (G)</term>
<listitem><para>This parameter allows an admin to define the character
used when listing a username of the form of <replaceable>DOMAIN
</replaceable>\<replaceable>user</replaceable>. This parameter
@@ -8149,10 +8252,10 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDUID"/>winbind uid (G)</term>
+ <term><anchor id="WINBINDUID">winbind uid (G)</term>
<listitem><para>The winbind gid parameter specifies the range of group
- ids that are allocated by the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon. This range of ids should have no
+ ids that are allocated by the <ulink url="winbindd.8.html">
+ winbindd(8)</ulink> daemon. This range of ids should have no
existing local or NIS users within it as strange conflicts can
occur otherwise.</para>
@@ -8165,10 +8268,12 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINBINDUSEDEFAULTDOMAIN"/>winbind use default domain (G)</term>
- <listitem><para>This parameter specifies whether the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon should operate on users
- without domain component in their username.
+ <term>winbind use default domain</term>
+
+ <term><anchor id="WINBINDUSEDEFAULTDOMAIN">winbind use default domain (G)</term>
+ <listitem><para>This parameter specifies whether the <ulink url="winbindd.8.html">
+ winbindd(8)</ulink>
+ daemon should operate on users without domain component in their username.
Users without a domain component are treated as is part of the winbindd server's
own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
function in a way much closer to the way they would in a native unix system.</para>
@@ -8181,7 +8286,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINSHOOK"/>wins hook (G)</term>
+ <term><anchor id="WINSHOOK">wins hook (G)</term>
<listitem><para>When Samba is running as a WINS server this
allows you to call an external program for all changes to the
WINS database. The primary use for this option is to allow the
@@ -8229,7 +8334,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINSPROXY"/>wins proxy (G)</term>
+ <term><anchor id="WINSPROXY">wins proxy (G)</term>
<listitem><para>This is a boolean that controls if <ulink
url="nmbd.8.html">nmbd(8)</ulink> will respond to broadcast name
queries on behalf of other hosts. You may need to set this
@@ -8243,10 +8348,10 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINSSERVER"/>wins server (G)</term>
+ <term><anchor id="WINSSERVER">wins server (G)</term>
<listitem><para>This specifies the IP address (or DNS name: IP
- address for preference) of the WINS server that <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> should register with. If you have a WINS server on
+ address for preference) of the WINS server that <ulink url="nmbd.8.html">
+ nmbd(8)</ulink> should register with. If you have a WINS server on
your network then you should set this to the WINS server's IP.</para>
<para>You should point this at your WINS server if you have a
@@ -8256,7 +8361,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
to a WINS server if you have multiple subnets and wish cross-subnet
browsing to work correctly.</para>
- <para>See the documentation file <ulink url="improved-browsing.html">BROWSING</ulink>
+ <para>See the documentation file <filename>BROWSING.txt</filename>
in the docs/ directory of your Samba source distribution.</para>
<para>Default: <emphasis>not enabled</emphasis></para>
@@ -8267,9 +8372,9 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINSSUPPORT"/>wins support (G)</term>
- <listitem><para>This boolean controls if the <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> process in Samba will act as a WINS server. You should
+ <term><anchor id="WINSSUPPORT">wins support (G)</term>
+ <listitem><para>This boolean controls if the <ulink url="nmbd.8.html">
+ nmbd(8)</ulink> process in Samba will act as a WINS server. You should
not set this to <constant>yes</constant> unless you have a multi-subnetted network and
you wish a particular <command>nmbd</command> to be your WINS server.
Note that you should <emphasis>NEVER</emphasis> set this to <constant>yes</constant>
@@ -8282,7 +8387,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WORKGROUP"/>workgroup (G)</term>
+ <term><anchor id="WORKGROUP">workgroup (G)</term>
<listitem><para>This controls what workgroup your server will
appear to be in when queried by clients. Note that this parameter
also controls the Domain name used with the <link
@@ -8298,7 +8403,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITABLE"/>writable (S)</term>
+ <term><anchor id="WRITABLE">writable (S)</term>
<listitem><para>Synonym for <link linkend="WRITEABLE"><parameter>
writeable</parameter></link> for people who can't spell :-).</para>
</listitem>
@@ -8307,7 +8412,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITECACHESIZE"/>write cache size (S)</term>
+ <term><anchor id="WRITECACHESIZE">write cache size (S)</term>
<listitem><para>If this integer parameter is set to non-zero value,
Samba will create an in-memory cache for each oplocked file
(it does <emphasis>not</emphasis> do this for
@@ -8339,7 +8444,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITELIST"/>write list (S)</term>
+ <term><anchor id="WRITELIST">write list (S)</term>
<listitem><para>This is a list of users that are given read-write
access to a service. If the connecting user is in this list then
they will be given write access, no matter what the <link
@@ -8364,7 +8469,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WINSPARTNERS"/>wins partners (G)</term>
+ <term><anchor id="WINSPARTNERS">wins partners (G)</term>
<listitem><para>A space separated list of partners' IP addresses for
WINS replication. WINS partners are always defined as push/pull
partners as defining only one way WINS replication is unreliable.
@@ -8380,7 +8485,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITEOK"/>write ok (S)</term>
+ <term><anchor id="WRITEOK">write ok (S)</term>
<listitem><para>Inverted synonym for <link linkend="READONLY"><parameter>
read only</parameter></link>.</para>
</listitem>
@@ -8389,7 +8494,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITERAW"/>write raw (G)</term>
+ <term><anchor id="WRITERAW">write raw (G)</term>
<listitem><para>This parameter controls whether or not the server
will support raw write SMB's when transferring data from clients.
You should never need to change this parameter.</para>
@@ -8401,7 +8506,7 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<varlistentry>
- <term><anchor id="WRITEABLE"/>writeable (S)</term>
+ <term><anchor id="WRITEABLE">writeable (S)</term>
<listitem><para>Inverted synonym for <link linkend="READONLY"><parameter>
read only</parameter></link>.</para>
</listitem>
@@ -8421,8 +8526,8 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
problem - but be aware of the possibility.</para>
<para>On a similar note, many clients - especially DOS clients -
- limit service names to eight characters. <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> has no such limitation, but attempts to connect from such
+ limit service names to eight characters. <ulink url="smbd.8.html">smbd(8)
+ </ulink> has no such limitation, but attempts to connect from such
clients will fail if they truncate the service names. For this reason
you should probably keep your service names down to eight characters
in length.</para>
@@ -8437,22 +8542,22 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 3.0 of the Samba suite.</para>
+ <para>This man page is correct for version 3.0 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
- <para>
- <citerefentry><refentrytitle>samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>swat</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmblookup</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testprns</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>.</para>
+ <para><ulink url="samba.7.html">samba(7)</ulink>,
+ <ulink url="smbpasswd.8.html"><command>smbpasswd(8)</command></ulink>,
+ <ulink url="swat.8.html"><command>swat(8)</command></ulink>,
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="nmbd.8.html"><command>nmbd(8)</command></ulink>,
+ <ulink url="smbclient.1.html"><command>smbclient(1)</command></ulink>,
+ <ulink url="nmblookup.1.html"><command>nmblookup(1)</command></ulink>,
+ <ulink url="testparm.1.html"><command>testparm(1)</command></ulink>,
+ <ulink url="testprns.1.html"><command>testprns(1)</command></ulink>
+ </para>
</refsect1>
<refsect1>
@@ -8465,11 +8570,11 @@ veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbcacls.1.sgml b/docs/docbook/manpages/smbcacls.1.sgml
index 5e0e6c80e9..766d2a78b1 100644
--- a/docs/docbook/manpages/smbcacls.1.sgml
+++ b/docs/docbook/manpages/smbcacls.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbcacls.1">
+<refentry id="smbcacls">
<refmeta>
<refentrytitle>smbcacls</refentrytitle>
@@ -32,8 +32,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>The <command>smbcacls</command> program manipulates NT Access Control
Lists (ACLs) on SMB file shares. </para>
@@ -90,8 +90,7 @@
<listitem><para>Specifies a username used to connect to the
specified service. The username may be of the form "username" in
which case the user is prompted to enter in a password and the
- workgroup specified in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file is
+ workgroup specified in the <filename>smb.conf</filename> file is
used, or "username%password" or "DOMAIN\username%password" and the
password and workgroup names are used as provided. </para></listitem>
</varlistentry>
@@ -148,12 +147,12 @@
<para>The format of an ACL is one or more ACL entries separated by
either commas or newlines. An ACL entry is one of the following: </para>
-<para><programlisting>
+ <para><programlisting>
REVISION:&lt;revision number&gt;
OWNER:&lt;sid or name&gt;
GROUP:&lt;sid or name&gt;
ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;
-</programlisting></para>
+ </programlisting></para>
<para>The revision of the ACL specifies the internal Windows
@@ -166,22 +165,24 @@ ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;
otherwise the name specified is resolved using the server on which
the file or directory resides. </para>
- <para>ACLs specify permissions granted to the SID. This SID again
- can be specified in CWS-1-x-y-z format or as a name in which case
- it is resolved against the server on which the file or directory
- resides. The type, flags and mask values determine the type of
- access granted to the SID. </para>
-
- <para>The type can be either 0 or 1 corresponding to ALLOWED or
- DENIED access to the SID. The flags values are generally
- zero for file ACLs and either 9 or 2 for directory ACLs. Some
- common flags are: </para>
-
- <itemizedlist>
- <listitem><para><constant>#define SEC_ACE_FLAG_OBJECT_INHERIT 0x1</constant></para></listitem>
- <listitem><para><constant>#define SEC_ACE_FLAG_CONTAINER_INHERIT 0x2</constant></para></listitem>
- <listitem><para><constant>#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4</constant></para></listitem>
- <listitem><para><constant>#define SEC_ACE_FLAG_INHERIT_ONLY 0x8</constant></para></listitem>
+ <para>ACLs specify permissions granted to the SID. This SID again
+ can be specified in CWS-1-x-y-z format or as a name in which case
+ it is resolved against the server on which the file or directory
+ resides. The type, flags and mask values determine the type of
+ access granted to the SID. </para>
+
+ <para>The type can be either 0 or 1 corresponding to ALLOWED or
+ DENIED access to the SID. The flags values are generally
+ zero for file ACLs and either 9 or 2 for directory ACLs. Some
+ common flags are: </para>
+
+ <itemizedlist>
+ <listitem><para>#define SEC_ACE_FLAG_OBJECT_INHERIT 0x1</para></listitem>
+ <listitem><para>#define SEC_ACE_FLAG_CONTAINER_INHERIT 0x2</para></listitem>
+ <listitem><para>#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4
+ </para></listitem>
+ <listitem><para>#define SEC_ACE_FLAG_INHERIT_ONLY 0x8</para>
+ </listitem>
</itemizedlist>
<para>At present flags can only be specified as decimal or
@@ -232,7 +233,8 @@ ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 2.2 of the Samba suite.</para>
+ <para>This man page is correct for version 2.2 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
@@ -247,8 +249,7 @@ ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;
and Tim Potter.</para>
<para>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was done
- by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbclient.1.sgml b/docs/docbook/manpages/smbclient.1.sgml
index a08f6999e4..43994a4529 100644
--- a/docs/docbook/manpages/smbclient.1.sgml
+++ b/docs/docbook/manpages/smbclient.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbclient.1">
+<refentry id="smbclient">
<refmeta>
<refentrytitle>smbclient</refentrytitle>
@@ -38,20 +38,18 @@
<arg choice="opt">-R &lt;name resolve order&gt;</arg>
<arg choice="opt">-s &lt;smb config file&gt;</arg>
<arg choice="opt">-T&lt;c|x&gt;IXFqgbNan</arg>
- <arg choice="opt">-k</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>smbclient</command> is a client that can
'talk' to an SMB/CIFS server. It offers an interface
- similar to that of the ftp program (see <citerefentry><refentrytitle>ftp</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>).
+ similar to that of the ftp program (see <command>ftp(1)</command>).
Operations include things like getting files from the server
to the local machine, putting files from the local machine to
the server, retrieving directory information from the server
@@ -83,9 +81,7 @@
<para>The server name is looked up according to either
the <parameter>-R</parameter> parameter to <command>smbclient</command> or
- using the name resolve order parameter in
- the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file,
+ using the name resolve order parameter in the <filename>smb.conf</filename> file,
allowing an administrator to change the order and methods
by which server names are looked up. </para></listitem>
</varlistentry>
@@ -117,17 +113,15 @@
<varlistentry>
<term>-s smb.conf</term>
- <listitem><para>Specifies the location of the all
- important <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file. </para></listitem>
+ <listitem><para>Specifies the location of the all important
+ <filename>smb.conf</filename> file. </para></listitem>
</varlistentry>
<varlistentry>
<term>-O socket options</term>
<listitem><para>TCP socket options to set on the client
- socket. See the socket options parameter in
- the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> manual page for the list of valid
+ socket. See the socket options parameter in the <filename>
+ smb.conf (5)</filename> manpage for the list of valid
options. </para></listitem>
</varlistentry>
@@ -140,51 +134,44 @@
string of different name resolution options.</para>
<para>The options are :"lmhosts", "host", "wins" and "bcast". They
- cause names to be resolved as follows:</para>
+ cause names to be resolved as follows :</para>
<itemizedlist>
- <listitem><para><constant>lmhosts</constant>: Lookup an IP
+ <listitem><para><constant>lmhosts</constant> : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
- no name type attached to the NetBIOS name (see
- the <citerefentry><refentrytitle>lmhosts</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for details) then
- any name type matches for lookup.</para>
- </listitem>
-
- <listitem><para><constant>host</constant>: Do a standard host
+ no name type attached to the NetBIOS name (see the <ulink
+ url="lmhosts.5.html">lmhosts(5)</ulink> for details) then
+ any name type matches for lookup.</para></listitem>
+
+ <listitem><para><constant>host</constant> : Do a standard host
name to IP address resolution, using the system <filename>/etc/hosts
</filename>, NIS, or DNS lookups. This method of name resolution
is operating system dependent, for instance on IRIX or Solaris this
may be controlled by the <filename>/etc/nsswitch.conf</filename>
file). Note that this method is only used if the NetBIOS name
type being queried is the 0x20 (server) name type, otherwise
- it is ignored.</para>
- </listitem>
-
- <listitem><para><constant>wins</constant>: Query a name with
+ it is ignored.</para></listitem>
+
+ <listitem><para><constant>wins</constant> : Query a name with
the IP address listed in the <parameter>wins server</parameter>
parameter. If no WINS server has
- been specified this method will be ignored.</para>
- </listitem>
-
- <listitem><para><constant>bcast</constant>: Do a broadcast on
+ been specified this method will be ignored.</para></listitem>
+
+ <listitem><para><constant>bcast</constant> : Do a broadcast on
each of the known local interfaces listed in the
<parameter>interfaces</parameter>
parameter. This is the least reliable of the name resolution
methods as it depends on the target host being on a locally
- connected subnet.</para>
- </listitem>
+ connected subnet.</para></listitem>
</itemizedlist>
<para>If this parameter is not set then the name resolve order
- defined in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file parameter
+ defined in the <filename>smb.conf</filename> file parameter
(name resolve order) will be used. </para>
<para>The default order is lmhosts, host, wins, bcast and without
this parameter or any entry in the <parameter>name resolve order
- </parameter> parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file the name resolution
+ </parameter> parameter of the <filename>smb.conf</filename> file the name resolution
methods will be attempted in this order. </para></listitem>
</varlistentry>
@@ -215,8 +202,8 @@
<parameter>-I</parameter> options useful, as they allow you to
control the FROM and TO parts of the message. </para>
- <para>See the <parameter>message command</parameter> parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for a description of how to handle incoming
+ <para>See the message command parameter in the <filename>
+ smb.conf(5)</filename> for a description of how to handle incoming
WinPopup messages in Samba. </para>
<para><emphasis>Note</emphasis>: Copy WinPopup into the startup group
@@ -392,11 +379,11 @@
password used in the connection. The format of the file is
</para>
-<para><programlisting>
+ <para><programlisting>
username = &lt;value&gt;
password = &lt;value&gt;
domain = &lt;value&gt;
-</programlisting></para>
+ </programlisting></para>
<para>If the domain parameter is missing the current workgroup name
@@ -448,9 +435,9 @@ domain = &lt;value&gt;
<varlistentry>
<term>-W WORKGROUP</term>
<listitem><para>Override the default workgroup (domain) specified
- in the workgroup parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file for this connection. This may be
- needed to connect to some servers. </para></listitem>
+ in the workgroup parameter of the <filename>smb.conf</filename>
+ file for this connection. This may be needed to connect to some
+ servers. </para></listitem>
</varlistentry>
@@ -532,7 +519,7 @@ domain = &lt;value&gt;
<para><emphasis>Tar Filenames</emphasis></para>
- <para>All file names can be given as DOS path names (with '\\'
+ <para>All file names can be given as DOS path names (with '\'
as the component separator) or as UNIX path names (with '/' as
the component separator). </para>
@@ -588,14 +575,6 @@ domain = &lt;value&gt;
<para>This is particularly useful in scripts and for printing stdin
to the server, e.g. <command>-c 'print -'</command>. </para></listitem>
</varlistentry>
-
- <varlistentry>
- <term>-k</term>
- <listitem><para>
- Try to authenticate with kerberos. Only useful in
- an Active Directory environment.
- </para></listitem>
- </varlistentry>
</variablelist>
</refsect1>
@@ -608,7 +587,7 @@ domain = &lt;value&gt;
<para><prompt>smb:\&gt; </prompt></para>
- <para>The backslash ("\\") indicates the current working directory
+ <para>The backslash ("\") indicates the current working directory
on the server, and will change if the current working directory
is changed. </para>
@@ -1061,8 +1040,8 @@ domain = &lt;value&gt;
and writeable only by the user. </para>
<para>To test the client, you will need to know the name of a
- running SMB/CIFS server. It is possible to run <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> as an ordinary user - running that server as a daemon
+ running SMB/CIFS server. It is possible to run <command>smbd(8)
+ </command> as an ordinary user - running that server as a daemon
on a user-accessible port (typically any port number over 1024)
would provide a suitable test server. </para>
</refsect1>
@@ -1084,7 +1063,8 @@ domain = &lt;value&gt;
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 2.2 of the Samba suite.</para>
+ <para>This man page is correct for version 2.2 of
+ the Samba suite.</para>
</refsect1>
@@ -1098,11 +1078,11 @@ domain = &lt;value&gt;
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbcontrol.1.sgml b/docs/docbook/manpages/smbcontrol.1.sgml
index 6632e07269..166ef63e87 100644
--- a/docs/docbook/manpages/smbcontrol.1.sgml
+++ b/docs/docbook/manpages/smbcontrol.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbcontrol.1">
+<refentry id="smbcontrol">
<refmeta>
<refentrytitle>smbcontrol</refentrytitle>
@@ -29,14 +29,14 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>smbcontrol</command> is a very small program, which
- sends messages to a <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, a <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, or a <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon running on the system.</para>
+ sends messages to an <ulink url="smbd.8.html">smbd(8)</ulink>,
+ an <ulink url="nmbd.8.html">nmbd(8)</ulink>
+ or a <ulink url="winbindd.8.html">winbindd(8)</ulink>
+ daemon running on the system.</para>
</refsect1>
@@ -54,7 +54,8 @@
<varlistentry>
<term>destination</term>
- <listitem><para>One of <parameter>nmbd</parameter>, <parameter>smbd</parameter> or a process ID.</para>
+ <listitem><para>One of <parameter>nmbd</parameter>
+ <parameter>smbd</parameter> or a process ID.</para>
<para>The <parameter>smbd</parameter> destination causes the
message to "broadcast" to all smbd daemons.</para>
@@ -189,9 +190,9 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>.</para>
+ <para><ulink url="nmbd.8.html"><command>nmbd(8)</command></ulink>,
+ and <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>.
+ </para>
</refsect1>
<refsect1>
@@ -204,11 +205,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbd.8.sgml b/docs/docbook/manpages/smbd.8.sgml
index 32837ba903..9fb80901be 100644
--- a/docs/docbook/manpages/smbd.8.sgml
+++ b/docs/docbook/manpages/smbd.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbd.8">
+<refentry id="smbd">
<refmeta>
<refentrytitle>smbd</refentrytitle>
@@ -32,8 +32,7 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This program is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This program is part of the Samba suite.</para>
<para><command>smbd</command> is the server daemon that
provides filesharing and printing services to Windows clients.
@@ -47,14 +46,15 @@
<para>An extensive description of the services that the
server can provide is given in the man page for the
configuration file controlling the attributes of those
- services (see <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>. This man page will not describe the
+ services (see <ulink url="smb.conf.5.html"><filename>smb.conf(5)
+ </filename></ulink>. This man page will not describe the
services, but will concentrate on the administrative aspects
of running the server.</para>
<para>Please note that there are significant security
- implications to running this server, and the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> manual page should be regarded as mandatory reading before
+ implications to running this server, and the <ulink
+ url="smb.conf.5.html"><filename>smb.conf(5)</filename></ulink>
+ manpage should be regarded as mandatory reading before
proceeding with installation.</para>
<para>A session is created whenever a client requests one.
@@ -160,9 +160,9 @@
data, most of which is extremely cryptic.</para>
<para>Note that specifying this parameter here will
- override the <ulink url="smb.conf.5.html#loglevel"><parameter>log
- level</parameter></ulink> parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file.</para>
+ override the <ulink url="smb.conf.5.html#loglevel">log
+ level</ulink> parameter in the <ulink url="smb.conf.5.html">
+ <filename>smb.conf(5)</filename></ulink> file.</para>
</listitem>
</varlistentry>
@@ -175,9 +175,9 @@
messages from the running server. The log
file generated is never removed by the server although
its size may be controlled by the <ulink
- url="smb.conf.5.html#maxlogsize"><parameter>max log size</parameter></ulink>
- option in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file. <emphasis>Beware:</emphasis>
+ url="smb.conf.5.html#maxlogsize">max log size</ulink>
+ option in the <ulink url="smb.conf.5.html"><filename>
+ smb.conf(5)</filename></ulink> file. <emphasis>Beware:</emphasis>
If the directory specified does not exist, <command>smbd</command>
will log to the default debug log location defined at compile time.
</para>
@@ -189,9 +189,9 @@
<varlistentry>
<term>-O &lt;socket options&gt;</term>
<listitem><para>See the <ulink
- url="smb.conf.5.html#socketoptions"><parameter>socket options</parameter></ulink>
- parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file for details.</para></listitem>
+ url="smb.conf.5.html#socketoptions">socket options</ulink>
+ parameter in the <ulink url="smb.conf.5.html"><filename>smb.conf(5)
+ </filename></ulink> file for details.</para></listitem>
</varlistentry>
<varlistentry>
@@ -226,8 +226,8 @@
information in this file includes server-specific
information such as what printcap file to use, as well
as descriptions of all the services that the server is
- to provide. See <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for more information.
+ to provide. See <ulink url="smb.conf.5.html"><filename>
+ smb.conf(5)</filename></ulink> for more information.
The default configuration file name is determined at
compile time.</para></listitem>
</varlistentry>
@@ -243,7 +243,7 @@
<listitem><para>If the server is to be run by the
<command>inetd</command> meta-daemon, this file
must contain suitable startup information for the
- meta-daemon. See the <ulink url="install.html">"How to Install and Test SAMBA"</ulink>
+ meta-daemon. See the <ulink url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink>
document for details.
</para></listitem>
</varlistentry>
@@ -255,7 +255,7 @@
<para>If running the server as a daemon at startup,
this file will need to contain an appropriate startup
- sequence for the server. See the <ulink url="install.html">"How to Install and Test SAMBA"</ulink>
+ sequence for the server. See the <ulink url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink>
document for details.</para></listitem>
</varlistentry>
@@ -265,20 +265,21 @@
meta-daemon <command>inetd</command>, this file
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
- See the <ulink url="install.html">"How to Install and Test SAMBA"</ulink>
+ See the <ulink url="UNIX_INSTALL.html">UNIX_INSTALL.html</ulink>
document for details.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/local/samba/lib/smb.conf</filename></term>
- <listitem><para>This is the default location of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> server configuration file. Other common places that systems
+ <listitem><para>This is the default location of the
+ <ulink url="smb.conf.5.html"><filename>smb.conf</filename></ulink>
+ server configuration file. Other common places that systems
install this file are <filename>/usr/samba/lib/smb.conf</filename>
- and <filename>/etc/samba/smb.conf</filename>.</para>
+ and <filename>/etc/smb.conf</filename>.</para>
<para>This file describes all the services the server
- is to make available to clients. See <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for more information.</para>
+ is to make available to clients. See <ulink url="smb.conf.5.html">
+ <filename>smb.conf(5)</filename></ulink> for more information.</para>
</listitem>
</varlistentry>
</variablelist>
@@ -316,9 +317,9 @@
<para>Samba uses PAM for authentication (when presented with a plaintext
password), for account checking (is this account disabled?) and for
session management. The degree too which samba supports PAM is restricted
- by the limitations of the SMB protocol and the <ulink url="smb.conf.5.html#OBEYPAMRESRICTIONS"><parameter>obey
- pam restricions</parameter></ulink> <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> paramater. When this is set, the following restrictions apply:
+ by the limitations of the SMB protocol and the
+ <ulink url="smb.conf.5.html#OBEYPAMRESRICTIONS">obey pam restricions</ulink>
+ smb.conf paramater. When this is set, the following restrictions apply:
</para>
<itemizedlist>
@@ -378,9 +379,9 @@
it to die on its own.</para>
<para>The debug log level of <command>smbd</command> may be raised
- or lowered using <citerefentry><refentrytitle>smbcontrol</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> program (SIGUSR[1|2] signals are no longer
- used since Samba 2.2). This is to allow transient problems to be diagnosed,
+ or lowered using <ulink url="smbcontrol.1.html"><command>smbcontrol(1)
+ </command></ulink> program (SIGUSR[1|2] signals are no longer used in
+ Samba 2.2). This is to allow transient problems to be diagnosed,
whilst still running at a normally low log level.</para>
<para>Note that as the signal handlers send a debug write,
@@ -393,15 +394,14 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>hosts_access</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>inetd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testprns</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>, and the
- Internet RFC's <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>.
+ <para>hosts_access(5), <command>inetd(8)</command>,
+ <ulink url="nmbd.8.html"><command>nmbd(8)</command></ulink>,
+ <ulink url="smb.conf.5.html"><filename>smb.conf(5)</filename>
+ </ulink>, <ulink url="smbclient.1.html"><command>smbclient(1)
+ </command></ulink>, <ulink url="testparm.1.html"><command>
+ testparm(1)</command></ulink>, <ulink url="testprns.1.html">
+ <command>testprns(1)</command></ulink>, and the Internet RFC's
+ <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>.
In addition the CIFS (formerly SMB) specification is available
as a link from the Web page <ulink url="http://samba.org/cifs/">
http://samba.org/cifs/</ulink>.</para>
@@ -417,11 +417,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbgroupedit.8.sgml b/docs/docbook/manpages/smbgroupedit.8.sgml
index 6c489bb785..188218c249 100644
--- a/docs/docbook/manpages/smbgroupedit.8.sgml
+++ b/docs/docbook/manpages/smbgroupedit.8.sgml
@@ -1,11 +1,15 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbgroupedit.8">
+<refentry id="smbgroupedit">
<refmeta>
<refentrytitle>smbgroupedit</refentrytitle>
<manvolnum>8</manvolnum>
</refmeta>
+
+<!-- ****************************************************
+** Name and Options **
+**************************************************** -->
<refnamediv>
<refname>smbgroupedit</refname>
<refpurpose>Query/set/change UNIX - Windows NT group mapping</refpurpose>
@@ -21,13 +25,17 @@
+<!-- ****************************************************
+** Description **
+**************************************************** -->
<refsect1>
<title>DESCRIPTION</title>
<para>
-This program is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
-<manvolnum>7</manvolnum></citerefentry> suite.</para>
+This program is part of the <ulink url="samba.7.html">Samba</ulink>
+suite.
+</para>
<para>
The smbgroupedit command allows for mapping unix groups
@@ -62,8 +70,8 @@ etc.
Privilege :
</programlisting></para>
-<para>For example:
-<programlisting>
+<para>For examples,</para>
+<para><programlisting>
Users
SID : S-1-5-32-545
Unix group: -1
@@ -83,8 +91,9 @@ Users
NTGroupName(SID) -> UnixGroupName
</programlisting></para>
-<para>For example:
-<programlisting>
+<para>For example,</para>
+
+<para><programlisting>
Users (S-1-5-32-545) -> -1
</programlisting></para>
@@ -100,6 +109,8 @@ Users (S-1-5-32-545) -> -1
+<!-- ****************************************************
+**************************************************** -->
<refsect1>
<title>FILES</title>
@@ -109,6 +120,8 @@ Users (S-1-5-32-545) -> -1
+<!-- ****************************************************
+**************************************************** -->
<refsect1>
<title>EXIT STATUS</title>
@@ -150,45 +163,65 @@ the 'Domain Admins' Global group:
<para>domadm:x:502:joe,john,mary</para>
</listitem>
- <listitem><para>map this domadm group to the 'domain admins' group:</para>
+ <listitem><para>map this domadm group to the 'domain admins' group:
+ </para>
<orderedlist>
- <listitem><para>Get the SID for the Windows NT "Domain Admins" group:</para>
+ <listitem><para>Get the SID for the Windows NT "Domain Admins"
+ group:</para>
+
<para><programlisting>
<prompt>root# </prompt><command>smbgroupedit -vs | grep "Domain Admins"</command>
Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -> -1
-</programlisting></para></listitem>
+</programlisting></para>
+</listitem>
<listitem><para>map the unix domadm group to the Windows NT
"Domain Admins" group, by running the command:
-<programlisting>
+ </para>
+
+<para><programlisting>
<prompt>root# </prompt><command>smbgroupedit \
-c S-1-5-21-1108995562-3116817432-1375597819-512 \
-u domadm -td</command>
</programlisting></para>
- <para><emphasis>warning:</emphasis> don't copy and paste this sample, the
+ <para>
+ <emphasis>warning:</emphasis> don't copy and paste this sample, the
Domain Admins SID (the S-1-5-21-...-512) is different for every PDC.
- </para> </listitem>
+ </para>
+ </listitem>
</orderedlist>
</listitem>
</orderedlist>
<para>
To verify that your mapping has taken effect:
-<programlisting>
+</para>
+
+<para><programlisting>
<prompt>root# </prompt><command>smbgroupedit -vs|grep "Domain Admins"</command>
Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -> domadm
</programlisting></para>
-<para>To give access to a certain directory on a domain member machine (an
+<para>
+To give access to a certain directory on a domain member machine (an
NT/W2K or a samba server running winbind) to some users who are member
of a group on your samba PDC, flag that group as a domain group:
-<programlisting>
+</para>
+
+<para><programlisting>
<prompt>root# </prompt><command>smbgroupedit -a unixgroup -td</command>
</programlisting></para>
+
+
</refsect1>
+
+
+
+<!-- ****************************************************
+**************************************************** -->
<refsect1>
<title>VERSION</title>
@@ -199,16 +232,22 @@ the Samba suite.
</para>
</refsect1>
+<!-- ****************************************************
+**************************************************** -->
+
<refsect1>
<title>SEE ALSO</title>
<para>
-<citerefentry><refentrytitle>smb.conf</refentrytitle>
-<manvolnum>5</manvolnum></citerefentry></para>
+<ulink url="smb.conf.5.html">smb.conf(5)</ulink>
+</para>
</refsect1>
+<!-- ****************************************************
+**************************************************** -->
+
<refsect1>
<title>AUTHOR</title>
@@ -222,8 +261,7 @@ to the way the Linux kernel is developed.
<para>
<command>smbgroupedit</command> was written by Jean Francois Micouleau.
The current set of manpages and documentation is maintained
-by the Samba Team in the same fashion as the Samba source code. The conversion
-to DocBook XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</para>
+by the Samba Team in the same fashion as the Samba source code.</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbmnt.8.sgml b/docs/docbook/manpages/smbmnt.8.sgml
index 6d48b12b9b..55b66d5d25 100644
--- a/docs/docbook/manpages/smbmnt.8.sgml
+++ b/docs/docbook/manpages/smbmnt.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbmnt.8">
+<refentry id="smbmnt">
<refmeta>
<refentrytitle>smbmnt</refentrytitle>
@@ -38,8 +38,8 @@
by the user, and that the user has write permission on.</para>
<para>The <command>smbmnt</command> program is normally invoked
- by <citerefentry><refentrytitle>smbmount</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>. It should not be invoked directly by users. </para>
+ by <ulink url="smbmount.8.html"><command>smbmount(8)</command>
+ </ulink>. It should not be invoked directly by users. </para>
<para>smbmount searches the normal PATH for smbmnt. You must ensure
that the smbmnt version in your path matches the smbmount used.</para>
@@ -107,8 +107,7 @@
</para>
<para>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbmount.8.sgml b/docs/docbook/manpages/smbmount.8.sgml
index d17e4e6bcf..c4b91a5572 100644
--- a/docs/docbook/manpages/smbmount.8.sgml
+++ b/docs/docbook/manpages/smbmount.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbmount.8">
+<refentry id="smbmount">
<refmeta>
<refentrytitle>smbmount</refentrytitle>
@@ -26,8 +26,7 @@
<para><command>smbmount</command> mounts a Linux SMB filesystem. It
is usually invoked as <command>mount.smbfs</command> by
- the <citerefentry><refentrytitle>mount</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> command when using the
+ the <command>mount(8)</command> command when using the
"-t smbfs" option. This command only works in Linux, and the kernel must
support the smbfs filesystem. </para>
@@ -40,12 +39,11 @@
<para><command>smbmount</command> is a daemon. After mounting it keeps running until
the mounted smbfs is umounted. It will log things that happen
when in daemon mode using the "machine name" smbmount, so
- typically this output will end up in <filename>log.smbmount</filename>. The <command>
- smbmount</command> process may also be called mount.smbfs.</para>
+ typically this output will end up in <filename>log.smbmount</filename>. The
+ <command>smbmount</command> process may also be called mount.smbfs.</para>
<para><emphasis>NOTE:</emphasis> <command>smbmount</command>
- calls <citerefentry><refentrytitle>smbmnt</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to do the actual mount. You
+ calls <command>smbmnt(8)</command> to do the actual mount. You
must make sure that <command>smbmnt</command> is in the path so
that it can be found. </para>
@@ -86,12 +84,15 @@
<varlistentry>
<term>credentials=&lt;filename&gt;</term>
- <listitem><para>specifies a file that contains a username and/or password.
-The format of the file is:
-<programlisting>
-username = &lt;value&gt;
-password = &lt;value&gt;
-</programlisting></para>
+ <listitem><para>specifies a file that contains a username
+ and/or password. The format of the file is:</para>
+
+ <para>
+ <programlisting>
+ username = &lt;value&gt;
+ password = &lt;value&gt;
+ </programlisting>
+ </para>
<para>This is preferred over having passwords in plaintext in a
shared file, such as <filename>/etc/fstab</filename>. Be sure to protect any
@@ -173,8 +174,8 @@ password = &lt;value&gt;
<varlistentry>
<term>sockopt=&lt;arg&gt;</term>
<listitem><para>sets the TCP socket options. See the <ulink
- url="smb.conf.5.html#SOCKETOPTIONS"><citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></ulink> <parameter>socket options</parameter> option.
+ url="smb.conf.5.html#SOCKETOPTIONS"><filename>smb.conf
+ </filename></ulink> <parameter>socket options</parameter> option.
</para></listitem>
</varlistentry>
@@ -297,9 +298,10 @@ password = &lt;value&gt;
<para>FreeBSD also has a smbfs, but it is not related to smbmount</para>
- <para>For Solaris, HP-UX and others you may want to look at <citerefentry><refentrytitle>smbsh</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry> or at other solutions, such as
- Sharity or perhaps replacing the SMB server with a NFS server.</para>
+ <para>For Solaris, HP-UX and others you may want to look at
+ <ulink url="smbsh.1.html"><command>smbsh(1)</command></ulink> or at other
+ solutions, such as sharity or perhaps replacing the SMB server with
+ a NFS server.</para>
</refsect1>
@@ -319,8 +321,7 @@ password = &lt;value&gt;
</para>
<para>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbpasswd.5.sgml b/docs/docbook/manpages/smbpasswd.5.sgml
index f78e986bef..5c80ac4c06 100644
--- a/docs/docbook/manpages/smbpasswd.5.sgml
+++ b/docs/docbook/manpages/smbpasswd.5.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbpasswd.5">
+<refentry id="smbpasswd">
<refmeta>
<refentrytitle>smbpasswd</refentrytitle>
@@ -19,8 +19,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>smbpasswd is the Samba encrypted password file. It contains
the username, Unix user id and the SMB hashed passwords of the
@@ -122,7 +122,7 @@
the attributes of the users account. In the Samba 2.2 release
this field is bracketed by '[' and ']' characters and is always
13 characters in length (including the '[' and ']' characters).
- The contents of this field may be any of the following characters:
+ The contents of this field may be any of the characters.
</para>
<itemizedlist>
@@ -136,11 +136,12 @@
Password Hash and NT Password Hash are ignored). Note that this
will only allow users to log on with no password if the <parameter>
null passwords</parameter> parameter is set in the <ulink
- url="smb.conf.5.html#NULLPASSWORDS"><citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></ulink> config file. </para></listitem>
+ url="smb.conf.5.html#NULLPASSWORDS"><filename>smb.conf(5)
+ </filename></ulink> config file. </para></listitem>
<listitem><para><emphasis>D</emphasis> - This means the account
- is disabled and no SMB/CIFS logins will be allowed for this user. </para></listitem>
+ is disabled and no SMB/CIFS logins will be allowed for
+ this user. </para></listitem>
<listitem><para><emphasis>W</emphasis> - This means this account
is a "Workstation Trust" account. This kind of account is used
@@ -177,9 +178,8 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>, and
+ <para><ulink url="smbpasswd.8.html"><command>smbpasswd(8)</command></ulink>,
+ <ulink url="samba.7.html">samba(7)</ulink>, and
the Internet RFC1321 for details on the MD4 algorithm.
</para>
</refsect1>
@@ -194,11 +194,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbpasswd.8.sgml b/docs/docbook/manpages/smbpasswd.8.sgml
index 5d475cf08c..8e6d925ae0 100644
--- a/docs/docbook/manpages/smbpasswd.8.sgml
+++ b/docs/docbook/manpages/smbpasswd.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbpasswd.8">
+<refentry id="smbpasswd">
<refmeta>
<refentrytitle>smbpasswd</refentrytitle>
@@ -37,27 +37,25 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>The smbpasswd program has several different
- functions, depending on whether it is run by the <emphasis>root</emphasis> user
- or not. When run as a normal user it allows the user to change
+ functions, depending on whether it is run by the <emphasis>root</emphasis>
+ user or not. When run as a normal user it allows the user to change
the password used for their SMB sessions on any machines that store
SMB passwords. </para>
<para>By default (when run with no arguments) it will attempt to
change the current user's SMB password on the local machine. This is
- similar to the way the <command>passwd(1)</command> program works. <command>
- smbpasswd</command> differs from how the passwd program works
+ similar to the way the <command>passwd(1)</command> program works.
+ <command>smbpasswd</command> differs from how the passwd program works
however in that it is not <emphasis>setuid root</emphasis> but works in
- a client-server mode and communicates with a
- locally running <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>. As a consequence in order for this to
+ a client-server mode and communicates with a locally running
+ <command>smbd(8)</command>. As a consequence in order for this to
succeed the smbd daemon must be running on the local machine. On a
UNIX machine the encrypted SMB passwords are usually stored in
- the <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file. </para>
+ the <filename>smbpasswd(5)</filename> file. </para>
<para>When run by an ordinary user with no options, smbpasswd
will prompt them for their old SMB password and then ask them
@@ -69,13 +67,12 @@
<para>smbpasswd can also be used by a normal user to change their
SMB password on remote machines, such as Windows NT Primary Domain
- Controllers. See the (<parameter>-r</parameter>) and <parameter>-U</parameter> options
- below. </para>
+ Controllers. See the (-r) and -U options below. </para>
<para>When run by root, smbpasswd allows new users to be added
and deleted in the smbpasswd file, as well as allows changes to
- the attributes of the user in this file to be made. When run by root, <command>
- smbpasswd</command> accesses the local smbpasswd file
+ the attributes of the user in this file to be made. When run by root,
+ <command>smbpasswd</command> accesses the local smbpasswd file
directly, thus enabling changes to be made even if smbd is not
running. </para>
</refsect1>
@@ -124,8 +121,8 @@
<para>If the smbpasswd file is in the 'old' format (pre-Samba 2.0
format) there is no space in the user's password entry to write
- this information and the command will FAIL. See <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for details on the 'old' and new password file formats.
+ this information and the command will FAIL. See <command>smbpasswd(5)
+ </command> for details on the 'old' and new password file formats.
</para>
<para>This option is only available when running smbpasswd as
@@ -143,8 +140,7 @@
<para>If the smbpasswd file is in the 'old' format, then <command>
smbpasswd</command> will FAIL to enable the account.
- See <citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for
+ See <command>smbpasswd (5)</command> for
details on the 'old' and new password file formats. </para>
<para>This option is only available when running smbpasswd as root.
@@ -230,15 +226,15 @@
name of the host being connected to. </para>
<para>The options are :"lmhosts", "host", "wins" and "bcast". They
- cause names to be resolved as follows: </para>
+ cause names to be resolved as follows : </para>
<itemizedlist>
- <listitem><para><constant>lmhosts</constant>: Lookup an IP
+ <listitem><para><constant>lmhosts</constant> : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
- no name type attached to the NetBIOS name (see the <citerefentry><refentrytitle>lmhosts</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for details) then
+ no name type attached to the NetBIOS name (see the <ulink
+ url="lmhosts.5.html">lmhosts(5)</ulink> for details) then
any name type matches for lookup.</para></listitem>
- <listitem><para><constant>host</constant>: Do a standard host
+ <listitem><para><constant>host</constant> : Do a standard host
name to IP address resolution, using the system <filename>/etc/hosts
</filename>, NIS, or DNS lookups. This method of name resolution
is operating system depended for instance on IRIX or Solaris this
@@ -247,12 +243,12 @@
type being queried is the 0x20 (server) name type, otherwise
it is ignored.</para></listitem>
- <listitem><para><constant>wins</constant>: Query a name with
+ <listitem><para><constant>wins</constant> : Query a name with
the IP address listed in the <parameter>wins server</parameter>
parameter. If no WINS server has been specified this method
will be ignored.</para></listitem>
- <listitem><para><constant>bcast</constant>: Do a broadcast on
+ <listitem><para><constant>bcast</constant> : Do a broadcast on
each of the known local interfaces listed in the
<parameter>interfaces</parameter> parameter. This is the least
reliable of the name resolution methods as it depends on the
@@ -260,8 +256,8 @@
</itemizedlist>
<para>The default order is <command>lmhosts, host, wins, bcast</command>
- and without this parameter or any entry in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file the name resolution methods will
+ and without this parameter or any entry in the
+ <filename>smb.conf</filename> file the name resolution methods will
be attempted in this order. </para></listitem>
</varlistentry>
@@ -296,6 +292,7 @@
</varlistentry>
+
<varlistentry>
<term>-s</term>
<listitem><para>This option causes smbpasswd to be silent (i.e.
@@ -315,7 +312,7 @@
switch is used to specify the password to be used with the
<ulink url="smb.conf.5.html#LDAPADMINDN"><parameter>ldap admin
dn</parameter></ulink>. Note that the password is stored in
- the <filename>secrets.tdb</filename> and is keyed off
+ the <filename>private/secrets.tdb</filename> and is keyed off
of the admin's DN. This means that if the value of <parameter>ldap
admin dn</parameter> ever changes, the password will need to be
manually updated as well.
@@ -358,15 +355,14 @@
mode communicating with a local smbd for a non-root user then
the smbd daemon must be running for this to work. A common problem
is to add a restriction to the hosts that may access the <command>
- smbd</command> running on the local machine by specifying either <parameter>allow
- hosts</parameter> or <parameter>deny hosts</parameter> entry in
- the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file and neglecting to
+ smbd</command> running on the local machine by specifying a
+ <parameter>allow hosts</parameter> or <parameter>deny hosts</parameter>
+ entry in the <filename>smb.conf</filename> file and neglecting to
allow "localhost" access to the smbd. </para>
<para>In addition, the smbpasswd command is only useful if Samba
- has been set up to use encrypted passwords. See the document <ulink url="pwencrypt.html">
- "LanMan and NT Password Encryption in Samba"</ulink> in the docs directory for details
+ has been set up to use encrypted passwords. See the file
+ <filename>ENCRYPTION.txt</filename> in the docs directory for details
on how to do this. </para>
</refsect1>
@@ -374,14 +370,15 @@
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 3.0 of the Samba suite.</para>
+ <para>This man page is correct for version 3.0 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbpasswd</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>.</para>
+ <para><ulink url="smbpasswd.5.html"><filename>smbpasswd(5)</filename></ulink>,
+ <ulink url="samba.7.html">samba(7)</ulink>
+ </para>
</refsect1>
<refsect1>
@@ -394,11 +391,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbsh.1.sgml b/docs/docbook/manpages/smbsh.1.sgml
index af080c298c..c40609be4f 100644
--- a/docs/docbook/manpages/smbsh.1.sgml
+++ b/docs/docbook/manpages/smbsh.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbsh.1">
+<refentry id="smbsh">
<refmeta>
<refentrytitle>smbsh</refentrytitle>
@@ -29,8 +29,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>smbsh</command> allows you to access an NT filesystem
using UNIX commands such as <command>ls</command>, <command>
@@ -46,8 +46,7 @@
<varlistentry>
<term>-W WORKGROUP</term>
<listitem><para>Override the default workgroup specified in the
- workgroup parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file
+ workgroup parameter of the <filename>smb.conf</filename> file
for this session. This may be needed to connect to some
servers. </para></listitem>
</varlistentry>
@@ -62,8 +61,7 @@
</varlistentry>
<varlistentry>
- <term>-P prefix</term>
- <listitem><para>This option allows
+ <term>-P prefix</term><listitem><para>This option allows
the user to set the directory prefix for SMB access. The
default value if this option is not specified is
<emphasis>smb</emphasis>.
@@ -77,20 +75,19 @@
host names to IP addresses. The option takes a space-separated
string of different name resolution options.</para>
- <para>The options are: "lmhosts", "host", "wins" and "bcast".
+ <para>The options are :"lmhosts", "host", "wins" and "bcast".
They cause names to be resolved as follows :</para>
<itemizedlist>
- <listitem><para><constant>lmhosts</constant>:
+ <listitem><para><constant>lmhosts</constant> :
Lookup an IP address in the Samba lmhosts file. If the
line in lmhosts has no name type attached to the
NetBIOS name
- (see the <citerefentry><refentrytitle>lmhosts</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> for details)
- then any name type matches for lookup.
+ (see the <ulink url="lmhosts.5.html">lmhosts(5)</ulink>
+ for details) then any name type matches for lookup.
</para></listitem>
- <listitem><para><constant>host</constant>:
+ <listitem><para><constant>host</constant> :
Do a standard host name to IP address resolution, using
the system <filename>/etc/hosts</filename>, NIS, or DNS
lookups. This method of name resolution is operating
@@ -101,14 +98,14 @@
(server) name type, otherwise it is ignored.
</para></listitem>
- <listitem><para><constant>wins</constant>:
+ <listitem><para><constant>wins</constant> :
Query a name with the IP address listed in the
<parameter>wins server</parameter> parameter. If no
WINS server has been specified this method will be
ignored.
</para></listitem>
- <listitem><para><constant>bcast</constant>:
+ <listitem><para><constant>bcast</constant> :
Do a broadcast on each of the known local interfaces
listed in the <parameter>interfaces</parameter>
parameter. This is the least reliable of the name
@@ -118,15 +115,14 @@
</itemizedlist>
<para>If this parameter is not set then the name resolve order
- defined in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file parameter
- (<parameter>name resolve order</parameter>) will be used. </para>
+ defined in the <filename>smb.conf</filename> file parameter
+ (name resolve order) will be used. </para>
<para>The default order is lmhosts, host, wins, bcast. Without
this parameter or any entry in the <parameter>name resolve order
- </parameter> parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file, the name resolution methods
- will be attempted in this order. </para></listitem>
+ </parameter> parameter of the <filename>smb.conf</filename>
+ file, the name resolution methods will be attempted in this
+ order. </para></listitem>
</varlistentry>
<varlistentry>
@@ -137,8 +133,7 @@
is zero.</para>
<para>The higher this value, the more detail will be logged
- about the activities of <citerefentry><refentrytitle>nmblookup</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry>. At level
+ about the activities of <command>nmblookup</command>. At level
0, only critical errors and serious warnings will be logged.
</para></listitem>
</varlistentry>
@@ -169,12 +164,13 @@
<para>To use the <command>smbsh</command> command, execute <command>
smbsh</command> from the prompt and enter the username and password
that authenticates you to the machine running the Windows NT
- operating system.
-<programlisting>
-<prompt>system% </prompt><userinput>smbsh</userinput>
-<prompt>Username: </prompt><userinput>user</userinput>
-<prompt>Password: </prompt><userinput>XXXXXXX</userinput>
-</programlisting></para>
+ operating system.</para>
+
+ <para><programlisting>
+ <prompt>system% </prompt><userinput>smbsh</userinput>
+ <prompt>Username: </prompt><userinput>user</userinput>
+ <prompt>Password: </prompt><userinput>XXXXXXX</userinput>
+ </programlisting></para>
<para>Any dynamically linked command you execute from
@@ -192,7 +188,8 @@
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 3.0 of the Samba suite.</para>
+ <para>This man page is correct for version 3.0 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
@@ -213,9 +210,9 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></para>
+ <para><ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="smb.conf.5.html">smb.conf(5)</ulink>
+ </para>
</refsect1>
<refsect1>
@@ -228,11 +225,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbspool.8.sgml b/docs/docbook/manpages/smbspool.8.sgml
index f30539601e..d164cb0864 100644
--- a/docs/docbook/manpages/smbspool.8.sgml
+++ b/docs/docbook/manpages/smbspool.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbspool.8">
+<refentry id="smbspool">
<refmeta>
<refentrytitle>smbspool</refentrytitle>
@@ -27,8 +27,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>smbspool is a very small print spooling program that
sends a print file to an SMB printer. The command-line arguments
@@ -45,8 +45,10 @@
<itemizedlist>
<listitem><para>smb://server/printer</para></listitem>
<listitem><para>smb://workgroup/server/printer</para></listitem>
- <listitem><para>smb://username:password@server/printer</para></listitem>
- <listitem><para>smb://username:password@workgroup/server/printer</para></listitem>
+ <listitem><para>smb://username:password@server/printer</para>
+ </listitem>
+ <listitem><para>smb://username:password@workgroup/server/printer
+ </para></listitem>
</itemizedlist>
<para>smbspool tries to get the URI from argv[0]. If argv[0]
@@ -95,14 +97,15 @@
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 2.2 of the Samba suite.</para>
+ <para>This man page is correct for version 2.2 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>.</para>
+ <para><ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ and <ulink url="samba.7.html">samba(7)</ulink>.
+ </para>
</refsect1>
<refsect1>
@@ -118,11 +121,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbstatus.1.sgml b/docs/docbook/manpages/smbstatus.1.sgml
index 67d39f2586..99963a4bec 100644
--- a/docs/docbook/manpages/smbstatus.1.sgml
+++ b/docs/docbook/manpages/smbstatus.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbstatus.1">
+<refentry id="smbstatus">
<refmeta>
<refentrytitle>smbstatus</refentrytitle>
@@ -31,8 +31,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>smbstatus</command> is a very simple program to
list the current Samba connections.</para>
@@ -84,8 +84,8 @@
<varlistentry>
<term>-p|--processes</term>
- <listitem><para>print a list of <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> processes and exit.
+ <listitem><para>print a list of <ulink url="smbd.8.html">
+ <command>smbd(8)</command></ulink> processes and exit.
Useful for scripting.</para></listitem>
</varlistentry>
@@ -102,9 +102,9 @@
<term>-s|--conf=&lt;configuration file&gt;</term>
<listitem><para>The default configuration file name is
determined at compile time. The file specified contains the
- configuration details required by the server. See <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> for more information.</para>
+ configuration details required by the server. See <ulink
+ url="smb.conf.5.html"><filename>smb.conf(5)</filename>
+ </ulink> for more information.</para>
</listitem>
</varlistentry>
@@ -128,9 +128,8 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para>
+ <para><ulink url="smbd.8.html"><command>smbd(8)</command></ulink> and
+ <ulink url="smb.conf.5.html">smb.conf(5)</ulink>.</para>
</refsect1>
<refsect1>
@@ -143,11 +142,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbtar.1.sgml b/docs/docbook/manpages/smbtar.1.sgml
index ffb5087347..bd70493b6b 100644
--- a/docs/docbook/manpages/smbtar.1.sgml
+++ b/docs/docbook/manpages/smbtar.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbtar.1">
+<refentry id="smbtar">
<refmeta>
<refentrytitle>smbtar</refentrytitle>
@@ -37,12 +37,12 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>smbtar</command> is a very small shell script on top
- of <citerefentry><refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry> which dumps SMB shares directly to tape.</para>
+ of <ulink url="smbclient.1.html"><command>smbclient(1)</command></ulink>
+ which dumps SMB shares directly to tape. </para>
</refsect1>
<refsect1>
@@ -144,9 +144,8 @@
<varlistentry>
<term>-l log level</term>
<listitem><para>Log (debug) level. Corresponds to the
- <parameter>-d</parameter> flag of <citerefentry>
- <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry>.</para></listitem>
+ <parameter>-d</parameter> flag of <command>smbclient(1)
+ </command>. </para></listitem>
</varlistentry>
</variablelist>
</refsect1>
@@ -182,9 +181,9 @@
<refsect1>
<title>DIAGNOSTICS</title>
- <para>See the <emphasis>DIAGNOSTICS</emphasis> section for the <citerefentry>
- <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry> command.</para>
+ <para>See the <emphasis>DIAGNOSTICS</emphasis> section for the
+ <ulink url="smbclient.1.html"><command>smbclient(1)</command>
+ </ulink> command.</para>
</refsect1>
@@ -197,11 +196,10 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry>
- <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum>
- </citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry>.</para>
+ <para><ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="smbclient.1.html"><command>smbclient(1)</command></ulink>,
+ <ulink url="smb.conf.5.html">smb.conf(5)</ulink>,
+ </para>
</refsect1>
<refsect1>
@@ -218,11 +216,11 @@
url="mailto:Martin.Kraemer@mch.sni.de">Martin Kraemer</ulink>. Many
thanks to everyone who suggested extensions, improvements, bug
fixes, etc. The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter.</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/smbumount.8.sgml b/docs/docbook/manpages/smbumount.8.sgml
index 089ede79ea..d6a1b65b57 100644
--- a/docs/docbook/manpages/smbumount.8.sgml
+++ b/docs/docbook/manpages/smbumount.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="smbumount.8">
+<refentry id="smbumount">
<refmeta>
<refentrytitle>smbumount</refentrytitle>
@@ -47,8 +47,8 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>smbmount</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></para>
+ <para><ulink url="smbmount.8.html"><command>smbmount(8)</command>
+ </ulink></para>
</refsect1>
@@ -67,8 +67,7 @@
</para>
<para>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/swat.8.sgml b/docs/docbook/manpages/swat.8.sgml
index 9c4daad6d0..c0052f3d53 100644
--- a/docs/docbook/manpages/swat.8.sgml
+++ b/docs/docbook/manpages/swat.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="swat.8">
+<refentry id="swat">
<refmeta>
<refentrytitle>swat</refentrytitle>
@@ -23,13 +23,13 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>swat</command> allows a Samba administrator to
- configure the complex <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file via a Web browser. In addition,
+ configure the complex <ulink url="smb.conf.5.html"><filename>
+ smb.conf(5)</filename></ulink> file via a Web browser. In addition,
a <command>swat</command> configuration page has help links
to all the configurable options in the <filename>smb.conf</filename> file allowing an
administrator to easily look up the effects of any change. </para>
@@ -46,9 +46,8 @@
<term>-s smb configuration file</term>
<listitem><para>The default configuration file path is
determined at compile time. The file specified contains
- the configuration details required by the <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> server. This is the file
- that <command>swat</command> will modify.
+ the configuration details required by the <command>smbd
+ </command> server. This is the file that <command>swat</command> will modify.
The information in this file includes server-specific
information such as what printcap file to use, as well as
descriptions of all the services that the server is to provide.
@@ -153,9 +152,8 @@
<varlistentry>
<term><filename>/usr/local/samba/lib/smb.conf</filename></term>
- <listitem><para>This is the default location of the <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> server configuration file that swat edits. Other
+ <listitem><para>This is the default location of the <filename>smb.conf(5)
+ </filename> server configuration file that swat edits. Other
common places that systems install this file are <filename>
/usr/samba/lib/smb.conf</filename> and <filename>/etc/smb.conf
</filename>. This file describes all the services the server
@@ -168,9 +166,8 @@
<refsect1>
<title>WARNINGS</title>
- <para><command>swat</command> will rewrite your <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> file. It will rearrange the entries and delete all
+ <para><command>swat</command> will rewrite your <filename>smb.conf
+ </filename> file. It will rearrange the entries and delete all
comments, <parameter>include=</parameter> and <parameter>copy=
</parameter> options. If you have a carefully crafted <filename>
smb.conf</filename> then back it up or don't use swat! </para>
@@ -180,15 +177,16 @@
<refsect1>
<title>VERSION</title>
- <para>This man page is correct for version 2.2 of the Samba suite.</para>
+ <para>This man page is correct for version 2.2 of
+ the Samba suite.</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
- <para><command>inetd(5)</command>, <citerefentry>
- <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></para>
+ <para><command>inetd(5)</command>,
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="smb.conf.5.html">smb.conf(5)</ulink>
+ </para>
</refsect1>
<refsect1>
@@ -201,11 +199,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/testparm.1.sgml b/docs/docbook/manpages/testparm.1.sgml
index ec8092a926..f34528a43d 100644
--- a/docs/docbook/manpages/testparm.1.sgml
+++ b/docs/docbook/manpages/testparm.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="testparm.1">
+<refentry id="testparm">
<refmeta>
<refentrytitle>testparm</refentrytitle>
@@ -29,12 +29,11 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>testparm</command> is a very simple test program
- to check an <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> configuration file for
+ to check an <command>smbd</command> configuration file for
internal correctness. If this program reports no problems, you
can use the configuration file with confidence that <command>smbd
</command> will successfully load the configuration file.</para>
@@ -83,9 +82,9 @@
<varlistentry>
<term>-v</term>
<listitem><para>If this option is specified, testparm
- will also output all options that were not used in <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> and are thus set to their defaults.</para></listitem>
+ will also output all options that were not used in
+ <filename>smb.conf</filename> and are thus set to
+ their defaults.</para></listitem>
</varlistentry>
<varlistentry>
@@ -99,8 +98,7 @@
<term>configfilename</term>
<listitem><para>This is the name of the configuration file
to check. If this parameter is not present then the
- default <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> file will be checked.
+ default <filename>smb.conf</filename> file will be checked.
</para></listitem>
</varlistentry>
@@ -110,9 +108,7 @@
<listitem><para>If this parameter and the following are
specified, then <command>testparm</command> will examine the <parameter>hosts
allow</parameter> and <parameter>hosts deny</parameter>
- parameters in the <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> file to
+ parameters in the <filename>smb.conf</filename> file to
determine if the hostname with this IP address would be
allowed access to the <command>smbd</command> server. If
this parameter is supplied, the hostIP parameter must also
@@ -134,11 +130,9 @@
<variablelist>
<varlistentry>
- <term><citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry></term>
+ <term><filename>smb.conf</filename></term>
<listitem><para>This is usually the name of the configuration
- file used by <citerefentry><refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>.
+ file used by <command>smbd</command>.
</para></listitem>
</varlistentry>
</variablelist>
@@ -164,11 +158,9 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>, <citerefentry>
- <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry></para>
+ <para><ulink url="smb.conf.5.html"><filename>smb.conf(5)</filename></ulink>,
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>
+ </para>
</refsect1>
<refsect1>
@@ -181,11 +173,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/testprns.1.sgml b/docs/docbook/manpages/testprns.1.sgml
index 85cc860c4a..cd99494a9a 100644
--- a/docs/docbook/manpages/testprns.1.sgml
+++ b/docs/docbook/manpages/testprns.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="testprns.1">
+<refentry id="testprns">
<refmeta>
<refentrytitle>testprns</refentrytitle>
@@ -23,13 +23,13 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>testprns</command> is a very simple test program
to determine whether a given printer name is valid for use in
- a service to be provided by <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>.</para>
+ a service to be provided by <ulink url="smbd.8.html"><command>
+ smbd(8)</command></ulink>. </para>
<para>"Valid" in this context means "can be found in the
printcap specified". This program is very stupid - so stupid in
@@ -54,9 +54,8 @@
done beyond that required to extract the printer name. It may
be that the print spooling system is more forgiving or less
forgiving than <command>testprns</command>. However, if
- <command>testprns</command> finds the printer then <citerefentry>
- <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> should do so as well. </para></listitem>
+ <command>testprns</command> finds the printer then
+ <command>smbd</command> should do so as well. </para></listitem>
</varlistentry>
<varlistentry>
@@ -118,9 +117,9 @@
<refsect1>
<title>SEE ALSO</title>
<para><filename>printcap(5)</filename>,
- <citerefentry><refentrytitle>smbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle>
- <manvolnum>1</manvolnum></citerefentry></para>
+ <ulink url="smbd.8.html"><command>smbd(8)</command></ulink>,
+ <ulink url="smbclient.1.html"><command>smbclient(1)</command></ulink>
+ </para>
</refsect1>
<refsect1>
@@ -133,11 +132,11 @@
<para>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
+ excellent piece of Open Source software, available at
+ <ulink url="ftp://ftp.icce.rug.nl/pub/unix/">
ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</para>
+ Samba 2.2 was done by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/vfstest.1.sgml b/docs/docbook/manpages/vfstest.1.sgml
index c89035d814..d6c7e5f142 100644
--- a/docs/docbook/manpages/vfstest.1.sgml
+++ b/docs/docbook/manpages/vfstest.1.sgml
@@ -1,7 +1,8 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY % globalentities SYSTEM '../global.ent'> %globalentities;
]>
-<refentry id="vfstest.1">
+
+<refentry id="vfstest">
<refmeta>
<refentrytitle>vfstest</refentrytitle>
@@ -27,8 +28,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>vfstest</command> is a small command line
utility that has the ability to test dso samba VFS modules. It gives the
diff --git a/docs/docbook/manpages/wbinfo.1.sgml b/docs/docbook/manpages/wbinfo.1.sgml
index 5003c847a4..a6ca244243 100644
--- a/docs/docbook/manpages/wbinfo.1.sgml
+++ b/docs/docbook/manpages/wbinfo.1.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="wbinfo.1">
+<refentry id="wbinfo">
<refmeta>
<refentrytitle>wbinfo</refentrytitle>
@@ -37,15 +37,14 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This tool is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This tool is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para>The <command>wbinfo</command> program queries and returns information
- created and used by the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon. </para>
+ created and used by the <ulink url="winbindd.8.html"><command>
+ winbindd(8)</command></ulink> daemon. </para>
- <para>The <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon must be configured
+ <para>The <command>winbindd(8)</command> daemon must be configured
and running for the <command>wbinfo</command> program to be able
to return information.</para>
</refsect1>
@@ -57,30 +56,27 @@
<varlistentry>
<term>-u</term>
<listitem><para>This option will list all users available
- in the Windows NT domain for which the <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> daemon is operating in. Users in all trusted domains
+ in the Windows NT domain for which the <command>winbindd(8)
+ </command> daemon is operating in. Users in all trusted domains
will also be listed. Note that this operation does not assign
- user ids to any users that have not already been seen by <citerefentry>
- <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
- .</para></listitem>
+ user ids to any users that have not already been seen by
+ <command>winbindd(8)</command>.</para></listitem>
</varlistentry>
<varlistentry>
<term>-g</term>
<listitem><para>This option will list all groups available
- in the Windows NT domain for which the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> daemon is operating in. Groups in all trusted domains
+ in the Windows NT domain for which the <command>winbindd(8)
+ </command> daemon is operating in. Groups in all trusted domains
will also be listed. Note that this operation does not assign
- group ids to any groups that have not already been
- seen by <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>. </para></listitem>
+ group ids to any groups that have not already been seen by
+ <command>winbindd(8)</command>. </para></listitem>
</varlistentry>
<varlistentry>
<term>-N name</term>
<listitem><para>The <parameter>-N</parameter> option
- queries <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to query the WINS
+ queries <command>winbindd(8)</command> to query the WINS
server for the IP address associated with the NetBIOS name
specified by the <parameter>name</parameter> parameter.
</para></listitem>
@@ -90,8 +86,7 @@
<varlistentry>
<term>-I ip</term>
<listitem><para>The <parameter>-I</parameter> option
- queries <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> to send a node status
+ queries <command>winbindd(8)</command> to send a node status
request to get the NetBIOS name associated with the IP address
specified by the <parameter>ip</parameter> parameter.
</para></listitem>
@@ -101,15 +96,13 @@
<varlistentry>
<term>-n name</term>
<listitem><para>The <parameter>-n</parameter> option
- queries <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> for the SID
+ queries <command>winbindd(8)</command> for the SID
associated with the name specified. Domain names can be specified
before the user name by using the winbind separator character.
For example CWDOM1/Administrator refers to the Administrator
user in the domain CWDOM1. If no domain is specified then the
- domain used is the one specified in the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> <parameter>workgroup
- </parameter> parameter. </para></listitem>
+ domain used is the one specified in the <filename>smb.conf</filename>
+ <parameter>workgroup</parameter> parameter. </para></listitem>
</varlistentry>
@@ -142,18 +135,16 @@
<varlistentry>
<term>-S sid</term>
<listitem><para>Convert a SID to a UNIX user id. If the SID
- does not correspond to a UNIX user mapped by <citerefentry>
- <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> then the operation will fail. </para></listitem>
+ does not correspond to a UNIX user mapped by <command>
+ winbindd(8)</command> then the operation will fail. </para></listitem>
</varlistentry>
<varlistentry>
<term>-Y sid</term>
<listitem><para>Convert a SID to a UNIX group id. If the SID
- does not correspond to a UNIX group mapped by <citerefentry>
- <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> then
- the operation will fail. </para></listitem>
+ does not correspond to a UNIX group mapped by <command>
+ winbindd(8)</command> then the operation will fail. </para></listitem>
</varlistentry>
@@ -169,8 +160,7 @@
<varlistentry>
<term>-m</term>
<listitem><para>Produce a list of domains trusted by the
- Windows NT server <citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> contacts
+ Windows NT server <command>winbindd(8)</command> contacts
when resolving names. This list does not include the Windows
NT domain the server is a Primary Domain Controller for.
</para></listitem>
@@ -211,9 +201,8 @@
<title>EXIT STATUS</title>
<para>The wbinfo program returns 0 if the operation
- succeeded, or 1 if the operation failed. If the <citerefentry>
- <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> daemon is not working <command>wbinfo</command> will always return
+ succeeded, or 1 if the operation failed. If the <command>winbindd(8)
+ </command> daemon is not working <command>wbinfo</command> will always return
failure. </para>
</refsect1>
@@ -227,8 +216,8 @@
<refsect1>
<title>SEE ALSO</title>
- <para><citerefentry><refentrytitle>winbindd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry></para>
+ <para><ulink url="winbindd.8.html"><command>winbindd(8)</command>
+ </ulink></para>
</refsect1>
<refsect1>
@@ -243,8 +232,7 @@
were written by Tim Potter.</para>
<para>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba
- 3.0 was done by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/manpages/winbindd.8.sgml b/docs/docbook/manpages/winbindd.8.sgml
index a44e195d8c..ccef2fa623 100644
--- a/docs/docbook/manpages/winbindd.8.sgml
+++ b/docs/docbook/manpages/winbindd.8.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
-<refentry id="winbindd.8">
+<refentry id="winbindd">
<refmeta>
<refentrytitle>winbindd</refentrytitle>
@@ -29,8 +29,8 @@
<refsect1>
<title>DESCRIPTION</title>
- <para>This program is part of the <citerefentry><refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
+ <para>This program is part of the <ulink url="samba.7.html">
+ Samba</ulink> suite.</para>
<para><command>winbindd</command> is a daemon that provides
a service for the Name Service Switch capability that is present
@@ -88,11 +88,12 @@
<filename>/etc/nsswitch.conf</filename> file can be used to initially
resolve user and group information from <filename>/etc/passwd
</filename> and <filename>/etc/group</filename> and then from the
- Windows NT server.
-<programlisting>
+ Windows NT server. </para>
+
+ <para><programlisting>
passwd: files winbind
group: files winbind
-</programlisting></para>
+ </programlisting></para>
<para>The following simple configuration in the
<filename>/etc/nsswitch.conf</filename> file can be used to initially
@@ -171,8 +172,7 @@ group: files winbind
<varlistentry>
<term>-s|--conf=smb.conf</term>
<listitem><para>Specifies the location of the all-important
- <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file. </para></listitem>
+ <filename>smb.conf</filename> file. </para></listitem>
</varlistentry>
</variablelist>
</refsect1>
@@ -208,9 +208,8 @@ group: files winbind
<title>CONFIGURATION</title>
<para>Configuration of the <command>winbindd</command> daemon
- is done through configuration parameters in the <citerefentry>
- <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry> file. All parameters should be specified in the
+ is done through configuration parameters in the <filename>smb.conf(5)
+ </filename> file. All parameters should be specified in the
[global] section of smb.conf. </para>
<itemizedlist>
@@ -244,24 +243,27 @@ group: files winbind
following setup. This was tested on a RedHat 6.2 Linux box. </para>
<para>In <filename>/etc/nsswitch.conf</filename> put the
- following:
-<programlisting>
+ following:</para>
+
+ <para><programlisting>
passwd: files winbind
group: files winbind
-</programlisting></para>
+ </programlisting></para>
+
+ <para>In <filename>/etc/pam.d/*</filename> replace the
+ <parameter>auth</parameter> lines with something like this: </para>
- <para>In <filename>/etc/pam.d/*</filename> replace the <parameter>
- auth</parameter> lines with something like this:
-<programlisting>
+
+ <para><programlisting>
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
-</programlisting></para>
+ </programlisting></para>
- <para>Note in particular the use of the <parameter>sufficient
- </parameter> keyword and the <parameter>use_first_pass</parameter> keyword. </para>
+ <para>Note in particular the use of the <parameter>sufficient</parameter>
+ keyword and the <parameter>use_first_pass</parameter> keyword. </para>
<para>Now replace the account lines with this: </para>
@@ -271,24 +273,26 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
<para>The next step is to join the domain. To do that use the
<command>smbpasswd</command> program like this: </para>
- <para><command>net join -S PDC -U Administrator</command></para>
+ <para><command>smbpasswd -j DOMAIN -r PDC -U
+ Administrator</command></para>
<para>The username after the <parameter>-U</parameter> can be any
Domain user that has administrator privileges on the machine.
- Substitute the name or IP of your PDC for "PDC".</para>
+ Substitute your domain name for "DOMAIN" and the name of your PDC
+ for "PDC".</para>
<para>Next copy <filename>libnss_winbind.so</filename> to
- <filename>/lib</filename> and <filename>pam_winbind.so
- </filename> to <filename>/lib/security</filename>. A symbolic link needs to be
+ <filename>/lib</filename> and <filename>pam_winbind.so</filename>
+ to <filename>/lib/security</filename>. A symbolic link needs to be
made from <filename>/lib/libnss_winbind.so</filename> to
<filename>/lib/libnss_winbind.so.2</filename>. If you are using an
older version of glibc then the target of the link should be
<filename>/lib/libnss_winbind.so.1</filename>.</para>
- <para>Finally, setup a <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> containing directives like the
- following:
-<programlisting>
+ <para>Finally, setup a <filename>smb.conf</filename> containing directives like the
+ following: </para>
+
+ <para><programlisting>
[global]
winbind separator = +
winbind cache time = 10
@@ -299,7 +303,7 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
workgroup = DOMAIN
security = domain
password server = *
-</programlisting></para>
+ </programlisting></para>
<para>Now start winbindd and you should find that your user and
@@ -317,10 +321,9 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
<para>The following notes are useful when configuring and
running <command>winbindd</command>: </para>
- <para><citerefentry><refentrytitle>nmbd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> must be running on the local machine
- for <command>winbindd</command> to work. <command>winbindd</command> queries
- the list of trusted domains for the Windows NT server
+ <para><command>nmbd</command> must be running on the local machine
+ for <command>winbindd</command> to work. <command>winbindd</command>
+ queries the list of trusted domains for the Windows NT server
on startup and when a SIGHUP is received. Thus, for a running <command>
winbindd</command> to become aware of new trust relationships between
servers, it must be sent a SIGHUP signal. </para>
@@ -354,9 +357,8 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
<variablelist>
<varlistentry>
<term>SIGHUP</term>
- <listitem><para>Reload the <citerefentry><refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry> file and
- apply any parameter changes to the running
+ <listitem><para>Reload the <filename>smb.conf(5)</filename>
+ file and apply any parameter changes to the running
version of winbindd. This signal also clears any cached
user and group information. The list of other domains trusted
by winbindd is also reloaded. </para></listitem>
@@ -429,13 +431,10 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
<refsect1>
<title>SEE ALSO</title>
- <para><filename>nsswitch.conf(5)</filename>, <citerefentry>
- <refentrytitle>Samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry>, <citerefentry>
- <refentrytitle>wbinfo</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry>, <citerefentry>
- <refentrytitle>smb.conf</refentrytitle>
- <manvolnum>5</manvolnum></citerefentry></para>
+ <para><filename>nsswitch.conf(5)</filename>,
+ <ulink url="samba.7.html">samba(7)</ulink>,
+ <ulink url="wbinfo.1.html">wbinfo(1)</ulink>,
+ <ulink url="smb.conf.5.html">smb.conf(5)</ulink></para>
</refsect1>
<refsect1>
@@ -446,12 +445,11 @@ auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
by the Samba Team as an Open Source project similar
to the way the Linux kernel is developed.</para>
- <para><command>wbinfo</command> and <command>winbindd</command> were
- written by Tim Potter.</para>
+ <para><command>wbinfo</command> and <command>winbindd</command>
+ were written by Tim Potter.</para>
<para>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</para>
+ by Gerald Carter</para>
</refsect1>
</refentry>
diff --git a/docs/docbook/projdoc/ADS-HOWTO.sgml b/docs/docbook/projdoc/ADS-HOWTO.sgml
index 887ecd74c2..3e34d53c0a 100644
--- a/docs/docbook/projdoc/ADS-HOWTO.sgml
+++ b/docs/docbook/projdoc/ADS-HOWTO.sgml
@@ -14,8 +14,7 @@ This is a rough guide to setting up Samba 3.0 with kerberos authentication again
Windows2000 KDC.
</para>
-<para>Pieces you need before you begin:</para>
-<para>
+<para>Pieces you need before you begin:
<simplelist>
<member>a Windows 2000 server.</member>
<member>samba 3.0 or higher.</member>
@@ -27,8 +26,7 @@ Windows2000 KDC.
<sect1>
<title>Installing the required packages for Debian</title>
-<para>On Debian you need to install the following packages:</para>
-<para>
+<para>On Debian you need to install the following packages:
<simplelist>
<member>libkrb5-dev</member>
<member>krb5-user</member>
@@ -39,8 +37,7 @@ Windows2000 KDC.
<sect1>
<title>Installing the required packages for RedHat</title>
-<para>On RedHat this means you should have at least: </para>
-<para>
+<para>On RedHat this means you should have at least:
<simplelist>
<member>krb5-workstation (for kinit)</member>
<member>krb5-libs (for linking with)</member>
@@ -60,8 +57,7 @@ to get them off CD2.</para>
<para>If your kerberos libraries are in a non-standard location then
remember to add the configure option --with-krb5=DIR.</para>
-<para>After you run configure make sure that include/config.h it
- generates contains
+<para>After you run configure make sure that include/config.h contains
lines like this:</para>
<para><programlisting>
@@ -90,10 +86,9 @@ In case samba can't figure out your ads server using your realm name, use the
</programlisting>
</para>
-<para>You do *not* need a smbpasswd file, and older clients will
- be authenticated as if "security = domain", although it won't do any harm
- and allows you to have local users not in the domain.
- I expect that the above
+<para>You do *not* need a smbpasswd file, although it won't do any harm
+ and if you have one then Samba will be able to fall back to normal
+ password security for older clients. I expect that the above
required options will change soon when we get better active
directory integration.</para>
</sect1>
@@ -104,7 +99,7 @@ In case samba can't figure out your ads server using your realm name, use the
<para>The minimal configuration for krb5.conf is:</para>
<para><programlisting>
-[realms]
+ [realms]
YOUR.KERBEROS.REALM = {
kdc = your.kerberos.server
}
@@ -133,7 +128,7 @@ to join the realm.
<para>
If all you want is kerberos support in smbclient then you can skip
straight to step 5 now. Step 3 is only needed if you want kerberos
-support for smbd and winbindd.
+support in smbd.
</para>
</sect1>
@@ -142,7 +137,9 @@ support for smbd and winbindd.
<title>Create the computer account</title>
<para>
-As a user that has write permission on the Samba private directory
+Do a "kinit" as a user that has authority to change arbitrary
+passwords on the KDC ("Administrator" is a good choice). Then as a
+user that has write permission on the Samba private directory
(usually root) run:
<command>net ads join</command>
</para>
@@ -152,6 +149,8 @@ As a user that has write permission on the Samba private directory
<para>
<variablelist>
+<varlistentry><term>"bash: kinit: command not found"</term>
+<listitem><para>kinit is in the krb5-workstation RPM on RedHat systems, and is in /usr/kerberos/bin, so it won't be in the path until you log in again (or open a new terminal)</para></listitem></varlistentry>
<varlistentry><term>"ADS support not compiled in"</term>
<listitem><para>Samba must be reconfigured (remove config.cache) and recompiled (make clean all install) after the kerberos libs and headers are installed.</para></listitem></varlistentry>
</variablelist>
diff --git a/docs/docbook/projdoc/Browsing-Quickguide.sgml b/docs/docbook/projdoc/Browsing-Quickguide.sgml
index 8e3fbce6d3..8ecc795966 100644
--- a/docs/docbook/projdoc/Browsing-Quickguide.sgml
+++ b/docs/docbook/projdoc/Browsing-Quickguide.sgml
@@ -126,9 +126,8 @@ simultaneously the LMB on it's network segment.
<para>
The syntax of the "remote browse sync" parameter is:
-
<programlisting>
-remote browse sync = a.b.c.d
+ remote browse sync = a.b.c.d
</programlisting>
where a.b.c.d is either the IP address of the remote LMB or else is the network broadcast address of the remote segment.
@@ -244,35 +243,36 @@ The safest rule of all to follow it this - USE ONLY ONE PROTOCOL!
<para>
Resolution of NetBIOS names to IP addresses can take place using a number
of methods. The only ones that can provide NetBIOS name_type information
-are:</para>
-
+are:
<simplelist>
<member>WINS: the best tool!</member>
<member>LMHOSTS: is static and hard to maintain.</member>
<member>Broadcast: uses UDP and can not resolve names across remote segments.</member>
</simplelist>
+</para>
<para>
-Alternative means of name resolution includes:</para>
+Alternative means of name resolution includes:
<simplelist>
<member>/etc/hosts: is static, hard to maintain, and lacks name_type info</member>
<member>DNS: is a good choice but lacks essential name_type info.</member>
</simplelist>
+</para>
<para>
Many sites want to restrict DNS lookups and want to avoid broadcast name
resolution traffic. The "name resolve order" parameter is of great help here.
The syntax of the "name resolve order" parameter is:
<programlisting>
-name resolve order = wins lmhosts bcast host
+ name resolve order = wins lmhosts bcast host
</programlisting>
_or_
<programlisting>
-name resolve order = wins lmhosts (eliminates bcast and host)
+ name resolve order = wins lmhosts (eliminates bcast and host)
</programlisting>
The default is:
<programlisting>
-name resolve order = host lmhost wins bcast
+ name resolve order = host lmhost wins bcast
</programlisting>.
where "host" refers the the native methods used by the Unix system
to implement the gethostbyname() function call. This is normally
diff --git a/docs/docbook/projdoc/CVS-Access.sgml b/docs/docbook/projdoc/CVS-Access.sgml
index 3c1adfd17a..98ef925f20 100644
--- a/docs/docbook/projdoc/CVS-Access.sgml
+++ b/docs/docbook/projdoc/CVS-Access.sgml
@@ -12,7 +12,7 @@
<pubdate> (22 May 2001) </pubdate>
</chapterinfo>
-<title>Access Samba source code via CVS</title>
+<title>HOWTO Access Samba source code via CVS</title>
<sect1>
<title>Introduction</title>
diff --git a/docs/docbook/projdoc/DOMAIN_MEMBER.sgml b/docs/docbook/projdoc/DOMAIN_MEMBER.sgml
index b178bfd2c2..8a30a5527d 100644
--- a/docs/docbook/projdoc/DOMAIN_MEMBER.sgml
+++ b/docs/docbook/projdoc/DOMAIN_MEMBER.sgml
@@ -25,29 +25,79 @@
</chapterinfo>
-<title>Samba as a NT4 or Win2k domain member</title>
+<title>Samba as a NT4 domain member</title>
<sect1>
- <title>Joining an NT Domain with Samba 3.0</title>
+ <title>Joining an NT Domain with Samba 2.2</title>
- <para>Assume you have a Samba 3.0 server with a NetBIOS name of
- <constant>SERV1</constant> and are joining an or Win2k NT domain called
+ <para>Assume you have a Samba 2.x server with a NetBIOS name of
+ <constant>SERV1</constant> and are joining an NT domain called
<constant>DOM</constant>, which has a PDC with a NetBIOS name
of <constant>DOMPDC</constant> and two backup domain controllers
with NetBIOS names <constant>DOMBDC1</constant> and <constant>DOMBDC2
</constant>.</para>
- <para>Firstly, you must edit your <ulink url="smb.conf.5.html"><filename>smb.conf(5)</filename>
+ <para>In order to join the domain, first stop all Samba daemons
+ and run the command:</para>
+
+ <para><prompt>root# </prompt><userinput>smbpasswd -j DOM -r DOMPDC
+ -U<replaceable>Administrator%password</replaceable></userinput></para>
+
+ <para>as we are joining the domain DOM and the PDC for that domain
+ (the only machine that has write access to the domain SAM database)
+ is DOMPDC. The <replaceable>Administrator%password</replaceable> is
+ the login name and password for an account which has the necessary
+ privilege to add machines to the domain. If this is successful
+ you will see the message:</para>
+
+ <para><computeroutput>smbpasswd: Joined domain DOM.</computeroutput>
+ </para>
+
+ <para>in your terminal window. See the <ulink url="smbpasswd.8.html">
+ smbpasswd(8)</ulink> man page for more details.</para>
+
+ <para>There is existing development code to join a domain
+ without having to create the machine trust account on the PDC
+ beforehand. This code will hopefully be available soon
+ in release branches as well.</para>
+
+ <para>This command goes through the machine account password
+ change protocol, then writes the new (random) machine account
+ password for this Samba server into a file in the same directory
+ in which an smbpasswd file would be stored - normally :</para>
+
+ <para><filename>/usr/local/samba/private</filename></para>
+
+ <para>In Samba 2.0.x, the filename looks like this:</para>
+
+ <para><filename><replaceable>&lt;NT DOMAIN NAME&gt;</replaceable>.<replaceable>&lt;Samba
+ Server Name&gt;</replaceable>.mac</filename></para>
+
+ <para>The <filename>.mac</filename> suffix stands for machine account
+ password file. So in our example above, the file would be called:</para>
+
+ <para><filename>DOM.SERV1.mac</filename></para>
+
+ <para>In Samba 2.2, this file has been replaced with a TDB
+ (Trivial Database) file named <filename>secrets.tdb</filename>.
+ </para>
+
+
+ <para>This file is created and owned by root and is not
+ readable by any other user. It is the key to the domain-level
+ security for your system, and should be treated as carefully
+ as a shadow password file.</para>
+
+ <para>Now, before restarting the Samba daemons you must
+ edit your <ulink url="smb.conf.5.html"><filename>smb.conf(5)</filename>
</ulink> file to tell Samba it should now use domain security.</para>
<para>Change (or add) your <ulink url="smb.conf.5.html#SECURITY">
<parameter>security =</parameter></ulink> line in the [global] section
of your smb.conf to read:</para>
- <para><command>security = domain</command> or
- <command>security = ads</command> depending on if the PDC is
- NT4 or running Active Directory respectivly.</para>
+ <para><command>security = domain</command></para>
<para>Next change the <ulink url="smb.conf.5.html#WORKGROUP"><parameter>
workgroup =</parameter></ulink> line in the [global] section to read: </para>
@@ -78,47 +128,11 @@
<para><command>password server = *</command></para>
- <para>This method, allows Samba to use exactly the same
- mechanism that NT does. This
+ <para>This method, which was introduced in Samba 2.0.6,
+ allows Samba to use exactly the same mechanism that NT does. This
method either broadcasts or uses a WINS database in order to
find domain controllers to authenticate against.</para>
- <para>In order to actually join the domain, you must run this
- command:</para>
-
- <para><prompt>root# </prompt><userinput>net join -S DOMPDC
- -U<replaceable>Administrator%password</replaceable></userinput></para>
-
- <para>as we are joining the domain DOM and the PDC for that domain
- (the only machine that has write access to the domain SAM database)
- is DOMPDC. The <replaceable>Administrator%password</replaceable> is
- the login name and password for an account which has the necessary
- privilege to add machines to the domain. If this is successful
- you will see the message:</para>
-
- <para><computeroutput>Joined domain DOM.</computeroutput>
- or <computeroutput>Joined 'SERV1' to realm 'MYREALM'</computeroutput>
- </para>
-
- <para>in your terminal window. See the <ulink url="net.8.html">
- net(8)</ulink> man page for more details.</para>
-
- <para>This process joins the server to thedomain
- without having to create the machine trust account on the PDC
- beforehand.</para>
-
- <para>This command goes through the machine account password
- change protocol, then writes the new (random) machine account
- password for this Samba server into a file in the same directory
- in which an smbpasswd file would be stored - normally :</para>
-
- <para><filename>/usr/local/samba/private/secrets.tdb</filename></para>
-
- <para>This file is created and owned by root and is not
- readable by any other user. It is the key to the domain-level
- security for your system, and should be treated as carefully
- as a shadow password file.</para>
-
<para>Finally, restart your Samba daemons and get ready for
clients to begin using domain security!</para>
</sect1>
@@ -130,8 +144,23 @@
<para>
Many people have asked regarding the state of Samba's ability to participate in
a Windows 2000 Domain. Samba 3.0 is able to act as a member server of a Windows
-2000 domain operating in mixed or native mode. The steps above apply
-to both NT4 and Windows 2000.
+2000 domain operating in mixed or native mode.
+</para>
+
+<para>
+There is much confusion between the circumstances that require a "mixed" mode
+Win2k DC and a when this host can be switched to "native" mode. A "mixed" mode
+Win2k domain controller is only needed if Windows NT BDCs must exist in the same
+domain. By default, a Win2k DC in "native" mode will still support
+NetBIOS and NTLMv1 for authentication of legacy clients such as Windows 9x and
+NT 4.0. Samba has the same requirements as a Windows NT 4.0 member server.
+</para>
+
+<para>
+The steps for adding a Samba 2.2 host to a Win2k domain are the same as those
+for adding a Samba server to a Windows NT 4.0 domain. The only exception is that
+the "Server Manager" from NT 4 has been replaced by the "Active Directory Users and
+Computers" MMC (Microsoft Management Console) plugin.
</para>
</sect1>
@@ -176,7 +205,13 @@ to both NT4 and Windows 2000.
<para>And finally, acting in the same manner as an NT server
authenticating to a PDC means that as part of the authentication
reply, the Samba server gets the user identification information such
- as the user SID, the list of NT groups the user belongs to, etc. </para>
+ as the user SID, the list of NT groups the user belongs to, etc. All
+ this information will allow Samba to be extended in the future into
+ a mode the developers currently call appliance mode. In this mode,
+ no local Unix users will be necessary, and Samba will generate Unix
+ uids and gids from the information passed back from the PDC when a
+ user is authenticated, making a Samba server truly plug and play
+ in an NT domain environment. Watch for this code soon.</para>
<para><emphasis>NOTE:</emphasis> Much of the text of this document
was first published in the Web magazine <ulink url="http://www.linuxworld.com">
diff --git a/docs/docbook/projdoc/ENCRYPTION.sgml b/docs/docbook/projdoc/ENCRYPTION.sgml
new file mode 100644
index 0000000000..f903d7d334
--- /dev/null
+++ b/docs/docbook/projdoc/ENCRYPTION.sgml
@@ -0,0 +1,189 @@
+<chapter id="pwencrypt">
+
+
+<chapterinfo>
+ <author>
+ <firstname>Jeremy</firstname><surname>Allison</surname>
+ <affiliation>
+ <orgname>Samba Team</orgname>
+ <address>
+ <email>jra@samba.org</email>
+ </address>
+ </affiliation>
+ </author>
+
+ <author>
+ <firstname>Jelmer</firstname><surname>Vernooij</surname>
+ <affiliation>
+ <orgname>Samba Team</orgname>
+ <address>
+ <email>jelmer@samba.org</email>
+ </address>
+ </affiliation>
+ </author>
+
+ <pubdate>4 November 2002</pubdate>
+</chapterinfo>
+
+<title>LanMan and NT Password Encryption in Samba</title>
+
+
+<sect1>
+ <title>Introduction</title>
+
+ <para>Newer windows clients send encrypted passwords over
+ the wire, instead of plain text passwords. The newest clients
+ will only send encrypted passwords and refuse to send plain text
+ passwords, unless their registry is tweaked.</para>
+
+ <para>These passwords can't be converted to unix style encrypted
+ passwords. Because of that you can't use the standard unix
+ user database, and you have to store the Lanman and NT hashes
+ somewhere else. For more information, see the documentation
+ about the <command>passdb backend = </command> parameter.
+ </para>
+
+</sect1>
+
+<sect1>
+ <title>Important Notes About Security</title>
+
+ <para>The unix and SMB password encryption techniques seem similar
+ on the surface. This similarity is, however, only skin deep. The unix
+ scheme typically sends clear text passwords over the network when
+ logging in. This is bad. The SMB encryption scheme never sends the
+ cleartext password over the network but it does store the 16 byte
+ hashed values on disk. This is also bad. Why? Because the 16 byte hashed
+ values are a "password equivalent". You cannot derive the user's
+ password from them, but they could potentially be used in a modified
+ client to gain access to a server. This would require considerable
+ technical knowledge on behalf of the attacker but is perfectly possible.
+ You should thus treat the smbpasswd file as though it contained the
+ cleartext passwords of all your users. Its contents must be kept
+ secret, and the file should be protected accordingly.</para>
+
+ <para>Ideally we would like a password scheme which neither requires
+ plain text passwords on the net or on disk. Unfortunately this
+ is not available as Samba is stuck with being compatible with
+ other SMB systems (WinNT, WfWg, Win95 etc). </para>
+
+ <warning>
+ <para>Note that Windows NT 4.0 Service pack 3 changed the
+ default for permissible authentication so that plaintext
+ passwords are <emphasis>never</emphasis> sent over the wire.
+ The solution to this is either to switch to encrypted passwords
+ with Samba or edit the Windows NT registry to re-enable plaintext
+ passwords. See the document WinNT.txt for details on how to do
+ this.</para>
+
+ <para>Other Microsoft operating systems which also exhibit
+ this behavior includes</para>
+
+ <itemizedlist>
+ <listitem><para>MS DOS Network client 3.0 with
+ the basic network redirector installed</para></listitem>
+
+ <listitem><para>Windows 95 with the network redirector
+ update installed</para></listitem>
+
+ <listitem><para>Windows 98 [se]</para></listitem>
+
+ <listitem><para>Windows 2000</para></listitem>
+ </itemizedlist>
+
+ <para><emphasis>Note :</emphasis>All current release of
+ Microsoft SMB/CIFS clients support authentication via the
+ SMB Challenge/Response mechanism described here. Enabling
+ clear text authentication does not disable the ability
+ of the client to participate in encrypted authentication.</para>
+ </warning>
+
+ <sect2>
+ <title>Advantages of SMB Encryption</title>
+
+ <itemizedlist>
+ <listitem><para>plain text passwords are not passed across
+ the network. Someone using a network sniffer cannot just
+ record passwords going to the SMB server.</para>
+ </listitem>
+
+ <listitem><para>WinNT doesn't like talking to a server
+ that isn't using SMB encrypted passwords. It will refuse
+ to browse the server if the server is also in user level
+ security mode. It will insist on prompting the user for the
+ password on each connection, which is very annoying. The
+ only things you can do to stop this is to use SMB encryption.
+ </para></listitem>
+ </itemizedlist>
+ </sect2>
+
+
+ <sect2>
+ <title>Advantages of non-encrypted passwords</title>
+
+ <itemizedlist>
+ <listitem><para>plain text passwords are not kept
+ on disk. </para></listitem>
+
+ <listitem><para>uses same password file as other unix
+ services such as login and ftp</para></listitem>
+
+ <listitem><para>you are probably already using other
+ services (such as telnet and ftp) which send plain text
+ passwords over the net, so sending them for SMB isn't
+ such a big deal.</para></listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1>
+ <title>The smbpasswd Command</title>
+
+ <para>The smbpasswd command maintains the two 32 byte password fields
+ in the smbpasswd file. If you wish to make it similar to the unix
+ <command>passwd</command> or <command>yppasswd</command> programs,
+ install it in <filename>/usr/local/samba/bin/</filename> (or your
+ main Samba binary directory).</para>
+
+ <para><command>smbpasswd</command> now works in a client-server mode
+ where it contacts the local smbd to change the user's password on its
+ behalf. This has enormous benefits - as follows.</para>
+
+ <para><command>smbpasswd</command> now has the capability
+ to change passwords on Windows NT servers (this only works when
+ the request is sent to the NT Primary Domain Controller if you
+ are changing an NT Domain user's password).</para>
+
+ <para>To run smbpasswd as a normal user just type :</para>
+
+ <para><prompt>$ </prompt><userinput>smbpasswd</userinput></para>
+ <para><prompt>Old SMB password: </prompt><userinput>&lt;type old value here -
+ or hit return if there was no old password&gt;</userinput></para>
+ <para><prompt>New SMB Password: </prompt><userinput>&lt;type new value&gt;
+ </userinput></para>
+ <para><prompt>Repeat New SMB Password: </prompt><userinput>&lt;re-type new value
+ </userinput></para>
+
+ <para>If the old value does not match the current value stored for
+ that user, or the two new values do not match each other, then the
+ password will not be changed.</para>
+
+ <para>If invoked by an ordinary user it will only allow the user
+ to change his or her own Samba password.</para>
+
+ <para>If run by the root user smbpasswd may take an optional
+ argument, specifying the user name whose SMB password you wish to
+ change. Note that when run as root smbpasswd does not prompt for
+ or check the old password value, thus allowing root to set passwords
+ for users who have forgotten their passwords.</para>
+
+ <para><command>smbpasswd</command> is designed to work in the same way
+ and be familiar to UNIX users who use the <command>passwd</command> or
+ <command>yppasswd</command> commands.</para>
+
+ <para>For more details on using <command>smbpasswd</command> refer
+ to the man page which will always be the definitive reference.</para>
+</sect1>
+
+</chapter>
diff --git a/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.sgml b/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.sgml
index 06c1d3a87e..6d5a019fcb 100644
--- a/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.sgml
+++ b/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.sgml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="iso8859-1"?>
<chapter id="groupmapping">
<chapterinfo>
<author>
diff --git a/docs/docbook/projdoc/GroupProfiles.sgml b/docs/docbook/projdoc/GroupProfiles.sgml
deleted file mode 100644
index e5120aed9b..0000000000
--- a/docs/docbook/projdoc/GroupProfiles.sgml
+++ /dev/null
@@ -1,285 +0,0 @@
-<chapter id="GroupProfiles">
-<chapterinfo>
- <author>
- <firstname>John</firstname><surname>Terpstra</surname>
- </author>
- <author>
- <firstname>Jelmer</firstname><surname>Vernooij</surname>
- </author>
- <author>
- <firstname>John</firstname><surname>Russell</surname>
- <affiliation>
- <address><email>apca72@dsl.pipex.com</email></address>
- </affiliation>
- </author>
-</chapterinfo>
-
-<title>Creating Group Profiles</title>
-
-<sect1>
-<title>Windows '9x</title>
-<para>
-You need the Win98 Group Policy Editor to
-set Group Profiles up under Windows '9x. It can be found on the Original
-full product Win98 installation CD under
-<filename>tools/reskit/netadmin/poledit</filename>. You install this
-using the Add/Remove Programs facility and then click on the 'Have Disk'
-tab.
-</para>
-
-<para>
-Use the Group Policy Editor to create a policy file that specifies the
-location of user profiles and/or the <filename>My Documents</filename> etc.
-stuff. You then save these settings in a file called
-<filename>Config.POL</filename> that needs to be placed in
-the root of the [NETLOGON] share. If your Win98 is configured to log onto
-the Samba Domain, it will automatically read this file and update the
-Win98 registry of the machine that is logging on.
-</para>
-
-<para>
-All of this is covered in the Win98 Resource Kit documentation.
-</para>
-
-<para>
-If you do not do it this way, then every so often Win98 will check the
-integrity of the registry and will restore it's settings from the back-up
-copy of the registry it stores on each Win98 machine. Hence, you will notice
-things changing back to the original settings.
-</para>
-
-</sect1>
-
-<sect1>
-<title>Windows NT 4</title>
-
-<para>
-Unfortunately, the Resource Kit info is Win NT4/2K version specific.
-</para>
-
-<para>
-Here is a quick guide:
-</para>
-
-<itemizedlist>
-
-<listitem><para>
-On your NT4 Domain Controller, right click on 'My Computer', then
-select the tab labelled 'User Profiles'.
-</para></listitem>
-
-<listitem><para>
-Select a user profile you want to migrate and click on it.
-</para>
-
-<note><para>I am using the term &quot;migrate&quot; lossely. You can copy a profile to
-create a group profile. You can give the user 'Everyone' rights to the
-profile you copy this to. That is what you need to do, since your samba
-domain is not a member of a trust relationship with your NT4 PDC.</para></note>
-</listitem>
-
-<listitem><para>Click the 'Copy To' button.</para></listitem>
-
-<listitem><para>In the box labelled 'Copy Profile to' add your new path, eg:
-<filename>c:\temp\foobar</filename></para></listitem>
-
-<listitem><para>Click on the button labelled 'Change' in the "Permitted to use" box.</para></listitem>
-
-<listitem><para>Click on the group 'Everyone' and then click OK. This closes the
-'chose user' box.</para></listitem>
-
-<listitem><para>Now click OK.</para></listitem>
-</itemizedlist>
-
-<para>
-Follow the above for every profile you need to migrate.
-</para>
-
-<sect2>
-<title>Side bar Notes</title>
-
-<para>
-You should obtain the SID of your NT4 domain. You can use smbpasswd to do
-this. Read the man page.</para>
-
-<para>
-With Samba-3.0.0 alpha code you can import all you NT4 domain accounts
-using the net samsync method. This way you can retain your profile
-settings as well as all your users.
-</para>
-
-</sect2>
-
-<sect2>
-<title>Mandatory profiles</title>
-
-<para>
-The above method can be used to create mandatory profiles also. To convert
-a group profile into a mandatory profile simply locate the NTUser.DAT file
-in the copied profile and rename it to NTUser.MAN.
-</para>
-
-</sect2>
-
-<sect2>
-<title>moveuser.exe</title>
-
-<para>
-The W2K professional resource kit has moveuser.exe. moveuser.exe changes
-the security of a profile from one user to another. This allows the account
-domain to change, and/or the user name to change.
-</para>
-
-</sect2>
-
-<sect2>
-<title>Get SID</title>
-
-<para>
-You can identify the SID by using GetSID.exe from the Windows NT Server 4.0
-Resource Kit.
-</para>
-
-<para>
-Windows NT 4.0 stores the local profile information in the registry under
-the following key:
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
-</para>
-
-<para>
-Under the ProfileList key, there will be subkeys named with the SIDs of the
-users who have logged on to this computer. (To find the profile information
-for the user whose locally cached profile you want to move, find the SID for
-the user with the GetSID.exe utility.) Inside of the appropriate user's
-subkey, you will see a string value named ProfileImagePath.
-</para>
-
-</sect2>
-
-</sect1>
-
-<sect1>
-<title>Windows 2000/XP</title>
-
-<para>
-You must first convert the profile from a local profile to a domain
-profile on the MS Windows workstation as follows:
-</para>
-
-<itemizedlist>
-<listitem><para>
-Log on as the LOCAL workstation administrator.
-</para></listitem>
-
-<listitem><para>
-Right click on the 'My Computer' Icon, select 'Properties'
-</para></listitem>
-
-<listitem><para>
-Click on the 'User Profiles' tab
-</para></listitem>
-
-<listitem><para>
-Select the profile you wish to convert (click on it once)
-</para></listitem>
-
-<listitem><para>
-Click on the button 'Copy To'
-</para></listitem>
-
-<listitem><para>
-In the "Permitted to use" box, click on the 'Change' button.
-</para></listitem>
-
-<listitem><para>
-Click on the 'Look in" area that lists the machine name, when you click
-here it will open up a selection box. Click on the domain to which the
-profile must be accessible.
-</para>
-
-<note><para>You will need to log on if a logon box opens up. Eg: In the connect
-as: MIDEARTH\root, password: mypassword.</para></note>
-</listitem>
-
-<listitem><para>
-To make the profile capable of being used by anyone select 'Everyone'
-</para></listitem>
-
-<listitem><para>
-Click OK. The Selection box will close.
-</para></listitem>
-
-<listitem><para>
-Now click on the 'Ok' button to create the profile in the path you
-nominated.
-</para></listitem>
-</itemizedlist>
-
-<para>
-Done. You now have a profile that can be editted using the samba-3.0.0
-profiles tool.
-</para>
-
-<note>
-<para>
-Under NT/2K the use of mandotory profiles forces the use of MS Exchange
-storage of mail data. That keeps desktop profiles usable.
-</para>
-</note>
-
-<note>
-<itemizedlist>
-<listitem><para>
-This is a security check new to Windows XP (or maybe only
-Windows XP service pack 1). It can be disabled via a group policy in
-Active Directory. The policy is:</para>
-
-<para>"Computer Configuration\Administrative Templates\System\User
-Profiles\Do not check for user ownership of Roaming Profile Folders"</para>
-
-<para>...and it should be set to "Enabled".
-Does the new version of samba have an Active Directory analogue? If so,
-then you may be able to set the policy through this.
-</para>
-
-<para>
-If you cannot set group policies in samba, then you may be able to set
-the policy locally on each machine. If you want to try this, then do
-the following (N.B. I don't know for sure that this will work in the
-same way as a domain group policy):
-</para>
-
-</listitem>
-
-<listitem><para>
-On the XP workstation log in with an Administrator account.
-</para></listitem>
-
-<listitem><para>Click: "Start", "Run"</para></listitem>
-<listitem><para>Type: "mmc"</para></listitem>
-<listitem><para>Click: "OK"</para></listitem>
-
-<listitem><para>A Microsoft Management Console should appear.</para></listitem>
-<listitem><para>Click: File, "Add/Remove Snap-in...", "Add"</para></listitem>
-<listitem><para>Double-Click: "Group Policy"</para></listitem>
-<listitem><para>Click: "Finish", "Close"</para></listitem>
-<listitem><para>Click: "OK"</para></listitem>
-
-<listitem><para>In the "Console Root" window:</para></listitem>
-<listitem><para>Expand: "Local Computer Policy", "Computer Configuration",</para></listitem>
-<listitem><para>"Administrative Templates", "System", "User Profiles"</para></listitem>
-<listitem><para>Double-Click: "Do not check for user ownership of Roaming Profile</para></listitem>
-<listitem><para>Folders"</para></listitem>
-<listitem><para>Select: "Enabled"</para></listitem>
-<listitem><para>Click: OK"</para></listitem>
-
-<listitem><para>Close the whole console. You do not need to save the settings (this
-refers to the console settings rather than the policies you have
-changed).</para></listitem>
-
-<listitem><para>Reboot</para></listitem>
-</itemizedlist>
-</note>
-
-</sect1>
-</chapter>
diff --git a/docs/docbook/projdoc/Integrating-with-Windows.sgml b/docs/docbook/projdoc/Integrating-with-Windows.sgml
index a4e79fd42b..3b0faf81af 100644
--- a/docs/docbook/projdoc/Integrating-with-Windows.sgml
+++ b/docs/docbook/projdoc/Integrating-with-Windows.sgml
@@ -295,16 +295,16 @@ The following are typical NetBIOS name/service type registrations:
<para><programlisting>
Unique NetBIOS Names:
- MACHINENAME&lt;00&gt; = Server Service is running on MACHINENAME
- MACHINENAME&lt;03&gt; = Generic Machine Name (NetBIOS name)
- MACHINENAME&lt;20&gt; = LanMan Server service is running on MACHINENAME
- WORKGROUP&lt;1b&gt; = Domain Master Browser
+ MACHINENAME<00> = Server Service is running on MACHINENAME
+ MACHINENAME<03> = Generic Machine Name (NetBIOS name)
+ MACHINENAME<20> = LanMan Server service is running on MACHINENAME
+ WORKGROUP<1b> = Domain Master Browser
Group Names:
- WORKGROUP&lt;03&gt; = Generic Name registered by all members of WORKGROUP
- WORKGROUP&lt;1c&gt; = Domain Controllers / Netlogon Servers
- WORKGROUP&lt;1d&gt; = Local Master Browsers
- WORKGROUP&lt;1e&gt; = Internet Name Resolvers
+ WORKGROUP<03> = Generic Name registered by all members of WORKGROUP
+ WORKGROUP<1c> = Domain Controllers / Netlogon Servers
+ WORKGROUP<1d> = Local Master Browsers
+ WORKGROUP<1e> = Internet Name Resolvers
</programlisting></para>
<para>
@@ -323,7 +323,7 @@ be needed. An example of this is what happens when an MS Windows client
wants to locate a domain logon server. It find this service and the IP
address of a server that provides it by performing a lookup (via a
NetBIOS broadcast) for enumeration of all machines that have
-registered the name type *&lt;1c&gt;. A logon request is then sent to each
+registered the name type *<1c>. A logon request is then sent to each
IP address that is returned in the enumerated list of IP addresses. Which
ever machine first replies then ends up providing the logon services.
</para>
diff --git a/docs/docbook/projdoc/NT_Security.sgml b/docs/docbook/projdoc/NT_Security.sgml
index 2843331519..2259dae029 100644
--- a/docs/docbook/projdoc/NT_Security.sgml
+++ b/docs/docbook/projdoc/NT_Security.sgml
@@ -31,6 +31,12 @@
the security of the UNIX host Samba is running on, and
still obeys all the file permission rules that a Samba
administrator can set.</para>
+
+ <para>In Samba 2.0.4 and above the default value of the
+ parameter <ulink url="smb.conf.5.html#NTACLSUPPORT"><parameter>
+ nt acl support</parameter></ulink> has been changed from
+ <constant>false</constant> to <constant>true</constant>, so
+ manipulation of permissions is turned on by default.</para>
</sect1>
<sect1>
diff --git a/docs/docbook/projdoc/Portability.sgml b/docs/docbook/projdoc/Portability.sgml
index dae267e8b5..afafacc5e4 100644
--- a/docs/docbook/projdoc/Portability.sgml
+++ b/docs/docbook/projdoc/Portability.sgml
@@ -175,16 +175,4 @@ Corrective Action: Delete the entry after the word loopback
in the line starting 127.0.0.1
</para>
</sect1>
-
-<sect1>
-<title>AIX</title>
-<sect2>
-<title>Sequential Read Ahead</title>
-<!-- From an email by William Jojo <jojowil@hvcc.edu> -->
-<para>
-Disabling Sequential Read Ahead using "vmtune -r 0" improves
-samba performance significally.
-</para>
-</sect2>
-</sect1>
</chapter>
diff --git a/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml b/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
index e3bee32db0..7653e3d1c0 100644
--- a/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
+++ b/docs/docbook/projdoc/Samba-BDC-HOWTO.sgml
@@ -128,7 +128,7 @@ the password change is done.
<sect1>
-<title>Can Samba be a Backup Domain Controller to an NT PDC?</title>
+<title>Can Samba be a Backup Domain Controller?</title>
<para>
With version 2.2, no. The native NT SAM replication protocols have
@@ -138,12 +138,6 @@ been finished for version 2.2.
</para>
<para>
-With version 3.0, the work on both the replication protocols and a
-suitable storage mechanism has progressed, and some form of NT4 BDC
-support is expected soon.
-</para>
-
-<para>
Can I get the benefits of a BDC with Samba? Yes. The main reason for
implementing a BDC is availability. If the PDC is a Samba machine,
a second Samba machine can be set up to
@@ -184,8 +178,7 @@ whenever changes are made, or the PDC is set up as a NIS master
server and the BDC as a NIS slave server. To set up the BDC as a
mere NIS client would not be enough, as the BDC would not be able to
access its user database in case of a PDC failure.
-</para>
-</listitem>
+</para></listitem>
<listitem><para>
The Samba password database in the file private/smbpasswd has to be
@@ -243,15 +236,5 @@ password.
</sect2>
-<sect2>
-<title>Can I do this all with LDAP?</title>
-<para>The simple answer is YES. Samba's pdb_ldap code supports
-binding to a replica LDAP server, and will also follow referrals and
-rebind to the master if it ever needs to make a modification to the
-database. (Normally BDCs are read only, so this will not occur
-often).
-</para>
-</sect2>
-
</sect1>
</chapter>
diff --git a/docs/docbook/projdoc/passdb.sgml b/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml
index 222b4010ab..f294ddd1ff 100644
--- a/docs/docbook/projdoc/passdb.sgml
+++ b/docs/docbook/projdoc/Samba-LDAP-HOWTO.sgml
@@ -1,244 +1,27 @@
-<chapter id="passdb">
+<chapter id="samba-ldap-howto">
+
<chapterinfo>
<author>
- <firstname>Jelmer</firstname><surname>Vernooij</surname>
- <affiliation>
- <orgname>The Samba Team</orgname>
- <address><email>jelmer@samba.org</email></address>
- </affiliation>
- </author>
- <author>
<firstname>Gerald (Jerry)</firstname><surname>Carter</surname>
<affiliation>
<orgname>Samba Team</orgname>
<address><email>jerry@samba.org</email></address>
</affiliation>
- </author>
- <author>
<firstname>Olivier (lem)</firstname><surname>Lemaire</surname>
<affiliation>
<orgname>IDEALX</orgname>
<address><email>olem@IDEALX.org</email></address>
</affiliation>
</author>
- <author>
- <firstname>Jeremy</firstname><surname>Allison</surname>
- <affiliation>
- <orgname>Samba Team</orgname>
- <address>
- <email>jra@samba.org</email>
- </address>
- </affiliation>
- </author>
- <pubdate>February 2003</pubdate>
-</chapterinfo>
-
-<title>User information database</title>
-
-<sect1>
- <title>Introduction</title>
-
- <para>Old windows clients send plain text passwords over the wire.
- Samba can check these passwords by crypting them and comparing them
- to the hash stored in the unix user database.
- </para>
-
- <para>
- Newer windows clients send encrypted passwords (so-called
- Lanman and NT hashes) over
- the wire, instead of plain text passwords. The newest clients
- will only send encrypted passwords and refuse to send plain text
- passwords, unless their registry is tweaked.
- </para>
-
- <para>These passwords can't be converted to unix style encrypted
- passwords. Because of that you can't use the standard unix
- user database, and you have to store the Lanman and NT hashes
- somewhere else. </para>
-
- <para>Next to a differently encrypted passwords,
- windows also stores certain data for each user
- that is not stored in a unix user database, e.g.
- workstations the user may logon from, the location where his/her
- profile is stored, etc.
- Samba retrieves and stores this information using a "passdb backend".
- Commonly
- available backends are LDAP, plain text file, MySQL and nisplus.
- For more information, see the documentation about the
- <command>passdb backend = </command> parameter.
- </para>
-</sect1>
-
-<sect1>
- <title>Important Notes About Security</title>
-
- <para>The unix and SMB password encryption techniques seem similar
- on the surface. This similarity is, however, only skin deep. The unix
- scheme typically sends clear text passwords over the network when
- logging in. This is bad. The SMB encryption scheme never sends the
- cleartext password over the network but it does store the 16 byte
- hashed values on disk. This is also bad. Why? Because the 16 byte hashed
- values are a "password equivalent". You cannot derive the user's
- password from them, but they could potentially be used in a modified
- client to gain access to a server. This would require considerable
- technical knowledge on behalf of the attacker but is perfectly possible.
- You should thus treat the data stored in whatever
- passdb backend you use (smbpasswd file, ldap, mysql) as though it contained the
- cleartext passwords of all your users. Its contents must be kept
- secret, and the file should be protected accordingly.</para>
-
- <para>Ideally we would like a password scheme which neither requires
- plain text passwords on the net or on disk. Unfortunately this
- is not available as Samba is stuck with being compatible with
- other SMB systems (WinNT, WfWg, Win95 etc). </para>
-
- <warning>
- <para>Note that Windows NT 4.0 Service pack 3 changed the
- default for permissible authentication so that plaintext
- passwords are <emphasis>never</emphasis> sent over the wire.
- The solution to this is either to switch to encrypted passwords
- with Samba or edit the Windows NT registry to re-enable plaintext
- passwords. See the document WinNT.txt for details on how to do
- this.</para>
-
- <para>Other Microsoft operating systems which also exhibit
- this behavior includes</para>
-
- <simplelist>
- <member>MS DOS Network client 3.0 with
- the basic network redirector installed</member>
-
- <member>Windows 95 with the network redirector
- update installed</member>
-
- <member>Windows 98 [se]</member>
-
- <member>Windows 2000</member>
- </simplelist>
-
- <para><emphasis>Note :</emphasis>All current release of
- Microsoft SMB/CIFS clients support authentication via the
- SMB Challenge/Response mechanism described here. Enabling
- clear text authentication does not disable the ability
- of the client to participate in encrypted authentication.</para>
- </warning>
-
- <sect2>
- <title>Advantages of SMB Encryption</title>
-
- <simplelist>
- <member>plain text passwords are not passed across
- the network. Someone using a network sniffer cannot just
- record passwords going to the SMB server.</member>
-
- <member>WinNT doesn't like talking to a server
- that isn't using SMB encrypted passwords. It will refuse
- to browse the server if the server is also in user level
- security mode. It will insist on prompting the user for the
- password on each connection, which is very annoying. The
- only things you can do to stop this is to use SMB encryption.
- </member>
- </simplelist>
- </sect2>
-
-
- <sect2>
- <title>Advantages of non-encrypted passwords</title>
-
- <simplelist>
- <member>plain text passwords are not kept
- on disk. </member>
-
- <member>uses same password file as other unix
- services such as login and ftp</member>
-
- <member>you are probably already using other
- services (such as telnet and ftp) which send plain text
- passwords over the net, so sending them for SMB isn't
- such a big deal.</member>
- </simplelist>
- </sect2>
-</sect1>
-<sect1>
- <title>The smbpasswd Command</title>
-
- <para>The smbpasswd utility is a utility similar to the
- <command>passwd</command> or <command>yppasswd</command> programs.
- It maintains the two 32 byte password fields
- in the passdb backend. </para>
-
- <para><command>smbpasswd</command> works in a client-server mode
- where it contacts the local smbd to change the user's password on its
- behalf. This has enormous benefits - as follows.</para>
-
- <para><command>smbpasswd</command> has the capability
- to change passwords on Windows NT servers (this only works when
- the request is sent to the NT Primary Domain Controller if you
- are changing an NT Domain user's password).</para>
-
- <para>To run smbpasswd as a normal user just type :</para>
-
- <para><prompt>$ </prompt><userinput>smbpasswd</userinput></para>
- <para><prompt>Old SMB password: </prompt><userinput>&lt;type old value here -
- or hit return if there was no old password&gt;</userinput></para>
- <para><prompt>New SMB Password: </prompt><userinput>&lt;type new value&gt;
- </userinput></para>
- <para><prompt>Repeat New SMB Password: </prompt><userinput>&lt;re-type new value
- </userinput></para>
-
- <para>If the old value does not match the current value stored for
- that user, or the two new values do not match each other, then the
- password will not be changed.</para>
-
- <para>If invoked by an ordinary user it will only allow the user
- to change his or her own Samba password.</para>
-
- <para>If run by the root user smbpasswd may take an optional
- argument, specifying the user name whose SMB password you wish to
- change. Note that when run as root smbpasswd does not prompt for
- or check the old password value, thus allowing root to set passwords
- for users who have forgotten their passwords.</para>
-
- <para><command>smbpasswd</command> is designed to work in the same way
- and be familiar to UNIX users who use the <command>passwd</command> or
- <command>yppasswd</command> commands.</para>
-
- <para>For more details on using <command>smbpasswd</command> refer
- to the man page which will always be the definitive reference.</para>
-</sect1>
-
-<!--
-<sect1>
-<title>The <command>pdbedit</command> command</title>
-FIXME
-</sect1>
--->
-
-<sect1>
-<title>Plain text</title>
-<para>
-Older versions of samba retrieved user information from the unix user database
-and eventually some other fields from the file <filename>/etc/samba/smbpasswd</filename>
-or <filename>/etc/smbpasswd</filename>. When password encryption is disabled, no
-data is stored at all.
-</para>
-</sect1>
+ <pubdate> (13 Jan 2002) </pubdate>
+</chapterinfo>
-<sect1>
-<title>TDB</title>
-<para>Samba can also store the user data in a "TDB" (Trivial Database). Using this backend
-doesn't require any additional configuration. This backend is recommended for new installations who
-don't require LDAP.
-</para>
-</sect1>
+<title>Storing Samba's User/Machine Account information in an LDAP Directory</title>
<sect1>
-<title>LDAP</title>
-
-<sect2>
-<title>Introduction</title>
+<title>Purpose</title>
<para>
This document describes how to use an LDAP directory for storing Samba user
@@ -272,9 +55,10 @@ Two additional Samba resources which may prove to be helpful are
</para></listitem>
</itemizedlist>
-</sect2>
+</sect1>
-<sect2>
+
+<sect1>
<title>Introduction</title>
<para>
@@ -346,9 +130,9 @@ versions of these libraries can be obtained from PADL Software
the details of configuring these packages are beyond the scope of this document.
</para>
-</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>Supported LDAP Servers</title>
<para>
@@ -361,15 +145,20 @@ hard to fix. If you are so inclined, please be sure to forward all patches to
<ulink url="jerry@samba.org">jerry@samba.org</ulink>.
</para>
-</sect2>
+</sect1>
-<sect2>
+
+
+
+<sect1>
<title>Schema and Relationship to the RFC 2307 posixAccount</title>
<para>
-Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in
-<filename>examples/LDAP/samba.schema</filename>. The sambaAccount objectclass is given here:
+Samba 2.2.3 includes the necessary schema file for OpenLDAP 2.0 in
+<filename>examples/LDAP/samba.schema</filename>. (Note that this schema
+file has been modified since the experimental support initially included
+in 2.2.2). The sambaAccount objectclass is given here:
</para>
<para><programlisting>
@@ -412,13 +201,13 @@ and functioning correctly. This division of information makes it possible to
store all Samba account information in LDAP, but still maintain UNIX account
information in NIS while the network is transitioning to a full LDAP infrastructure.
</para>
-</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>Configuring Samba with LDAP</title>
-<sect3>
+<sect2>
<title>OpenLDAP configuration</title>
<para>
@@ -477,10 +266,10 @@ index rid eq
##index cn eq
##index memberUid eq
</programlisting></para>
-</sect3>
+</sect2>
-<sect3>
+<sect2>
<title>Configuring Samba</title>
<!--lem: <title>smb.conf LDAP parameters</title> -->
@@ -541,11 +330,11 @@ use with an LDAP directory could appear as
</programlisting></para>
-</sect3>
</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>Accounts and Groups management</title>
<para>
@@ -564,15 +353,15 @@ file).
</para>
<para>
-In Samba release 3.0, the group management system is based on posix
-groups. This means that Samba make usage of the posixGroup objectclass.
+In Samba release 2.2.3, the group management system is based on posix
+groups. This meand that Samba make usage of the posixGroup objectclass.
For now, there is no NT-like group system management (global and local
groups).
</para>
-</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>Security and sambaAccount</title>
@@ -625,11 +414,11 @@ access to attrs=lmPassword,ntPassword
</programlisting></para>
-</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>LDAP specials attributes for sambaAccounts</title>
<para>
@@ -722,11 +511,11 @@ something other than the default (e.g. \\MOBY\becky).
</para>
-</sect2>
+</sect1>
-<sect2>
+<sect1>
<title>Example LDIF Entries for a sambaAccount</title>
@@ -781,189 +570,24 @@ pwdMustChange: 2147483647
ntPassword: 878D8014606CDA29677A44EFA1353FC7
</programlisting></para>
-</sect2>
-</sect1>
-<sect1>
-<title>MySQL</title>
-
-<sect2>
-<title>Building</title>
-
-<para>To build the plugin, run <command>make bin/pdb_mysql.so</command>
-in the <filename>source/</filename> directory of samba distribution.
-</para>
-
-<para>Next, copy pdb_mysql.so to any location you want. I
-strongly recommend installing it in $PREFIX/lib or /usr/lib/samba/</para>
-
-</sect2>
-
-<sect2>
-<title>Creating the database</title>
-
-<para>
-You either can set up your own table and specify the field names to pdb_mysql (see below
-for the column names) or use the default table. The file <filename>examples/pdb/mysql/mysql.dump</filename>
-contains the correct queries to create the required tables. Use the command :
-
-<command>mysql -u<replaceable>username</replaceable> -h<replaceable>hostname</replaceable> -p<replaceable>password</replaceable> <replaceable>databasename</replaceable> < <filename>/path/to/samba/examples/pdb/mysql/mysql.dump</filename></command>
-
-</para>
-</sect2>
-
-<sect2>
-<title>Configuring</title>
-
-<para>This plugin lacks some good documentation, but here is some short info:</para>
-
-<para>Add a the following to the <command>passdb backend</command> variable in your <filename>smb.conf</filename>:
-<programlisting>
-passdb backend = [other-plugins] plugin:/location/to/pdb_mysql.so:identifier [other-plugins]
-</programlisting>
-</para>
-
-<para>The identifier can be any string you like, as long as it doesn't collide with
-the identifiers of other plugins or other instances of pdb_mysql. If you
-specify multiple pdb_mysql.so entries in 'passdb backend', you also need to
-use different identifiers!
-</para>
-
-<para>
-Additional options can be given thru the smb.conf file in the [global] section.
-</para>
-
-<para><programlisting>
-identifier:mysql host - host name, defaults to 'localhost'
-identifier:mysql password
-identifier:mysql user - defaults to 'samba'
-identifier:mysql database - defaults to 'samba'
-identifier:mysql port - defaults to 3306
-identifier:table - Name of the table containing users
-</programlisting></para>
-
-<warning>
-<para>
-Since the password for the mysql user is stored in the
-smb.conf file, you should make the the smb.conf file
-readable only to the user that runs samba. This is considered a security
-bug and will be fixed soon.
-</para>
-</warning>
-
-<para>Names of the columns in this table(I've added column types those columns should have first):</para>
-
-<para><programlisting>
-identifier:logon time column - int(9)
-identifier:logoff time column - int(9)
-identifier:kickoff time column - int(9)
-identifier:pass last set time column - int(9)
-identifier:pass can change time column - int(9)
-identifier:pass must change time column - int(9)
-identifier:username column - varchar(255) - unix username
-identifier:domain column - varchar(255) - NT domain user is part of
-identifier:nt username column - varchar(255) - NT username
-identifier:fullname column - varchar(255) - Full name of user
-identifier:home dir column - varchar(255) - Unix homedir path
-identifier:dir drive column - varchar(2) - Directory drive path (eg: 'H:')
-identifier:logon script column - varchar(255) - Batch file to run on client side when logging on
-identifier:profile path column - varchar(255) - Path of profile
-identifier:acct desc column - varchar(255) - Some ASCII NT user data
-identifier:workstations column - varchar(255) - Workstations user can logon to (or NULL for all)
-identifier:unknown string column - varchar(255) - unknown string
-identifier:munged dial column - varchar(255) - ?
-identifier:uid column - int(9) - Unix user ID (uid)
-identifier:gid column - int(9) - Unix user group (gid)
-identifier:user sid column - varchar(255) - NT user SID
-identifier:group sid column - varchar(255) - NT group ID
-identifier:lanman pass column - varchar(255) - encrypted lanman password
-identifier:nt pass column - varchar(255) - encrypted nt passwd
-identifier:plain pass column - varchar(255) - plaintext password
-identifier:acct control column - int(9) - nt user data
-identifier:unknown 3 column - int(9) - unknown
-identifier:logon divs column - int(9) - ?
-identifier:hours len column - int(9) - ?
-identifier:unknown 5 column - int(9) - unknown
-identifier:unknown 6 column - int(9) - unknown
-</programlisting></para>
-
-<para>
-Eventually, you can put a colon (:) after the name of each column, which
-should specify the column to update when updating the table. You can also
-specify nothing behind the colon - then the data from the field will not be
-updated.
-</para>
-
-</sect2>
-
-<sect2>
-<title>Using plaintext passwords or encrypted password</title>
+</sect1>
-<para>
-I strongly discourage the use of plaintext passwords, however, you can use them:
-</para>
-<para>
-If you would like to use plaintext passwords, set 'identifier:lanman pass column' and 'identifier:nt pass column' to 'NULL' (without the quotes) and 'identifier:plain pass column' to the name of the column containing the plaintext passwords.
-</para>
-<para>
-If you use encrypted passwords, set the 'identifier:plain pass column' to 'NULL' (without the quotes). This is the default.
-</para>
+<sect1>
+<title>Comments</title>
-</sect2>
-
-<sect2>
-<title>Getting non-column data from the table</title>
<para>
-It is possible to have not all data in the database and making some 'constant'.
-</para>
+Please mail all comments regarding this HOWTO to <ulink
+url="mailto:jerry@samba.org">jerry@samba.org</ulink>. This documents was
+last updated to reflect the Samba 2.2.3 release.
-<para>
-For example, you can set 'identifier:fullname column' to :
-<command>CONCAT(First_name,' ',Sur_name)</command>
</para>
-<para>
-Or, set 'identifier:workstations column' to :
-<command>NULL</command></para>
-
-<para>See the MySQL documentation for more language constructs.</para>
-</sect2>
</sect1>
-<sect1>
-<title>Passdb XML plugin</title>
-
-<sect2>
-<title>Building</title>
-
-<para>This module requires libxml2 to be installed.</para>
-
-<para>To build pdb_xml, run: <command>make bin/pdb_xml.so</command> in
-the directory <filename>source/</filename>. </para>
-
-</sect2>
-
-<sect2>
-<title>Usage</title>
-
-<para>The usage of pdb_xml is pretty straightforward. To export data, use:
-
-<command>pdbedit -e plugin:/usr/lib/samba/pdb_xml.so:filename</command>
-
-(where filename is the name of the file to put the data in)
-</para>
-
-<para>
-To import data, use:
-<command>pdbedit -i plugin:/usr/lib/samba/pdb_xml.so:filename -e current-pdb</command>
-
-Where filename is the name to read the data from and current-pdb to put it in.
-</para>
-</sect2>
-</sect1>
</chapter>
diff --git a/docs/docbook/projdoc/Samba-PDC-HOWTO.sgml b/docs/docbook/projdoc/Samba-PDC-HOWTO.sgml
index c0be81d989..7cf3e5735c 100644
--- a/docs/docbook/projdoc/Samba-PDC-HOWTO.sgml
+++ b/docs/docbook/projdoc/Samba-PDC-HOWTO.sgml
@@ -19,7 +19,7 @@
</chapterinfo>
<title>
-Samba as a NT4 or Win2k Primary Domain Controller
+How to Configure Samba as a NT4 Primary Domain Controller
</title>
@@ -142,7 +142,7 @@ Implementing a Samba PDC can basically be divided into 2 broad
steps.
</para>
-<orderedlist numeration="arabic">
+<orderedlist numeration="Arabic">
<listitem><para>
Configuring the Samba PDC
</para></listitem>
@@ -426,7 +426,7 @@ be created manually.
<para><programlisting>
[global]
- # &lt;...remainder of parameters...&gt;
+ # <...remainder of parameters...>
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u
</programlisting></para>
@@ -496,7 +496,7 @@ version of Windows.
</para>
<para>
- A 'machine name' in (typically) <filename>/etc/passwd</filename>
+ A 'machine name' in (typically) <filename>/etc/passwd</>
of the machine name with a '$' appended. FreeBSD (and other BSD
systems?) won't create a user with a '$' in their name.
</para>
@@ -504,7 +504,7 @@ version of Windows.
<para>
The problem is only in the program used to make the entry, once
made, it works perfectly. So create a user without the '$' and
- use <command>vipw</command> to edit the entry, adding the '$'. Or create
+ use <command>vipw</> to edit the entry, adding the '$'. Or create
the whole entry with vipw if you like, make sure you use a
unique User ID !
</para>
@@ -673,8 +673,8 @@ Here are some additional details:
Policy Editor can be installed on an NT Workstation/Server, it will not
work with NT policies because the registry key that are set by the policy templates.
However, the files from the NT Server will run happily enough on an NTws.
- You need <filename>poledit.exe, common.adm</filename> and <filename>winnt.adm</filename>. It is convenient
- to put the two *.adm files in <filename>c:\winnt\inf</filename> which is where
+ You need <filename>poledit.exe, common.adm</> and <filename>winnt.adm</>. It is convenient
+ to put the two *.adm files in <filename>c:\winnt\inf</> which is where
the binary will look for them unless told otherwise. Note also that that
directory is 'hidden'.
</para>
@@ -928,7 +928,7 @@ general SMB topics such as browsing.</para>
<listitem><para>See how Scott Merrill simulates a BDC behavior at
<ulink url="http://www.skippy.net/linux/smb-howto.html">
- http://www.skippy.net/linux/smb-howto.html</ulink>. </para></listitem>
+ http://www.skippy.net/linux/smb-howto.html</>. </para></listitem>
<listitem><para>Although 2.0.7 has almost had its day as a PDC, David Bannon will
keep the 2.0.7 PDC pages at <ulink url="http://bioserve.latrobe.edu.au/samba">
@@ -958,8 +958,8 @@ general SMB topics such as browsing.</para>
<para>
There are a number of Samba related mailing lists. Go to <ulink
url="http://samba.org">http://samba.org</ulink>, click on your nearest mirror
- and then click on <command>Support</command> and then click on <command>
- Samba related mailing lists</command>.
+ and then click on <command>Support</> and then click on <command>
+ Samba related mailing lists</>.
</para>
<para>
@@ -1028,8 +1028,8 @@ general SMB topics such as browsing.</para>
<para>To have your name removed from a samba mailing list, go to the
same place you went to to get on it. Go to <ulink
url="http://lists.samba.org/">http://lists.samba.org</ulink>,
- click on your nearest mirror and then click on <command>Support</command> and
- then click on <command> Samba related mailing lists</command>. Or perhaps see
+ click on your nearest mirror and then click on <command>Support</> and
+ then click on <command> Samba related mailing lists</>. Or perhaps see
<ulink url="http://lists.samba.org/mailman/roster/samba-ntdom">here</ulink>
</para>
@@ -1112,7 +1112,7 @@ worthwhile lookingat how a Windows 9x/ME client performs a logon:
<listitem>
<para>
The client broadcasts (to the IP broadcast address of the subnet it is in)
- a NetLogon request. This is sent to the NetBIOS name DOMAIN&lt;1c&gt; at the
+ a NetLogon request. This is sent to the NetBIOS name DOMAIN<1c> at the
NetBIOS layer. The client chooses the first response it receives, which
contains the NetBIOS name of the logon server to use in the format of
\\SERVER.
@@ -1704,7 +1704,7 @@ contrast to w95, where it _does_ transfer / update profiles correctly].
<sect1>
<title>
-DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba
+DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba
</title>
<warning>
diff --git a/docs/docbook/projdoc/msdfs_setup.sgml b/docs/docbook/projdoc/msdfs_setup.sgml
index a86cd74235..6e1609460f 100644
--- a/docs/docbook/projdoc/msdfs_setup.sgml
+++ b/docs/docbook/projdoc/msdfs_setup.sgml
@@ -4,7 +4,7 @@
<author>
<firstname>Shirish</firstname><surname>Kalele</surname>
<affiliation>
- <orgname>Samba Team &amp; Veritas Software</orgname>
+ <orgname>Samba Team & Veritas Software</orgname>
<address>
<email>samba@samba.org</email>
</address>
diff --git a/docs/docbook/projdoc/pdb_mysql.sgml b/docs/docbook/projdoc/pdb_mysql.sgml
new file mode 100644
index 0000000000..59a134a15f
--- /dev/null
+++ b/docs/docbook/projdoc/pdb_mysql.sgml
@@ -0,0 +1,146 @@
+<chapter id="pdb-mysql">
+<chapterinfo>
+ <author>
+ <firstname>Jelmer</firstname><surname>Vernooij</surname>
+ <affiliation>
+ <orgname>The Samba Team</orgname>
+ <address><email>jelmer@samba.org</email></address>
+ </affiliation>
+ </author>
+ <pubdate>November 2002</pubdate>
+</chapterinfo>
+
+<title>Passdb MySQL plugin</title>
+
+<sect1>
+<title>Building</title>
+
+<para>To build the plugin, run <command>make bin/pdb_mysql.so</command>
+in the <filename>source/</filename> directory of samba distribution.
+</para>
+
+<para>Next, copy pdb_mysql.so to any location you want. I
+strongly recommend installing it in $PREFIX/lib or /usr/lib/samba/</para>
+
+</sect1>
+
+<sect1>
+<title>Configuring</title>
+
+<para>This plugin lacks some good documentation, but here is some short info:</para>
+
+<para>Add a the following to the <command>passdb backend</command> variable in your <filename>smb.conf</filename>:
+<programlisting>
+passdb backend = [other-plugins] plugin:/location/to/pdb_mysql.so:identifier [other-plugins]
+</programlisting>
+</para>
+
+<para>The identifier can be any string you like, as long as it doesn't collide with
+the identifiers of other plugins or other instances of pdb_mysql. If you
+specify multiple pdb_mysql.so entries in 'passdb backend', you also need to
+use different identifiers!
+</para>
+
+<para>
+Additional options can be given thru the smb.conf file in the [global] section.
+</para>
+
+<para><programlisting>
+identifier:mysql host - host name, defaults to 'localhost'
+identifier:mysql password
+identifier:mysql user - defaults to 'samba'
+identifier:mysql database - defaults to 'samba'
+identifier:mysql port - defaults to 3306
+identifier:table - Name of the table containing users
+</programlisting></para>
+
+<para>
+<emphasis>
+WARNING: since the password for the mysql user is stored in the
+smb.conf file, you should make the the smb.conf file
+readable only to the user that runs samba. This is considered a security
+bug and will be fixed soon.</emphasis>
+</para>
+
+<para>Names of the columns in this table(I've added column types those columns should have first):</para>
+
+<para><programlisting>
+identifier:logon time column - int(9)
+identifier:logoff time column - int(9)
+identifier:kickoff time column - int(9)
+identifier:pass last set time column - int(9)
+identifier:pass can change time column - int(9)
+identifier:pass must change time column - int(9)
+identifier:username column - varchar(255) - unix username
+identifier:domain column - varchar(255) - NT domain user is part of
+identifier:nt username column - varchar(255) - NT username
+identifier:fullname column - varchar(255) - Full name of user
+identifier:home dir column - varchar(255) - Unix homedir path
+identifier:dir drive column - varchar(2) - Directory drive path (eg: 'H:')
+identifier:logon script column - varchar(255) - Batch file to run on client side when logging on
+identifier:profile path column - varchar(255) - Path of profile
+identifier:acct desc column - varchar(255) - Some ASCII NT user data
+identifier:workstations column - varchar(255) - Workstations user can logon to (or NULL for all)
+identifier:unknown string column - varchar(255) - unknown string
+identifier:munged dial column - varchar(255) - ?
+identifier:uid column - int(9) - Unix user ID (uid)
+identifier:gid column - int(9) - Unix user group (gid)
+identifier:user sid column - varchar(255) - NT user SID
+identifier:group sid column - varchar(255) - NT group ID
+identifier:lanman pass column - varchar(255) - encrypted lanman password
+identifier:nt pass column - varchar(255) - encrypted nt passwd
+identifier:plain pass column - varchar(255) - plaintext password
+identifier:acct control column - int(9) - nt user data
+identifier:unknown 3 column - int(9) - unknown
+identifier:logon divs column - int(9) - ?
+identifier:hours len column - int(9) - ?
+identifier:unknown 5 column - int(9) - unknown
+identifier:unknown 6 column - int(9) - unknown
+</programlisting></para>
+
+<para>
+Eventually, you can put a colon (:) after the name of each column, which
+should specify the column to update when updating the table. You can also
+specify nothing behind the colon - then the data from the field will not be
+updated.
+</para>
+
+</sect1>
+
+<sect1>
+<title>Using plaintext passwords or encrypted password</title>
+
+<para>
+I strongly discourage the use of plaintext passwords, however, you can use them:
+</para>
+
+<para>
+If you would like to use plaintext passwords, set 'identifier:lanman pass column' and 'identifier:nt pass column' to 'NULL' (without the quotes) and 'identifier:plain pass column' to the name of the column containing the plaintext passwords.
+</para>
+
+<para>
+If you use encrypted passwords, set the 'identifier:plain pass column' to 'NULL' (without the quotes). This is the default.
+</para>
+
+</sect1>
+
+<sect1>
+<title>Getting non-column data from the table</title>
+
+<para>
+It is possible to have not all data in the database and making some 'constant'.
+</para>
+
+<para>
+For example, you can set 'identifier:fullname column' to :
+<command>CONCAT(First_name,' ',Sur_name)</command>
+</para>
+
+<para>
+Or, set 'identifier:workstations column' to :
+<command>NULL</command></para>
+
+<para>See the MySQL documentation for more language constructs.</para>
+
+</sect1>
+</chapter>
diff --git a/docs/docbook/projdoc/pdb_xml.sgml b/docs/docbook/projdoc/pdb_xml.sgml
new file mode 100644
index 0000000000..87afb7b401
--- /dev/null
+++ b/docs/docbook/projdoc/pdb_xml.sgml
@@ -0,0 +1,42 @@
+<chapter id="pdb-xml">
+<chapterinfo>
+ <author>
+ <firstname>Jelmer</firstname><surname>Vernooij</surname>
+ <affiliation>
+ <orgname>The Samba Team</orgname>
+ <address><email>jelmer@samba.org</email></address>
+ </affiliation>
+ </author>
+ <pubdate>November 2002</pubdate>
+</chapterinfo>
+
+<title>Passdb XML plugin</title>
+
+<sect1>
+<title>Building</title>
+
+<para>This module requires libxml2 to be installed.</para>
+
+<para>To build pdb_xml, run: <command>make bin/pdb_xml.so</command> in
+the directory <filename>source/</filename>. </para>
+
+</sect1>
+
+<sect1>
+<title>Usage</title>
+
+<para>The usage of pdb_xml is pretty straightforward. To export data, use:
+
+<command>pdbedit -e plugin:/usr/lib/samba/pdb_xml.so:filename</command>
+
+(where filename is the name of the file to put the data in)
+</para>
+
+<para>
+To import data, use:
+<command>pdbedit -i plugin:/usr/lib/samba/pdb_xml.so:filename -e current-pdb</command>
+
+Where filename is the name to read the data from and current-pdb to put it in.
+</para>
+</sect1>
+</chapter>
diff --git a/docs/docbook/projdoc/printer_driver2.sgml b/docs/docbook/projdoc/printer_driver2.sgml
index 8d15e437b2..7bca8dc6f5 100644
--- a/docs/docbook/projdoc/printer_driver2.sgml
+++ b/docs/docbook/projdoc/printer_driver2.sgml
@@ -409,8 +409,8 @@ echo " :sd=/var/spool/lpd/$2:\\" >> $PRINTCAP
echo " :mx=0:ml=0:sh:\\" >> $PRINTCAP
echo " :lp=/usr/local/samba/var/print/$5.prn:" >> $PRINTCAP
-touch "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&amp;1
-chown $LP "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&amp;1
+touch "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&1
+chown $LP "/usr/local/samba/var/print/$5.prn" >> /tmp/printadd.$$ 2>&1
mkdir /var/spool/lpd/$2
chmod 700 /var/spool/lpd/$2
@@ -757,7 +757,7 @@ be:
/usr/bin/id -p >/tmp/tmp.print
# we run the command and save the error messages
# replace the command with the one appropriate for your system
- /usr/bin/lpr -r -P$1 $2 2>>&amp;/tmp/tmp.print
+ /usr/bin/lpr -r -P$1 $2 2>>&/tmp/tmp.print
</programlisting></para>
<para>
diff --git a/docs/docbook/projdoc/samba-doc.sgml b/docs/docbook/projdoc/samba-doc.sgml
index 246fba1228..8cf16478c8 100644
--- a/docs/docbook/projdoc/samba-doc.sgml
+++ b/docs/docbook/projdoc/samba-doc.sgml
@@ -1,5 +1,6 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY UNIX-INSTALL SYSTEM "UNIX_INSTALL.sgml">
+<!ENTITY ENCRYPTION SYSTEM "ENCRYPTION.sgml">
<!ENTITY MS-Dfs-Setup SYSTEM "msdfs_setup.sgml">
<!ENTITY PRINTER-DRIVER2 SYSTEM "printer_driver2.sgml">
<!ENTITY DOMAIN-MEMBER SYSTEM "DOMAIN_MEMBER.sgml">
@@ -10,6 +11,7 @@
<!ENTITY CVS-Access SYSTEM "CVS-Access.sgml">
<!ENTITY IntegratingWithWindows SYSTEM "Integrating-with-Windows.sgml">
<!ENTITY Samba-PAM SYSTEM "PAM-Authentication-And-Samba.sgml">
+<!ENTITY Samba-LDAP SYSTEM "Samba-LDAP-HOWTO.sgml">
<!ENTITY Diagnosis SYSTEM "Diagnosis.sgml">
<!ENTITY BUGS SYSTEM "Bugs.sgml">
<!ENTITY SECURITY-LEVEL SYSTEM "security_level.sgml">
@@ -20,10 +22,9 @@
<!ENTITY Portability SYSTEM "Portability.sgml">
<!ENTITY Other-Clients SYSTEM "Other-Clients.sgml">
<!ENTITY ADS-HOWTO SYSTEM "ADS-HOWTO.sgml">
-<!ENTITY Passdb SYSTEM "passdb.sgml">
+<!ENTITY pdb-mysql SYSTEM "pdb_mysql.sgml">
+<!ENTITY pdb-xml SYSTEM "pdb_xml.sgml">
<!ENTITY VFS SYSTEM "VFS.sgml">
-<!ENTITY GroupProfiles SYSTEM "GroupProfiles.sgml">
-<!ENTITY SecuringSamba SYSTEM "securing-samba.sgml">
]>
<book id="Samba-HOWTO-Collection">
@@ -77,8 +78,9 @@ and how to configure the parts of samba you will most likely need.
PLEASE read this.</para>
</partintro>
&UNIX-INSTALL;
+&BROWSING;
&BROWSING-Quick;
-&Passdb;
+&ENCRYPTION;
</part>
<part id="type">
@@ -110,13 +112,13 @@ part each cover one specific feature.</para>
&MS-Dfs-Setup;
&PRINTER-DRIVER2;
&WINBIND;
-&BROWSING;
+&pdb-mysql;
+&pdb-xml;
&VFS;
+&Samba-LDAP;
&CVS-Access;
&GROUP-MAPPING-HOWTO;
&SPEED;
-&GroupProfiles;
-&SecuringSamba;
</part>
<part id="Appendixes">
diff --git a/docs/docbook/projdoc/upgrading-to-3.0.sgml b/docs/docbook/projdoc/upgrading-to-3.0.sgml
index f227556151..5b6b8dd635 100644
--- a/docs/docbook/projdoc/upgrading-to-3.0.sgml
+++ b/docs/docbook/projdoc/upgrading-to-3.0.sgml
@@ -16,24 +16,4 @@ FIXME
</sect1>
-<sect1>
-<title>Obsolete configuration options</title>
-
-<para>
-In 3.0, the following configuration options have been removed.
-</para>
-
-<simplelist>
-<member>printer driver</member>
-<member>printer driver file</member>
-<member>printer driver location</member>
-<member>use rhosts</member>
-<member>postscript</member>
-</simplelist>
-
-<para>The first three options have been replaced by new driver procedures.
-Please read the printing documentation.</para>
-
-</sect1>
-
</chapter>
diff --git a/docs/docbook/projdoc/winbind.sgml b/docs/docbook/projdoc/winbind.sgml
index 06579617f5..d2bfb8ab67 100644
--- a/docs/docbook/projdoc/winbind.sgml
+++ b/docs/docbook/projdoc/winbind.sgml
@@ -2,7 +2,6 @@
<chapterinfo>
- <authorgroup>
<author>
<firstname>Tim</firstname><surname>Potter</surname>
<affiliation>
@@ -11,7 +10,7 @@
</affiliation>
</author>
<author>
- <firstname>Andrew</firstname><surname>Tridgell</surname>
+ <firstname>Andrew</firstname><surname>Trigdell</surname>
<affiliation>
<orgname>Samba Team</orgname>
<address><email>tridge@linuxcare.com.au</email></address>
@@ -36,7 +35,6 @@
<address><email>jelmer@nl.linux.org</email></address>
</affiliation>
</author>
- </authorgroup>
<pubdate>27 June 2002</pubdate>
</chapterinfo>
@@ -175,7 +173,7 @@
<sect2>
<title>Microsoft Remote Procedure Calls</title>
- <para>Over the last few years, efforts have been underway
+ <para>Over the last two years, efforts have been underway
by various Samba Team members to decode various aspects of
the Microsoft Remote Procedure Call (MSRPC) system. This
system is used for most network related operations between
@@ -194,21 +192,6 @@
</sect2>
<sect2>
- <title>Microsoft Active Directory Services</title>
-
- <para>
- Since late 2001, Samba has gained the ability to
- interact with Microsoft Windows 2000 using its 'Native
- Mode' protocols, rather than the NT4 RPC services.
- Using LDAP and Kerberos, a domain member running
- winbind can enumerate users and groups in exactly the
- same way as a Win2k client would, and in so doing
- provide a much more efficient and
- effective winbind implementation.
- </para>
- </sect2>
-
- <sect2>
<title>Name Service Switch</title>
<para>The Name Service Switch, or NSS, is a feature that is
@@ -481,7 +464,7 @@ whether or not you have previously built the Samba binaries.
<prompt>root#</prompt> <command>autoconf</command>
<prompt>root#</prompt> <command>make clean</command>
<prompt>root#</prompt> <command>rm config.cache</command>
-<prompt>root#</prompt> <command>./configure</command>
+<prompt>root#</prompt> <command>./configure --with-winbind</command>
<prompt>root#</prompt> <command>make</command>
<prompt>root#</prompt> <command>make install</command>
</programlisting></para>
@@ -569,7 +552,7 @@ include the following entries in the [global] section:
<para><programlisting>
[global]
- &lt;...&gt;
+ <...>
# separate domain and username with '+', like DOMAIN+username
<ulink url="winbindd.8.html#WINBINDSEPARATOR">winbind separator</ulink> = +
# use uids from 10000 to 20000 for domain users
@@ -599,7 +582,7 @@ a domain user who has administrative privileges in the domain.
<para>
-<prompt>root#</prompt> <command>/usr/local/samba/bin/net join -S PDC -U Administrator</command>
+<prompt>root#</prompt> <command>/usr/local/samba/bin/net rpc join -S PDC -U Administrator</command>
</para>
@@ -750,7 +733,7 @@ start() {
daemon /usr/local/samba/bin/winbindd
RETVAL3=$?
echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; touch /var/lock/subsys/smb || \
+ [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] && touch /var/lock/subsys/smb || \
RETVAL=1
return $RETVAL
}
@@ -777,7 +760,7 @@ stop() {
echo -n $"Shutting down $KIND services: "
killproc winbindd
RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/smb
+ [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] && rm -f /var/lock/subsys/smb
echo ""
return $RETVAL
}
@@ -808,7 +791,7 @@ killproc() { # kill the named process(es)
pid=`/usr/bin/ps -e |
/usr/bin/grep -w $1 |
/usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
- [ "$pid" != "" ] &amp;&amp; kill $pid
+ [ "$pid" != "" ] && kill $pid
}
# Start/stop processes required for samba server
@@ -1059,7 +1042,7 @@ annoying double prompts for passwords.
</para>
<para>
-Now restart your Samba and try connecting through your application that you
+Now restart your Samba & try connecting through your application that you
configured in the pam.conf.
</para>
@@ -1080,7 +1063,7 @@ configured in the pam.conf.
<itemizedlist>
<listitem><para>Winbind is currently only available for
- the Linux, Solaris and IRIX operating systems, although ports to other operating
+ the Linux operating system, although ports to other operating
systems are certainly possible. For such ports to be feasible,
we require the C library of the target operating system to
support the Name Service Switch and Pluggable Authentication
@@ -1096,8 +1079,7 @@ configured in the pam.conf.
<listitem><para>Currently the winbind PAM module does not take
into account possible workstation and logon time restrictions
- that may be been set for Windows NT users, this is
- instead up to the PDC to enforce.</para></listitem>
+ that may be been set for Windows NT users.</para></listitem>
</itemizedlist>
</sect1>
diff --git a/docs/docs-status b/docs/docs-status
index 30e9d40796..d4a7d976e5 100644
--- a/docs/docs-status
+++ b/docs/docs-status
@@ -9,10 +9,12 @@ docs/docbook/devdoc/* - most of these docs are outdated and need updates...
docs/docbook/manpages/net.8.sgml - Still not finished
docs/docbook/manpages/rpcclient.1.sgml - Command documentation might be outdated
docs/docbook/manpages/samba.7.sgml - Listing of samba programs is not complete
+docs/docbook/manpages/smbclient.1.sgml - document -k (kerberos authentication)
docs/docbook/manpages/smbcontrol.1.sgml - Document -s, samsync, samrepl, pool-usage, dmalloc-mark, dmalloc-log-changed, shutdown, change_id
docs/docbook/manpages/smb.conf.5.sgml - 'restrict anonymous' isn't documented properly
docs/docbook/projdoc/DOMAIN_MEMBER.sgml - Needs update to 3.0
docs/docbook/projdoc/ADS-HOWTO.sgml - seems outdated (it says we require 'ads server' when in ads mode, though that's not true, according to the manpages...)
+docs/docbook/projdoc/ENCRYPTION.sgml - contains useless old info about smbpasswd
docs/docbook/projdoc/Integrating-with-Windows.sgml - Should slowly go a way. Contains a little bit information about wins, a little bit about domain membership, a little about winbind, etc
docs/docbook/projdoc/NT_Security.sgml - probably outdated
docs/docbook/projdoc/Diagnosis.sgml - Needs extension
@@ -25,7 +27,6 @@ docs/docbook/projdoc/Speed.sgml - contains outdated and invalid information
docs/docbook/projdoc/UNIX_INSTALL.sgml - Needs a lot of updating (swat, ADS, PDC, etc)
docs/docbook/projdoc/printer_driver2.sgml - Needs integration with printing.sgml, still up to date?
docs/docbook/projdoc/security_level.sgml - information about ads and domain should be added (currently only contains pointers to the ads and domain_member docs)
-docs/docbook/projdoc/upgrading-to-3.0.sgml - not finished yet
docs/docbook/projdoc/winbind.sgml - needs documentation for ADS
docs/textdocs/CUPS-PrintingInfo.txt - needs to be converted to sgml - Kurt Pfeifle
docs/textdocs/PROFILES.txt - needs to be converted to sgml
@@ -48,6 +49,7 @@ docs/docbook/manpages/testprns.1.sgml
docs/docbook/manpages/wbinfo.1.sgml
Stuff that needs to be documented:
+Merge the various docs about wins and browsing
Windows NT 4.0 Style Trust Relationship
One Time Migration script from a Windows NT 4.0 PDC to a Samba PDC
ldap passwd sync
diff --git a/docs/faq/clientapp.html b/docs/faq/clientapp.html
index b48e236377..d24e778b2a 100644
--- a/docs/faq/clientapp.html
+++ b/docs/faq/clientapp.html
@@ -5,7 +5,8 @@
>Specific client application problems</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="CLIENTAPP"
-></A
->Chapter 4. Specific client application problems</H1
+NAME="CLIENTAPP">Chapter 4. Specific client application problems</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN175"
-></A
->4.1. MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</H1
+NAME="AEN174">4.1. MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</H1
><P
>When installing MS Office on a Samba drive for which you have admin
user permissions, ie. admin users = username, you will find the
@@ -98,9 +95,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN180"
-></A
->4.2. How to use a Samba share as an administrative share for MS Office, etc.</H1
+NAME="AEN179">4.2. How to use a Samba share as an administrative share for MS Office, etc.</H1
><P
>Microsoft Office products can be installed as an administrative installation
from which the application can either be run off the administratively installed
@@ -160,9 +155,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN195"
-></A
->4.3. Microsoft Access database opening errors</H1
+NAME="AEN194">4.3. Microsoft Access database opening errors</H1
><P
>Here are some notes on running MS-Access on a Samba drive from <A
HREF="stefank@esi.com.au"
diff --git a/docs/faq/errors.html b/docs/faq/errors.html
index 08da5e5db0..dd105396ba 100644
--- a/docs/faq/errors.html
+++ b/docs/faq/errors.html
@@ -5,7 +5,8 @@
>Common errors</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="ERRORS"
-></A
->Chapter 5. Common errors</H1
+NAME="ERRORS">Chapter 5. Common errors</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN206"
-></A
->5.1. Not listening for calling name</H1
+NAME="AEN205">5.1. Not listening for calling name</H1
><P
><PRE
CLASS="PROGRAMLISTING"
@@ -103,9 +100,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN213"
-></A
->5.2. System Error 1240</H1
+NAME="AEN212">5.2. System Error 1240</H1
><P
>System error 1240 means that the client is refusing to talk
to a non-encrypting server. Microsoft changed WinNT in service
@@ -132,16 +127,14 @@ Windows NT in the chapter "Portability" of the samba HOWTO collection</TD
></TABLE
><P
></P
->&#13;</P
+></P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN220"
-></A
->5.3. smbclient ignores -N !</H1
+NAME="AEN219">5.3. smbclient ignores -N !</H1
><P
><SPAN
CLASS="QUOTE"
@@ -153,7 +146,7 @@ CLASS="COMMAND"
the program always prompts for the password if the server is a Samba server.
It also ignores the "-N" argument when querying some (but not all) of our
NT servers."</SPAN
->&#13;</P
+></P
><P
>No, it does not ignore -N, it is just that your server rejected the
null password in the connection, so smbclient prompts for a password
@@ -174,9 +167,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN229"
-></A
->5.4. The data on the CD-Drive I've shared seems to be corrupted!</H1
+NAME="AEN228">5.4. The data on the CD-Drive I've shared seems to be corrupted!</H1
><P
>Some OSes (notably Linux) default to auto detection of file type on
cdroms and do cr/lf translation. This is a very bad idea when use with
@@ -190,9 +181,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN233"
-></A
->5.5. Why can users access home directories of other users?</H1
+NAME="AEN232">5.5. Why can users access home directories of other users?</H1
><P
><SPAN
CLASS="QUOTE"
@@ -248,12 +237,19 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN246"
-></A
->5.6. Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</H1
+NAME="AEN245">5.6. Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</H1
><P
>A domain controller has to announce on the network who it is. This usually takes a while.</P
></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN248">5.7. I'm getting "open_oplock_ipc: Failed to get local UDP socket for address 100007f. Error was Cannot assign requested" in the logs</H1
+><P
+>Your loopback device isn't working correctly. Make sure it's running.</P
+></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
diff --git a/docs/faq/general.html b/docs/faq/general.html
index 5a42678cb6..435a2282b4 100644
--- a/docs/faq/general.html
+++ b/docs/faq/general.html
@@ -5,7 +5,8 @@
>General Information</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="GENERAL"
-></A
->Chapter 1. General Information</H1
+NAME="GENERAL">Chapter 1. General Information</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN12"
-></A
->1.1. Where can I get it?</H1
+NAME="AEN12">1.1. Where can I get it?</H1
><P
>The Samba suite is available at the <A
HREF="http://samba.org/"
@@ -92,9 +89,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN16"
-></A
->1.2. What do the version numbers mean?</H1
+NAME="AEN16">1.2. What do the version numbers mean?</H1
><P
>It is not recommended that you run a version of Samba with the word
"alpha" in its name unless you know what you are doing and are willing
@@ -141,7 +136,7 @@ levels are released which give us the pXX series, for example 1.9.16p2.</TD
></TABLE
><P
></P
->&#13;</P
+></P
><P
>So the progression goes:
@@ -166,9 +161,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN28"
-></A
->1.3. What platforms are supported?</H1
+NAME="AEN28">1.3. What platforms are supported?</H1
><P
>Many different platforms have run Samba successfully. The platforms
most widely used and thus best tested are Linux and SunOS.</P
@@ -342,9 +335,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN71"
-></A
->1.4. How do I subscribe to the Samba Mailing Lists?</H1
+NAME="AEN71">1.4. How do I subscribe to the Samba Mailing Lists?</H1
><P
>Look at <A
HREF="http://samba.org/samba/archives.html"
@@ -357,15 +348,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN75"
-></A
->1.5. Pizza supply details</H1
+NAME="AEN75">1.5. Pizza supply details</H1
><P
>Those who have registered in the Samba survey as "Pizza Factory" will
already know this, but the rest may need some help. Andrew doesn't ask
for payment, but he does appreciate it when people give him
pizza. This calls for a little organisation when the pizza donor is
-twenty thousand kilometres away, but it has been done.&#13;</P
+twenty thousand kilometres away, but it has been done.</P
><P
>Method 1: Ring up your local branch of an international pizza chain
and see if they honour their vouchers internationally. Pizza Hut do,
diff --git a/docs/faq/install.html b/docs/faq/install.html
index 23403ab96b..e647aef6d4 100644
--- a/docs/faq/install.html
+++ b/docs/faq/install.html
@@ -5,7 +5,8 @@
>Compiling and installing Samba on a Unix host</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="INSTALL"
-></A
->Chapter 2. Compiling and installing Samba on a Unix host</H1
+NAME="INSTALL">Chapter 2. Compiling and installing Samba on a Unix host</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN84"
-></A
->2.1. I can't see the Samba server in any browse lists!</H1
+NAME="AEN84">2.1. I can't see the Samba server in any browse lists!</H1
><P
>See Browsing.html in the docs directory of the samba source
for more information on browsing.</P
@@ -100,9 +97,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN89"
-></A
->2.2. Some files that I KNOW are on the server doesn't show up when I view the files from my client!</H1
+NAME="AEN89">2.2. Some files that I KNOW are on the server doesn't show up when I view the files from my client!</H1
><P
>See the next question.</P
></DIV
@@ -111,9 +106,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN92"
-></A
->2.3. Some files on the server show up with really wierd filenames when I view the files from my client!</H1
+NAME="AEN92">2.3. Some files on the server show up with really wierd filenames when I view the files from my client!</H1
><P
>If you check what files are not showing up, you will note that they
are files which contain upper case letters or which are otherwise not
@@ -131,9 +124,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN96"
-></A
->2.4. My client reports "cannot locate specified computer" or similar</H1
+NAME="AEN96">2.4. My client reports "cannot locate specified computer" or similar</H1
><P
>This indicates one of three things: You supplied an incorrect server
name, the underlying TCP/IP layer is not working correctly, or the
@@ -166,9 +157,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN103"
-></A
->2.5. My client reports "cannot locate specified share name" or similar</H1
+NAME="AEN103">2.5. My client reports "cannot locate specified share name" or similar</H1
><P
>This message indicates that your client CAN locate the specified
server, which is a good start, but that it cannot find a service of
@@ -209,9 +198,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN112"
-></A
->2.6. Printing doesn't work</H1
+NAME="AEN112">2.6. Printing doesn't work</H1
><P
>Make sure that the specified print command for the service you are
connecting to is correct and that it has a fully-qualified path (eg.,
@@ -245,9 +232,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN120"
-></A
->2.7. My client reports "This server is not configured to list shared resources"</H1
+NAME="AEN120">2.7. My client reports "This server is not configured to list shared resources"</H1
><P
>Your guest account is probably invalid for some reason. Samba uses the
guest account for browsing in smbd. Check that your guest account is
@@ -260,9 +245,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN124"
-></A
->2.8. Log message "you appear to have a trapdoor uid system"</H1
+NAME="AEN124">2.8. Log message "you appear to have a trapdoor uid system"</H1
><P
>This can have several causes. It might be because you are using a uid
or gid of 65535 or -1. This is a VERY bad idea, and is a big security
@@ -301,9 +284,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN132"
-></A
->2.9. Why are my file's timestamps off by an hour, or by a few hours?</H1
+NAME="AEN132">2.9. Why are my file's timestamps off by an hour, or by a few hours?</H1
><P
>This is from Paul Eggert eggert@twinsun.com.</P
><P
@@ -418,20 +399,16 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN155"
-></A
->2.10. How do I set the printer driver name correctly?</H1
+NAME="AEN155">2.10. How do I set the printer driver name correctly?</H1
><P
->Question:</P
-><P
-><SPAN
+>Question:
+<SPAN
CLASS="QUOTE"
>" On NT, I opened "Printer Manager" and "Connect to Printer".
Enter ["\\ptdi270\ps1"] in the box of printer. I got the
following error message
"</SPAN
->
- </P
+></P
><P
> <PRE
CLASS="PROGRAMLISTING"
diff --git a/docs/faq/samba-faq.html b/docs/faq/samba-faq.html
index 50037e1e1e..ec46e078a3 100644
--- a/docs/faq/samba-faq.html
+++ b/docs/faq/samba-faq.html
@@ -5,10 +5,11 @@
>Samba FAQ</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="NEXT"
TITLE="General Information"
-HREF="faq-general.html"></HEAD
+HREF="general.html"></HEAD
><BODY
CLASS="BOOK"
BGCOLOR="#FFFFFF"
@@ -19,28 +20,20 @@ ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
-NAME="SAMBA-FAQ"
-></A
-><DIV
+NAME="SAMBA-FAQ"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
-NAME="SAMBA-FAQ"
-></A
->Samba FAQ</H1
+NAME="SAMBA-FAQ">Samba FAQ</H1
><H3
CLASS="AUTHOR"
><A
-NAME="AEN4"
-></A
->Samba Team</H3
+NAME="AEN4">Samba Team</H3
><HR></DIV
><H1
><A
-NAME="AEN7"
-></A
->Dedication</H1
+NAME="AEN7">Dedication</H1
><P
>This is the Frequently Asked Questions (FAQ) document for
Samba, the free and very popular SMB server product. An SMB server
@@ -63,238 +56,238 @@ CLASS="TOC"
></DT
><DT
>1. <A
-HREF="faq-general.html"
+HREF="general.html"
>General Information</A
></DT
><DD
><DL
><DT
>1.1. <A
-HREF="faq-general.html#AEN12"
+HREF="general.html#AEN12"
>Where can I get it?</A
></DT
><DT
>1.2. <A
-HREF="faq-general.html#AEN16"
+HREF="general.html#AEN16"
>What do the version numbers mean?</A
></DT
><DT
>1.3. <A
-HREF="faq-general.html#AEN28"
+HREF="general.html#AEN28"
>What platforms are supported?</A
></DT
><DT
>1.4. <A
-HREF="faq-general.html#AEN71"
+HREF="general.html#AEN71"
>How do I subscribe to the Samba Mailing Lists?</A
></DT
><DT
>1.5. <A
-HREF="faq-general.html#AEN75"
+HREF="general.html#AEN75"
>Pizza supply details</A
></DT
></DL
></DD
><DT
>2. <A
-HREF="faq-install.html"
+HREF="install.html"
>Compiling and installing Samba on a Unix host</A
></DT
><DD
><DL
><DT
>2.1. <A
-HREF="faq-install.html#AEN84"
+HREF="install.html#AEN84"
>I can't see the Samba server in any browse lists!</A
></DT
><DT
>2.2. <A
-HREF="faq-install.html#AEN89"
->Some files that I KNOW are on the server don't show up when I view the files from my client!</A
+HREF="install.html#AEN89"
+>Some files that I KNOW are on the server doesn't show up when I view the files from my client!</A
></DT
><DT
>2.3. <A
-HREF="faq-install.html#AEN92"
+HREF="install.html#AEN92"
>Some files on the server show up with really wierd filenames when I view the files from my client!</A
></DT
><DT
>2.4. <A
-HREF="faq-install.html#AEN96"
+HREF="install.html#AEN96"
>My client reports "cannot locate specified computer" or similar</A
></DT
><DT
>2.5. <A
-HREF="faq-install.html#AEN103"
+HREF="install.html#AEN103"
>My client reports "cannot locate specified share name" or similar</A
></DT
><DT
>2.6. <A
-HREF="faq-install.html#AEN112"
+HREF="install.html#AEN112"
>Printing doesn't work</A
></DT
><DT
>2.7. <A
-HREF="faq-install.html#AEN120"
+HREF="install.html#AEN120"
>My client reports "This server is not configured to list shared resources"</A
></DT
><DT
>2.8. <A
-HREF="faq-install.html#AEN124"
+HREF="install.html#AEN124"
>Log message "you appear to have a trapdoor uid system"</A
></DT
><DT
>2.9. <A
-HREF="faq-install.html#AEN132"
+HREF="install.html#AEN132"
>Why are my file's timestamps off by an hour, or by a few hours?</A
></DT
><DT
>2.10. <A
-HREF="faq-install.html#AEN155"
+HREF="install.html#AEN155"
>How do I set the printer driver name correctly?</A
></DT
></DL
></DD
><DT
>3. <A
-HREF="faq-config.html"
+HREF="config.html"
>Configuration problems</A
></DT
><DD
><DL
><DT
>3.1. <A
-HREF="faq-config.html#AEN169"
+HREF="config.html#AEN169"
>I have set 'force user' and samba still makes 'root' the owner of all the files I touch!</A
></DT
></DL
></DD
><DT
>4. <A
-HREF="faq-clientapp.html"
+HREF="clientapp.html"
>Specific client application problems</A
></DT
><DD
><DL
><DT
>4.1. <A
-HREF="faq-clientapp.html#AEN174"
->MS Office Setup reports "Cannot change properties of '\\MSOFFICE\\SETUP.INI'"</A
+HREF="clientapp.html#AEN174"
+>MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</A
></DT
><DT
>4.2. <A
-HREF="faq-clientapp.html#AEN179"
+HREF="clientapp.html#AEN179"
>How to use a Samba share as an administrative share for MS Office, etc.</A
></DT
><DT
>4.3. <A
-HREF="faq-clientapp.html#AEN194"
+HREF="clientapp.html#AEN194"
>Microsoft Access database opening errors</A
></DT
></DL
></DD
><DT
>5. <A
-HREF="faq-errors.html"
+HREF="errors.html"
>Common errors</A
></DT
><DD
><DL
><DT
>5.1. <A
-HREF="faq-errors.html#AEN205"
+HREF="errors.html#AEN205"
>Not listening for calling name</A
></DT
><DT
>5.2. <A
-HREF="faq-errors.html#AEN212"
+HREF="errors.html#AEN212"
>System Error 1240</A
></DT
><DT
>5.3. <A
-HREF="faq-errors.html#AEN219"
+HREF="errors.html#AEN219"
>smbclient ignores -N !</A
></DT
><DT
>5.4. <A
-HREF="faq-errors.html#AEN228"
+HREF="errors.html#AEN228"
>The data on the CD-Drive I've shared seems to be corrupted!</A
></DT
><DT
>5.5. <A
-HREF="faq-errors.html#AEN232"
+HREF="errors.html#AEN232"
>Why can users access home directories of other users?</A
></DT
><DT
>5.6. <A
-HREF="faq-errors.html#AEN245"
+HREF="errors.html#AEN245"
>Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</A
></DT
><DT
>5.7. <A
-HREF="faq-errors.html#AEN248"
+HREF="errors.html#AEN248"
>I'm getting "open_oplock_ipc: Failed to get local UDP socket for address 100007f. Error was Cannot assign requested" in the logs</A
></DT
></DL
></DD
><DT
>6. <A
-HREF="faq-features.html"
+HREF="features.html"
>Features</A
></DT
><DD
><DL
><DT
>6.1. <A
-HREF="faq-features.html#AEN253"
+HREF="features.html#AEN253"
>How can I prevent my samba server from being used to distribute the Nimda worm?</A
></DT
><DT
>6.2. <A
-HREF="faq-features.html#AEN267"
+HREF="features.html#AEN267"
>How can I use samba as a fax server?</A
></DT
><DD
><DL
><DT
>6.2.1. <A
-HREF="faq-features.html#AEN278"
+HREF="features.html#AEN278"
>Tools for printing faxes</A
></DT
><DT
>6.2.2. <A
-HREF="faq-features.html#AEN287"
+HREF="features.html#AEN288"
>Making the fax-server</A
></DT
><DT
>6.2.3. <A
-HREF="faq-features.html#AEN303"
+HREF="features.html#AEN304"
>Installing the client drivers</A
></DT
><DT
>6.2.4. <A
-HREF="faq-features.html#AEN317"
+HREF="features.html#AEN318"
>Example smb.conf</A
></DT
></DL
></DD
><DT
>6.3. <A
-HREF="faq-features.html#AEN321"
+HREF="features.html#AEN322"
>Samba doesn't work well together with DHCP!</A
></DT
><DT
>6.4. <A
-HREF="faq-features.html#AEN334"
+HREF="features.html#AEN335"
>How can I assign NetBIOS names to clients with DHCP?</A
></DT
><DT
>6.5. <A
-HREF="faq-features.html#AEN341"
+HREF="features.html#AEN342"
>How do I convert between unix and dos text formats?</A
></DT
><DT
>6.6. <A
-HREF="faq-features.html#AEN346"
+HREF="features.html#AEN347"
>Does samba have wins replication support?</A
></DT
></DL
@@ -328,7 +321,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="faq-general.html"
+HREF="general.html"
ACCESSKEY="N"
>Next</A
></TD
diff --git a/docs/htmldocs/Samba-Developers-Guide.html b/docs/htmldocs/Samba-Developers-Guide.html
index 5d9702e49e..b90d99bf66 100644
--- a/docs/htmldocs/Samba-Developers-Guide.html
+++ b/docs/htmldocs/Samba-Developers-Guide.html
@@ -5,7 +5,7 @@
>SAMBA Developers Guide</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="BOOK"
BGCOLOR="#FFFFFF"
@@ -687,7 +687,7 @@ HREF="#AEN2925"
><DT
>10.4. <A
HREF="#AEN2959"
->ChangeID and Client Caching of Printer Information</A
+>ChangeID &#38; Client Caching of Printer Information</A
></DT
><DT
>10.5. <A
@@ -810,26 +810,7 @@ HREF="#AEN3162"
><A
NAME="SMBPASSWDFILEFORMAT"
></A
->&#62;The smbpasswd file</A
-></DT
-></DL
-></DD
-><DT
->14. <A
-HREF="#RPC-PLUGIN"
->RPC Pluggable Modules</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN3225"
->About</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN3228"
->General Overview</A
+>The smbpasswd file</A
></DT
></DL
></DD
@@ -934,7 +915,7 @@ NAME="AEN39"
of, a 'NetBIOS Name Service'. NT/AS offers 'Windows Internet Name Service'
which is fully rfc1001/2 compliant, but has had to take specific action
with certain NetBIOS names in order to make it useful. (for example, it
-deals with the registration of &lt;1c&gt; &lt;1d&gt; &lt;1e&gt; names all in different ways.
+deals with the registration of &#60;1c&#62; &#60;1d&#62; &#60;1e&#62; names all in different ways.
I recommend the reading of the Microsoft WINS Server Help files for full
details).</P
><P
@@ -2552,7 +2533,7 @@ NAME="AEN540"
><P
>This is a short document that describes some of the issues that
confront a SMB implementation on unix, and how Samba copes with
-them. They may help people who are looking at unix&lt;-&gt;PC
+them. They may help people who are looking at unix&#60;-&#62;PC
interoperability.</P
><P
>It was written to help out a person who was writing a paper on unix to
@@ -2900,14 +2881,14 @@ example, if I'm using a csh style shell:</P
><P
><B
CLASS="COMMAND"
->strace -f -p 3872 &gt;&amp; strace.out</B
+>strace -f -p 3872 &#62;&#38; strace.out</B
></P
><P
>or with a sh style shell:</P
><P
><B
CLASS="COMMAND"
->strace -f -p 3872 &#62; strace.out 2&gt;&amp;1</B
+>strace -f -p 3872 &#62; strace.out 2&#62;&#38;1</B
></P
><P
>Note the "-f" option. This is only available on some systems, and
@@ -7004,7 +6985,7 @@ CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note: mailslots will contain a response mailslot, to which the response
- should be sent. the target NetBIOS name is REQUEST_NAME&lt;20&gt;, where
+ should be sent. the target NetBIOS name is REQUEST_NAME&#60;20&#62;, where
REQUEST_NAME is the name of the machine that sent the request.</I
></SPAN
></P
@@ -7669,18 +7650,18 @@ NAME="AEN2699"
></A
>9.7.2. Protocol</H3
><P
->C-&gt;S ReqChal,Cc S-&gt;C Cs</P
+>C-&#62;S ReqChal,Cc S-&#62;C Cs</P
><P
->C &amp; S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))</P
+>C &#38; S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))</P
><P
>C: Rc = Cred(Ks,Cc) C-&#62;S Authenticate,Rc S: Rs = Cred(Ks,Cs),
-assert(Rc == Cred(Ks,Cc)) S-&gt;C Rs C: assert(Rs == Cred(Ks,Cs))</P
+assert(Rc == Cred(Ks,Cc)) S-&#62;C Rs C: assert(Rs == Cred(Ks,Cs))</P
><P
>On joining the domain the client will optionally attempt to change its
password and the domain controller may refuse to update it depending
on registry settings. This will also occur weekly afterwards.</P
><P
->C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&gt;S ServerPasswordSet,Rc',Tc,
+>C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&#62;S ServerPasswordSet,Rc',Tc,
arc4(Ks[0..7,16],lmowf(randompassword()) C: Rc = Cred(Ks,Rc+Tc+1) S:
assert(Rc' == Cred(Ks,Rc+Tc)), Ts = Time() S: Rs' = Cred(Ks,Rs+Tc+1)
S-&#62;C Rs',Ts C: assert(Rs' == Cred(Ks,Rs+Tc+1)) S: Rs = Rs'</P
@@ -7688,7 +7669,7 @@ S-&#62;C Rs',Ts C: assert(Rs' == Cred(Ks,Rs+Tc+1)) S: Rs = Rs'</P
>User: U with password P wishes to login to the domain (incidental data
such as workstation and domain omitted)</P
><P
->C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&gt;S NetLogonSamLogon,Rc',Tc,U,
+>C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&#62;S NetLogonSamLogon,Rc',Tc,U,
arc4(Ks[0..7,16],16,ntowf(P),16), arc4(Ks[0..7,16],16,lmowf(P),16) S:
assert(Rc' == Cred(Ks,Rc+Tc)) assert(passwords match those in SAM) S:
Ts = Time()</P
@@ -8374,7 +8355,7 @@ CLASS="SECT1"
><A
NAME="AEN2959"
></A
->10.4. ChangeID and Client Caching of Printer Information</H2
+>10.4. ChangeID &#38; Client Caching of Printer Information</H2
><P
>[To be filled in later]</P
></DIV
@@ -8695,7 +8676,8 @@ accessed.</P
>For example, when you call </P
><PRE
CLASS="PROGRAMLISTING"
->NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const
+>&#60;
+NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const
NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain,
const char *name, SAM_ACCOUNT_HANDLE **account)</PRE
><P
@@ -9120,7 +9102,7 @@ NAME="AEN3162"
>13.3. <A
NAME="SMBPASSWDFILEFORMAT"
></A
->&#62;The smbpasswd file</H2
+>The smbpasswd file</H2
><P
>In order for Samba to participate in the above protocol
it must be able to look up the 16 byte hashed values given a user name.
@@ -9149,7 +9131,7 @@ CLASS="FILENAME"
CLASS="FILENAME"
>/etc/passwd
</TT
-> file use the following command:</P
+> file use the following command :</P
><P
><TT
CLASS="PROMPT"
@@ -9320,97 +9302,6 @@ CLASS="FILENAME"
> file.</P
></DIV
></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="RPC-PLUGIN"
-></A
->Chapter 14. RPC Pluggable Modules</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3225"
-></A
->14.1. About</H2
-><P
->This document describes how to make use the new RPC Pluggable Modules features
-of Samba 3.0. This architecture was added to increase the maintainability of
-Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
-The RPM architecture will also allow third-party vendors to add functionality
-to Samba through plug-ins.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3228"
-></A
->14.2. General Overview</H2
-><P
->When an RPC call is sent to smbd, smbd tries to load a shared library by the
-name <TT
-CLASS="FILENAME"
->librpc_&lt;pipename&gt;.so</TT
-> to handle the call if
-it doesn't know how to handle the call internally. For instance, LSA calls
-are handled by <TT
-CLASS="FILENAME"
->librpc_lsass.so</TT
->..
-These shared libraries should be located in the <TT
-CLASS="FILENAME"
->&lt;sambaroot&gt;/lib/rpc</TT
->. smbd then attempts to call the rpc_pipe_init function within
-the shared library.</P
-><P
->In the rpc_pipe_init function, the library should call
-rpc_pipe_register_commands(). This function takes the following arguments:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->int rpc_pipe_register_commands(const char *clnt, const char *srv,
- const struct api_struct *cmds, int size);</PRE
-></P
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->clnt</DT
-><DD
-><P
->the Client name of the named pipe</P
-></DD
-><DT
->srv</DT
-><DD
-><P
->the Server name of the named pipe</P
-></DD
-><DT
->cmds</DT
-><DD
-><P
->a list of api_structs that map RPC ordinal numbers to function calls</P
-></DD
-><DT
->size</DT
-><DD
-><P
->the number of api_structs contained in cmds</P
-></DD
-></DL
-></DIV
-><P
->See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
-how to use this library.</P
-></DIV
-></DIV
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/Samba-HOWTO-Collection.html b/docs/htmldocs/Samba-HOWTO-Collection.html
deleted file mode 100644
index d758fbbe11..0000000000
--- a/docs/htmldocs/Samba-HOWTO-Collection.html
+++ /dev/null
@@ -1,17270 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML
-><HEAD
-><TITLE
->SAMBA Project Documentation</TITLE
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
-><BODY
-CLASS="BOOK"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="BOOK"
-><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
-><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
->SAMBA Project Documentation</H1
-><H3
-CLASS="AUTHOR"
-><A
-NAME="AEN4"
-></A
->SAMBA Team</H3
-><HR></DIV
-><HR><H1
-><A
-NAME="AEN8"
-></A
->Abstract</H1
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Last Update</I
-></SPAN
-> : Wed Jan 15</P
-><P
->This book is a collection of HOWTOs added to Samba documentation over the years.
-I try to ensure that all are current, but sometimes the is a larger job
-than one person can maintain. The most recent version of this document
-can be found at <A
-HREF="http://www.samba.org/"
-TARGET="_top"
->http://www.samba.org/</A
->
-on the "Documentation" page. Please send updates to <A
-HREF="mailto:jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
-> or
-<A
-HREF="mailto:jelmer@samba.org"
-TARGET="_top"
->jelmer@samba.org</A
->.</P
-><P
->This documentation is distributed under the GNU General Public License (GPL)
-version 2. A copy of the license is included with the Samba source
-distribution. A copy can be found on-line at <A
-HREF="http://www.fsf.org/licenses/gpl.txt"
-TARGET="_top"
->http://www.fsf.org/licenses/gpl.txt</A
-></P
-><P
->Cheers, jerry</P
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->I. <A
-HREF="#INTRODUCTION"
->General installation</A
-></DT
-><DD
-><DL
-><DT
->1. <A
-HREF="#INSTALL"
->How to Install and Test SAMBA</A
-></DT
-><DD
-><DL
-><DT
->1.1. <A
-HREF="#AEN26"
->Read the man pages</A
-></DT
-><DT
->1.2. <A
-HREF="#AEN36"
->Building the Binaries</A
-></DT
-><DT
->1.3. <A
-HREF="#AEN64"
->The all important step</A
-></DT
-><DT
->1.4. <A
-HREF="#AEN68"
->Create the smb configuration file.</A
-></DT
-><DT
->1.5. <A
-HREF="#AEN82"
->Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></A
-></DT
-><DT
->1.6. <A
-HREF="#AEN90"
->Starting the smbd and nmbd</A
-></DT
-><DT
->1.7. <A
-HREF="#AEN145"
->Try listing the shares available on your
- server</A
-></DT
-><DT
->1.8. <A
-HREF="#AEN154"
->Try connecting with the unix client</A
-></DT
-><DT
->1.9. <A
-HREF="#AEN170"
->Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</A
-></DT
-><DT
->1.10. <A
-HREF="#AEN184"
->What If Things Don't Work?</A
-></DT
-></DL
-></DD
-><DT
->2. <A
-HREF="#BROWSING-QUICK"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
-></DT
-><DD
-><DL
-><DT
->2.1. <A
-HREF="#AEN230"
->Discussion</A
-></DT
-><DT
->2.2. <A
-HREF="#AEN238"
->Use of the "Remote Announce" parameter</A
-></DT
-><DT
->2.3. <A
-HREF="#AEN252"
->Use of the "Remote Browse Sync" parameter</A
-></DT
-><DT
->2.4. <A
-HREF="#AEN257"
->Use of WINS</A
-></DT
-><DT
->2.5. <A
-HREF="#AEN268"
->Do NOT use more than one (1) protocol on MS Windows machines</A
-></DT
-><DT
->2.6. <A
-HREF="#AEN274"
->Name Resolution Order</A
-></DT
-></DL
-></DD
-><DT
->3. <A
-HREF="#PASSDB"
->User information database</A
-></DT
-><DD
-><DL
-><DT
->3.1. <A
-HREF="#AEN324"
->Introduction</A
-></DT
-><DT
->3.2. <A
-HREF="#AEN331"
->Important Notes About Security</A
-></DT
-><DT
->3.3. <A
-HREF="#AEN357"
->The smbpasswd Command</A
-></DT
-><DT
->3.4. <A
-HREF="#AEN388"
->Plain text</A
-></DT
-><DT
->3.5. <A
-HREF="#AEN393"
->TDB</A
-></DT
-><DT
->3.6. <A
-HREF="#AEN396"
->LDAP</A
-></DT
-><DT
->3.7. <A
-HREF="#AEN614"
->MySQL</A
-></DT
-><DT
->3.8. <A
-HREF="#AEN662"
->Passdb XML plugin</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->II. <A
-HREF="#TYPE"
->Type of installation</A
-></DT
-><DD
-><DL
-><DT
->4. <A
-HREF="#SECURITYLEVELS"
->User and Share security level (for servers not in a domain)</A
-></DT
-><DT
->5. <A
-HREF="#SAMBA-PDC"
->Samba as a NT4 or Win2k Primary Domain Controller</A
-></DT
-><DD
-><DL
-><DT
->5.1. <A
-HREF="#AEN722"
->Prerequisite Reading</A
-></DT
-><DT
->5.2. <A
-HREF="#AEN728"
->Background</A
-></DT
-><DT
->5.3. <A
-HREF="#AEN767"
->Configuring the Samba Domain Controller</A
-></DT
-><DT
->5.4. <A
-HREF="#AEN810"
->Creating Machine Trust Accounts and Joining Clients to the
-Domain</A
-></DT
-><DT
->5.5. <A
-HREF="#AEN894"
->Common Problems and Errors</A
-></DT
-><DT
->5.6. <A
-HREF="#AEN942"
->System Policies and Profiles</A
-></DT
-><DT
->5.7. <A
-HREF="#AEN986"
->What other help can I get?</A
-></DT
-><DT
->5.8. <A
-HREF="#AEN1100"
->Domain Control for Windows 9x/ME</A
-></DT
-><DT
->5.9. <A
-HREF="#AEN1238"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</A
-></DT
-></DL
-></DD
-><DT
->6. <A
-HREF="#SAMBA-BDC"
->How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
-></DT
-><DD
-><DL
-><DT
->6.1. <A
-HREF="#AEN1274"
->Prerequisite Reading</A
-></DT
-><DT
->6.2. <A
-HREF="#AEN1278"
->Background</A
-></DT
-><DT
->6.3. <A
-HREF="#AEN1286"
->What qualifies a Domain Controller on the network?</A
-></DT
-><DT
->6.4. <A
-HREF="#AEN1295"
->Can Samba be a Backup Domain Controller to an NT PDC?</A
-></DT
-><DT
->6.5. <A
-HREF="#AEN1300"
->How do I set up a Samba BDC?</A
-></DT
-></DL
-></DD
-><DT
->7. <A
-HREF="#ADS"
->Samba as a ADS domain member</A
-></DT
-><DD
-><DL
-><DT
->7.1. <A
-HREF="#AEN1339"
->Installing the required packages for Debian</A
-></DT
-><DT
->7.2. <A
-HREF="#AEN1346"
->Installing the required packages for RedHat</A
-></DT
-><DT
->7.3. <A
-HREF="#AEN1356"
->Compile Samba</A
-></DT
-><DT
->7.4. <A
-HREF="#AEN1371"
->Setup your /etc/krb5.conf</A
-></DT
-><DT
->7.5. <A
-HREF="#AEN1381"
->Create the computer account</A
-></DT
-><DT
->7.6. <A
-HREF="#AEN1393"
->Test your server setup</A
-></DT
-><DT
->7.7. <A
-HREF="#AEN1398"
->Testing with smbclient</A
-></DT
-><DT
->7.8. <A
-HREF="#AEN1401"
->Notes</A
-></DT
-></DL
-></DD
-><DT
->8. <A
-HREF="#DOMAIN-SECURITY"
->Samba as a NT4 or Win2k domain member</A
-></DT
-><DD
-><DL
-><DT
->8.1. <A
-HREF="#AEN1423"
->Joining an NT Domain with Samba 3.0</A
-></DT
-><DT
->8.2. <A
-HREF="#AEN1478"
->Samba and Windows 2000 Domains</A
-></DT
-><DT
->8.3. <A
-HREF="#AEN1481"
->Why is this better than security = server?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->III. <A
-HREF="#OPTIONAL"
->Optional configuration</A
-></DT
-><DD
-><DL
-><DT
->9. <A
-HREF="#INTEGRATE-MS-NETWORKS"
->Integrating MS Windows networks with Samba</A
-></DT
-><DD
-><DL
-><DT
->9.1. <A
-HREF="#AEN1513"
->Agenda</A
-></DT
-><DT
->9.2. <A
-HREF="#AEN1535"
->Name Resolution in a pure Unix/Linux world</A
-></DT
-><DT
->9.3. <A
-HREF="#AEN1598"
->Name resolution as used within MS Windows networking</A
-></DT
-><DT
->9.4. <A
-HREF="#AEN1643"
->How browsing functions and how to deploy stable and
-dependable browsing using Samba</A
-></DT
-><DT
->9.5. <A
-HREF="#AEN1653"
->MS Windows security options and how to configure
-Samba for seemless integration</A
-></DT
-><DT
->9.6. <A
-HREF="#AEN1723"
->Conclusions</A
-></DT
-></DL
-></DD
-><DT
->10. <A
-HREF="#UNIX-PERMISSIONS"
->UNIX Permission Bits and Windows NT Access Control Lists</A
-></DT
-><DD
-><DL
-><DT
->10.1. <A
-HREF="#AEN1744"
->Viewing and changing UNIX permissions using the NT
- security dialogs</A
-></DT
-><DT
->10.2. <A
-HREF="#AEN1748"
->How to view file security on a Samba share</A
-></DT
-><DT
->10.3. <A
-HREF="#AEN1759"
->Viewing file ownership</A
-></DT
-><DT
->10.4. <A
-HREF="#AEN1779"
->Viewing file or directory permissions</A
-></DT
-><DT
->10.5. <A
-HREF="#AEN1815"
->Modifying file or directory permissions</A
-></DT
-><DT
->10.6. <A
-HREF="#AEN1837"
->Interaction with the standard Samba create mask
- parameters</A
-></DT
-><DT
->10.7. <A
-HREF="#AEN1901"
->Interaction with the standard Samba file attribute
- mapping</A
-></DT
-></DL
-></DD
-><DT
->11. <A
-HREF="#PAM"
->Configuring PAM for distributed but centrally
-managed authentication</A
-></DT
-><DD
-><DL
-><DT
->11.1. <A
-HREF="#AEN1922"
->Samba and PAM</A
-></DT
-><DT
->11.2. <A
-HREF="#AEN1966"
->Distributed Authentication</A
-></DT
-><DT
->11.3. <A
-HREF="#AEN1973"
->PAM Configuration in smb.conf</A
-></DT
-></DL
-></DD
-><DT
->12. <A
-HREF="#MSDFS"
->Hosting a Microsoft Distributed File System tree on Samba</A
-></DT
-><DD
-><DL
-><DT
->12.1. <A
-HREF="#AEN1993"
->Instructions</A
-></DT
-></DL
-></DD
-><DT
->13. <A
-HREF="#PRINTING"
->Printing Support</A
-></DT
-><DD
-><DL
-><DT
->13.1. <A
-HREF="#AEN2054"
->Introduction</A
-></DT
-><DT
->13.2. <A
-HREF="#AEN2076"
->Configuration</A
-></DT
-><DT
->13.3. <A
-HREF="#AEN2184"
->The Imprints Toolset</A
-></DT
-><DT
->13.4. <A
-HREF="#AEN2227"
->Diagnosis</A
-></DT
-></DL
-></DD
-><DT
->14. <A
-HREF="#WINBIND"
->Unified Logons between Windows NT and UNIX using Winbind</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN2360"
->Abstract</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN2364"
->Introduction</A
-></DT
-><DT
->14.3. <A
-HREF="#AEN2377"
->What Winbind Provides</A
-></DT
-><DT
->14.4. <A
-HREF="#AEN2388"
->How Winbind Works</A
-></DT
-><DT
->14.5. <A
-HREF="#AEN2431"
->Installation and Configuration</A
-></DT
-><DT
->14.6. <A
-HREF="#AEN2680"
->Limitations</A
-></DT
-><DT
->14.7. <A
-HREF="#AEN2690"
->Conclusion</A
-></DT
-></DL
-></DD
-><DT
->15. <A
-HREF="#IMPROVED-BROWSING"
->Improved browsing in samba</A
-></DT
-><DD
-><DL
-><DT
->15.1. <A
-HREF="#AEN2700"
->Overview of browsing</A
-></DT
-><DT
->15.2. <A
-HREF="#AEN2704"
->Browsing support in samba</A
-></DT
-><DT
->15.3. <A
-HREF="#AEN2713"
->Problem resolution</A
-></DT
-><DT
->15.4. <A
-HREF="#AEN2720"
->Browsing across subnets</A
-></DT
-><DT
->15.5. <A
-HREF="#AEN2760"
->Setting up a WINS server</A
-></DT
-><DT
->15.6. <A
-HREF="#AEN2779"
->Setting up Browsing in a WORKGROUP</A
-></DT
-><DT
->15.7. <A
-HREF="#AEN2797"
->Setting up Browsing in a DOMAIN</A
-></DT
-><DT
->15.8. <A
-HREF="#AEN2807"
->Forcing samba to be the master</A
-></DT
-><DT
->15.9. <A
-HREF="#AEN2816"
->Making samba the domain master</A
-></DT
-><DT
->15.10. <A
-HREF="#AEN2834"
->Note about broadcast addresses</A
-></DT
-><DT
->15.11. <A
-HREF="#AEN2837"
->Multiple interfaces</A
-></DT
-></DL
-></DD
-><DT
->16. <A
-HREF="#VFS"
->Stackable VFS modules</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#AEN2855"
->Introduction and configuration</A
-></DT
-><DT
->16.2. <A
-HREF="#AEN2864"
->Included modules</A
-></DT
-><DT
->16.3. <A
-HREF="#AEN2918"
->VFS modules available elsewhere</A
-></DT
-></DL
-></DD
-><DT
->17. <A
-HREF="#CVS-ACCESS"
->Access Samba source code via CVS</A
-></DT
-><DD
-><DL
-><DT
->17.1. <A
-HREF="#AEN2942"
->Introduction</A
-></DT
-><DT
->17.2. <A
-HREF="#AEN2947"
->CVS Access to samba.org</A
-></DT
-></DL
-></DD
-><DT
->18. <A
-HREF="#GROUPMAPPING"
->Group mapping HOWTO</A
-></DT
-><DT
->19. <A
-HREF="#SPEED"
->Samba performance issues</A
-></DT
-><DD
-><DL
-><DT
->19.1. <A
-HREF="#AEN3033"
->Comparisons</A
-></DT
-><DT
->19.2. <A
-HREF="#AEN3039"
->Socket options</A
-></DT
-><DT
->19.3. <A
-HREF="#AEN3046"
->Read size</A
-></DT
-><DT
->19.4. <A
-HREF="#AEN3051"
->Max xmit</A
-></DT
-><DT
->19.5. <A
-HREF="#AEN3056"
->Log level</A
-></DT
-><DT
->19.6. <A
-HREF="#AEN3059"
->Read raw</A
-></DT
-><DT
->19.7. <A
-HREF="#AEN3064"
->Write raw</A
-></DT
-><DT
->19.8. <A
-HREF="#AEN3068"
->Slow Clients</A
-></DT
-><DT
->19.9. <A
-HREF="#AEN3072"
->Slow Logins</A
-></DT
-><DT
->19.10. <A
-HREF="#AEN3075"
->Client tuning</A
-></DT
-></DL
-></DD
-><DT
->20. <A
-HREF="#GROUPPROFILES"
->Creating Group Profiles</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="#AEN3123"
->Windows '9x</A
-></DT
-><DT
->20.2. <A
-HREF="#AEN3132"
->Windows NT 4</A
-></DT
-><DT
->20.3. <A
-HREF="#AEN3170"
->Windows 2000/XP</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->IV. <A
-HREF="#APPENDIXES"
->Appendixes</A
-></DT
-><DD
-><DL
-><DT
->21. <A
-HREF="#PORTABILITY"
->Portability</A
-></DT
-><DD
-><DL
-><DT
->21.1. <A
-HREF="#AEN3251"
->HPUX</A
-></DT
-><DT
->21.2. <A
-HREF="#AEN3257"
->SCO Unix</A
-></DT
-><DT
->21.3. <A
-HREF="#AEN3261"
->DNIX</A
-></DT
-><DT
->21.4. <A
-HREF="#AEN3290"
->RedHat Linux Rembrandt-II</A
-></DT
-></DL
-></DD
-><DT
->22. <A
-HREF="#OTHER-CLIENTS"
->Samba and other CIFS clients</A
-></DT
-><DD
-><DL
-><DT
->22.1. <A
-HREF="#AEN3311"
->Macintosh clients?</A
-></DT
-><DT
->22.2. <A
-HREF="#AEN3320"
->OS2 Client</A
-></DT
-><DT
->22.3. <A
-HREF="#AEN3360"
->Windows for Workgroups</A
-></DT
-><DT
->22.4. <A
-HREF="#AEN3381"
->Windows '95/'98</A
-></DT
-><DT
->22.5. <A
-HREF="#AEN3397"
->Windows 2000 Service Pack 2</A
-></DT
-></DL
-></DD
-><DT
->23. <A
-HREF="#BUGREPORT"
->Reporting Bugs</A
-></DT
-><DD
-><DL
-><DT
->23.1. <A
-HREF="#AEN3421"
->Introduction</A
-></DT
-><DT
->23.2. <A
-HREF="#AEN3431"
->General info</A
-></DT
-><DT
->23.3. <A
-HREF="#AEN3437"
->Debug levels</A
-></DT
-><DT
->23.4. <A
-HREF="#AEN3454"
->Internal errors</A
-></DT
-><DT
->23.5. <A
-HREF="#AEN3464"
->Attaching to a running process</A
-></DT
-><DT
->23.6. <A
-HREF="#AEN3467"
->Patches</A
-></DT
-></DL
-></DD
-><DT
->24. <A
-HREF="#DIAGNOSIS"
->Diagnosing your samba server</A
-></DT
-><DD
-><DL
-><DT
->24.1. <A
-HREF="#AEN3490"
->Introduction</A
-></DT
-><DT
->24.2. <A
-HREF="#AEN3495"
->Assumptions</A
-></DT
-><DT
->24.3. <A
-HREF="#AEN3505"
->Tests</A
-></DT
-><DT
->24.4. <A
-HREF="#AEN3615"
->Still having troubles?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-></DL
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="INTRODUCTION"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->I. General installation</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN21"
-></A
-><H1
->Introduction</H1
-><P
->This part contains general info on how to install samba
-and how to configure the parts of samba you will most likely need.
-PLEASE read this.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->1. <A
-HREF="#INSTALL"
->How to Install and Test SAMBA</A
-></DT
-><DD
-><DL
-><DT
->1.1. <A
-HREF="#AEN26"
->Read the man pages</A
-></DT
-><DT
->1.2. <A
-HREF="#AEN36"
->Building the Binaries</A
-></DT
-><DT
->1.3. <A
-HREF="#AEN64"
->The all important step</A
-></DT
-><DT
->1.4. <A
-HREF="#AEN68"
->Create the smb configuration file.</A
-></DT
-><DT
->1.5. <A
-HREF="#AEN82"
->Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></A
-></DT
-><DT
->1.6. <A
-HREF="#AEN90"
->Starting the smbd and nmbd</A
-></DT
-><DD
-><DL
-><DT
->1.6.1. <A
-HREF="#AEN100"
->Starting from inetd.conf</A
-></DT
-><DT
->1.6.2. <A
-HREF="#AEN129"
->Alternative: starting it as a daemon</A
-></DT
-></DL
-></DD
-><DT
->1.7. <A
-HREF="#AEN145"
->Try listing the shares available on your
- server</A
-></DT
-><DT
->1.8. <A
-HREF="#AEN154"
->Try connecting with the unix client</A
-></DT
-><DT
->1.9. <A
-HREF="#AEN170"
->Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</A
-></DT
-><DT
->1.10. <A
-HREF="#AEN184"
->What If Things Don't Work?</A
-></DT
-><DD
-><DL
-><DT
->1.10.1. <A
-HREF="#AEN189"
->Diagnosing Problems</A
-></DT
-><DT
->1.10.2. <A
-HREF="#AEN193"
->Scope IDs</A
-></DT
-><DT
->1.10.3. <A
-HREF="#AEN196"
->Choosing the Protocol Level</A
-></DT
-><DT
->1.10.4. <A
-HREF="#AEN205"
->Printing from UNIX to a Client PC</A
-></DT
-><DT
->1.10.5. <A
-HREF="#AEN210"
->Locking</A
-></DT
-><DT
->1.10.6. <A
-HREF="#AEN219"
->Mapping Usernames</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->2. <A
-HREF="#BROWSING-QUICK"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
-></DT
-><DD
-><DL
-><DT
->2.1. <A
-HREF="#AEN230"
->Discussion</A
-></DT
-><DT
->2.2. <A
-HREF="#AEN238"
->Use of the "Remote Announce" parameter</A
-></DT
-><DT
->2.3. <A
-HREF="#AEN252"
->Use of the "Remote Browse Sync" parameter</A
-></DT
-><DT
->2.4. <A
-HREF="#AEN257"
->Use of WINS</A
-></DT
-><DT
->2.5. <A
-HREF="#AEN268"
->Do NOT use more than one (1) protocol on MS Windows machines</A
-></DT
-><DT
->2.6. <A
-HREF="#AEN274"
->Name Resolution Order</A
-></DT
-></DL
-></DD
-><DT
->3. <A
-HREF="#PASSDB"
->User information database</A
-></DT
-><DD
-><DL
-><DT
->3.1. <A
-HREF="#AEN324"
->Introduction</A
-></DT
-><DT
->3.2. <A
-HREF="#AEN331"
->Important Notes About Security</A
-></DT
-><DD
-><DL
-><DT
->3.2.1. <A
-HREF="#AEN346"
->Advantages of SMB Encryption</A
-></DT
-><DT
->3.2.2. <A
-HREF="#AEN351"
->Advantages of non-encrypted passwords</A
-></DT
-></DL
-></DD
-><DT
->3.3. <A
-HREF="#AEN357"
->The smbpasswd Command</A
-></DT
-><DT
->3.4. <A
-HREF="#AEN388"
->Plain text</A
-></DT
-><DT
->3.5. <A
-HREF="#AEN393"
->TDB</A
-></DT
-><DT
->3.6. <A
-HREF="#AEN396"
->LDAP</A
-></DT
-><DD
-><DL
-><DT
->3.6.1. <A
-HREF="#AEN398"
->Introduction</A
-></DT
-><DT
->3.6.2. <A
-HREF="#AEN418"
->Introduction</A
-></DT
-><DT
->3.6.3. <A
-HREF="#AEN447"
->Supported LDAP Servers</A
-></DT
-><DT
->3.6.4. <A
-HREF="#AEN452"
->Schema and Relationship to the RFC 2307 posixAccount</A
-></DT
-><DT
->3.6.5. <A
-HREF="#AEN464"
->Configuring Samba with LDAP</A
-></DT
-><DT
->3.6.6. <A
-HREF="#AEN511"
->Accounts and Groups management</A
-></DT
-><DT
->3.6.7. <A
-HREF="#AEN516"
->Security and sambaAccount</A
-></DT
-><DT
->3.6.8. <A
-HREF="#AEN536"
->LDAP specials attributes for sambaAccounts</A
-></DT
-><DT
->3.6.9. <A
-HREF="#AEN606"
->Example LDIF Entries for a sambaAccount</A
-></DT
-></DL
-></DD
-><DT
->3.7. <A
-HREF="#AEN614"
->MySQL</A
-></DT
-><DD
-><DL
-><DT
->3.7.1. <A
-HREF="#AEN616"
->Building</A
-></DT
-><DT
->3.7.2. <A
-HREF="#AEN622"
->Creating the database</A
-></DT
-><DT
->3.7.3. <A
-HREF="#AEN632"
->Configuring</A
-></DT
-><DT
->3.7.4. <A
-HREF="#AEN649"
->Using plaintext passwords or encrypted password</A
-></DT
-><DT
->3.7.5. <A
-HREF="#AEN654"
->Getting non-column data from the table</A
-></DT
-></DL
-></DD
-><DT
->3.8. <A
-HREF="#AEN662"
->Passdb XML plugin</A
-></DT
-><DD
-><DL
-><DT
->3.8.1. <A
-HREF="#AEN664"
->Building</A
-></DT
-><DT
->3.8.2. <A
-HREF="#AEN670"
->Usage</A
-></DT
-></DL
-></DD
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="INSTALL"
-></A
->Chapter 1. How to Install and Test SAMBA</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN26"
-></A
->1.1. Read the man pages</H2
-><P
->The man pages distributed with SAMBA contain
- lots of useful info that will help to get you started.
- If you don't know how to read man pages then try
- something like:</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->man smbd.8</B
-></TT
->
- or
- <TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->nroff -man smbd.8 | more
- </B
-></TT
-> on older unixes.</P
-><P
->Other sources of information are pointed to
- by the Samba web site,<A
-HREF="http://www.samba.org/"
-TARGET="_top"
-> http://www.samba.org</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN36"
-></A
->1.2. Building the Binaries</H2
-><P
->To do this, first run the program <B
-CLASS="COMMAND"
->./configure
- </B
-> in the source directory. This should automatically
- configure Samba for your operating system. If you have unusual
- needs then you may wish to run</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->./configure --help
- </B
-></TT
-></P
-><P
->first to see what special options you can enable.
- Then executing</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make</B
-></TT
-></P
-><P
->will create the binaries. Once it's successfully
- compiled you can use </P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make install</B
-></TT
-></P
-><P
->to install the binaries and manual pages. You can
- separately install the binaries and/or man pages using</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make installbin
- </B
-></TT
-></P
-><P
->and</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make installman
- </B
-></TT
-></P
-><P
->Note that if you are upgrading for a previous version
- of Samba you might like to know that the old versions of
- the binaries will be renamed with a ".old" extension. You
- can go back to the previous version with</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make revert
- </B
-></TT
-></P
-><P
->if you find this version a disaster!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN64"
-></A
->1.3. The all important step</H2
-><P
->At this stage you must fetch yourself a
- coffee or other drink you find stimulating. Getting the rest
- of the install right can sometimes be tricky, so you will
- probably need it.</P
-><P
->If you have installed samba before then you can skip
- this step.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN68"
-></A
->1.4. Create the smb configuration file.</H2
-><P
->There are sample configuration files in the examples
- subdirectory in the distribution. I suggest you read them
- carefully so you can see how the options go together in
- practice. See the man page for all the options.</P
-><P
->The simplest useful configuration file would be
- something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [global]
- workgroup = MYGROUP
-
- [homes]
- guest ok = no
- read only = no
- </PRE
-></P
-><P
->which would allow connections by anyone with an
- account on the server, using either their login name or
- "homes" as the service name. (Note that I also set the
- workgroup that Samba is part of. See BROWSING.txt for details)</P
-><P
->Note that <B
-CLASS="COMMAND"
->make install</B
-> will not install
- a <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. You need to create it
- yourself. </P
-><P
->Make sure you put the smb.conf file in the same place
- you specified in the<TT
-CLASS="FILENAME"
->Makefile</TT
-> (the default is to
- look for it in <TT
-CLASS="FILENAME"
->/usr/local/samba/lib/</TT
->).</P
-><P
->For more information about security settings for the
- [homes] share please refer to the document UNIX_SECURITY.txt.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN82"
-></A
->1.5. Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></H2
-><P
->It's important that you test the validity of your
- <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file using the testparm program.
- If testparm runs OK then it will list the loaded services. If
- not it will give an error message.</P
-><P
->Make sure it runs OK and that the services look
- reasonable before proceeding. </P
-><P
->Always run testparm again when you change
- <TT
-CLASS="FILENAME"
->smb.conf</TT
->!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN90"
-></A
->1.6. Starting the smbd and nmbd</H2
-><P
->You must choose to start smbd and nmbd either
- as daemons or from <B
-CLASS="COMMAND"
->inetd</B
->. Don't try
- to do both! Either you can put them in <TT
-CLASS="FILENAME"
-> inetd.conf</TT
-> and have them started on demand
- by <B
-CLASS="COMMAND"
->inetd</B
->, or you can start them as
- daemons either from the command line or in <TT
-CLASS="FILENAME"
-> /etc/rc.local</TT
->. See the man pages for details
- on the command line options. Take particular care to read
- the bit about what user you need to be in order to start
- Samba. In many cases you must be root.</P
-><P
->The main advantage of starting <B
-CLASS="COMMAND"
->smbd</B
->
- and <B
-CLASS="COMMAND"
->nmbd</B
-> using the recommended daemon method
- is that they will respond slightly more quickly to an initial connection
- request.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN100"
-></A
->1.6.1. Starting from inetd.conf</H3
-><P
->NOTE; The following will be different if
- you use NIS or NIS+ to distributed services maps.</P
-><P
->Look at your <TT
-CLASS="FILENAME"
->/etc/services</TT
->.
- What is defined at port 139/tcp. If nothing is defined
- then add a line like this:</P
-><P
-><TT
-CLASS="USERINPUT"
-><B
->netbios-ssn 139/tcp</B
-></TT
-></P
-><P
->similarly for 137/udp you should have an entry like:</P
-><P
-><TT
-CLASS="USERINPUT"
-><B
->netbios-ns 137/udp</B
-></TT
-></P
-><P
->Next edit your <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->
- and add two lines something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
- netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
- </PRE
-></P
-><P
->The exact syntax of <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->
- varies between unixes. Look at the other entries in inetd.conf
- for a guide.</P
-><P
->NOTE: Some unixes already have entries like netbios_ns
- (note the underscore) in <TT
-CLASS="FILENAME"
->/etc/services</TT
->.
- You must either edit <TT
-CLASS="FILENAME"
->/etc/services</TT
-> or
- <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
-> to make them consistent.</P
-><P
->NOTE: On many systems you may need to use the
- "interfaces" option in smb.conf to specify the IP address
- and netmask of your interfaces. Run <B
-CLASS="COMMAND"
->ifconfig</B
->
- as root if you don't know what the broadcast is for your
- net. <B
-CLASS="COMMAND"
->nmbd</B
-> tries to determine it at run
- time, but fails on some unixes. See the section on "testing nmbd"
- for a method of finding if you need to do this.</P
-><P
->!!!WARNING!!! Many unixes only accept around 5
- parameters on the command line in <TT
-CLASS="FILENAME"
->inetd.conf</TT
->.
- This means you shouldn't use spaces between the options and
- arguments, or you should use a script, and start the script
- from <B
-CLASS="COMMAND"
->inetd</B
->.</P
-><P
->Restart <B
-CLASS="COMMAND"
->inetd</B
->, perhaps just send
- it a HUP. If you have installed an earlier version of <B
-CLASS="COMMAND"
-> nmbd</B
-> then you may need to kill nmbd as well.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN129"
-></A
->1.6.2. Alternative: starting it as a daemon</H3
-><P
->To start the server as a daemon you should create
- a script something like this one, perhaps calling
- it <TT
-CLASS="FILENAME"
->startsmb</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> #!/bin/sh
- /usr/local/samba/bin/smbd -D
- /usr/local/samba/bin/nmbd -D
- </PRE
-></P
-><P
->then make it executable with <B
-CLASS="COMMAND"
->chmod
- +x startsmb</B
-></P
-><P
->You can then run <B
-CLASS="COMMAND"
->startsmb</B
-> by
- hand or execute it from <TT
-CLASS="FILENAME"
->/etc/rc.local</TT
->
- </P
-><P
->To kill it send a kill signal to the processes
- <B
-CLASS="COMMAND"
->nmbd</B
-> and <B
-CLASS="COMMAND"
->smbd</B
->.</P
-><P
->NOTE: If you use the SVR4 style init system then
- you may like to look at the <TT
-CLASS="FILENAME"
->examples/svr4-startup</TT
->
- script to make Samba fit into that system.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN145"
-></A
->1.7. Try listing the shares available on your
- server</H2
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient -L
- <TT
-CLASS="REPLACEABLE"
-><I
->yourhostname</I
-></TT
-></B
-></TT
-></P
-><P
->You should get back a list of shares available on
- your server. If you don't then something is incorrectly setup.
- Note that this method can also be used to see what shares
- are available on other LanManager clients (such as WfWg).</P
-><P
->If you choose user level security then you may find
- that Samba requests a password before it will list the shares.
- See the <B
-CLASS="COMMAND"
->smbclient</B
-> man page for details. (you
- can force it to list the shares without a password by
- adding the option -U% to the command line. This will not work
- with non-Samba servers)</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN154"
-></A
->1.8. Try connecting with the unix client</H2
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient <TT
-CLASS="REPLACEABLE"
-><I
-> //yourhostname/aservice</I
-></TT
-></B
-></TT
-></P
-><P
->Typically the <TT
-CLASS="REPLACEABLE"
-><I
->yourhostname</I
-></TT
->
- would be the name of the host where you installed <B
-CLASS="COMMAND"
-> smbd</B
->. The <TT
-CLASS="REPLACEABLE"
-><I
->aservice</I
-></TT
-> is
- any service you have defined in the <TT
-CLASS="FILENAME"
->smb.conf</TT
->
- file. Try your user name if you just have a [homes] section
- in <TT
-CLASS="FILENAME"
->smb.conf</TT
->.</P
-><P
->For example if your unix host is bambi and your login
- name is fred you would type:</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient //bambi/fred
- </B
-></TT
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN170"
-></A
->1.9. Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</H2
-><P
->Try mounting disks. eg:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->net use d: \\servername\service
- </B
-></TT
-></P
-><P
->Try printing. eg:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->net use lpt1:
- \\servername\spoolservice</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->print filename
- </B
-></TT
-></P
-><P
->Celebrate, or send me a bug report!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN184"
-></A
->1.10. What If Things Don't Work?</H2
-><P
->If nothing works and you start to think "who wrote
- this pile of trash" then I suggest you do step 2 again (and
- again) till you calm down.</P
-><P
->Then you might read the file DIAGNOSIS.txt and the
- FAQ. If you are still stuck then try the mailing list or
- newsgroup (look in the README for details). Samba has been
- successfully installed at thousands of sites worldwide, so maybe
- someone else has hit your problem and has overcome it. You could
- also use the WWW site to scan back issues of the samba-digest.</P
-><P
->When you fix the problem PLEASE send me some updates to the
- documentation (or source code) so that the next person will find it
- easier. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN189"
-></A
->1.10.1. Diagnosing Problems</H3
-><P
->If you have installation problems then go to the
- <A
-HREF="Diagnosis.html"
-TARGET="_top"
->Diagnosis</A
-> chapter to try to find the
- problem.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN193"
-></A
->1.10.2. Scope IDs</H3
-><P
->By default Samba uses a blank scope ID. This means
- all your windows boxes must also have a blank scope ID.
- If you really want to use a non-blank scope ID then you will
- need to use the 'netbios scope' smb.conf option.
- All your PCs will need to have the same setting for
- this to work. I do not recommend scope IDs.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN196"
-></A
->1.10.3. Choosing the Protocol Level</H3
-><P
->The SMB protocol has many dialects. Currently
- Samba supports 5, called CORE, COREPLUS, LANMAN1,
- LANMAN2 and NT1.</P
-><P
->You can choose what maximum protocol to support
- in the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. The default is
- NT1 and that is the best for the vast majority of sites.</P
-><P
->In older versions of Samba you may have found it
- necessary to use COREPLUS. The limitations that led to
- this have mostly been fixed. It is now less likely that you
- will want to use less than LANMAN1. The only remaining advantage
- of COREPLUS is that for some obscure reason WfWg preserves
- the case of passwords in this protocol, whereas under LANMAN1,
- LANMAN2 or NT1 it uppercases all passwords before sending them,
- forcing you to use the "password level=" option in some cases.</P
-><P
->The main advantage of LANMAN2 and NT1 is support for
- long filenames with some clients (eg: smbclient, Windows NT
- or Win95). </P
-><P
->See the smb.conf(5) manual page for more details.</P
-><P
->Note: To support print queue reporting you may find
- that you have to use TCP/IP as the default protocol under
- WfWg. For some reason if you leave Netbeui as the default
- it may break the print queue reporting on some systems.
- It is presumably a WfWg bug.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN205"
-></A
->1.10.4. Printing from UNIX to a Client PC</H3
-><P
->To use a printer that is available via a smb-based
- server from a unix host with LPR you will need to compile the
- smbclient program. You then need to install the script
- "smbprint". Read the instruction in smbprint for more details.
- </P
-><P
->There is also a SYSV style script that does much
- the same thing called smbprint.sysv. It contains instructions.</P
-><P
->See the CUPS manual for information about setting up
- printing from a unix host with CUPS to a smb-based server. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN210"
-></A
->1.10.5. Locking</H3
-><P
->One area which sometimes causes trouble is locking.</P
-><P
->There are two types of locking which need to be
- performed by a SMB server. The first is "record locking"
- which allows a client to lock a range of bytes in a open file.
- The second is the "deny modes" that are specified when a file
- is open.</P
-><P
->Record locking semantics under Unix is very
- different from record locking under Windows. Versions
- of Samba before 2.2 have tried to use the native
- fcntl() unix system call to implement proper record
- locking between different Samba clients. This can not
- be fully correct due to several reasons. The simplest
- is the fact that a Windows client is allowed to lock a
- byte range up to 2^32 or 2^64, depending on the client
- OS. The unix locking only supports byte ranges up to
- 2^31. So it is not possible to correctly satisfy a
- lock request above 2^31. There are many more
- differences, too many to be listed here.</P
-><P
->Samba 2.2 and above implements record locking
- completely independent of the underlying unix
- system. If a byte range lock that the client requests
- happens to fall into the range 0-2^31, Samba hands
- this request down to the Unix system. All other locks
- can not be seen by unix anyway.</P
-><P
->Strictly a SMB server should check for locks before
- every read and write call on a file. Unfortunately with the
- way fcntl() works this can be slow and may overstress the
- rpc.lockd. It is also almost always unnecessary as clients
- are supposed to independently make locking calls before reads
- and writes anyway if locking is important to them. By default
- Samba only makes locking calls when explicitly asked
- to by a client, but if you set "strict locking = yes" then it will
- make lock checking calls on every read and write. </P
-><P
->You can also disable by range locking completely
- using "locking = no". This is useful for those shares that
- don't support locking or don't need it (such as cdroms). In
- this case Samba fakes the return codes of locking calls to
- tell clients that everything is OK.</P
-><P
->The second class of locking is the "deny modes". These
- are set by an application when it opens a file to determine
- what types of access should be allowed simultaneously with
- its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE
- or DENY_ALL. There are also special compatibility modes called
- DENY_FCB and DENY_DOS.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN219"
-></A
->1.10.6. Mapping Usernames</H3
-><P
->If you have different usernames on the PCs and
- the unix server then take a look at the "username map" option.
- See the smb.conf man page for details.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="BROWSING-QUICK"
-></A
->Chapter 2. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</H1
-><P
->This document should be read in conjunction with Browsing and may
-be taken as the fast track guide to implementing browsing across subnets
-and / or across workgroups (or domains). WINS is the best tool for resolution
-of NetBIOS names to IP addesses. WINS is NOT involved in browse list handling
-except by way of name to address mapping.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN230"
-></A
->2.1. Discussion</H2
-><P
->Firstly, all MS Windows networking is based on SMB (Server Message
-Block) based messaging. SMB messaging is implemented using NetBIOS. Samba
-implements NetBIOS by encapsulating it over TCP/IP. MS Windows products can
-do likewise. NetBIOS based networking uses broadcast messaging to affect
-browse list management. When running NetBIOS over TCP/IP this uses UDP
-based messaging. UDP messages can be broadcast or unicast.</P
-><P
->Normally, only unicast UDP messaging can be forwarded by routers. The
-"remote announce" parameter to smb.conf helps to project browse announcements
-to remote network segments via unicast UDP. Similarly, the "remote browse sync"
-parameter of smb.conf implements browse list collation using unicast UDP.</P
-><P
->Secondly, in those networks where Samba is the only SMB server technology
-wherever possible nmbd should be configured on one (1) machine as the WINS
-server. This makes it easy to manage the browsing environment. If each network
-segment is configured with it's own Samba WINS server, then the only way to
-get cross segment browsing to work is by using the "remote announce" and
-the "remote browse sync" parameters to your smb.conf file.</P
-><P
->If only one WINS server is used then the use of the "remote announce" and the
-"remote browse sync" parameters should NOT be necessary.</P
-><P
->Samba WINS does not support MS-WINS replication. This means that when setting up
-Samba as a WINS server there must only be one nmbd configured as a WINS server
-on the network. Some sites have used multiple Samba WINS servers for redundancy
-(one server per subnet) and then used "remote browse sync" and "remote announce"
-to affect browse list collation across all segments. Note that this means
-clients will only resolve local names, and must be configured to use DNS to
-resolve names on other subnets in order to resolve the IP addresses of the
-servers they can see on other subnets. This setup is not recommended, but is
-mentioned as a practical consideration (ie: an 'if all else fails' scenario).</P
-><P
->Lastly, take note that browse lists are a collection of unreliable broadcast
-messages that are repeated at intervals of not more than 15 minutes. This means
-that it will take time to establish a browse list and it can take up to 45
-minutes to stabilise, particularly across network segments.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN238"
-></A
->2.2. Use of the "Remote Announce" parameter</H2
-><P
->The "remote announce" parameter of smb.conf can be used to forcibly ensure
-that all the NetBIOS names on a network get announced to a remote network.
-The syntax of the "remote announce" parameter is:
-<PRE
-CLASS="PROGRAMLISTING"
-> remote announce = a.b.c.d [e.f.g.h] ...</PRE
->
-_or_
-<PRE
-CLASS="PROGRAMLISTING"
-> remote announce = a.b.c.d/WORKGROUP [e.f.g.h/WORKGROUP] ...</PRE
->
-
-where:
-<P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->a.b.c.d and e.f.g.h</DT
-><DD
-><P
->is either the LMB (Local Master Browser) IP address
-or the broadcst address of the remote network.
-ie: the LMB is at 192.168.1.10, or the address
-could be given as 192.168.1.255 where the netmask
-is assumed to be 24 bits (255.255.255.0).
-When the remote announcement is made to the broadcast
-address of the remote network every host will receive
-our announcements. This is noisy and therefore
-undesirable but may be necessary if we do NOT know
-the IP address of the remote LMB.</P
-></DD
-><DT
->WORKGROUP</DT
-><DD
-><P
->is optional and can be either our own workgroup
-or that of the remote network. If you use the
-workgroup name of the remote network then our
-NetBIOS machine names will end up looking like
-they belong to that workgroup, this may cause
-name resolution problems and should be avoided.</P
-></DD
-></DL
-></DIV
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN252"
-></A
->2.3. Use of the "Remote Browse Sync" parameter</H2
-><P
->The "remote browse sync" parameter of smb.conf is used to announce to
-another LMB that it must synchronise it's NetBIOS name list with our
-Samba LMB. It works ONLY if the Samba server that has this option is
-simultaneously the LMB on it's network segment.</P
-><P
->The syntax of the "remote browse sync" parameter is:
-
-<PRE
-CLASS="PROGRAMLISTING"
->remote browse sync = a.b.c.d</PRE
->
-
-where a.b.c.d is either the IP address of the remote LMB or else is the network broadcast address of the remote segment.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN257"
-></A
->2.4. Use of WINS</H2
-><P
->Use of WINS (either Samba WINS _or_ MS Windows NT Server WINS) is highly
-recommended. Every NetBIOS machine registers it's name together with a
-name_type value for each of of several types of service it has available.
-eg: It registers it's name directly as a unique (the type 0x03) name.
-It also registers it's name if it is running the lanmanager compatible
-server service (used to make shares and printers available to other users)
-by registering the server (the type 0x20) name.</P
-><P
->All NetBIOS names are up to 15 characters in length. The name_type variable
-is added to the end of the name - thus creating a 16 character name. Any
-name that is shorter than 15 characters is padded with spaces to the 15th
-character. ie: All NetBIOS names are 16 characters long (including the
-name_type information).</P
-><P
->WINS can store these 16 character names as they get registered. A client
-that wants to log onto the network can ask the WINS server for a list
-of all names that have registered the NetLogon service name_type. This saves
-broadcast traffic and greatly expedites logon processing. Since broadcast
-name resolution can not be used across network segments this type of
-information can only be provided via WINS _or_ via statically configured
-"lmhosts" files that must reside on all clients in the absence of WINS.</P
-><P
->WINS also serves the purpose of forcing browse list synchronisation by all
-LMB's. LMB's must synchronise their browse list with the DMB (domain master
-browser) and WINS helps the LMB to identify it's DMB. By definition this
-will work only within a single workgroup. Note that the domain master browser
-has NOTHING to do with what is referred to as an MS Windows NT Domain. The
-later is a reference to a security environment while the DMB refers to the
-master controller for browse list information only.</P
-><P
->Use of WINS will work correctly only if EVERY client TCP/IP protocol stack
-has been configured to use the WINS server/s. Any client that has not been
-configured to use the WINS server will continue to use only broadcast based
-name registration so that WINS may NEVER get to know about it. In any case,
-machines that have not registered with a WINS server will fail name to address
-lookup attempts by other clients and will therefore cause workstation access
-errors.</P
-><P
->To configure Samba as a WINS server just add "wins support = yes" to the
-smb.conf file [globals] section.</P
-><P
->To configure Samba to register with a WINS server just add
-"wins server = a.b.c.d" to your smb.conf file [globals] section.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->DO NOT EVER</I
-></SPAN
-> use both "wins support = yes" together with "wins server = a.b.c.d"
-particularly not using it's own IP address.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN268"
-></A
->2.5. Do NOT use more than one (1) protocol on MS Windows machines</H2
-><P
->A very common cause of browsing problems results from installing more than
-one protocol on an MS Windows machine.</P
-><P
->Every NetBIOS machine take part in a process of electing the LMB (and DMB)
-every 15 minutes. A set of election criteria is used to determine the order
-of precidence for winning this election process. A machine running Samba or
-Windows NT will be biased so that the most suitable machine will predictably
-win and thus retain it's role.</P
-><P
->The election process is "fought out" so to speak over every NetBIOS network
-interface. In the case of a Windows 9x machine that has both TCP/IP and IPX
-installed and has NetBIOS enabled over both protocols the election will be
-decided over both protocols. As often happens, if the Windows 9x machine is
-the only one with both protocols then the LMB may be won on the NetBIOS
-interface over the IPX protocol. Samba will then lose the LMB role as Windows
-9x will insist it knows who the LMB is. Samba will then cease to function
-as an LMB and thus browse list operation on all TCP/IP only machines will
-fail.</P
-><P
->The safest rule of all to follow it this - USE ONLY ONE PROTOCOL!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN274"
-></A
->2.6. Name Resolution Order</H2
-><P
->Resolution of NetBIOS names to IP addresses can take place using a number
-of methods. The only ones that can provide NetBIOS name_type information
-are:</P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->WINS: the best tool!</TD
-></TR
-><TR
-><TD
->LMHOSTS: is static and hard to maintain.</TD
-></TR
-><TR
-><TD
->Broadcast: uses UDP and can not resolve names across remote segments.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
->Alternative means of name resolution includes:</P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->/etc/hosts: is static, hard to maintain, and lacks name_type info</TD
-></TR
-><TR
-><TD
->DNS: is a good choice but lacks essential name_type info.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
->Many sites want to restrict DNS lookups and want to avoid broadcast name
-resolution traffic. The "name resolve order" parameter is of great help here.
-The syntax of the "name resolve order" parameter is:
-<PRE
-CLASS="PROGRAMLISTING"
->name resolve order = wins lmhosts bcast host</PRE
->
-_or_
-<PRE
-CLASS="PROGRAMLISTING"
->name resolve order = wins lmhosts (eliminates bcast and host)</PRE
->
-The default is:
-<PRE
-CLASS="PROGRAMLISTING"
->name resolve order = host lmhost wins bcast</PRE
->.
-where "host" refers the the native methods used by the Unix system
-to implement the gethostbyname() function call. This is normally
-controlled by <TT
-CLASS="FILENAME"
->/etc/host.conf</TT
->, <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> and <TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
->.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PASSDB"
-></A
->Chapter 3. User information database</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN324"
-></A
->3.1. Introduction</H2
-><P
->Old windows clients send plain text passwords over the wire.
- Samba can check these passwords by crypting them and comparing them
- to the hash stored in the unix user database.
- </P
-><P
-> Newer windows clients send encrypted passwords (so-called
- Lanman and NT hashes) over
- the wire, instead of plain text passwords. The newest clients
- will only send encrypted passwords and refuse to send plain text
- passwords, unless their registry is tweaked.
- </P
-><P
->These passwords can't be converted to unix style encrypted
- passwords. Because of that you can't use the standard unix
- user database, and you have to store the Lanman and NT hashes
- somewhere else. </P
-><P
->Next to a differently encrypted passwords,
- windows also stores certain data for each user
- that is not stored in a unix user database, e.g.
- workstations the user may logon from, the location where his/her
- profile is stored, etc.
- Samba retrieves and stores this information using a "passdb backend".
- Commonly
- available backends are LDAP, plain text file, MySQL and nisplus.
- For more information, see the documentation about the
- <B
-CLASS="COMMAND"
->passdb backend = </B
-> parameter.
- </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN331"
-></A
->3.2. Important Notes About Security</H2
-><P
->The unix and SMB password encryption techniques seem similar
- on the surface. This similarity is, however, only skin deep. The unix
- scheme typically sends clear text passwords over the network when
- logging in. This is bad. The SMB encryption scheme never sends the
- cleartext password over the network but it does store the 16 byte
- hashed values on disk. This is also bad. Why? Because the 16 byte hashed
- values are a "password equivalent". You cannot derive the user's
- password from them, but they could potentially be used in a modified
- client to gain access to a server. This would require considerable
- technical knowledge on behalf of the attacker but is perfectly possible.
- You should thus treat the data stored in whatever
- passdb backend you use (smbpasswd file, ldap, mysql) as though it contained the
- cleartext passwords of all your users. Its contents must be kept
- secret, and the file should be protected accordingly.</P
-><P
->Ideally we would like a password scheme which neither requires
- plain text passwords on the net or on disk. Unfortunately this
- is not available as Samba is stuck with being compatible with
- other SMB systems (WinNT, WfWg, Win95 etc). </P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Note that Windows NT 4.0 Service pack 3 changed the
- default for permissible authentication so that plaintext
- passwords are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->never</I
-></SPAN
-> sent over the wire.
- The solution to this is either to switch to encrypted passwords
- with Samba or edit the Windows NT registry to re-enable plaintext
- passwords. See the document WinNT.txt for details on how to do
- this.</P
-><P
->Other Microsoft operating systems which also exhibit
- this behavior includes</P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->MS DOS Network client 3.0 with
- the basic network redirector installed</TD
-></TR
-><TR
-><TD
->Windows 95 with the network redirector
- update installed</TD
-></TR
-><TR
-><TD
->Windows 98 [se]</TD
-></TR
-><TR
-><TD
->Windows 2000</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
->All current release of
- Microsoft SMB/CIFS clients support authentication via the
- SMB Challenge/Response mechanism described here. Enabling
- clear text authentication does not disable the ability
- of the client to participate in encrypted authentication.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN346"
-></A
->3.2.1. Advantages of SMB Encryption</H3
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->plain text passwords are not passed across
- the network. Someone using a network sniffer cannot just
- record passwords going to the SMB server.</TD
-></TR
-><TR
-><TD
->WinNT doesn't like talking to a server
- that isn't using SMB encrypted passwords. It will refuse
- to browse the server if the server is also in user level
- security mode. It will insist on prompting the user for the
- password on each connection, which is very annoying. The
- only things you can do to stop this is to use SMB encryption.
- </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN351"
-></A
->3.2.2. Advantages of non-encrypted passwords</H3
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->plain text passwords are not kept
- on disk. </TD
-></TR
-><TR
-><TD
->uses same password file as other unix
- services such as login and ftp</TD
-></TR
-><TR
-><TD
->you are probably already using other
- services (such as telnet and ftp) which send plain text
- passwords over the net, so sending them for SMB isn't
- such a big deal.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN357"
-></A
->3.3. The smbpasswd Command</H2
-><P
->The smbpasswd utility is a utility similar to the
- <B
-CLASS="COMMAND"
->passwd</B
-> or <B
-CLASS="COMMAND"
->yppasswd</B
-> programs.
- It maintains the two 32 byte password fields
- in the passdb backend. </P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> works in a client-server mode
- where it contacts the local smbd to change the user's password on its
- behalf. This has enormous benefits - as follows.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> has the capability
- to change passwords on Windows NT servers (this only works when
- the request is sent to the NT Primary Domain Controller if you
- are changing an NT Domain user's password).</P
-><P
->To run smbpasswd as a normal user just type :</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbpasswd</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Old SMB password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type old value here -
- or hit return if there was no old password&gt;</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type new value&gt;
- </B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Repeat New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;re-type new value
- </B
-></TT
-></P
-><P
->If the old value does not match the current value stored for
- that user, or the two new values do not match each other, then the
- password will not be changed.</P
-><P
->If invoked by an ordinary user it will only allow the user
- to change his or her own Samba password.</P
-><P
->If run by the root user smbpasswd may take an optional
- argument, specifying the user name whose SMB password you wish to
- change. Note that when run as root smbpasswd does not prompt for
- or check the old password value, thus allowing root to set passwords
- for users who have forgotten their passwords.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> is designed to work in the same way
- and be familiar to UNIX users who use the <B
-CLASS="COMMAND"
->passwd</B
-> or
- <B
-CLASS="COMMAND"
->yppasswd</B
-> commands.</P
-><P
->For more details on using <B
-CLASS="COMMAND"
->smbpasswd</B
-> refer
- to the man page which will always be the definitive reference.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN388"
-></A
->3.4. Plain text</H2
-><P
->Older versions of samba retrieved user information from the unix user database
-and eventually some other fields from the file <TT
-CLASS="FILENAME"
->/etc/samba/smbpasswd</TT
->
-or <TT
-CLASS="FILENAME"
->/etc/smbpasswd</TT
->. When password encryption is disabled, no
-data is stored at all.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN393"
-></A
->3.5. TDB</H2
-><P
->Samba can also store the user data in a "TDB" (Trivial Database). Using this backend
-doesn't require any additional configuration. This backend is recommended for new installations who
-don't require LDAP.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN396"
-></A
->3.6. LDAP</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN398"
-></A
->3.6.1. Introduction</H3
-><P
->This document describes how to use an LDAP directory for storing Samba user
-account information traditionally stored in the smbpasswd(5) file. It is
-assumed that the reader already has a basic understanding of LDAP concepts
-and has a working directory server already installed. For more information
-on LDAP architectures and Directories, please refer to the following sites.</P
-><P
-></P
-><UL
-><LI
-><P
->OpenLDAP - <A
-HREF="http://www.openldap.org/"
-TARGET="_top"
->http://www.openldap.org/</A
-></P
-></LI
-><LI
-><P
->iPlanet Directory Server - <A
-HREF="http://iplanet.netscape.com/directory"
-TARGET="_top"
->http://iplanet.netscape.com/directory</A
-></P
-></LI
-></UL
-><P
->Note that <A
-HREF="http://www.ora.com/"
-TARGET="_top"
->O'Reilly Publishing</A
-> is working on
-a guide to LDAP for System Administrators which has a planned release date of
-early summer, 2002.</P
-><P
->Two additional Samba resources which may prove to be helpful are</P
-><P
-></P
-><UL
-><LI
-><P
->The <A
-HREF="http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html"
-TARGET="_top"
->Samba-PDC-LDAP-HOWTO</A
->
- maintained by Ignacio Coupeau.</P
-></LI
-><LI
-><P
->The NT migration scripts from <A
-HREF="http://samba.idealx.org/"
-TARGET="_top"
->IDEALX</A
-> that are
- geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN418"
-></A
->3.6.2. Introduction</H3
-><P
->Traditionally, when configuring <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->"encrypt
-passwords = yes"</A
-> in Samba's <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file, user account
-information such as username, LM/NT password hashes, password change times, and account
-flags have been stored in the <TT
-CLASS="FILENAME"
->smbpasswd(5)</TT
-> file. There are several
-disadvantages to this approach for sites with very large numbers of users (counted
-in the thousands).</P
-><P
-></P
-><UL
-><LI
-><P
->The first is that all lookups must be performed sequentially. Given that
-there are approximately two lookups per domain logon (one for a normal
-session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for lareg sites. What is needed is an indexed approach
-such as is used in databases.</P
-></LI
-><LI
-><P
->The second problem is that administrators who desired to replicate a
-smbpasswd file to more than one Samba server were left to use external
-tools such as <B
-CLASS="COMMAND"
->rsync(1)</B
-> and <B
-CLASS="COMMAND"
->ssh(1)</B
->
-and wrote custom, in-house scripts.</P
-></LI
-><LI
-><P
->And finally, the amount of information which is stored in an
-smbpasswd entry leaves no room for additional attributes such as
-a home directory, password expiration time, or even a Relative
-Identified (RID).</P
-></LI
-></UL
-><P
->As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed. The API which defines access to user accounts
-is commonly referred to as the samdb interface (previously this was called the passdb
-API, and is still so named in the CVS trees). In Samba 2.2.3, enabling support
-for a samdb backend (e.g. <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> or
-<TT
-CLASS="PARAMETER"
-><I
->--with-tdbsam</I
-></TT
->) requires compile time support.</P
-><P
->When compiling Samba to include the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> autoconf
-option, smbd (and associated tools) will store and lookup user accounts in
-an LDAP directory. In reality, this is very easy to understand. If you are
-comfortable with using an smbpasswd file, simply replace "smbpasswd" with
-"LDAP directory" in all the documentation.</P
-><P
->There are a few points to stress about what the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-does not provide. The LDAP support referred to in the this documentation does not
-include:</P
-><P
-></P
-><UL
-><LI
-><P
->A means of retrieving user account information from
- an Windows 2000 Active Directory server.</P
-></LI
-><LI
-><P
->A means of replacing /etc/passwd.</P
-></LI
-></UL
-><P
->The second item can be accomplished by using LDAP NSS and PAM modules. LGPL
-versions of these libraries can be obtained from PADL Software
-(<A
-HREF="http://www.padl.com/"
-TARGET="_top"
->http://www.padl.com/</A
->). However,
-the details of configuring these packages are beyond the scope of this document.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN447"
-></A
->3.6.3. Supported LDAP Servers</H3
-><P
->The LDAP samdb code in 2.2.3 has been developed and tested using the OpenLDAP
-2.0 server and client libraries. The same code should be able to work with
-Netscape's Directory Server and client SDK. However, due to lack of testing
-so far, there are bound to be compile errors and bugs. These should not be
-hard to fix. If you are so inclined, please be sure to forward all patches to
-<A
-HREF="samba-patches@samba.org"
-TARGET="_top"
->samba-patches@samba.org</A
-> and
-<A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN452"
-></A
->3.6.4. Schema and Relationship to the RFC 2307 posixAccount</H3
-><P
->Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in
-<TT
-CLASS="FILENAME"
->examples/LDAP/samba.schema</TT
->. The sambaAccount objectclass is given here:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
- DESC 'Samba Account'
- MUST ( uid $ rid )
- MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
- logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
- displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
- description $ userWorkstations $ primaryGroupID $ domain ))</PRE
-></P
-><P
->The samba.schema file has been formatted for OpenLDAP 2.0. The OID's are
-owned by the Samba Team and as such is legal to be openly published.
-If you translate the schema to be used with Netscape DS, please
-submit the modified schema file as a patch to <A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
-></P
-><P
->Just as the smbpasswd file is mean to store information which supplements a
-user's <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information. A sambaAccount is a
-<TT
-CLASS="CONSTANT"
->STRUCTURAL</TT
-> objectclass so it can be stored individually
-in the directory. However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307. This is by design.</P
-><P
->In order to store all user account information (UNIX and Samba) in the directory,
-it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination. However, smbd will still obtain the user's UNIX account
-information via the standard C library calls (e.g. getpwnam(), et. al.).
-This means that the Samba server must also have the LDAP NSS library installed
-and functioning correctly. This division of information makes it possible to
-store all Samba account information in LDAP, but still maintain UNIX account
-information in NIS while the network is transitioning to a full LDAP infrastructure.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN464"
-></A
->3.6.5. Configuring Samba with LDAP</H3
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
-NAME="AEN466"
-></A
->3.6.5.1. OpenLDAP configuration</H4
-><P
->To include support for the sambaAccount object in an OpenLDAP directory
-server, first copy the samba.schema file to slapd's configuration directory.</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->cp samba.schema /etc/openldap/schema/</B
-></P
-><P
->Next, include the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->.
-The sambaAccount object contains two attributes which depend upon other schema
-files. The 'uid' attribute is defined in <TT
-CLASS="FILENAME"
->cosine.schema</TT
-> and
-the 'displayName' attribute is defined in the <TT
-CLASS="FILENAME"
->inetorgperson.schema</TT
->
-file. Both of these must be included before the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /etc/openldap/slapd.conf
-
-## schema files (core.schema is required by default)
-include /etc/openldap/schema/core.schema
-
-## needed for sambaAccount
-include /etc/openldap/schema/cosine.schema
-include /etc/openldap/schema/inetorgperson.schema
-include /etc/openldap/schema/samba.schema
-
-## uncomment this line if you want to support the RFC2307 (NIS) schema
-## include /etc/openldap/schema/nis.schema
-
-....</PRE
-></P
-><P
->It is recommended that you maintain some indices on some of the most usefull attributes,
-like in the following example, to speed up searches made on sambaAccount objectclasses
-(and possibly posixAccount and posixGroup as well).</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-># Indices to maintain
-## required by OpenLDAP 2.0
-index objectclass eq
-
-## support pb_getsampwnam()
-index uid pres,eq
-## support pdb_getsambapwrid()
-index rid eq
-
-## uncomment these if you are storing posixAccount and
-## posixGroup entries in the directory as well
-##index uidNumber eq
-##index gidNumber eq
-##index cn eq
-##index memberUid eq</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN483"
-></A
->3.6.5.2. Configuring Samba</H4
-><P
->The following parameters are available in smb.conf only with <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-was included with compiling Samba.</P
-><P
-></P
-><UL
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSSL"
-TARGET="_top"
->ldap ssl</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSERVER"
-TARGET="_top"
->ldap server</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPADMINDN"
-TARGET="_top"
->ldap admin dn</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSUFFIX"
-TARGET="_top"
->ldap suffix</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPFILTER"
-TARGET="_top"
->ldap filter</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPPORT"
-TARGET="_top"
->ldap port</A
-></P
-></LI
-></UL
-><P
->These are described in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> man
-page and so will not be repeated here. However, a sample smb.conf file for
-use with an LDAP directory could appear as</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /usr/local/samba/lib/smb.conf
-[global]
- security = user
- encrypt passwords = yes
-
- netbios name = TASHTEGO
- workgroup = NARNIA
-
- # ldap related parameters
-
- # define the DN to use when binding to the directory servers
- # The password for this DN is not stored in smb.conf. Rather it
- # must be set by using 'smbpasswd -w <TT
-CLASS="REPLACEABLE"
-><I
->secretpw</I
-></TT
->' to store the
- # passphrase in the secrets.tdb file. If the "ldap admin dn" values
- # changes, this password will need to be reset.
- ldap admin dn = "cn=Samba Manager,ou=people,dc=samba,dc=org"
-
- # specify the LDAP server's hostname (defaults to locahost)
- ldap server = ahab.samba.org
-
- # Define the SSL option when connecting to the directory
- # ('off', 'start tls', or 'on' (default))
- ldap ssl = start tls
-
- # define the port to use in the LDAP session (defaults to 636 when
- # "ldap ssl = on")
- ldap port = 389
-
- # specify the base DN to use when searching the directory
- ldap suffix = "ou=people,dc=samba,dc=org"
-
- # generally the default ldap search filter is ok
- # ldap filter = "(&amp;(uid=%u)(objectclass=sambaAccount))"</PRE
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN511"
-></A
->3.6.6. Accounts and Groups management</H3
-><P
->As users accounts are managed thru the sambaAccount objectclass, you should
-modify you existing administration tools to deal with sambaAccount attributes.</P
-><P
->Machines accounts are managed with the sambaAccount objectclass, just
-like users accounts. However, it's up to you to stored thoses accounts
-in a different tree of you LDAP namespace: you should use
-"ou=Groups,dc=plainjoe,dc=org" to store groups and
-"ou=People,dc=plainjoe,dc=org" to store users. Just configure your
-NSS and PAM accordingly (usually, in the /etc/ldap.conf configuration
-file).</P
-><P
->In Samba release 3.0, the group management system is based on posix
-groups. This means that Samba make usage of the posixGroup objectclass.
-For now, there is no NT-like group system management (global and local
-groups).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN516"
-></A
->3.6.7. Security and sambaAccount</H3
-><P
->There are two important points to remember when discussing the security
-of sambaAccount entries in the directory.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> retrieve the lmPassword or
- ntPassword attribute values over an unencrypted LDAP session.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> allow non-admin users to
- view the lmPassword or ntPassword attribute values.</P
-></LI
-></UL
-><P
->These password hashes are clear text equivalents and can be used to impersonate
-the user without deriving the original clear text strings. For more information
-on the details of LM/NT password hashes, refer to the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->ENCRYPTION chapter</A
-> of the Samba-HOWTO-Collection.</P
-><P
->To remedy the first security issue, the "ldap ssl" smb.conf parameter defaults
-to require an encrypted session (<B
-CLASS="COMMAND"
->ldap ssl = on</B
->) using
-the default port of 636
-when contacting the directory server. When using an OpenLDAP 2.0 server, it
-is possible to use the use the StartTLS LDAP extended operation in the place of
-LDAPS. In either case, you are strongly discouraged to disable this security
-(<B
-CLASS="COMMAND"
->ldap ssl = off</B
->).</P
-><P
->Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
-extended operation. However, the OpenLDAP library still provides support for
-the older method of securing communication between clients and servers.</P
-><P
->The second security precaution is to prevent non-administrative users from
-harvesting password hashes from the directory. This can be done using the
-following ACL in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## allow the "ldap admin dn" access, but deny everyone else
-access to attrs=lmPassword,ntPassword
- by dn="cn=Samba Admin,ou=people,dc=plainjoe,dc=org" write
- by * none</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN536"
-></A
->3.6.8. LDAP specials attributes for sambaAccounts</H3
-><P
->The sambaAccount objectclass is composed of the following attributes:</P
-><P
-></P
-><UL
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->lmPassword</TT
->: the LANMAN password 16-byte hash stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->ntPassword</TT
->: the NT password hash 16-byte stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdLastSet</TT
->: The integer time in seconds since 1970 when the
- <TT
-CLASS="CONSTANT"
->lmPassword</TT
-> and <TT
-CLASS="CONSTANT"
->ntPassword</TT
-> attributes were last set.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->acctFlags</TT
->: string of 11 characters surrounded by square brackets []
- representing account flags such as U (user), W(workstation), X(no password expiration), and
- D(disabled).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logonTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->kickoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdCanChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdMustChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->homeDrive</TT
->: specifies the drive letter to which to map the
- UNC path specified by homeDirectory. The drive letter must be specified in the form "X:"
- where X is the letter of the drive to map. Refer to the "logon drive" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->scriptPath</TT
->: The scriptPath property specifies the path of
- the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
- is relative to the netlogon share. Refer to the "logon script" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->profilePath</TT
->: specifies a path to the user's profile.
- This value can be a null string, a local absolute path, or a UNC path. Refer to the
- "logon path" parameter in the smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->smbHome</TT
->: The homeDirectory property specifies the path of
- the home directory for the user. The string can be null. If homeDrive is set and specifies
- a drive letter, homeDirectory should be a UNC path. The path must be a network
- UNC path of the form \\server\share\directory. This value can be a null string.
- Refer to the "logon home" parameter in the smb.conf(5) man page for more information.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->userWorkstation</TT
->: character string value currently unused.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->rid</TT
->: the integer representation of the user's relative identifier
- (RID).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->primaryGroupID</TT
->: the relative identifier (RID) of the primary group
- of the user.</P
-></LI
-></UL
-><P
->The majority of these parameters are only used when Samba is acting as a PDC of
-a domain (refer to the <A
-HREF="Samba-PDC-HOWTO.html"
-TARGET="_top"
->Samba-PDC-HOWTO</A
-> for details on
-how to configure Samba as a Primary Domain Controller). The following four attributes
-are only stored with the sambaAccount entry if the values are non-default values:</P
-><P
-></P
-><UL
-><LI
-><P
->smbHome</P
-></LI
-><LI
-><P
->scriptPath</P
-></LI
-><LI
-><P
->logonPath</P
-></LI
-><LI
-><P
->homeDrive</P
-></LI
-></UL
-><P
->These attributes are only stored with the sambaAccount entry if
-the values are non-default values. For example, assume TASHTEGO has now been
-configured as a PDC and that <B
-CLASS="COMMAND"
->logon home = \\%L\%u</B
-> was defined in
-its <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. When a user named "becky" logons to the domain,
-the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> string is expanded to \\TASHTEGO\becky.
-If the smbHome attribute exists in the entry "uid=becky,ou=people,dc=samba,dc=org",
-this value is used. However, if this attribute does not exist, then the value
-of the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> parameter is used in its place. Samba
-will only write the attribute value to the directory entry is the value is
-something other than the default (e.g. \\MOBY\becky).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN606"
-></A
->3.6.9. Example LDIF Entries for a sambaAccount</H3
-><P
->The following is a working LDIF with the inclusion of the posixAccount objectclass:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=guest2, ou=people,dc=plainjoe,dc=org
-ntPassword: 878D8014606CDA29677A44EFA1353FC7
-pwdMustChange: 2147483647
-primaryGroupID: 1201
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-pwdLastSet: 1010179124
-logonTime: 0
-objectClass: sambaAccount
-uid: guest2
-kickoffTime: 2147483647
-acctFlags: [UX ]
-logoffTime: 2147483647
-rid: 19006
-pwdCanChange: 0</PRE
-></P
-><P
->The following is an LDIF entry for using both the sambaAccount and
-posixAccount objectclasses:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=gcarter, ou=people,dc=plainjoe,dc=org
-logonTime: 0
-displayName: Gerald Carter
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-primaryGroupID: 1201
-objectClass: posixAccount
-objectClass: sambaAccount
-acctFlags: [UX ]
-userPassword: {crypt}BpM2ej8Rkzogo
-uid: gcarter
-uidNumber: 9000
-cn: Gerald Carter
-loginShell: /bin/bash
-logoffTime: 2147483647
-gidNumber: 100
-kickoffTime: 2147483647
-pwdLastSet: 1010179230
-rid: 19000
-homeDirectory: /home/tashtego/gcarter
-pwdCanChange: 0
-pwdMustChange: 2147483647
-ntPassword: 878D8014606CDA29677A44EFA1353FC7</PRE
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN614"
-></A
->3.7. MySQL</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN616"
-></A
->3.7.1. Building</H3
-><P
->To build the plugin, run <B
-CLASS="COMMAND"
->make bin/pdb_mysql.so</B
->
-in the <TT
-CLASS="FILENAME"
->source/</TT
-> directory of samba distribution. </P
-><P
->Next, copy pdb_mysql.so to any location you want. I
-strongly recommend installing it in $PREFIX/lib or /usr/lib/samba/</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN622"
-></A
->3.7.2. Creating the database</H3
-><P
->You either can set up your own table and specify the field names to pdb_mysql (see below
-for the column names) or use the default table. The file <TT
-CLASS="FILENAME"
->examples/pdb/mysql/mysql.dump</TT
->
-contains the correct queries to create the required tables. Use the command :
-
-<B
-CLASS="COMMAND"
->mysql -u<TT
-CLASS="REPLACEABLE"
-><I
->username</I
-></TT
-> -h<TT
-CLASS="REPLACEABLE"
-><I
->hostname</I
-></TT
-> -p<TT
-CLASS="REPLACEABLE"
-><I
->password</I
-></TT
-> <TT
-CLASS="REPLACEABLE"
-><I
->databasename</I
-></TT
-> &#60; <TT
-CLASS="FILENAME"
->/path/to/samba/examples/pdb/mysql/mysql.dump</TT
-></B
->&#13;</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN632"
-></A
->3.7.3. Configuring</H3
-><P
->This plugin lacks some good documentation, but here is some short info:</P
-><P
->Add a the following to the <B
-CLASS="COMMAND"
->passdb backend</B
-> variable in your <TT
-CLASS="FILENAME"
->smb.conf</TT
->:
-<PRE
-CLASS="PROGRAMLISTING"
->passdb backend = [other-plugins] plugin:/location/to/pdb_mysql.so:identifier [other-plugins]</PRE
-></P
-><P
->The identifier can be any string you like, as long as it doesn't collide with
-the identifiers of other plugins or other instances of pdb_mysql. If you
-specify multiple pdb_mysql.so entries in 'passdb backend', you also need to
-use different identifiers!</P
-><P
->Additional options can be given thru the smb.conf file in the [global] section.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:mysql host - host name, defaults to 'localhost'
-identifier:mysql password
-identifier:mysql user - defaults to 'samba'
-identifier:mysql database - defaults to 'samba'
-identifier:mysql port - defaults to 3306
-identifier:table - Name of the table containing users</PRE
-></P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Since the password for the mysql user is stored in the
-smb.conf file, you should make the the smb.conf file
-readable only to the user that runs samba. This is considered a security
-bug and will be fixed soon.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Names of the columns in this table(I've added column types those columns should have first):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:logon time column - int(9)
-identifier:logoff time column - int(9)
-identifier:kickoff time column - int(9)
-identifier:pass last set time column - int(9)
-identifier:pass can change time column - int(9)
-identifier:pass must change time column - int(9)
-identifier:username column - varchar(255) - unix username
-identifier:domain column - varchar(255) - NT domain user is part of
-identifier:nt username column - varchar(255) - NT username
-identifier:fullname column - varchar(255) - Full name of user
-identifier:home dir column - varchar(255) - Unix homedir path
-identifier:dir drive column - varchar(2) - Directory drive path (eg: 'H:')
-identifier:logon script column - varchar(255) - Batch file to run on client side when logging on
-identifier:profile path column - varchar(255) - Path of profile
-identifier:acct desc column - varchar(255) - Some ASCII NT user data
-identifier:workstations column - varchar(255) - Workstations user can logon to (or NULL for all)
-identifier:unknown string column - varchar(255) - unknown string
-identifier:munged dial column - varchar(255) - ?
-identifier:uid column - int(9) - Unix user ID (uid)
-identifier:gid column - int(9) - Unix user group (gid)
-identifier:user sid column - varchar(255) - NT user SID
-identifier:group sid column - varchar(255) - NT group ID
-identifier:lanman pass column - varchar(255) - encrypted lanman password
-identifier:nt pass column - varchar(255) - encrypted nt passwd
-identifier:plain pass column - varchar(255) - plaintext password
-identifier:acct control column - int(9) - nt user data
-identifier:unknown 3 column - int(9) - unknown
-identifier:logon divs column - int(9) - ?
-identifier:hours len column - int(9) - ?
-identifier:unknown 5 column - int(9) - unknown
-identifier:unknown 6 column - int(9) - unknown</PRE
-></P
-><P
->Eventually, you can put a colon (:) after the name of each column, which
-should specify the column to update when updating the table. You can also
-specify nothing behind the colon - then the data from the field will not be
-updated. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN649"
-></A
->3.7.4. Using plaintext passwords or encrypted password</H3
-><P
->I strongly discourage the use of plaintext passwords, however, you can use them:</P
-><P
->If you would like to use plaintext passwords, set 'identifier:lanman pass column' and 'identifier:nt pass column' to 'NULL' (without the quotes) and 'identifier:plain pass column' to the name of the column containing the plaintext passwords. </P
-><P
->If you use encrypted passwords, set the 'identifier:plain pass column' to 'NULL' (without the quotes). This is the default.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN654"
-></A
->3.7.5. Getting non-column data from the table</H3
-><P
->It is possible to have not all data in the database and making some 'constant'.</P
-><P
->For example, you can set 'identifier:fullname column' to :
-<B
-CLASS="COMMAND"
->CONCAT(First_name,' ',Sur_name)</B
-></P
-><P
->Or, set 'identifier:workstations column' to :
-<B
-CLASS="COMMAND"
->NULL</B
-></P
-><P
->See the MySQL documentation for more language constructs.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN662"
-></A
->3.8. Passdb XML plugin</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN664"
-></A
->3.8.1. Building</H3
-><P
->This module requires libxml2 to be installed.</P
-><P
->To build pdb_xml, run: <B
-CLASS="COMMAND"
->make bin/pdb_xml.so</B
-> in
-the directory <TT
-CLASS="FILENAME"
->source/</TT
->. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN670"
-></A
->3.8.2. Usage</H3
-><P
->The usage of pdb_xml is pretty straightforward. To export data, use:
-
-<B
-CLASS="COMMAND"
->pdbedit -e plugin:/usr/lib/samba/pdb_xml.so:filename</B
->
-
-(where filename is the name of the file to put the data in)</P
-><P
->To import data, use:
-<B
-CLASS="COMMAND"
->pdbedit -i plugin:/usr/lib/samba/pdb_xml.so:filename -e current-pdb</B
->
-
-Where filename is the name to read the data from and current-pdb to put it in.</P
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="TYPE"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->II. Type of installation</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN678"
-></A
-><H1
->Introduction</H1
-><P
->Samba can operate in various SMB networks. This part contains information on configuring samba
-for various environments.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->4. <A
-HREF="#SECURITYLEVELS"
->User and Share security level (for servers not in a domain)</A
-></DT
-><DT
->5. <A
-HREF="#SAMBA-PDC"
->Samba as a NT4 or Win2k Primary Domain Controller</A
-></DT
-><DD
-><DL
-><DT
->5.1. <A
-HREF="#AEN722"
->Prerequisite Reading</A
-></DT
-><DT
->5.2. <A
-HREF="#AEN728"
->Background</A
-></DT
-><DT
->5.3. <A
-HREF="#AEN767"
->Configuring the Samba Domain Controller</A
-></DT
-><DT
->5.4. <A
-HREF="#AEN810"
->Creating Machine Trust Accounts and Joining Clients to the
-Domain</A
-></DT
-><DD
-><DL
-><DT
->5.4.1. <A
-HREF="#AEN829"
->Manual Creation of Machine Trust Accounts</A
-></DT
-><DT
->5.4.2. <A
-HREF="#AEN870"
->"On-the-Fly" Creation of Machine Trust Accounts</A
-></DT
-><DT
->5.4.3. <A
-HREF="#AEN879"
->Joining the Client to the Domain</A
-></DT
-></DL
-></DD
-><DT
->5.5. <A
-HREF="#AEN894"
->Common Problems and Errors</A
-></DT
-><DT
->5.6. <A
-HREF="#AEN942"
->System Policies and Profiles</A
-></DT
-><DT
->5.7. <A
-HREF="#AEN986"
->What other help can I get?</A
-></DT
-><DT
->5.8. <A
-HREF="#AEN1100"
->Domain Control for Windows 9x/ME</A
-></DT
-><DD
-><DL
-><DT
->5.8.1. <A
-HREF="#AEN1126"
->Configuration Instructions: Network Logons</A
-></DT
-><DT
->5.8.2. <A
-HREF="#AEN1145"
->Configuration Instructions: Setting up Roaming User Profiles</A
-></DT
-></DL
-></DD
-><DT
->5.9. <A
-HREF="#AEN1238"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</A
-></DT
-></DL
-></DD
-><DT
->6. <A
-HREF="#SAMBA-BDC"
->How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
-></DT
-><DD
-><DL
-><DT
->6.1. <A
-HREF="#AEN1274"
->Prerequisite Reading</A
-></DT
-><DT
->6.2. <A
-HREF="#AEN1278"
->Background</A
-></DT
-><DT
->6.3. <A
-HREF="#AEN1286"
->What qualifies a Domain Controller on the network?</A
-></DT
-><DD
-><DL
-><DT
->6.3.1. <A
-HREF="#AEN1289"
->How does a Workstation find its domain controller?</A
-></DT
-><DT
->6.3.2. <A
-HREF="#AEN1292"
->When is the PDC needed?</A
-></DT
-></DL
-></DD
-><DT
->6.4. <A
-HREF="#AEN1295"
->Can Samba be a Backup Domain Controller to an NT PDC?</A
-></DT
-><DT
->6.5. <A
-HREF="#AEN1300"
->How do I set up a Samba BDC?</A
-></DT
-><DD
-><DL
-><DT
->6.5.1. <A
-HREF="#AEN1317"
->How do I replicate the smbpasswd file?</A
-></DT
-><DT
->6.5.2. <A
-HREF="#AEN1321"
->Can I do this all with LDAP?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->7. <A
-HREF="#ADS"
->Samba as a ADS domain member</A
-></DT
-><DD
-><DL
-><DT
->7.1. <A
-HREF="#AEN1339"
->Installing the required packages for Debian</A
-></DT
-><DT
->7.2. <A
-HREF="#AEN1346"
->Installing the required packages for RedHat</A
-></DT
-><DT
->7.3. <A
-HREF="#AEN1356"
->Compile Samba</A
-></DT
-><DT
->7.4. <A
-HREF="#AEN1371"
->Setup your /etc/krb5.conf</A
-></DT
-><DT
->7.5. <A
-HREF="#AEN1381"
->Create the computer account</A
-></DT
-><DD
-><DL
-><DT
->7.5.1. <A
-HREF="#AEN1385"
->Possible errors</A
-></DT
-></DL
-></DD
-><DT
->7.6. <A
-HREF="#AEN1393"
->Test your server setup</A
-></DT
-><DT
->7.7. <A
-HREF="#AEN1398"
->Testing with smbclient</A
-></DT
-><DT
->7.8. <A
-HREF="#AEN1401"
->Notes</A
-></DT
-></DL
-></DD
-><DT
->8. <A
-HREF="#DOMAIN-SECURITY"
->Samba as a NT4 or Win2k domain member</A
-></DT
-><DD
-><DL
-><DT
->8.1. <A
-HREF="#AEN1423"
->Joining an NT Domain with Samba 3.0</A
-></DT
-><DT
->8.2. <A
-HREF="#AEN1478"
->Samba and Windows 2000 Domains</A
-></DT
-><DT
->8.3. <A
-HREF="#AEN1481"
->Why is this better than security = server?</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SECURITYLEVELS"
-></A
->Chapter 4. User and Share security level (for servers not in a domain)</H1
-><P
->A SMB server tells the client at startup what "security level" it is
-running. There are two options "share level" and "user level". Which
-of these two the client receives affects the way the client then tries
-to authenticate itself. It does not directly affect (to any great
-extent) the way the Samba server does security. I know this is
-strange, but it fits in with the client/server approach of SMB. In SMB
-everything is initiated and controlled by the client, and the server
-can only tell the client what is available and whether an action is
-allowed. </P
-><P
->I'll describe user level security first, as its simpler. In user level
-security the client will send a "session setup" command directly after
-the protocol negotiation. This contains a username and password. The
-server can either accept or reject that username/password
-combination. Note that at this stage the server has no idea what
-share the client will eventually try to connect to, so it can't base
-the "accept/reject" on anything other than:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->the username/password</P
-></LI
-><LI
-><P
->the machine that the client is coming from</P
-></LI
-></OL
-><P
->If the server accepts the username/password then the client expects to
-be able to mount any share (using a "tree connection") without
-specifying a password. It expects that all access rights will be as
-the username/password specified in the "session setup". </P
-><P
->It is also possible for a client to send multiple "session setup"
-requests. When the server responds it gives the client a "uid" to use
-as an authentication tag for that username/password. The client can
-maintain multiple authentication contexts in this way (WinDD is an
-example of an application that does this)</P
-><P
->Ok, now for share level security. In share level security the client
-authenticates itself separately for each share. It will send a
-password along with each "tree connection" (share mount). It does not
-explicitly send a username with this operation. The client is
-expecting a password to be associated with each share, independent of
-the user. This means that samba has to work out what username the
-client probably wants to use. It is never explicitly sent the
-username. Some commercial SMB servers such as NT actually associate
-passwords directly with shares in share level security, but samba
-always uses the unix authentication scheme where it is a
-username/password that is authenticated, not a "share/password".</P
-><P
->Many clients send a "session setup" even if the server is in share
-level security. They normally send a valid username but no
-password. Samba records this username in a list of "possible
-usernames". When the client then does a "tree connection" it also adds
-to this list the name of the share they try to connect to (useful for
-home directories) and any users listed in the "user =" smb.conf
-line. The password is then checked in turn against these "possible
-usernames". If a match is found then the client is authenticated as
-that user.</P
-><P
->Finally "server level" security. In server level security the samba
-server reports to the client that it is in user level security. The
-client then does a "session setup" as described earlier. The samba
-server takes the username/password that the client sends and attempts
-to login to the "password server" by sending exactly the same
-username/password that it got from the client. If that server is in
-user level security and accepts the password then samba accepts the
-clients connection. This allows the samba server to use another SMB
-server as the "password server". </P
-><P
->You should also note that at the very start of all this, where the
-server tells the client what security level it is in, it also tells
-the client if it supports encryption. If it does then it supplies the
-client with a random "cryptkey". The client will then send all
-passwords in encrypted form. You have to compile samba with encryption
-enabled to support this feature, and you have to maintain a separate
-smbpasswd file with SMB style encrypted passwords. It is
-cryptographically impossible to translate from unix style encryption
-to SMB style encryption, although there are some fairly simple management
-schemes by which the two could be kept in sync.</P
-><P
->"security = server" means that Samba reports to clients that
-it is running in "user mode" but actually passes off all authentication
-requests to another "user mode" server. This requires an additional
-parameter "password server =" that points to the real authentication server.
-That real authentication server can be another Samba server or can be a
-Windows NT server, the later natively capable of encrypted password support.</P
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SAMBA-PDC"
-></A
->Chapter 5. Samba as a NT4 or Win2k Primary Domain Controller</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN722"
-></A
->5.1. Prerequisite Reading</H2
-><P
->Before you continue reading in this chapter, please make sure
-that you are comfortable with configuring basic files services
-in smb.conf and how to enable and administer password
-encryption in Samba. Theses two topics are covered in the
-<A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)</TT
-></A
->
-manpage and the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->Encryption chapter</A
->
-of this HOWTO Collection.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN728"
-></A
->5.2. Background</H2
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Author's Note:</I
-></SPAN
-> This document is a combination
-of David Bannon's "Samba 2.2 PDC HOWTO" and "Samba NT Domain FAQ".
-Both documents are superseded by this one.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Versions of Samba prior to release 2.2 had marginal capabilities to act
-as a Windows NT 4.0 Primary Domain Controller
-
-(PDC). With Samba 2.2.0, we are proud to announce official support for
-Windows NT 4.0-style domain logons from Windows NT 4.0 and Windows
-2000 clients. This article outlines the steps
-necessary for configuring Samba as a PDC. It is necessary to have a
-working Samba server prior to implementing the PDC functionality. If
-you have not followed the steps outlined in <A
-HREF="UNIX_INSTALL.html"
-TARGET="_top"
-> UNIX_INSTALL.html</A
->, please make sure
-that your server is configured correctly before proceeding. Another
-good resource in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5) man
-page</A
->. The following functionality should work in 2.2:</P
-><P
-></P
-><UL
-><LI
-><P
-> domain logons for Windows NT 4.0/2000 clients.
- </P
-></LI
-><LI
-><P
-> placing a Windows 9x client in user level security
- </P
-></LI
-><LI
-><P
-> retrieving a list of users and groups from a Samba PDC to
- Windows 9x/NT/2000 clients
- </P
-></LI
-><LI
-><P
-> roving (roaming) user profiles
- </P
-></LI
-><LI
-><P
-> Windows NT 4.0-style system policies
- </P
-></LI
-></UL
-><P
->The following pieces of functionality are not included in the 2.2 release:</P
-><P
-></P
-><UL
-><LI
-><P
-> Windows NT 4 domain trusts
- </P
-></LI
-><LI
-><P
-> SAM replication with Windows NT 4.0 Domain Controllers
- (i.e. a Samba PDC and a Windows NT BDC or vice versa)
- </P
-></LI
-><LI
-><P
-> Adding users via the User Manager for Domains
- </P
-></LI
-><LI
-><P
-> Acting as a Windows 2000 Domain Controller (i.e. Kerberos and
- Active Directory)
- </P
-></LI
-></UL
-><P
->Please note that Windows 9x clients are not true members of a domain
-for reasons outlined in this article. Therefore the protocol for
-support Windows 9x-style domain logons is completely different
-from NT4 domain logons and has been officially supported for some
-time.</P
-><P
->Implementing a Samba PDC can basically be divided into 2 broad
-steps.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Configuring the Samba PDC
- </P
-></LI
-><LI
-><P
-> Creating machine trust accounts and joining clients
- to the domain
- </P
-></LI
-></OL
-><P
->There are other minor details such as user profiles, system
-policies, etc... However, these are not necessarily specific
-to a Samba PDC as much as they are related to Windows NT networking
-concepts. They will be mentioned only briefly here.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN767"
-></A
->5.3. Configuring the Samba Domain Controller</H2
-><P
->The first step in creating a working Samba PDC is to
-understand the parameters necessary in smb.conf. I will not
-attempt to re-explain the parameters here as they are more that
-adequately covered in <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-> the smb.conf
-man page</A
->. For convenience, the parameters have been
-linked with the actual smb.conf description.</P
-><P
->Here is an example <TT
-CLASS="FILENAME"
->smb.conf</TT
-> for acting as a PDC:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- ; Basic server settings
- <A
-HREF="smb.conf.5.html#NETBIOSNAME"
-TARGET="_top"
->netbios name</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->POGO</I
-></TT
->
- <A
-HREF="smb.conf.5.html#WORKGROUP"
-TARGET="_top"
->workgroup</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->NARNIA</I
-></TT
->
-
- ; we should act as the domain and local master browser
- <A
-HREF="smb.conf.5.html#OSLEVEL"
-TARGET="_top"
->os level</A
-> = 64
- <A
-HREF="smb.conf.5.html#PERFERREDMASTER"
-TARGET="_top"
->preferred master</A
-> = yes
- <A
-HREF="smb.conf.5.html#DOMAINMASTER"
-TARGET="_top"
->domain master</A
-> = yes
- <A
-HREF="smb.conf.5.html#LOCALMASTER"
-TARGET="_top"
->local master</A
-> = yes
-
- ; security settings (must user security = user)
- <A
-HREF="smb.conf.5.html#SECURITYEQUALSUSER"
-TARGET="_top"
->security</A
-> = user
-
- ; encrypted passwords are a requirement for a PDC
- <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->encrypt passwords</A
-> = yes
-
- ; support domain logons
- <A
-HREF="smb.conf.5.html#DOMAINLOGONS"
-TARGET="_top"
->domain logons</A
-> = yes
-
- ; where to store user profiles?
- <A
-HREF="smb.conf.5.html#LOGONPATH"
-TARGET="_top"
->logon path</A
-> = \\%N\profiles\%u
-
- ; where is a user's home directory and where should it
- ; be mounted at?
- <A
-HREF="smb.conf.5.html#LOGONDRIVE"
-TARGET="_top"
->logon drive</A
-> = H:
- <A
-HREF="smb.conf.5.html#LOGONHOME"
-TARGET="_top"
->logon home</A
-> = \\homeserver\%u
-
- ; specify a generic logon script for all users
- ; this is a relative **DOS** path to the [netlogon] share
- <A
-HREF="smb.conf.5.html#LOGONSCRIPT"
-TARGET="_top"
->logon script</A
-> = logon.cmd
-
-; necessary share for domain controller
-[netlogon]
- <A
-HREF="smb.conf.5.html#PATH"
-TARGET="_top"
->path</A
-> = /usr/local/samba/lib/netlogon
- <A
-HREF="smb.conf.5.html#READONLY"
-TARGET="_top"
->read only</A
-> = yes
- <A
-HREF="smb.conf.5.html#WRITELIST"
-TARGET="_top"
->write list</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->ntadmin</I
-></TT
->
-
-; share for storing user profiles
-[profiles]
- <A
-HREF="smb.conf.5.html#PATH"
-TARGET="_top"
->path</A
-> = /export/smb/ntprofile
- <A
-HREF="smb.conf.5.html#READONLY"
-TARGET="_top"
->read only</A
-> = no
- <A
-HREF="smb.conf.5.html#CREATEMASK"
-TARGET="_top"
->create mask</A
-> = 0600
- <A
-HREF="smb.conf.5.html#DIRECTORYMASK"
-TARGET="_top"
->directory mask</A
-> = 0700</PRE
-></P
-><P
->There are a couple of points to emphasize in the above configuration.</P
-><P
-></P
-><UL
-><LI
-><P
-> Encrypted passwords must be enabled. For more details on how
- to do this, refer to <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->ENCRYPTION.html</A
->.
- </P
-></LI
-><LI
-><P
-> The server must support domain logons and a
- <TT
-CLASS="FILENAME"
->[netlogon]</TT
-> share
- </P
-></LI
-><LI
-><P
-> The server must be the domain master browser in order for Windows
- client to locate the server as a DC. Please refer to the various
- Network Browsing documentation included with this distribution for
- details.
- </P
-></LI
-></UL
-><P
->As Samba 2.2 does not offer a complete implementation of group mapping
-between Windows NT groups and Unix groups (this is really quite
-complicated to explain in a short space), you should refer to the
-<A
-HREF="smb.conf.5.html#DOMAINADMINGROUP"
-TARGET="_top"
->domain admin
-group</A
-> smb.conf parameter for information of creating "Domain
-Admins" style accounts.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN810"
-></A
->5.4. Creating Machine Trust Accounts and Joining Clients to the
-Domain</H2
-><P
->A machine trust account is a Samba account that is used to
-authenticate a client machine (rather than a user) to the Samba
-server. In Windows terminology, this is known as a "Computer
-Account."</P
-><P
->The password of a machine trust account acts as the shared secret for
-secure communication with the Domain Controller. This is a security
-feature to prevent an unauthorized machine with the same NetBIOS name
-from joining the domain and gaining access to domain user/group
-accounts. Windows NT and 2000 clients use machine trust accounts, but
-Windows 9x clients do not. Hence, a Windows 9x client is never a true
-member of a domain because it does not possess a machine trust
-account, and thus has no shared secret with the domain controller.</P
-><P
->A Windows PDC stores each machine trust account in the Windows
-Registry. A Samba PDC, however, stores each machine trust account
-in two parts, as follows:
-
-<P
-></P
-><UL
-><LI
-><P
->A Samba account, stored in the same location as user
- LanMan and NT password hashes (currently
- <TT
-CLASS="FILENAME"
->smbpasswd</TT
->). The Samba account
- possesses and uses only the NT password hash.</P
-></LI
-><LI
-><P
->A corresponding Unix account, typically stored in
- <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->. (Future releases will alleviate the need to
- create <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entries.) </P
-></LI
-></UL
-></P
-><P
->There are two ways to create machine trust accounts:</P
-><P
-></P
-><UL
-><LI
-><P
-> Manual creation. Both the Samba and corresponding
- Unix account are created by hand.</P
-></LI
-><LI
-><P
-> "On-the-fly" creation. The Samba machine trust
- account is automatically created by Samba at the time the client
- is joined to the domain. (For security, this is the
- recommended method.) The corresponding Unix account may be
- created automatically or manually. </P
-></LI
-></UL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN829"
-></A
->5.4.1. Manual Creation of Machine Trust Accounts</H3
-><P
->The first step in manually creating a machine trust account is to
-manually create the corresponding Unix account in
-<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->. This can be done using
-<B
-CLASS="COMMAND"
->vipw</B
-> or other 'add user' command that is normally
-used to create new Unix accounts. The following is an example for a
-Linux based Samba server:</P
-><P
-> <TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->/usr/sbin/useradd -g 100 -d /dev/null -c <TT
-CLASS="REPLACEABLE"
-><I
->"machine
-nickname"</I
-></TT
-> -s /bin/false <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$ </B
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->passwd -l <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$</B
-></P
-><P
->On *BSD systems, this can be done using the 'chpass' utility:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->chpass -a "<TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$:*:101:100::0:0:Workstation <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->:/dev/null:/sbin/nologin"</B
-></P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry will list the machine name
-with a "$" appended, won't have a password, will have a null shell and no
-home directory. For example a machine named 'doppy' would have an
-<TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->doppy$:x:505:501:<TT
-CLASS="REPLACEABLE"
-><I
->machine_nickname</I
-></TT
->:/dev/null:/bin/false</PRE
-></P
-><P
->Above, <TT
-CLASS="REPLACEABLE"
-><I
->machine_nickname</I
-></TT
-> can be any
-descriptive name for the client, i.e., BasementComputer.
-<TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-> absolutely must be the NetBIOS
-name of the client to be joined to the domain. The "$" must be
-appended to the NetBIOS name of the client or Samba will not recognize
-this as a machine trust account.</P
-><P
->Now that the corresponding Unix account has been created, the next step is to create
-the Samba account for the client containing the well-known initial
-machine trust account password. This can be done using the <A
-HREF="smbpasswd.8.html"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->smbpasswd(8)</B
-></A
-> command
-as shown here:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->smbpasswd -a -m <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-></B
-></P
-><P
->where <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-> is the machine's NetBIOS
-name. The RID of the new machine account is generated from the UID of
-the corresponding Unix account.</P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Join the client to the domain immediately</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-> Manually creating a machine trust account using this method is the
- equivalent of creating a machine trust account on a Windows NT PDC using
- the "Server Manager". From the time at which the account is created
- to the time which the client joins the domain and changes the password,
- your domain is vulnerable to an intruder joining your domain using a
- a machine with the same NetBIOS name. A PDC inherently trusts
- members of the domain and will serve out a large degree of user
- information to such clients. You have been warned!
- </P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN870"
-></A
->5.4.2. "On-the-Fly" Creation of Machine Trust Accounts</H3
-><P
->The second (and recommended) way of creating machine trust accounts is
-simply to allow the Samba server to create them as needed when the client
-is joined to the domain. </P
-><P
->Since each Samba machine trust account requires a corresponding
-Unix account, a method for automatically creating the
-Unix account is usually supplied; this requires configuration of the
-<A
-HREF="smb.conf.5.html#ADDUSERSCRIPT"
-TARGET="_top"
->add user script</A
->
-option in <TT
-CLASS="FILENAME"
->smb.conf</TT
->. This
-method is not required, however; corresponding Unix accounts may also
-be created manually.</P
-><P
->Below is an example for a RedHat 6.2 Linux system.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- # &lt;...remainder of parameters...&gt;
- add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u </PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN879"
-></A
->5.4.3. Joining the Client to the Domain</H3
-><P
->The procedure for joining a client to the domain varies with the
-version of Windows.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Windows 2000</I
-></SPAN
-></P
-><P
-> When the user elects to join the client to a domain, Windows prompts for
- an account and password that is privileged to join the domain. A
- Samba administrative account (i.e., a Samba account that has root
- privileges on the Samba server) must be entered here; the
- operation will fail if an ordinary user account is given.
- The password for this account should be
- set to a different password than the associated
- <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry, for security
- reasons. </P
-><P
->The session key of the Samba administrative account acts as an
- encryption key for setting the password of the machine trust
- account. The machine trust account will be created on-the-fly, or
- updated if it already exists.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Windows NT</I
-></SPAN
-></P
-><P
-> If the machine trust account was created manually, on the
- Identification Changes menu enter the domain name, but do not
- check the box "Create a Computer Account in the Domain." In this case,
- the existing machine trust account is used to join the machine to
- the domain.</P
-><P
-> If the machine trust account is to be created
- on-the-fly, on the Identification Changes menu enter the domain
- name, and check the box "Create a Computer Account in the Domain." In
- this case, joining the domain proceeds as above for Windows 2000
- (i.e., you must supply a Samba administrative account when
- prompted).</P
-></LI
-></UL
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN894"
-></A
->5.5. Common Problems and Errors</H2
-><P
-></P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->I cannot include a '$' in a machine name.</I
-></SPAN
->
- </P
-><P
-> A 'machine name' in (typically) <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->
- of the machine name with a '$' appended. FreeBSD (and other BSD
- systems?) won't create a user with a '$' in their name.
- </P
-><P
-> The problem is only in the program used to make the entry, once
- made, it works perfectly. So create a user without the '$' and
- use <B
-CLASS="COMMAND"
->vipw</B
-> to edit the entry, adding the '$'. Or create
- the whole entry with vipw if you like, make sure you use a
- unique User ID !
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->I get told "You already have a connection to the Domain...."
- or "Cannot join domain, the credentials supplied conflict with an
- existing set.." when creating a machine trust account.</I
-></SPAN
->
- </P
-><P
-> This happens if you try to create a machine trust account from the
- machine itself and already have a connection (e.g. mapped drive)
- to a share (or IPC$) on the Samba PDC. The following command
- will remove all network drive connections:
- </P
-><P
-> <TT
-CLASS="PROMPT"
->C:\WINNT\&#62;</TT
-> <B
-CLASS="COMMAND"
->net use * /d</B
->
- </P
-><P
-> Further, if the machine is a already a 'member of a workgroup' that
- is the same name as the domain you are joining (bad idea) you will
- get this message. Change the workgroup name to something else, it
- does not matter what, reboot, and try again.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->The system can not log you on (C000019B)....</I
-></SPAN
->
- </P
-><P
->I joined the domain successfully but after upgrading
- to a newer version of the Samba code I get the message, "The system
- can not log you on (C000019B), Please try a gain or consult your
- system administrator" when attempting to logon.
- </P
-><P
-> This occurs when the domain SID stored in
- <TT
-CLASS="FILENAME"
->private/WORKGROUP.SID</TT
-> is
- changed. For example, you remove the file and <B
-CLASS="COMMAND"
->smbd</B
-> automatically
- creates a new one. Or you are swapping back and forth between
- versions 2.0.7, TNG and the HEAD branch code (not recommended). The
- only way to correct the problem is to restore the original domain
- SID or remove the domain client from the domain and rejoin.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->The machine trust account for this computer either does not
- exist or is not accessible.</I
-></SPAN
->
- </P
-><P
-> When I try to join the domain I get the message "The machine account
- for this computer either does not exist or is not accessible". What's
- wrong?
- </P
-><P
-> This problem is caused by the PDC not having a suitable machine trust account.
- If you are using the <TT
-CLASS="PARAMETER"
-><I
->add user script</I
-></TT
-> method to create
- accounts then this would indicate that it has not worked. Ensure the domain
- admin user system is working.
- </P
-><P
-> Alternatively if you are creating account entries manually then they
- have not been created correctly. Make sure that you have the entry
- correct for the machine trust account in smbpasswd file on the Samba PDC.
- If you added the account using an editor rather than using the smbpasswd
- utility, make sure that the account name is the machine NetBIOS name
- with a '$' appended to it ( i.e. computer_name$ ). There must be an entry
- in both /etc/passwd and the smbpasswd file. Some people have reported
- that inconsistent subnet masks between the Samba server and the NT
- client have caused this problem. Make sure that these are consistent
- for both client and server.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->When I attempt to login to a Samba Domain from a NT4/W2K workstation,
- I get a message about my account being disabled.</I
-></SPAN
->
- </P
-><P
-> This problem is caused by a PAM related bug in Samba 2.2.0. This bug is
- fixed in 2.2.1. Other symptoms could be unaccessible shares on
- NT/W2K member servers in the domain or the following error in your smbd.log:
- passdb/pampass.c:pam_account(268) PAM: UNKNOWN ERROR for User: %user%
- </P
-><P
-> At first be ensure to enable the useraccounts with <B
-CLASS="COMMAND"
->smbpasswd -e
- %user%</B
->, this is normally done, when you create an account.
- </P
-><P
-> In order to work around this problem in 2.2.0, configure the
- <TT
-CLASS="PARAMETER"
-><I
->account</I
-></TT
-> control flag in
- <TT
-CLASS="FILENAME"
->/etc/pam.d/samba</TT
-> file as follows:
- </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> account required pam_permit.so
- </PRE
-></P
-><P
-> If you want to remain backward compatibility to samba 2.0.x use
- <TT
-CLASS="FILENAME"
->pam_permit.so</TT
->, it's also possible to use
- <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->. There are some bugs if you try to
- use <TT
-CLASS="FILENAME"
->pam_unix.so</TT
->, if you need this, be ensure to use
- the most recent version of this file.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN942"
-></A
->5.6. System Policies and Profiles</H2
-><P
->Much of the information necessary to implement System Policies and
-Roving User Profiles in a Samba domain is the same as that for
-implementing these same items in a Windows NT 4.0 domain.
-You should read the white paper <A
-HREF="http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp"
-TARGET="_top"
->Implementing
-Profiles and Policies in Windows NT 4.0</A
-> available from Microsoft.</P
-><P
->Here are some additional details:</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->What about Windows NT Policy Editor?</I
-></SPAN
->
- </P
-><P
-> To create or edit <TT
-CLASS="FILENAME"
->ntconfig.pol</TT
-> you must use
- the NT Server Policy Editor, <B
-CLASS="COMMAND"
->poledit.exe</B
-> which
- is included with NT Server but <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not NT Workstation</I
-></SPAN
->.
- There is a Policy Editor on a NTws
- but it is not suitable for creating <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Domain Policies</I
-></SPAN
->.
- Further, although the Windows 95
- Policy Editor can be installed on an NT Workstation/Server, it will not
- work with NT policies because the registry key that are set by the policy templates.
- However, the files from the NT Server will run happily enough on an NTws.
- You need <TT
-CLASS="FILENAME"
->poledit.exe, common.adm</TT
-> and <TT
-CLASS="FILENAME"
->winnt.adm</TT
->. It is convenient
- to put the two *.adm files in <TT
-CLASS="FILENAME"
->c:\winnt\inf</TT
-> which is where
- the binary will look for them unless told otherwise. Note also that that
- directory is 'hidden'.
- </P
-><P
-> The Windows NT policy editor is also included with the Service Pack 3 (and
- later) for Windows NT 4.0. Extract the files using <B
-CLASS="COMMAND"
->servicepackname /x</B
->,
- i.e. that's <B
-CLASS="COMMAND"
->Nt4sp6ai.exe /x</B
-> for service pack 6a. The policy editor,
- <B
-CLASS="COMMAND"
->poledit.exe</B
-> and the associated template files (*.adm) should
- be extracted as well. It is also possible to downloaded the policy template
- files for Office97 and get a copy of the policy editor. Another possible
- location is with the Zero Administration Kit available for download from Microsoft.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Can Win95 do Policies?</I
-></SPAN
->
- </P
-><P
-> Install the group policy handler for Win9x to pick up group
- policies. Look on the Win98 CD in <TT
-CLASS="FILENAME"
->\tools\reskit\netadmin\poledit</TT
->.
- Install group policies on a Win9x client by double-clicking
- <TT
-CLASS="FILENAME"
->grouppol.inf</TT
->. Log off and on again a couple of
- times and see if Win98 picks up group policies. Unfortunately this needs
- to be done on every Win9x machine that uses group policies....
- </P
-><P
-> If group policies don't work one reports suggests getting the updated
- (read: working) grouppol.dll for Windows 9x. The group list is grabbed
- from /etc/group.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get 'User Manager' and 'Server Manager'</I
-></SPAN
->
- </P
-><P
-> Since I don't need to buy an NT Server CD now, how do I get
- the 'User Manager for Domains', the 'Server Manager'?
- </P
-><P
-> Microsoft distributes a version of these tools called nexus for
- installation on Windows 95 systems. The tools set includes
- </P
-><P
-></P
-><UL
-><LI
-><P
->Server Manager</P
-></LI
-><LI
-><P
->User Manager for Domains</P
-></LI
-><LI
-><P
->Event Viewer</P
-></LI
-></UL
-><P
-> Click here to download the archived file <A
-HREF="ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE"
-TARGET="_top"
->ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE</A
->
- </P
-><P
-> The Windows NT 4.0 version of the 'User Manager for
- Domains' and 'Server Manager' are available from Microsoft via ftp
- from <A
-HREF="ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE"
-TARGET="_top"
->ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE</A
->
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN986"
-></A
->5.7. What other help can I get?</H2
-><P
->There are many sources of information available in the form
-of mailing lists, RFC's and documentation. The docs that come
-with the samba distribution contain very good explanations of
-general SMB topics such as browsing.</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->What are some diagnostics tools I can use to debug the domain logon
- process and where can I find them?</I
-></SPAN
->
- </P
-><P
-> One of the best diagnostic tools for debugging problems is Samba itself.
- You can use the -d option for both smbd and nmbd to specify what
- 'debug level' at which to run. See the man pages on smbd, nmbd and
- smb.conf for more information on debugging options. The debug
- level can range from 1 (the default) to 10 (100 for debugging passwords).
- </P
-><P
-> Another helpful method of debugging is to compile samba using the
- <B
-CLASS="COMMAND"
->gcc -g </B
-> flag. This will include debug
- information in the binaries and allow you to attach gdb to the
- running smbd / nmbd process. In order to attach gdb to an smbd
- process for an NT workstation, first get the workstation to make the
- connection. Pressing ctrl-alt-delete and going down to the domain box
- is sufficient (at least, on the first time you join the domain) to
- generate a 'LsaEnumTrustedDomains'. Thereafter, the workstation
- maintains an open connection, and therefore there will be an smbd
- process running (assuming that you haven't set a really short smbd
- idle timeout) So, in between pressing ctrl alt delete, and actually
- typing in your password, you can gdb attach and continue.
- </P
-><P
-> Some useful samba commands worth investigating:
- </P
-><P
-></P
-><UL
-><LI
-><P
->testparam | more</P
-></LI
-><LI
-><P
->smbclient -L //{netbios name of server}</P
-></LI
-></UL
-><P
-> An SMB enabled version of tcpdump is available from
- <A
-HREF="http://www.tcpdump.org/"
-TARGET="_top"
->http://www.tcpdup.org/</A
->.
- Ethereal, another good packet sniffer for Unix and Win32
- hosts, can be downloaded from <A
-HREF="http://www.ethereal.com/"
-TARGET="_top"
->http://www.ethereal.com</A
->.
- </P
-><P
-> For tracing things on the Microsoft Windows NT, Network Monitor
- (aka. netmon) is available on the Microsoft Developer Network CD's,
- the Windows NT Server install CD and the SMS CD's. The version of
- netmon that ships with SMS allows for dumping packets between any two
- computers (i.e. placing the network interface in promiscuous mode).
- The version on the NT Server install CD will only allow monitoring
- of network traffic directed to the local NT box and broadcasts on the
- local subnet. Be aware that Ethereal can read and write netmon
- formatted files.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I install 'Network Monitor' on an NT Workstation
- or a Windows 9x box?</I
-></SPAN
->
- </P
-><P
-> Installing netmon on an NT workstation requires a couple
- of steps. The following are for installing Netmon V4.00.349, which comes
- with Microsoft Windows NT Server 4.0, on Microsoft Windows NT
- Workstation 4.0. The process should be similar for other version of
- Windows NT / Netmon. You will need both the Microsoft Windows
- NT Server 4.0 Install CD and the Workstation 4.0 Install CD.
- </P
-><P
-> Initially you will need to install 'Network Monitor Tools and Agent'
- on the NT Server. To do this
- </P
-><P
-></P
-><UL
-><LI
-><P
->Goto Start - Settings - Control Panel -
- Network - Services - Add </P
-></LI
-><LI
-><P
->Select the 'Network Monitor Tools and Agent' and
- click on 'OK'.</P
-></LI
-><LI
-><P
->Click 'OK' on the Network Control Panel.
- </P
-></LI
-><LI
-><P
->Insert the Windows NT Server 4.0 install CD
- when prompted.</P
-></LI
-></UL
-><P
-> At this point the Netmon files should exist in
- <TT
-CLASS="FILENAME"
->%SYSTEMROOT%\System32\netmon\*.*</TT
->.
- Two subdirectories exist as well, <TT
-CLASS="FILENAME"
->parsers\</TT
->
- which contains the necessary DLL's for parsing the netmon packet
- dump, and <TT
-CLASS="FILENAME"
->captures\</TT
->.
- </P
-><P
-> In order to install the Netmon tools on an NT Workstation, you will
- first need to install the 'Network Monitor Agent' from the Workstation
- install CD.
- </P
-><P
-></P
-><UL
-><LI
-><P
->Goto Start - Settings - Control Panel -
- Network - Services - Add</P
-></LI
-><LI
-><P
->Select the 'Network Monitor Agent' and click
- on 'OK'.</P
-></LI
-><LI
-><P
->Click 'OK' on the Network Control Panel.
- </P
-></LI
-><LI
-><P
->Insert the Windows NT Workstation 4.0 install
- CD when prompted.</P
-></LI
-></UL
-><P
-> Now copy the files from the NT Server in %SYSTEMROOT%\System32\netmon\*.*
- to %SYSTEMROOT%\System32\netmon\*.* on the Workstation and set
- permissions as you deem appropriate for your site. You will need
- administrative rights on the NT box to run netmon.
- </P
-><P
-> To install Netmon on a Windows 9x box install the network monitor agent
- from the Windows 9x CD (\admin\nettools\netmon). There is a readme
- file located with the netmon driver files on the CD if you need
- information on how to do this. Copy the files from a working
- Netmon installation.
- </P
-></LI
-><LI
-><P
-> The following is a list if helpful URLs and other links:
- </P
-><P
-></P
-><UL
-><LI
-><P
->Home of Samba site <A
-HREF="http://samba.org"
-TARGET="_top"
-> http://samba.org</A
->. We have a mirror near you !</P
-></LI
-><LI
-><P
-> The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Development</I
-></SPAN
-> document
- on the Samba mirrors might mention your problem. If so,
- it might mean that the developers are working on it.</P
-></LI
-><LI
-><P
->See how Scott Merrill simulates a BDC behavior at
- <A
-HREF="http://www.skippy.net/linux/smb-howto.html"
-TARGET="_top"
-> http://www.skippy.net/linux/smb-howto.html</A
->. </P
-></LI
-><LI
-><P
->Although 2.0.7 has almost had its day as a PDC, David Bannon will
- keep the 2.0.7 PDC pages at <A
-HREF="http://bioserve.latrobe.edu.au/samba"
-TARGET="_top"
-> http://bioserve.latrobe.edu.au/samba</A
-> going for a while yet.</P
-></LI
-><LI
-><P
->Misc links to CIFS information
- <A
-HREF="http://samba.org/cifs/"
-TARGET="_top"
->http://samba.org/cifs/</A
-></P
-></LI
-><LI
-><P
->NT Domains for Unix <A
-HREF="http://mailhost.cb1.com/~lkcl/ntdom/"
-TARGET="_top"
-> http://mailhost.cb1.com/~lkcl/ntdom/</A
-></P
-></LI
-><LI
-><P
->FTP site for older SMB specs:
- <A
-HREF="ftp://ftp.microsoft.com/developr/drg/CIFS/"
-TARGET="_top"
-> ftp://ftp.microsoft.com/developr/drg/CIFS/</A
-></P
-></LI
-></UL
-></LI
-></UL
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get help from the mailing lists?</I
-></SPAN
->
- </P
-><P
-> There are a number of Samba related mailing lists. Go to <A
-HREF="http://samba.org"
-TARGET="_top"
->http://samba.org</A
->, click on your nearest mirror
- and then click on <B
-CLASS="COMMAND"
->Support</B
-> and then click on <B
-CLASS="COMMAND"
-> Samba related mailing lists</B
->.
- </P
-><P
-> For questions relating to Samba TNG go to
- <A
-HREF="http://www.samba-tng.org/"
-TARGET="_top"
->http://www.samba-tng.org/</A
->
- It has been requested that you don't post questions about Samba-TNG to the
- main stream Samba lists.</P
-><P
-> If you post a message to one of the lists please observe the following guide lines :
- </P
-><P
-></P
-><UL
-><LI
-><P
-> Always remember that the developers are volunteers, they are
- not paid and they never guarantee to produce a particular feature at
- a particular time. Any time lines are 'best guess' and nothing more.
- </P
-></LI
-><LI
-><P
-> Always mention what version of samba you are using and what
- operating system its running under. You should probably list the
- relevant sections of your smb.conf file, at least the options
- in [global] that affect PDC support.</P
-></LI
-><LI
-><P
->In addition to the version, if you obtained Samba via
- CVS mention the date when you last checked it out.</P
-></LI
-><LI
-><P
-> Try and make your question clear and brief, lots of long,
- convoluted questions get deleted before they are completely read !
- Don't post html encoded messages (if you can select colour or font
- size its html).</P
-></LI
-><LI
-><P
-> If you run one of those nifty 'I'm on holidays' things when
- you are away, make sure its configured to not answer mailing lists.
- </P
-></LI
-><LI
-><P
-> Don't cross post. Work out which is the best list to post to
- and see what happens, i.e. don't post to both samba-ntdom and samba-technical.
- Many people active on the lists subscribe to more
- than one list and get annoyed to see the same message two or more times.
- Often someone will see a message and thinking it would be better dealt
- with on another, will forward it on for you.</P
-></LI
-><LI
-><P
->You might include <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->partial</I
-></SPAN
->
- log files written at a debug level set to as much as 20.
- Please don't send the entire log but enough to give the context of the
- error messages.</P
-></LI
-><LI
-><P
->(Possibly) If you have a complete netmon trace ( from the opening of
- the pipe to the error ) you can send the *.CAP file as well.</P
-></LI
-><LI
-><P
->Please think carefully before attaching a document to an email.
- Consider pasting the relevant parts into the body of the message. The samba
- mailing lists go to a huge number of people, do they all need a copy of your
- smb.conf in their attach directory?</P
-></LI
-></UL
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get off the mailing lists?</I
-></SPAN
->
- </P
-><P
->To have your name removed from a samba mailing list, go to the
- same place you went to to get on it. Go to <A
-HREF="http://lists.samba.org/"
-TARGET="_top"
->http://lists.samba.org</A
->,
- click on your nearest mirror and then click on <B
-CLASS="COMMAND"
->Support</B
-> and
- then click on <B
-CLASS="COMMAND"
-> Samba related mailing lists</B
->. Or perhaps see
- <A
-HREF="http://lists.samba.org/mailman/roster/samba-ntdom"
-TARGET="_top"
->here</A
->
- </P
-><P
-> Please don't post messages to the list asking to be removed, you will just
- be referred to the above address (unless that process failed in some way...)
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1100"
-></A
->5.8. Domain Control for Windows 9x/ME</H2
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->The following section contains much of the original
-DOMAIN.txt file previously included with Samba. Much of
-the material is based on what went into the book <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Special
-Edition, Using Samba</I
-></SPAN
->, by Richard Sharpe.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->A domain and a workgroup are exactly the same thing in terms of network
-browsing. The difference is that a distributable authentication
-database is associated with a domain, for secure login access to a
-network. Also, different access rights can be granted to users if they
-successfully authenticate against a domain logon server (NT server and
-other systems based on NT server support this, as does at least Samba TNG now).</P
-><P
->The SMB client logging on to a domain has an expectation that every other
-server in the domain should accept the same authentication information.
-Network browsing functionality of domains and workgroups is
-identical and is explained in BROWSING.txt. It should be noted, that browsing
-is totally orthogonal to logon support.</P
-><P
->Issues related to the single-logon network model are discussed in this
-section. Samba supports domain logons, network logon scripts, and user
-profiles for MS Windows for workgroups and MS Windows 9X/ME clients
-which will be the focus of this section.</P
-><P
->When an SMB client in a domain wishes to logon it broadcast requests for a
-logon server. The first one to reply gets the job, and validates its
-password using whatever mechanism the Samba administrator has installed.
-It is possible (but very stupid) to create a domain where the user
-database is not shared between servers, i.e. they are effectively workgroup
-servers advertising themselves as participating in a domain. This
-demonstrates how authentication is quite different from but closely
-involved with domains.</P
-><P
->Using these features you can make your clients verify their logon via
-the Samba server; make clients run a batch file when they logon to
-the network and download their preferences, desktop and start menu.</P
-><P
->Before launching into the configuration instructions, it is
-worthwhile lookingat how a Windows 9x/ME client performs a logon:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> The client broadcasts (to the IP broadcast address of the subnet it is in)
- a NetLogon request. This is sent to the NetBIOS name DOMAIN&lt;1c&gt; at the
- NetBIOS layer. The client chooses the first response it receives, which
- contains the NetBIOS name of the logon server to use in the format of
- \\SERVER.
- </P
-></LI
-><LI
-><P
-> The client then connects to that server, logs on (does an SMBsessetupX) and
- then connects to the IPC$ share (using an SMBtconX).
- </P
-></LI
-><LI
-><P
-> The client then does a NetWkstaUserLogon request, which retrieves the name
- of the user's logon script.
- </P
-></LI
-><LI
-><P
-> The client then connects to the NetLogon share and searches for this
- and if it is found and can be read, is retrieved and executed by the client.
- After this, the client disconnects from the NetLogon share.
- </P
-></LI
-><LI
-><P
-> The client then sends a NetUserGetInfo request to the server, to retrieve
- the user's home share, which is used to search for profiles. Since the
- response to the NetUserGetInfo request does not contain much more
- the user's home share, profiles for Win9X clients MUST reside in the user
- home directory.
- </P
-></LI
-><LI
-><P
-> The client then connects to the user's home share and searches for the
- user's profile. As it turns out, you can specify the user's home share as
- a sharename and path. For example, \\server\fred\.profile.
- If the profiles are found, they are implemented.
- </P
-></LI
-><LI
-><P
-> The client then disconnects from the user's home share, and reconnects to
- the NetLogon share and looks for CONFIG.POL, the policies file. If this is
- found, it is read and implemented.
- </P
-></LI
-></OL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1126"
-></A
->5.8.1. Configuration Instructions: Network Logons</H3
-><P
->The main difference between a PDC and a Windows 9x logon
-server configuration is that</P
-><P
-></P
-><UL
-><LI
-><P
->Password encryption is not required for a Windows 9x logon server.</P
-></LI
-><LI
-><P
->Windows 9x/ME clients do not possess machine trust accounts.</P
-></LI
-></UL
-><P
->Therefore, a Samba PDC will also act as a Windows 9x logon
-server.</P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->security mode and master browsers</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->There are a few comments to make in order to tie up some
-loose ends. There has been much debate over the issue of whether
-or not it is ok to configure Samba as a Domain Controller in security
-modes other than <TT
-CLASS="CONSTANT"
->USER</TT
->. The only security mode
-which will not work due to technical reasons is <TT
-CLASS="CONSTANT"
->SHARE</TT
->
-mode security. <TT
-CLASS="CONSTANT"
->DOMAIN</TT
-> and <TT
-CLASS="CONSTANT"
->SERVER</TT
->
-mode security is really just a variation on SMB user level security.</P
-><P
->Actually, this issue is also closely tied to the debate on whether
-or not Samba must be the domain master browser for its workgroup
-when operating as a DC. While it may technically be possible
-to configure a server as such (after all, browsing and domain logons
-are two distinctly different functions), it is not a good idea to
-so. You should remember that the DC must register the DOMAIN#1b NetBIOS
-name. This is the name used by Windows clients to locate the DC.
-Windows clients do not distinguish between the DC and the DMB.
-For this reason, it is very wise to configure the Samba DC as the DMB.</P
-><P
->Now back to the issue of configuring a Samba DC to use a mode other
-than "security = user". If a Samba host is configured to use
-another SMB server or DC in order to validate user connection
-requests, then it is a fact that some other machine on the network
-(the "password server") knows more about user than the Samba host.
-99% of the time, this other host is a domain controller. Now
-in order to operate in domain mode security, the "workgroup" parameter
-must be set to the name of the Windows NT domain (which already
-has a domain controller, right?)</P
-><P
->Therefore configuring a Samba box as a DC for a domain that
-already by definition has a PDC is asking for trouble.
-Therefore, you should always configure the Samba DC to be the DMB
-for its domain.</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1145"
-></A
->5.8.2. Configuration Instructions: Setting up Roaming User Profiles</H3
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE!</I
-></SPAN
-> Roaming profiles support is different
-for Win9X and WinNT.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Before discussing how to configure roaming profiles, it is useful to see how
-Win9X and WinNT clients implement these features.</P
-><P
->Win9X clients send a NetUserGetInfo request to the server to get the user's
-profiles location. However, the response does not have room for a separate
-profiles location field, only the user's home share. This means that Win9X
-profiles are restricted to being in the user's home directory.</P
-><P
->WinNT clients send a NetSAMLogon RPC request, which contains many fields,
-including a separate field for the location of the user's profiles.
-This means that support for profiles is different for Win9X and WinNT.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1153"
-></A
->5.8.2.1. Windows NT Configuration</H4
-><P
->To support WinNT clients, in the [global] section of smb.conf set the
-following (for example):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon path = \\profileserver\profileshare\profilepath\%U\moreprofilepath</PRE
-></P
-><P
->The default for this option is \\%N\%U\profile, namely
-\\sambaserver\username\profile. The \\N%\%U service is created
-automatically by the [homes] service.
-If you are using a samba server for the profiles, you _must_ make the
-share specified in the logon path browseable. </P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 26aug96 - we have discovered a problem where Windows clients can
-maintain a connection to the [homes] share in between logins. The
-[homes] share must NOT therefore be used in a profile path.]</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1161"
-></A
->5.8.2.2. Windows 9X Configuration</H4
-><P
->To support Win9X clients, you must use the "logon home" parameter. Samba has
-now been fixed so that "net use/home" now works as well, and it, too, relies
-on the "logon home" parameter.</P
-><P
->By using the logon home parameter, you are restricted to putting Win9X
-profiles in the user's home directory. But wait! There is a trick you
-can use. If you set the following in the [global] section of your
-smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon home = \\%L\%U\.profiles</PRE
-></P
-><P
->then your Win9X clients will dutifully put their clients in a subdirectory
-of your home directory called .profiles (thus making them hidden).</P
-><P
->Not only that, but 'net use/home' will also work, because of a feature in
-Win9X. It removes any directory stuff off the end of the home directory area
-and only uses the server and share portion. That is, it looks like you
-specified \\%L\%U for "logon home".</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1169"
-></A
->5.8.2.3. Win9X and WinNT Configuration</H4
-><P
->You can support profiles for both Win9X and WinNT clients by setting both the
-"logon home" and "logon path" parameters. For example:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon home = \\%L\%U\.profiles
-logon path = \\%L\profiles\%U</PRE
-></P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I have not checked what 'net use /home' does on NT when "logon home" is
-set as above.</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1176"
-></A
->5.8.2.4. Windows 9X Profile Setup</H4
-><P
->When a user first logs in on Windows 9X, the file user.DAT is created,
-as are folders "Start Menu", "Desktop", "Programs" and "Nethood".
-These directories and their contents will be merged with the local
-versions stored in c:\windows\profiles\username on subsequent logins,
-taking the most recent from each. You will need to use the [global]
-options "preserve case = yes", "short preserve case = yes" and
-"case sensitive = no" in order to maintain capital letters in shortcuts
-in any of the profile folders.</P
-><P
->The user.DAT file contains all the user's preferences. If you wish to
-enforce a set of preferences, rename their user.DAT file to user.MAN,
-and deny them write access to this file.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> On the Windows 95 machine, go to Control Panel | Passwords and
- select the User Profiles tab. Select the required level of
- roaming preferences. Press OK, but do _not_ allow the computer
- to reboot.
- </P
-></LI
-><LI
-><P
-> On the Windows 95 machine, go to Control Panel | Network |
- Client for Microsoft Networks | Preferences. Select 'Log on to
- NT Domain'. Then, ensure that the Primary Logon is 'Client for
- Microsoft Networks'. Press OK, and this time allow the computer
- to reboot.
- </P
-></LI
-></OL
-><P
->Under Windows 95, Profiles are downloaded from the Primary Logon.
-If you have the Primary Logon as 'Client for Novell Networks', then
-the profiles and logon script will be downloaded from your Novell
-Server. If you have the Primary Logon as 'Windows Logon', then the
-profiles will be loaded from the local machine - a bit against the
-concept of roaming profiles, if you ask me.</P
-><P
->You will now find that the Microsoft Networks Login box contains
-[user, password, domain] instead of just [user, password]. Type in
-the samba server's domain name (or any other domain known to exist,
-but bear in mind that the user will be authenticated against this
-domain and profiles downloaded from it, if that domain logon server
-supports it), user name and user's password.</P
-><P
->Once the user has been successfully validated, the Windows 95 machine
-will inform you that 'The user has not logged on before' and asks you
-if you wish to save the user's preferences? Select 'yes'.</P
-><P
->Once the Windows 95 client comes up with the desktop, you should be able
-to examine the contents of the directory specified in the "logon path"
-on the samba server and verify that the "Desktop", "Start Menu",
-"Programs" and "Nethood" folders have been created.</P
-><P
->These folders will be cached locally on the client, and updated when
-the user logs off (if you haven't made them read-only by then :-).
-You will find that if the user creates further folders or short-cuts,
-that the client will merge the profile contents downloaded with the
-contents of the profile directory already on the local client, taking
-the newest folders and short-cuts from each set.</P
-><P
->If you have made the folders / files read-only on the samba server,
-then you will get errors from the w95 machine on logon and logout, as
-it attempts to merge the local and the remote profile. Basically, if
-you have any errors reported by the w95 machine, check the Unix file
-permissions and ownership rights on the profile directory contents,
-on the samba server.</P
-><P
->If you have problems creating user profiles, you can reset the user's
-local desktop cache, as shown below. When this user then next logs in,
-they will be told that they are logging in "for the first time".</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> instead of logging in under the [user, password, domain] dialog,
- press escape.
- </P
-></LI
-><LI
-><P
-> run the regedit.exe program, and look in:
- </P
-><P
-> HKEY_LOCAL_MACHINE\Windows\CurrentVersion\ProfileList
- </P
-><P
-> you will find an entry, for each user, of ProfilePath. Note the
- contents of this key (likely to be c:\windows\profiles\username),
- then delete the key ProfilePath for the required user.
- </P
-><P
-> [Exit the registry editor].
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->WARNING</I
-></SPAN
-> - before deleting the contents of the
- directory listed in
- the ProfilePath (this is likely to be c:\windows\profiles\username),
- ask them if they have any important files stored on their desktop
- or in their start menu. delete the contents of the directory
- ProfilePath (making a backup if any of the files are needed).
- </P
-><P
-> This will have the effect of removing the local (read-only hidden
- system file) user.DAT in their profile directory, as well as the
- local "desktop", "nethood", "start menu" and "programs" folders.
- </P
-></LI
-><LI
-><P
-> search for the user's .PWL password-caching file in the c:\windows
- directory, and delete it.
- </P
-></LI
-><LI
-><P
-> log off the windows 95 client.
- </P
-></LI
-><LI
-><P
-> check the contents of the profile path (see "logon path" described
- above), and delete the user.DAT or user.MAN file for the user,
- making a backup if required.
- </P
-></LI
-></OL
-><P
->If all else fails, increase samba's debug log levels to between 3 and 10,
-and / or run a packet trace program such as tcpdump or netmon.exe, and
-look for any error reports.</P
-><P
->If you have access to an NT server, then first set up roaming profiles
-and / or netlogons on the NT server. Make a packet trace, or examine
-the example packet traces provided with NT server, and see what the
-differences are with the equivalent samba trace.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1212"
-></A
->5.8.2.5. Windows NT Workstation 4.0</H4
-><P
->When a user first logs in to a Windows NT Workstation, the profile
-NTuser.DAT is created. The profile location can be now specified
-through the "logon path" parameter. </P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 10aug97 - i tried setting the path to
-\\samba-server\homes\profile, and discovered that this fails because
-a background process maintains the connection to the [homes] share
-which does _not_ close down in between user logins. you have to
-have \\samba-server\%L\profile, where user is the username created
-from the [homes] share].</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->There is a parameter that is now available for use with NT Profiles:
-"logon drive". This should be set to "h:" or any other drive, and
-should be used in conjunction with the new "logon home" parameter.</P
-><P
->The entry for the NT 4.0 profile is a _directory_ not a file. The NT
-help on profiles mentions that a directory is also created with a .PDS
-extension. The user, while logging in, must have write permission to
-create the full profile path (and the folder with the .PDS extension)
-[lkcl 10aug97 - i found that the creation of the .PDS directory failed,
-and had to create these manually for each user, with a shell script.
-also, i presume, but have not tested, that the full profile path must
-be browseable just as it is for w95, due to the manner in which they
-attempt to create the full profile path: test existence of each path
-component; create path component].</P
-><P
->In the profile directory, NT creates more folders than 95. It creates
-"Application Data" and others, as well as "Desktop", "Nethood",
-"Start Menu" and "Programs". The profile itself is stored in a file
-NTuser.DAT. Nothing appears to be stored in the .PDS directory, and
-its purpose is currently unknown.</P
-><P
->You can use the System Control Panel to copy a local profile onto
-a samba server (see NT Help on profiles: it is also capable of firing
-up the correct location in the System Control Panel for you). The
-NT Help file also mentions that renaming NTuser.DAT to NTuser.MAN
-turns a profile into a mandatory one.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 10aug97 - i notice that NT Workstation tells me that it is
-downloading a profile from a slow link. whether this is actually the
-case, or whether there is some configuration issue, as yet unknown,
-that makes NT Workstation _think_ that the link is a slow one is a
-matter to be resolved].</P
-><P
->[lkcl 20aug97 - after samba digest correspondence, one user found, and
-another confirmed, that profiles cannot be loaded from a samba server
-unless "security = user" and "encrypt passwords = yes" (see the file
-ENCRYPTION.txt) or "security = server" and "password server = ip.address.
-of.yourNTserver" are used. Either of these options will allow the NT
-workstation to access the samba server using LAN manager encrypted
-passwords, without the user intervention normally required by NT
-workstation for clear-text passwords].</P
-><P
->[lkcl 25aug97 - more comments received about NT profiles: the case of
-the profile _matters_. the file _must_ be called NTuser.DAT or, for
-a mandatory profile, NTuser.MAN].</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1225"
-></A
->5.8.2.6. Windows NT Server</H4
-><P
->There is nothing to stop you specifying any path that you like for the
-location of users' profiles. Therefore, you could specify that the
-profile be stored on a samba server, or any other SMB server, as long as
-that SMB server supports encrypted passwords.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1228"
-></A
->5.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</H4
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Potentially outdated or incorrect material follows</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I think this is all bogus, but have not deleted it. (Richard Sharpe)</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->The default logon path is \\%N\%U. NT Workstation will attempt to create
-a directory "\\samba-server\username.PDS" if you specify the logon path
-as "\\samba-server\username" with the NT User Manager. Therefore, you
-will need to specify (for example) "\\samba-server\username\profile".
-NT 4.0 will attempt to create "\\samba-server\username\profile.PDS", which
-is more likely to succeed.</P
-><P
->If you then want to share the same Start Menu / Desktop with W95, you will
-need to specify "logon path = \\samba-server\username\profile" [lkcl 10aug97
-this has its drawbacks: i created a shortcut to telnet.exe, which attempts
-to run from the c:\winnt\system32 directory. this directory is obviously
-unlikely to exist on a Win95-only host].</P
-><P
->&#13;If you have this set up correctly, you will find separate user.DAT and
-NTuser.DAT files in the same profile directory.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 25aug97 - there are some issues to resolve with downloading of
-NT profiles, probably to do with time/date stamps. i have found that
-NTuser.DAT is never updated on the workstation after the first time that
-it is copied to the local workstation profile directory. this is in
-contrast to w95, where it _does_ transfer / update profiles correctly].</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1238"
-></A
->5.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</H2
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Possibly Outdated Material</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-> This appendix was originally authored by John H Terpstra of
- the Samba Team and is included here for posterity.
- </P
-></TD
-></TR
-></TABLE
-></DIV
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE :</I
-></SPAN
->
-The term "Domain Controller" and those related to it refer to one specific
-method of authentication that can underly an SMB domain. Domain Controllers
-prior to Windows NT Server 3.1 were sold by various companies and based on
-private extensions to the LAN Manager 2.1 protocol. Windows NT introduced
-Microsoft-specific ways of distributing the user authentication database.
-See DOMAIN.txt for examples of how Samba can participate in or create
-SMB domains based on shared authentication database schemes other than the
-Windows NT SAM.</P
-><P
->Windows NT Server can be installed as either a plain file and print server
-(WORKGROUP workstation or server) or as a server that participates in Domain
-Control (DOMAIN member, Primary Domain controller or Backup Domain controller).
-The same is true for OS/2 Warp Server, Digital Pathworks and other similar
-products, all of which can participate in Domain Control along with Windows NT.</P
-><P
->To many people these terms can be confusing, so let's try to clear the air.</P
-><P
->Every Windows NT system (workstation or server) has a registry database.
-The registry contains entries that describe the initialization information
-for all services (the equivalent of Unix Daemons) that run within the Windows
-NT environment. The registry also contains entries that tell application
-software where to find dynamically loadable libraries that they depend upon.
-In fact, the registry contains entries that describes everything that anything
-may need to know to interact with the rest of the system.</P
-><P
->The registry files can be located on any Windows NT machine by opening a
-command prompt and typing:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINNT\&#62;</TT
-> dir %SystemRoot%\System32\config</P
-><P
->The environment variable %SystemRoot% value can be obtained by typing:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINNT&#62;</TT
->echo %SystemRoot%</P
-><P
->The active parts of the registry that you may want to be familiar with are
-the files called: default, system, software, sam and security.</P
-><P
->In a domain environment, Microsoft Windows NT domain controllers participate
-in replication of the SAM and SECURITY files so that all controllers within
-the domain have an exactly identical copy of each.</P
-><P
->The Microsoft Windows NT system is structured within a security model that
-says that all applications and services must authenticate themselves before
-they can obtain permission from the security manager to do what they set out
-to do.</P
-><P
->The Windows NT User database also resides within the registry. This part of
-the registry contains the user's security identifier, home directory, group
-memberships, desktop profile, and so on.</P
-><P
->Every Windows NT system (workstation as well as server) will have its own
-registry. Windows NT Servers that participate in Domain Security control
-have a database that they share in common - thus they do NOT own an
-independent full registry database of their own, as do Workstations and
-plain Servers.</P
-><P
->The User database is called the SAM (Security Access Manager) database and
-is used for all user authentication as well as for authentication of inter-
-process authentication (i.e. to ensure that the service action a user has
-requested is permitted within the limits of that user's privileges).</P
-><P
->The Samba team have produced a utility that can dump the Windows NT SAM into
-smbpasswd format: see ENCRYPTION.txt for information on smbpasswd and
-/pub/samba/pwdump on your nearest Samba mirror for the utility. This
-facility is useful but cannot be easily used to implement SAM replication
-to Samba systems.</P
-><P
->Windows for Workgroups, Windows 95, and Windows NT Workstations and Servers
-can participate in a Domain security system that is controlled by Windows NT
-servers that have been correctly configured. Almost every domain will have
-ONE Primary Domain Controller (PDC). It is desirable that each domain will
-have at least one Backup Domain Controller (BDC).</P
-><P
->The PDC and BDCs then participate in replication of the SAM database so that
-each Domain Controlling participant will have an up to date SAM component
-within its registry.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SAMBA-BDC"
-></A
->Chapter 6. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1274"
-></A
->6.1. Prerequisite Reading</H2
-><P
->Before you continue reading in this chapter, please make sure
-that you are comfortable with configuring a Samba PDC
-as described in the <A
-HREF="Samba-PDC-HOWTO.html"
-TARGET="_top"
->Samba-PDC-HOWTO</A
->.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1278"
-></A
->6.2. Background</H2
-><P
->What is a Domain Controller? It is a machine that is able to answer
-logon requests from workstations in a Windows NT Domain. Whenever a
-user logs into a Windows NT Workstation, the workstation connects to a
-Domain Controller and asks him whether the username and password the
-user typed in is correct. The Domain Controller replies with a lot of
-information about the user, for example the place where the users
-profile is stored, the users full name of the user. All this
-information is stored in the NT user database, the so-called SAM.</P
-><P
->There are two kinds of Domain Controller in a NT 4 compatible Domain:
-A Primary Domain Controller (PDC) and one or more Backup Domain
-Controllers (BDC). The PDC contains the master copy of the
-SAM. Whenever the SAM has to change, for example when a user changes
-his password, this change has to be done on the PDC. A Backup Domain
-Controller is a machine that maintains a read-only copy of the
-SAM. This way it is able to reply to logon requests and authenticate
-users in case the PDC is not available. During this time no changes to
-the SAM are possible. Whenever changes to the SAM are done on the PDC,
-all BDC receive the changes from the PDC.</P
-><P
->Since version 2.2 Samba officially supports domain logons for all
-current Windows Clients, including Windows 2000 and XP. This text
-assumes the domain to be named SAMBA. To be able to act as a PDC, some
-parameters in the [global]-section of the smb.conf have to be set:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->workgroup = SAMBA
-domain master = yes
-domain logons = yes</PRE
-></P
-><P
->Several other things like a [homes] and a [netlogon] share also may be
-set along with settings for the profile path, the users home drive and
-others. This will not be covered in this document.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1286"
-></A
->6.3. What qualifies a Domain Controller on the network?</H2
-><P
->Every machine that is a Domain Controller for the domain SAMBA has to
-register the NetBIOS group name SAMBA#1c with the WINS server and/or
-by broadcast on the local network. The PDC also registers the unique
-NetBIOS name SAMBA#1b with the WINS server. The name type #1b is
-normally reserved for the domain master browser, a role that has
-nothing to do with anything related to authentication, but the
-Microsoft Domain implementation requires the domain master browser to
-be on the same machine as the PDC.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1289"
-></A
->6.3.1. How does a Workstation find its domain controller?</H3
-><P
->A NT workstation in the domain SAMBA that wants a local user to be
-authenticated has to find the domain controller for SAMBA. It does
-this by doing a NetBIOS name query for the group name SAMBA#1c. It
-assumes that each of the machines it gets back from the queries is a
-domain controller and can answer logon requests. To not open security
-holes both the workstation and the selected (TODO: How is the DC
-chosen) domain controller authenticate each other. After that the
-workstation sends the user's credentials (his name and password) to
-the domain controller, asking for approval.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1292"
-></A
->6.3.2. When is the PDC needed?</H3
-><P
->Whenever a user wants to change his password, this has to be done on
-the PDC. To find the PDC, the workstation does a NetBIOS name query
-for SAMBA#1b, assuming this machine maintains the master copy of the
-SAM. The workstation contacts the PDC, both mutually authenticate and
-the password change is done.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1295"
-></A
->6.4. Can Samba be a Backup Domain Controller to an NT PDC?</H2
-><P
->With version 2.2, no. The native NT SAM replication protocols have
-not yet been fully implemented. The Samba Team is working on
-understanding and implementing the protocols, but this work has not
-been finished for version 2.2.</P
-><P
->With version 3.0, the work on both the replication protocols and a
-suitable storage mechanism has progressed, and some form of NT4 BDC
-support is expected soon.</P
-><P
->Can I get the benefits of a BDC with Samba? Yes. The main reason for
-implementing a BDC is availability. If the PDC is a Samba machine,
-a second Samba machine can be set up to
-service logon requests whenever the PDC is down.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1300"
-></A
->6.5. How do I set up a Samba BDC?</H2
-><P
->Several things have to be done:</P
-><P
-></P
-><UL
-><LI
-><P
->The domain SID has to be the same on the PDC and the BDC. This used to
-be stored in the file private/MACHINE.SID. This file is not created
-anymore since Samba 2.2.5 or even earlier. Nowadays the domain SID is
-stored in the file private/secrets.tdb. Simply copying the secrets.tdb
-from the PDC to the BDC does not work, as the BDC would
-generate a new SID for itself and override the domain SID with this
-new BDC SID.</P
-><P
->To retrieve the domain SID from the PDC or an existing BDC and store it in the
-secrets.tdb, execute 'net rpc getsid' on the BDC.</P
-></LI
-><LI
-><P
->The Unix user database has to be synchronized from the PDC to the
-BDC. This means that both the /etc/passwd and /etc/group have to be
-replicated from the PDC to the BDC. This can be done manually
-whenever changes are made, or the PDC is set up as a NIS master
-server and the BDC as a NIS slave server. To set up the BDC as a
-mere NIS client would not be enough, as the BDC would not be able to
-access its user database in case of a PDC failure.</P
-></LI
-><LI
-><P
->The Samba password database in the file private/smbpasswd has to be
-replicated from the PDC to the BDC. This is a bit tricky, see the
-next section.</P
-></LI
-><LI
-><P
->Any netlogon share has to be replicated from the PDC to the
-BDC. This can be done manually whenever login scripts are changed,
-or it can be done automatically together with the smbpasswd
-synchronization.</P
-></LI
-></UL
-><P
->Finally, the BDC has to be found by the workstations. This can be done
-by setting</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->workgroup = samba
-domain master = no
-domain logons = yes</PRE
-></P
-><P
->in the [global]-section of the smb.conf of the BDC. This makes the BDC
-only register the name SAMBA#1c with the WINS server. This is no
-problem as the name SAMBA#1c is a NetBIOS group name that is meant to
-be registered by more than one machine. The parameter 'domain master =
-no' forces the BDC not to register SAMBA#1b which as a unique NetBIOS
-name is reserved for the Primary Domain Controller.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1317"
-></A
->6.5.1. How do I replicate the smbpasswd file?</H3
-><P
->Replication of the smbpasswd file is sensitive. It has to be done
-whenever changes to the SAM are made. Every user's password change is
-done in the smbpasswd file and has to be replicated to the BDC. So
-replicating the smbpasswd file very often is necessary.</P
-><P
->As the smbpasswd file contains plain text password equivalents, it
-must not be sent unencrypted over the wire. The best way to set up
-smbpasswd replication from the PDC to the BDC is to use the utility
-rsync. rsync can use ssh as a transport. ssh itself can be set up to
-accept *only* rsync transfer without requiring the user to type a
-password.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1321"
-></A
->6.5.2. Can I do this all with LDAP?</H3
-><P
->The simple answer is YES. Samba's pdb_ldap code supports
-binding to a replica LDAP server, and will also follow referrals and
-rebind to the master if it ever needs to make a modification to the
-database. (Normally BDCs are read only, so this will not occur
-often).</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="ADS"
-></A
->Chapter 7. Samba as a ADS domain member</H1
-><P
->This is a rough guide to setting up Samba 3.0 with kerberos authentication against a
-Windows2000 KDC. </P
-><P
->Pieces you need before you begin:</P
-><P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->a Windows 2000 server.</TD
-></TR
-><TR
-><TD
->samba 3.0 or higher.</TD
-></TR
-><TR
-><TD
->the MIT kerberos development libraries (either install from the above sources or use a package). The heimdal libraries will not work.</TD
-></TR
-><TR
-><TD
->the OpenLDAP development libraries.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1339"
-></A
->7.1. Installing the required packages for Debian</H2
-><P
->On Debian you need to install the following packages:</P
-><P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->libkrb5-dev</TD
-></TR
-><TR
-><TD
->krb5-user</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1346"
-></A
->7.2. Installing the required packages for RedHat</H2
-><P
->On RedHat this means you should have at least: </P
-><P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->krb5-workstation (for kinit)</TD
-></TR
-><TR
-><TD
->krb5-libs (for linking with)</TD
-></TR
-><TR
-><TD
->krb5-devel (because you are compiling from source)</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><P
->in addition to the standard development environment.</P
-><P
->Note that these are not standard on a RedHat install, and you may need
-to get them off CD2.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1356"
-></A
->7.3. Compile Samba</H2
-><P
->If your kerberos libraries are in a non-standard location then
- remember to add the configure option --with-krb5=DIR.</P
-><P
->After you run configure make sure that include/config.h it
- generates contains
- lines like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#define HAVE_KRB5 1
-#define HAVE_LDAP 1</PRE
-></P
-><P
->If it doesn't then configure did not find your krb5 libraries or
- your ldap libraries. Look in config.log to figure out why and fix
- it.</P
-><P
->Then compile and install Samba as usual. You must use at least the
- following 3 options in smb.conf:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> realm = YOUR.KERBEROS.REALM
- security = ADS
- encrypt passwords = yes</PRE
-></P
-><P
->In case samba can't figure out your ads server using your realm name, use the
-<B
-CLASS="COMMAND"
->ads server</B
-> option in <TT
-CLASS="FILENAME"
->smb.conf</TT
->:
-<PRE
-CLASS="PROGRAMLISTING"
-> ads server = your.kerberos.server</PRE
-></P
-><P
->You do *not* need a smbpasswd file, and older clients will
- be authenticated as if "security = domain", although it won't do any harm
- and allows you to have local users not in the domain.
- I expect that the above
- required options will change soon when we get better active
- directory integration.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1371"
-></A
->7.4. Setup your /etc/krb5.conf</H2
-><P
->The minimal configuration for krb5.conf is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[realms]
- YOUR.KERBEROS.REALM = {
- kdc = your.kerberos.server
- }</PRE
-></P
-><P
->Test your config by doing a "kinit USERNAME@REALM" and making sure that
- your password is accepted by the Win2000 KDC. </P
-><P
->NOTE: The realm must be uppercase. </P
-><P
->You also must ensure that you can do a reverse DNS lookup on the IP
-address of your KDC. Also, the name that this reverse lookup maps to
-must either be the netbios name of the KDC (ie. the hostname with no
-domain attached) or it can alternatively be the netbios name
-followed by the realm. </P
-><P
->The easiest way to ensure you get this right is to add a /etc/hosts
-entry mapping the IP address of your KDC to its netbios name. If you
-don't get this right then you will get a "local error" when you try
-to join the realm.</P
-><P
->If all you want is kerberos support in smbclient then you can skip
-straight to step 5 now. Step 3 is only needed if you want kerberos
-support for smbd and winbindd.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1381"
-></A
->7.5. Create the computer account</H2
-><P
->As a user that has write permission on the Samba private directory
-(usually root) run:
-<B
-CLASS="COMMAND"
->net ads join</B
-></P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1385"
-></A
->7.5.1. Possible errors</H3
-><P
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->"ADS support not compiled in"</DT
-><DD
-><P
->Samba must be reconfigured (remove config.cache) and recompiled (make clean all install) after the kerberos libs and headers are installed.</P
-></DD
-></DL
-></DIV
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1393"
-></A
->7.6. Test your server setup</H2
-><P
->On a Windows 2000 client try <B
-CLASS="COMMAND"
->net use * \\server\share</B
->. You should
-be logged in with kerberos without needing to know a password. If
-this fails then run <B
-CLASS="COMMAND"
->klist tickets</B
->. Did you get a ticket for the
-server? Does it have an encoding type of DES-CBC-MD5 ? </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1398"
-></A
->7.7. Testing with smbclient</H2
-><P
->On your Samba server try to login to a Win2000 server or your Samba
-server using smbclient and kerberos. Use smbclient as usual, but
-specify the -k option to choose kerberos authentication.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1401"
-></A
->7.8. Notes</H2
-><P
->You must change administrator password at least once after DC install,
- to create the right encoding types</P
-><P
->w2k doesn't seem to create the _kerberos._udp and _ldap._tcp in
- their defaults DNS setup. Maybe fixed in service packs?</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="DOMAIN-SECURITY"
-></A
->Chapter 8. Samba as a NT4 or Win2k domain member</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1423"
-></A
->8.1. Joining an NT Domain with Samba 3.0</H2
-><P
->Assume you have a Samba 3.0 server with a NetBIOS name of
- <TT
-CLASS="CONSTANT"
->SERV1</TT
-> and are joining an or Win2k NT domain called
- <TT
-CLASS="CONSTANT"
->DOM</TT
->, which has a PDC with a NetBIOS name
- of <TT
-CLASS="CONSTANT"
->DOMPDC</TT
-> and two backup domain controllers
- with NetBIOS names <TT
-CLASS="CONSTANT"
->DOMBDC1</TT
-> and <TT
-CLASS="CONSTANT"
->DOMBDC2
- </TT
->.</P
-><P
->Firstly, you must edit your <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)</TT
->
- </A
-> file to tell Samba it should now use domain security.</P
-><P
->Change (or add) your <A
-HREF="smb.conf.5.html#SECURITY"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->security =</I
-></TT
-></A
-> line in the [global] section
- of your smb.conf to read:</P
-><P
-><B
-CLASS="COMMAND"
->security = domain</B
-> or
- <B
-CLASS="COMMAND"
->security = ads</B
-> depending on if the PDC is
- NT4 or running Active Directory respectivly.</P
-><P
->Next change the <A
-HREF="smb.conf.5.html#WORKGROUP"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> workgroup =</I
-></TT
-></A
-> line in the [global] section to read: </P
-><P
-><B
-CLASS="COMMAND"
->workgroup = DOM</B
-></P
-><P
->as this is the name of the domain we are joining. </P
-><P
->You must also have the parameter <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->encrypt passwords</I
-></TT
-></A
-> set to <TT
-CLASS="CONSTANT"
->yes
- </TT
-> in order for your users to authenticate to the NT PDC.</P
-><P
->Finally, add (or modify) a <A
-HREF="smb.conf.5.html#PASSWORDSERVER"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->password server =</I
-></TT
-></A
-> line in the [global]
- section to read: </P
-><P
-><B
-CLASS="COMMAND"
->password server = DOMPDC DOMBDC1 DOMBDC2</B
-></P
-><P
->These are the primary and backup domain controllers Samba
- will attempt to contact in order to authenticate users. Samba will
- try to contact each of these servers in order, so you may want to
- rearrange this list in order to spread out the authentication load
- among domain controllers.</P
-><P
->Alternatively, if you want smbd to automatically determine
- the list of Domain controllers to use for authentication, you may
- set this line to be :</P
-><P
-><B
-CLASS="COMMAND"
->password server = *</B
-></P
-><P
->This method, allows Samba to use exactly the same
- mechanism that NT does. This
- method either broadcasts or uses a WINS database in order to
- find domain controllers to authenticate against.</P
-><P
->In order to actually join the domain, you must run this
- command:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->net join -S DOMPDC
- -U<TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-></B
-></TT
-></P
-><P
->as we are joining the domain DOM and the PDC for that domain
- (the only machine that has write access to the domain SAM database)
- is DOMPDC. The <TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-> is
- the login name and password for an account which has the necessary
- privilege to add machines to the domain. If this is successful
- you will see the message:</P
-><P
-><TT
-CLASS="COMPUTEROUTPUT"
->Joined domain DOM.</TT
->
- or <TT
-CLASS="COMPUTEROUTPUT"
->Joined 'SERV1' to realm 'MYREALM'</TT
->
- </P
-><P
->in your terminal window. See the <A
-HREF="net.8.html"
-TARGET="_top"
-> net(8)</A
-> man page for more details.</P
-><P
->This process joins the server to thedomain
- without having to create the machine trust account on the PDC
- beforehand.</P
-><P
->This command goes through the machine account password
- change protocol, then writes the new (random) machine account
- password for this Samba server into a file in the same directory
- in which an smbpasswd file would be stored - normally :</P
-><P
-><TT
-CLASS="FILENAME"
->/usr/local/samba/private/secrets.tdb</TT
-></P
-><P
->This file is created and owned by root and is not
- readable by any other user. It is the key to the domain-level
- security for your system, and should be treated as carefully
- as a shadow password file.</P
-><P
->Finally, restart your Samba daemons and get ready for
- clients to begin using domain security!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1478"
-></A
->8.2. Samba and Windows 2000 Domains</H2
-><P
->Many people have asked regarding the state of Samba's ability to participate in
-a Windows 2000 Domain. Samba 3.0 is able to act as a member server of a Windows
-2000 domain operating in mixed or native mode. The steps above apply
-to both NT4 and Windows 2000.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1481"
-></A
->8.3. Why is this better than security = server?</H2
-><P
->Currently, domain security in Samba doesn't free you from
- having to create local Unix users to represent the users attaching
- to your server. This means that if domain user <TT
-CLASS="CONSTANT"
->DOM\fred
- </TT
-> attaches to your domain security Samba server, there needs
- to be a local Unix user fred to represent that user in the Unix
- filesystem. This is very similar to the older Samba security mode
- <A
-HREF="smb.conf.5.html#SECURITYEQUALSSERVER"
-TARGET="_top"
->security = server</A
->,
- where Samba would pass through the authentication request to a Windows
- NT server in the same way as a Windows 95 or Windows 98 server would.
- </P
-><P
->Please refer to the <A
-HREF="winbind.html"
-TARGET="_top"
->Winbind
- paper</A
-> for information on a system to automatically
- assign UNIX uids and gids to Windows NT Domain users and groups.
- This code is available in development branches only at the moment,
- but will be moved to release branches soon.</P
-><P
->The advantage to domain-level security is that the
- authentication in domain-level security is passed down the authenticated
- RPC channel in exactly the same way that an NT server would do it. This
- means Samba servers now participate in domain trust relationships in
- exactly the same way NT servers do (i.e., you can add Samba servers into
- a resource domain and have the authentication passed on from a resource
- domain PDC to an account domain PDC.</P
-><P
->In addition, with <B
-CLASS="COMMAND"
->security = server</B
-> every Samba
- daemon on a server has to keep a connection open to the
- authenticating server for as long as that daemon lasts. This can drain
- the connection resources on a Microsoft NT server and cause it to run
- out of available connections. With <B
-CLASS="COMMAND"
->security = domain</B
->,
- however, the Samba daemons connect to the PDC/BDC only for as long
- as is necessary to authenticate the user, and then drop the connection,
- thus conserving PDC connection resources.</P
-><P
->And finally, acting in the same manner as an NT server
- authenticating to a PDC means that as part of the authentication
- reply, the Samba server gets the user identification information such
- as the user SID, the list of NT groups the user belongs to, etc. </P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE:</I
-></SPAN
-> Much of the text of this document
- was first published in the Web magazine <A
-HREF="http://www.linuxworld.com"
-TARGET="_top"
->
- LinuxWorld</A
-> as the article <A
-HREF="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"
-TARGET="_top"
->Doing
- the NIS/NT Samba</A
->.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="OPTIONAL"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->III. Optional configuration</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN1499"
-></A
-><H1
->Introduction</H1
-><P
->Samba has several features that you might want or might not want to use. The chapters in this
-part each cover one specific feature.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->9. <A
-HREF="#INTEGRATE-MS-NETWORKS"
->Integrating MS Windows networks with Samba</A
-></DT
-><DD
-><DL
-><DT
->9.1. <A
-HREF="#AEN1513"
->Agenda</A
-></DT
-><DT
->9.2. <A
-HREF="#AEN1535"
->Name Resolution in a pure Unix/Linux world</A
-></DT
-><DD
-><DL
-><DT
->9.2.1. <A
-HREF="#AEN1551"
-><TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></A
-></DT
-><DT
->9.2.2. <A
-HREF="#AEN1567"
-><TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></A
-></DT
-><DT
->9.2.3. <A
-HREF="#AEN1578"
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></A
-></DT
-><DT
->9.2.4. <A
-HREF="#AEN1586"
-><TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></A
-></DT
-></DL
-></DD
-><DT
->9.3. <A
-HREF="#AEN1598"
->Name resolution as used within MS Windows networking</A
-></DT
-><DD
-><DL
-><DT
->9.3.1. <A
-HREF="#AEN1610"
->The NetBIOS Name Cache</A
-></DT
-><DT
->9.3.2. <A
-HREF="#AEN1615"
->The LMHOSTS file</A
-></DT
-><DT
->9.3.3. <A
-HREF="#AEN1623"
->HOSTS file</A
-></DT
-><DT
->9.3.4. <A
-HREF="#AEN1628"
->DNS Lookup</A
-></DT
-><DT
->9.3.5. <A
-HREF="#AEN1631"
->WINS Lookup</A
-></DT
-></DL
-></DD
-><DT
->9.4. <A
-HREF="#AEN1643"
->How browsing functions and how to deploy stable and
-dependable browsing using Samba</A
-></DT
-><DT
->9.5. <A
-HREF="#AEN1653"
->MS Windows security options and how to configure
-Samba for seemless integration</A
-></DT
-><DD
-><DL
-><DT
->9.5.1. <A
-HREF="#AEN1681"
->Use MS Windows NT as an authentication server</A
-></DT
-><DT
->9.5.2. <A
-HREF="#AEN1689"
->Make Samba a member of an MS Windows NT security domain</A
-></DT
-><DT
->9.5.3. <A
-HREF="#AEN1706"
->Configure Samba as an authentication server</A
-></DT
-></DL
-></DD
-><DT
->9.6. <A
-HREF="#AEN1723"
->Conclusions</A
-></DT
-></DL
-></DD
-><DT
->10. <A
-HREF="#UNIX-PERMISSIONS"
->UNIX Permission Bits and Windows NT Access Control Lists</A
-></DT
-><DD
-><DL
-><DT
->10.1. <A
-HREF="#AEN1744"
->Viewing and changing UNIX permissions using the NT
- security dialogs</A
-></DT
-><DT
->10.2. <A
-HREF="#AEN1748"
->How to view file security on a Samba share</A
-></DT
-><DT
->10.3. <A
-HREF="#AEN1759"
->Viewing file ownership</A
-></DT
-><DT
->10.4. <A
-HREF="#AEN1779"
->Viewing file or directory permissions</A
-></DT
-><DD
-><DL
-><DT
->10.4.1. <A
-HREF="#AEN1794"
->File Permissions</A
-></DT
-><DT
->10.4.2. <A
-HREF="#AEN1808"
->Directory Permissions</A
-></DT
-></DL
-></DD
-><DT
->10.5. <A
-HREF="#AEN1815"
->Modifying file or directory permissions</A
-></DT
-><DT
->10.6. <A
-HREF="#AEN1837"
->Interaction with the standard Samba create mask
- parameters</A
-></DT
-><DT
->10.7. <A
-HREF="#AEN1901"
->Interaction with the standard Samba file attribute
- mapping</A
-></DT
-></DL
-></DD
-><DT
->11. <A
-HREF="#PAM"
->Configuring PAM for distributed but centrally
-managed authentication</A
-></DT
-><DD
-><DL
-><DT
->11.1. <A
-HREF="#AEN1922"
->Samba and PAM</A
-></DT
-><DT
->11.2. <A
-HREF="#AEN1966"
->Distributed Authentication</A
-></DT
-><DT
->11.3. <A
-HREF="#AEN1973"
->PAM Configuration in smb.conf</A
-></DT
-></DL
-></DD
-><DT
->12. <A
-HREF="#MSDFS"
->Hosting a Microsoft Distributed File System tree on Samba</A
-></DT
-><DD
-><DL
-><DT
->12.1. <A
-HREF="#AEN1993"
->Instructions</A
-></DT
-><DD
-><DL
-><DT
->12.1.1. <A
-HREF="#AEN2028"
->Notes</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->13. <A
-HREF="#PRINTING"
->Printing Support</A
-></DT
-><DD
-><DL
-><DT
->13.1. <A
-HREF="#AEN2054"
->Introduction</A
-></DT
-><DT
->13.2. <A
-HREF="#AEN2076"
->Configuration</A
-></DT
-><DD
-><DL
-><DT
->13.2.1. <A
-HREF="#AEN2084"
->Creating [print$]</A
-></DT
-><DT
->13.2.2. <A
-HREF="#AEN2119"
->Setting Drivers for Existing Printers</A
-></DT
-><DT
->13.2.3. <A
-HREF="#AEN2135"
->Support a large number of printers</A
-></DT
-><DT
->13.2.4. <A
-HREF="#AEN2146"
->Adding New Printers via the Windows NT APW</A
-></DT
-><DT
->13.2.5. <A
-HREF="#AEN2176"
->Samba and Printer Ports</A
-></DT
-></DL
-></DD
-><DT
->13.3. <A
-HREF="#AEN2184"
->The Imprints Toolset</A
-></DT
-><DD
-><DL
-><DT
->13.3.1. <A
-HREF="#AEN2188"
->What is Imprints?</A
-></DT
-><DT
->13.3.2. <A
-HREF="#AEN2198"
->Creating Printer Driver Packages</A
-></DT
-><DT
->13.3.3. <A
-HREF="#AEN2201"
->The Imprints server</A
-></DT
-><DT
->13.3.4. <A
-HREF="#AEN2205"
->The Installation Client</A
-></DT
-></DL
-></DD
-><DT
->13.4. <A
-HREF="#AEN2227"
->Diagnosis</A
-></DT
-><DD
-><DL
-><DT
->13.4.1. <A
-HREF="#AEN2229"
->Introduction</A
-></DT
-><DT
->13.4.2. <A
-HREF="#AEN2245"
->Debugging printer problems</A
-></DT
-><DT
->13.4.3. <A
-HREF="#AEN2254"
->What printers do I have?</A
-></DT
-><DT
->13.4.4. <A
-HREF="#AEN2262"
->Setting up printcap and print servers</A
-></DT
-><DT
->13.4.5. <A
-HREF="#AEN2290"
->Job sent, no output</A
-></DT
-><DT
->13.4.6. <A
-HREF="#AEN2301"
->Job sent, strange output</A
-></DT
-><DT
->13.4.7. <A
-HREF="#AEN2313"
->Raw PostScript printed</A
-></DT
-><DT
->13.4.8. <A
-HREF="#AEN2316"
->Advanced Printing</A
-></DT
-><DT
->13.4.9. <A
-HREF="#AEN2319"
->Real debugging</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->14. <A
-HREF="#WINBIND"
->Unified Logons between Windows NT and UNIX using Winbind</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN2360"
->Abstract</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN2364"
->Introduction</A
-></DT
-><DT
->14.3. <A
-HREF="#AEN2377"
->What Winbind Provides</A
-></DT
-><DD
-><DL
-><DT
->14.3.1. <A
-HREF="#AEN2384"
->Target Uses</A
-></DT
-></DL
-></DD
-><DT
->14.4. <A
-HREF="#AEN2388"
->How Winbind Works</A
-></DT
-><DD
-><DL
-><DT
->14.4.1. <A
-HREF="#AEN2393"
->Microsoft Remote Procedure Calls</A
-></DT
-><DT
->14.4.2. <A
-HREF="#AEN2397"
->Microsoft Active Directory Services</A
-></DT
-><DT
->14.4.3. <A
-HREF="#AEN2400"
->Name Service Switch</A
-></DT
-><DT
->14.4.4. <A
-HREF="#AEN2416"
->Pluggable Authentication Modules</A
-></DT
-><DT
->14.4.5. <A
-HREF="#AEN2424"
->User and Group ID Allocation</A
-></DT
-><DT
->14.4.6. <A
-HREF="#AEN2428"
->Result Caching</A
-></DT
-></DL
-></DD
-><DT
->14.5. <A
-HREF="#AEN2431"
->Installation and Configuration</A
-></DT
-><DD
-><DL
-><DT
->14.5.1. <A
-HREF="#AEN2438"
->Introduction</A
-></DT
-><DT
->14.5.2. <A
-HREF="#AEN2451"
->Requirements</A
-></DT
-><DT
->14.5.3. <A
-HREF="#AEN2465"
->Testing Things Out</A
-></DT
-></DL
-></DD
-><DT
->14.6. <A
-HREF="#AEN2680"
->Limitations</A
-></DT
-><DT
->14.7. <A
-HREF="#AEN2690"
->Conclusion</A
-></DT
-></DL
-></DD
-><DT
->15. <A
-HREF="#IMPROVED-BROWSING"
->Improved browsing in samba</A
-></DT
-><DD
-><DL
-><DT
->15.1. <A
-HREF="#AEN2700"
->Overview of browsing</A
-></DT
-><DT
->15.2. <A
-HREF="#AEN2704"
->Browsing support in samba</A
-></DT
-><DT
->15.3. <A
-HREF="#AEN2713"
->Problem resolution</A
-></DT
-><DT
->15.4. <A
-HREF="#AEN2720"
->Browsing across subnets</A
-></DT
-><DD
-><DL
-><DT
->15.4.1. <A
-HREF="#AEN2725"
->How does cross subnet browsing work ?</A
-></DT
-></DL
-></DD
-><DT
->15.5. <A
-HREF="#AEN2760"
->Setting up a WINS server</A
-></DT
-><DT
->15.6. <A
-HREF="#AEN2779"
->Setting up Browsing in a WORKGROUP</A
-></DT
-><DT
->15.7. <A
-HREF="#AEN2797"
->Setting up Browsing in a DOMAIN</A
-></DT
-><DT
->15.8. <A
-HREF="#AEN2807"
->Forcing samba to be the master</A
-></DT
-><DT
->15.9. <A
-HREF="#AEN2816"
->Making samba the domain master</A
-></DT
-><DT
->15.10. <A
-HREF="#AEN2834"
->Note about broadcast addresses</A
-></DT
-><DT
->15.11. <A
-HREF="#AEN2837"
->Multiple interfaces</A
-></DT
-></DL
-></DD
-><DT
->16. <A
-HREF="#VFS"
->Stackable VFS modules</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#AEN2855"
->Introduction and configuration</A
-></DT
-><DT
->16.2. <A
-HREF="#AEN2864"
->Included modules</A
-></DT
-><DD
-><DL
-><DT
->16.2.1. <A
-HREF="#AEN2866"
->audit</A
-></DT
-><DT
->16.2.2. <A
-HREF="#AEN2874"
->recycle</A
-></DT
-><DT
->16.2.3. <A
-HREF="#AEN2911"
->netatalk</A
-></DT
-></DL
-></DD
-><DT
->16.3. <A
-HREF="#AEN2918"
->VFS modules available elsewhere</A
-></DT
-><DD
-><DL
-><DT
->16.3.1. <A
-HREF="#AEN2922"
->DatabaseFS</A
-></DT
-><DT
->16.3.2. <A
-HREF="#AEN2930"
->vscan</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->17. <A
-HREF="#CVS-ACCESS"
->Access Samba source code via CVS</A
-></DT
-><DD
-><DL
-><DT
->17.1. <A
-HREF="#AEN2942"
->Introduction</A
-></DT
-><DT
->17.2. <A
-HREF="#AEN2947"
->CVS Access to samba.org</A
-></DT
-><DD
-><DL
-><DT
->17.2.1. <A
-HREF="#AEN2950"
->Access via CVSweb</A
-></DT
-><DT
->17.2.2. <A
-HREF="#AEN2955"
->Access via cvs</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->18. <A
-HREF="#GROUPMAPPING"
->Group mapping HOWTO</A
-></DT
-><DT
->19. <A
-HREF="#SPEED"
->Samba performance issues</A
-></DT
-><DD
-><DL
-><DT
->19.1. <A
-HREF="#AEN3033"
->Comparisons</A
-></DT
-><DT
->19.2. <A
-HREF="#AEN3039"
->Socket options</A
-></DT
-><DT
->19.3. <A
-HREF="#AEN3046"
->Read size</A
-></DT
-><DT
->19.4. <A
-HREF="#AEN3051"
->Max xmit</A
-></DT
-><DT
->19.5. <A
-HREF="#AEN3056"
->Log level</A
-></DT
-><DT
->19.6. <A
-HREF="#AEN3059"
->Read raw</A
-></DT
-><DT
->19.7. <A
-HREF="#AEN3064"
->Write raw</A
-></DT
-><DT
->19.8. <A
-HREF="#AEN3068"
->Slow Clients</A
-></DT
-><DT
->19.9. <A
-HREF="#AEN3072"
->Slow Logins</A
-></DT
-><DT
->19.10. <A
-HREF="#AEN3075"
->Client tuning</A
-></DT
-></DL
-></DD
-><DT
->20. <A
-HREF="#GROUPPROFILES"
->Creating Group Profiles</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="#AEN3123"
->Windows '9x</A
-></DT
-><DT
->20.2. <A
-HREF="#AEN3132"
->Windows NT 4</A
-></DT
-><DD
-><DL
-><DT
->20.2.1. <A
-HREF="#AEN3155"
->Side bar Notes</A
-></DT
-><DT
->20.2.2. <A
-HREF="#AEN3159"
->Mandatory profiles</A
-></DT
-><DT
->20.2.3. <A
-HREF="#AEN3162"
->moveuser.exe</A
-></DT
-><DT
->20.2.4. <A
-HREF="#AEN3165"
->Get SID</A
-></DT
-></DL
-></DD
-><DT
->20.3. <A
-HREF="#AEN3170"
->Windows 2000/XP</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="INTEGRATE-MS-NETWORKS"
-></A
->Chapter 9. Integrating MS Windows networks with Samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1513"
-></A
->9.1. Agenda</H2
-><P
->To identify the key functional mechanisms of MS Windows networking
-to enable the deployment of Samba as a means of extending and/or
-replacing MS Windows NT/2000 technology.</P
-><P
->We will examine:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Name resolution in a pure Unix/Linux TCP/IP
- environment
- </P
-></LI
-><LI
-><P
->Name resolution as used within MS Windows
- networking
- </P
-></LI
-><LI
-><P
->How browsing functions and how to deploy stable
- and dependable browsing using Samba
- </P
-></LI
-><LI
-><P
->MS Windows security options and how to
- configure Samba for seemless integration
- </P
-></LI
-><LI
-><P
->Configuration of Samba as:</P
-><P
-></P
-><OL
-TYPE="a"
-><LI
-><P
->A stand-alone server</P
-></LI
-><LI
-><P
->An MS Windows NT 3.x/4.0 security domain member
- </P
-></LI
-><LI
-><P
->An alternative to an MS Windows NT 3.x/4.0 Domain Controller
- </P
-></LI
-></OL
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1535"
-></A
->9.2. Name Resolution in a pure Unix/Linux world</H2
-><P
->The key configuration files covered in this section are:</P
-><P
-></P
-><UL
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></P
-></LI
-></UL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1551"
-></A
->9.2.1. <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></H3
-><P
->Contains a static list of IP Addresses and names.
-eg:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> 127.0.0.1 localhost localhost.localdomain
- 192.168.1.1 bigbox.caldera.com bigbox alias4box</PRE
-></P
-><P
->The purpose of <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> is to provide a
-name resolution mechanism so that uses do not need to remember
-IP addresses.</P
-><P
->Network packets that are sent over the physical network transport
-layer communicate not via IP addresses but rather using the Media
-Access Control address, or MAC address. IP Addresses are currently
-32 bits in length and are typically presented as four (4) decimal
-numbers that are separated by a dot (or period). eg: 168.192.1.1</P
-><P
->MAC Addresses use 48 bits (or 6 bytes) and are typically represented
-as two digit hexadecimal numbers separated by colons. eg:
-40:8e:0a:12:34:56</P
-><P
->Every network interfrace must have an MAC address. Associated with
-a MAC address there may be one or more IP addresses. There is NO
-relationship between an IP address and a MAC address, all such assignments
-are arbitary or discretionary in nature. At the most basic level all
-network communications takes place using MAC addressing. Since MAC
-addresses must be globally unique, and generally remains fixed for
-any particular interface, the assignment of an IP address makes sense
-from a network management perspective. More than one IP address can
-be assigned per MAC address. One address must be the primary IP address,
-this is the address that will be returned in the ARP reply.</P
-><P
->When a user or a process wants to communicate with another machine
-the protocol implementation ensures that the "machine name" or "host
-name" is resolved to an IP address in a manner that is controlled
-by the TCP/IP configuration control files. The file
-<TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> is one such file.</P
-><P
->When the IP address of the destination interface has been
-determined a protocol called ARP/RARP is used to identify
-the MAC address of the target interface. ARP stands for Address
-Resolution Protocol, and is a broadcast oriented method that
-uses UDP (User Datagram Protocol) to send a request to all
-interfaces on the local network segment using the all 1's MAC
-address. Network interfaces are programmed to respond to two
-MAC addresses only; their own unique address and the address
-ff:ff:ff:ff:ff:ff. The reply packet from an ARP request will
-contain the MAC address and the primary IP address for each
-interface.</P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> file is foundational to all
-Unix/Linux TCP/IP installations and as a minumum will contain
-the localhost and local network interface IP addresses and the
-primary names by which they are known within the local machine.
-This file helps to prime the pump so that a basic level of name
-resolution can exist before any other method of name resolution
-becomes available.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1567"
-></A
->9.2.2. <TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></H3
-><P
->This file tells the name resolution libraries:</P
-><P
-></P
-><UL
-><LI
-><P
->The name of the domain to which the machine
- belongs
- </P
-></LI
-><LI
-><P
->The name(s) of any domains that should be
- automatically searched when trying to resolve unqualified
- host names to their IP address
- </P
-></LI
-><LI
-><P
->The name or IP address of available Domain
- Name Servers that may be asked to perform name to address
- translation lookups
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1578"
-></A
->9.2.3. <TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></H3
-><P
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-> is the primary means by
-which the setting in /etc/resolv.conf may be affected. It is a
-critical configuration file. This file controls the order by
-which name resolution may procede. The typical structure is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> order hosts,bind
- multi on</PRE
-></P
-><P
->then both addresses should be returned. Please refer to the
-man page for host.conf for further details.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1586"
-></A
->9.2.4. <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></H3
-><P
->This file controls the actual name resolution targets. The
-file typically has resolver object specifications as follows:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # /etc/nsswitch.conf
- #
- # Name Service Switch configuration file.
- #
-
- passwd: compat
- # Alternative entries for password authentication are:
- # passwd: compat files nis ldap winbind
- shadow: compat
- group: compat
-
- hosts: files nis dns
- # Alternative entries for host name resolution are:
- # hosts: files dns nis nis+ hesoid db compat ldap wins
- networks: nis files dns
-
- ethers: nis files
- protocols: nis files
- rpc: nis files
- services: nis files</PRE
-></P
-><P
->Of course, each of these mechanisms requires that the appropriate
-facilities and/or services are correctly configured.</P
-><P
->It should be noted that unless a network request/message must be
-sent, TCP/IP networks are silent. All TCP/IP communications assumes a
-principal of speaking only when necessary.</P
-><P
->Starting with version 2.2.0 samba has Linux support for extensions to
-the name service switch infrastructure so that linux clients will
-be able to obtain resolution of MS Windows NetBIOS names to IP
-Addresses. To gain this functionality Samba needs to be compiled
-with appropriate arguments to the make command (ie: <B
-CLASS="COMMAND"
->make
-nsswitch/libnss_wins.so</B
->). The resulting library should
-then be installed in the <TT
-CLASS="FILENAME"
->/lib</TT
-> directory and
-the "wins" parameter needs to be added to the "hosts:" line in
-the <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> file. At this point it
-will be possible to ping any MS Windows machine by it's NetBIOS
-machine name, so long as that machine is within the workgroup to
-which both the samba machine and the MS Windows machine belong.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1598"
-></A
->9.3. Name resolution as used within MS Windows networking</H2
-><P
->MS Windows networking is predicated about the name each machine
-is given. This name is known variously (and inconsistently) as
-the "computer name", "machine name", "networking name", "netbios name",
-"SMB name". All terms mean the same thing with the exception of
-"netbios name" which can apply also to the name of the workgroup or the
-domain name. The terms "workgroup" and "domain" are really just a
-simply name with which the machine is associated. All NetBIOS names
-are exactly 16 characters in length. The 16th character is reserved.
-It is used to store a one byte value that indicates service level
-information for the NetBIOS name that is registered. A NetBIOS machine
-name is therefore registered for each service type that is provided by
-the client/server.</P
-><P
->The following are typical NetBIOS name/service type registrations:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> Unique NetBIOS Names:
- MACHINENAME&lt;00&gt; = Server Service is running on MACHINENAME
- MACHINENAME&lt;03&gt; = Generic Machine Name (NetBIOS name)
- MACHINENAME&lt;20&gt; = LanMan Server service is running on MACHINENAME
- WORKGROUP&lt;1b&gt; = Domain Master Browser
-
- Group Names:
- WORKGROUP&lt;03&gt; = Generic Name registered by all members of WORKGROUP
- WORKGROUP&lt;1c&gt; = Domain Controllers / Netlogon Servers
- WORKGROUP&lt;1d&gt; = Local Master Browsers
- WORKGROUP&lt;1e&gt; = Internet Name Resolvers</PRE
-></P
-><P
->It should be noted that all NetBIOS machines register their own
-names as per the above. This is in vast contrast to TCP/IP
-installations where traditionally the system administrator will
-determine in the /etc/hosts or in the DNS database what names
-are associated with each IP address.</P
-><P
->One further point of clarification should be noted, the <TT
-CLASS="FILENAME"
->/etc/hosts</TT
->
-file and the DNS records do not provide the NetBIOS name type information
-that MS Windows clients depend on to locate the type of service that may
-be needed. An example of this is what happens when an MS Windows client
-wants to locate a domain logon server. It find this service and the IP
-address of a server that provides it by performing a lookup (via a
-NetBIOS broadcast) for enumeration of all machines that have
-registered the name type *&lt;1c&gt;. A logon request is then sent to each
-IP address that is returned in the enumerated list of IP addresses. Which
-ever machine first replies then ends up providing the logon services.</P
-><P
->The name "workgroup" or "domain" really can be confusing since these
-have the added significance of indicating what is the security
-architecture of the MS Windows network. The term "workgroup" indicates
-that the primary nature of the network environment is that of a
-peer-to-peer design. In a WORKGROUP all machines are responsible for
-their own security, and generally such security is limited to use of
-just a password (known as SHARE MODE security). In most situations
-with peer-to-peer networking the users who control their own machines
-will simply opt to have no security at all. It is possible to have
-USER MODE security in a WORKGROUP environment, thus requiring use
-of a user name and a matching password.</P
-><P
->MS Windows networking is thus predetermined to use machine names
-for all local and remote machine message passing. The protocol used is
-called Server Message Block (SMB) and this is implemented using
-the NetBIOS protocol (Network Basic Input Output System). NetBIOS can
-be encapsulated using LLC (Logical Link Control) protocol - in which case
-the resulting protocol is called NetBEUI (Network Basic Extended User
-Interface). NetBIOS can also be run over IPX (Internetworking Packet
-Exchange) protocol as used by Novell NetWare, and it can be run
-over TCP/IP protocols - in which case the resulting protocol is called
-NBT or NetBT, the NetBIOS over TCP/IP.</P
-><P
->MS Windows machines use a complex array of name resolution mechanisms.
-Since we are primarily concerned with TCP/IP this demonstration is
-limited to this area.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1610"
-></A
->9.3.1. The NetBIOS Name Cache</H3
-><P
->All MS Windows machines employ an in memory buffer in which is
-stored the NetBIOS names and IP addresses for all external
-machines that that machine has communicated with over the
-past 10-15 minutes. It is more efficient to obtain an IP address
-for a machine from the local cache than it is to go through all the
-configured name resolution mechanisms.</P
-><P
->If a machine whose name is in the local name cache has been shut
-down before the name had been expired and flushed from the cache, then
-an attempt to exchange a message with that machine will be subject
-to time-out delays. i.e.: Its name is in the cache, so a name resolution
-lookup will succeed, but the machine can not respond. This can be
-frustrating for users - but it is a characteristic of the protocol.</P
-><P
->The MS Windows utility that allows examination of the NetBIOS
-name cache is called "nbtstat". The Samba equivalent of this
-is called "nmblookup".</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1615"
-></A
->9.3.2. The LMHOSTS file</H3
-><P
->This file is usually located in MS Windows NT 4.0 or
-2000 in <TT
-CLASS="FILENAME"
->C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
-> and contains
-the IP Address and the machine name in matched pairs. The
-<TT
-CLASS="FILENAME"
->LMHOSTS</TT
-> file performs NetBIOS name
-to IP address mapping oriented.</P
-><P
->It typically looks like:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # Copyright (c) 1998 Microsoft Corp.
- #
- # This is a sample LMHOSTS file used by the Microsoft Wins Client (NetBIOS
- # over TCP/IP) stack for Windows98
- #
- # This file contains the mappings of IP addresses to NT computernames
- # (NetBIOS) names. Each entry should be kept on an individual line.
- # The IP address should be placed in the first column followed by the
- # corresponding computername. The address and the comptername
- # should be separated by at least one space or tab. The "#" character
- # is generally used to denote the start of a comment (see the exceptions
- # below).
- #
- # This file is compatible with Microsoft LAN Manager 2.x TCP/IP lmhosts
- # files and offers the following extensions:
- #
- # #PRE
- # #DOM:&lt;domain&gt;
- # #INCLUDE &lt;filename&gt;
- # #BEGIN_ALTERNATE
- # #END_ALTERNATE
- # \0xnn (non-printing character support)
- #
- # Following any entry in the file with the characters "#PRE" will cause
- # the entry to be preloaded into the name cache. By default, entries are
- # not preloaded, but are parsed only after dynamic name resolution fails.
- #
- # Following an entry with the "#DOM:&lt;domain&gt;" tag will associate the
- # entry with the domain specified by &lt;domain&gt;. This affects how the
- # browser and logon services behave in TCP/IP environments. To preload
- # the host name associated with #DOM entry, it is necessary to also add a
- # #PRE to the line. The &lt;domain&gt; is always preloaded although it will not
- # be shown when the name cache is viewed.
- #
- # Specifying "#INCLUDE &lt;filename&gt;" will force the RFC NetBIOS (NBT)
- # software to seek the specified &lt;filename&gt; and parse it as if it were
- # local. &lt;filename&gt; is generally a UNC-based name, allowing a
- # centralized lmhosts file to be maintained on a server.
- # It is ALWAYS necessary to provide a mapping for the IP address of the
- # server prior to the #INCLUDE. This mapping must use the #PRE directive.
- # In addtion the share "public" in the example below must be in the
- # LanManServer list of "NullSessionShares" in order for client machines to
- # be able to read the lmhosts file successfully. This key is under
- # \machine\system\currentcontrolset\services\lanmanserver\parameters\nullsessionshares
- # in the registry. Simply add "public" to the list found there.
- #
- # The #BEGIN_ and #END_ALTERNATE keywords allow multiple #INCLUDE
- # statements to be grouped together. Any single successful include
- # will cause the group to succeed.
- #
- # Finally, non-printing characters can be embedded in mappings by
- # first surrounding the NetBIOS name in quotations, then using the
- # \0xnn notation to specify a hex value for a non-printing character.
- #
- # The following example illustrates all of these extensions:
- #
- # 102.54.94.97 rhino #PRE #DOM:networking #net group's DC
- # 102.54.94.102 "appname \0x14" #special app server
- # 102.54.94.123 popular #PRE #source server
- # 102.54.94.117 localsrv #PRE #needed for the include
- #
- # #BEGIN_ALTERNATE
- # #INCLUDE \\localsrv\public\lmhosts
- # #INCLUDE \\rhino\public\lmhosts
- # #END_ALTERNATE
- #
- # In the above example, the "appname" server contains a special
- # character in its name, the "popular" and "localsrv" server names are
- # preloaded, and the "rhino" server name is specified so it can be used
- # to later #INCLUDE a centrally maintained lmhosts file if the "localsrv"
- # system is unavailable.
- #
- # Note that the whole file is parsed including comments on each lookup,
- # so keeping the number of comments to a minimum will improve performance.
- # Therefore it is not advisable to simply add lmhosts file entries onto the
- # end of this file.</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1623"
-></A
->9.3.3. HOSTS file</H3
-><P
->This file is usually located in MS Windows NT 4.0 or 2000 in
-<TT
-CLASS="FILENAME"
->C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
-> and contains
-the IP Address and the IP hostname in matched pairs. It can be
-used by the name resolution infrastructure in MS Windows, depending
-on how the TCP/IP environment is configured. This file is in
-every way the equivalent of the Unix/Linux <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> file.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1628"
-></A
->9.3.4. DNS Lookup</H3
-><P
->This capability is configured in the TCP/IP setup area in the network
-configuration facility. If enabled an elaborate name resolution sequence
-is followed the precise nature of which isdependant on what the NetBIOS
-Node Type parameter is configured to. A Node Type of 0 means use
-NetBIOS broadcast (over UDP broadcast) is first used if the name
-that is the subject of a name lookup is not found in the NetBIOS name
-cache. If that fails then DNS, HOSTS and LMHOSTS are checked. If set to
-Node Type 8, then a NetBIOS Unicast (over UDP Unicast) is sent to the
-WINS Server to obtain a lookup before DNS, HOSTS, LMHOSTS, or broadcast
-lookup is used.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1631"
-></A
->9.3.5. WINS Lookup</H3
-><P
->A WINS (Windows Internet Name Server) service is the equivaent of the
-rfc1001/1002 specified NBNS (NetBIOS Name Server). A WINS server stores
-the names and IP addresses that are registered by a Windows client
-if the TCP/IP setup has been given at least one WINS Server IP Address.</P
-><P
->To configure Samba to be a WINS server the following parameter needs
-to be added to the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> wins support = Yes</PRE
-></P
-><P
->To configure Samba to use a WINS server the following parameters are
-needed in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> wins support = No
- wins server = xxx.xxx.xxx.xxx</PRE
-></P
-><P
->where <TT
-CLASS="REPLACEABLE"
-><I
->xxx.xxx.xxx.xxx</I
-></TT
-> is the IP address
-of the WINS server.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1643"
-></A
->9.4. How browsing functions and how to deploy stable and
-dependable browsing using Samba</H2
-><P
->As stated above, MS Windows machines register their NetBIOS names
-(i.e.: the machine name for each service type in operation) on start
-up. Also, as stated above, the exact method by which this name registration
-takes place is determined by whether or not the MS Windows client/server
-has been given a WINS server address, whether or not LMHOSTS lookup
-is enabled, or if DNS for NetBIOS name resolution is enabled, etc.</P
-><P
->In the case where there is no WINS server all name registrations as
-well as name lookups are done by UDP broadcast. This isolates name
-resolution to the local subnet, unless LMHOSTS is used to list all
-names and IP addresses. In such situations Samba provides a means by
-which the samba server name may be forcibly injected into the browse
-list of a remote MS Windows network (using the "remote announce" parameter).</P
-><P
->Where a WINS server is used, the MS Windows client will use UDP
-unicast to register with the WINS server. Such packets can be routed
-and thus WINS allows name resolution to function across routed networks.</P
-><P
->During the startup process an election will take place to create a
-local master browser if one does not already exist. On each NetBIOS network
-one machine will be elected to function as the domain master browser. This
-domain browsing has nothing to do with MS security domain control.
-Instead, the domain master browser serves the role of contacting each local
-master browser (found by asking WINS or from LMHOSTS) and exchanging browse
-list contents. This way every master browser will eventually obtain a complete
-list of all machines that are on the network. Every 11-15 minutes an election
-is held to determine which machine will be the master browser. By the nature of
-the election criteria used, the machine with the highest uptime, or the
-most senior protocol version, or other criteria, will win the election
-as domain master browser.</P
-><P
->Clients wishing to browse the network make use of this list, but also depend
-on the availability of correct name resolution to the respective IP
-address/addresses. </P
-><P
->Any configuration that breaks name resolution and/or browsing intrinsics
-will annoy users because they will have to put up with protracted
-inability to use the network services.</P
-><P
->Samba supports a feature that allows forced synchonisation
-of browse lists across routed networks using the "remote
-browse sync" parameter in the smb.conf file. This causes Samba
-to contact the local master browser on a remote network and
-to request browse list synchronisation. This effectively bridges
-two networks that are separated by routers. The two remote
-networks may use either broadcast based name resolution or WINS
-based name resolution, but it should be noted that the "remote
-browse sync" parameter provides browse list synchronisation - and
-that is distinct from name to address resolution, in other
-words, for cross subnet browsing to function correctly it is
-essential that a name to address resolution mechanism be provided.
-This mechanism could be via DNS, <TT
-CLASS="FILENAME"
->/etc/hosts</TT
->,
-and so on.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1653"
-></A
->9.5. MS Windows security options and how to configure
-Samba for seemless integration</H2
-><P
->MS Windows clients may use encrypted passwords as part of a
-challenege/response authentication model (a.k.a. NTLMv1) or
-alone, or clear text strings for simple password based
-authentication. It should be realized that with the SMB
-protocol the password is passed over the network either
-in plain text or encrypted, but not both in the same
-authentication requets.</P
-><P
->When encrypted passwords are used a password that has been
-entered by the user is encrypted in two ways:</P
-><P
-></P
-><UL
-><LI
-><P
->An MD4 hash of the UNICODE of the password
- string. This is known as the NT hash.
- </P
-></LI
-><LI
-><P
->The password is converted to upper case,
- and then padded or trucated to 14 bytes. This string is
- then appended with 5 bytes of NULL characters and split to
- form two 56 bit DES keys to encrypt a "magic" 8 byte value.
- The resulting 16 bytes for the LanMan hash.
- </P
-></LI
-></UL
-><P
->You should refer to the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->Password Encryption</A
-> chapter in this HOWTO collection
-for more details on the inner workings</P
-><P
->MS Windows 95 pre-service pack 1, MS Windows NT versions 3.x
-and version 4.0 pre-service pack 3 will use either mode of
-password authentication. All versions of MS Windows that follow
-these versions no longer support plain text passwords by default.</P
-><P
->MS Windows clients have a habit of dropping network mappings that
-have been idle for 10 minutes or longer. When the user attempts to
-use the mapped drive connection that has been dropped, the client
-re-establishes the connection using
-a cached copy of the password.</P
-><P
->When Microsoft changed the default password mode, they dropped support for
-caching of the plain text password. This means that when the registry
-parameter is changed to re-enable use of plain text passwords it appears to
-work, but when a dropped mapping attempts to revalidate it will fail if
-the remote authentication server does not support encrypted passwords.
-This means that it is definitely not a good idea to re-enable plain text
-password support in such clients.</P
-><P
->The following parameters can be used to work around the
-issue of Windows 9x client upper casing usernames and
-password before transmitting them to the SMB server
-when using clear text authentication.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> <A
-HREF="smb.conf.5.html#PASSWORDLEVEL"
-TARGET="_top"
->passsword level</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->integer</I
-></TT
->
- <A
-HREF="smb.conf.5.html#USERNAMELEVEL"
-TARGET="_top"
->username level</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->integer</I
-></TT
-></PRE
-></P
-><P
->By default Samba will lower case the username before attempting
-to lookup the user in the database of local system accounts.
-Because UNIX usernames conventionally only contain lower case
-character, the <TT
-CLASS="PARAMETER"
-><I
->username level</I
-></TT
-> parameter
-is rarely even needed.</P
-><P
->However, password on UNIX systems often make use of mixed case
-characters. This means that in order for a user on a Windows 9x
-client to connect to a Samba server using clear text authentication,
-the <TT
-CLASS="PARAMETER"
-><I
->password level</I
-></TT
-> must be set to the maximum
-number of upper case letter which <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->could</I
-></SPAN
-> appear
-is a password. Note that is the server OS uses the traditional
-DES version of crypt(), then a <TT
-CLASS="PARAMETER"
-><I
->password level</I
-></TT
->
-of 8 will result in case insensitive passwords as seen from Windows
-users. This will also result in longer login times as Samba
-hash to compute the permutations of the password string and
-try them one by one until a match is located (or all combinations fail).</P
-><P
->The best option to adopt is to enable support for encrypted passwords
-where ever Samba is used. There are three configuration possibilities
-for support of encrypted passwords:</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1681"
-></A
->9.5.1. Use MS Windows NT as an authentication server</H3
-><P
->This method involves the additions of the following parameters
-in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> encrypt passwords = Yes
- security = server
- password server = "NetBIOS_name_of_PDC"</PRE
-></P
-><P
->There are two ways of identifying whether or not a username and
-password pair was valid or not. One uses the reply information provided
-as part of the authentication messaging process, the other uses
-just and error code.</P
-><P
->The down-side of this mode of configuration is the fact that
-for security reasons Samba will send the password server a bogus
-username and a bogus password and if the remote server fails to
-reject the username and password pair then an alternative mode
-of identification of validation is used. Where a site uses password
-lock out after a certain number of failed authentication attempts
-this will result in user lockouts.</P
-><P
->Use of this mode of authentication does require there to be
-a standard Unix account for the user, this account can be blocked
-to prevent logons by other than MS Windows clients.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1689"
-></A
->9.5.2. Make Samba a member of an MS Windows NT security domain</H3
-><P
->This method involves additon of the following paramters in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> encrypt passwords = Yes
- security = domain
- workgroup = "name of NT domain"
- password server = *</PRE
-></P
-><P
->The use of the "*" argument to "password server" will cause samba
-to locate the domain controller in a way analogous to the way
-this is done within MS Windows NT.</P
-><P
->In order for this method to work the Samba server needs to join the
-MS Windows NT security domain. This is done as follows:</P
-><P
-></P
-><UL
-><LI
-><P
->On the MS Windows NT domain controller using
- the Server Manager add a machine account for the Samba server.
- </P
-></LI
-><LI
-><P
->Next, on the Linux system execute:
- <B
-CLASS="COMMAND"
->smbpasswd -r PDC_NAME -j DOMAIN_NAME</B
->
- </P
-></LI
-></UL
-><P
->Use of this mode of authentication does require there to be
-a standard Unix account for the user in order to assign
-a uid once the account has been authenticated by the remote
-Windows DC. This account can be blocked to prevent logons by
-other than MS Windows clients by things such as setting an invalid
-shell in the <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry.</P
-><P
->An alternative to assigning UIDs to Windows users on a
-Samba member server is presented in the <A
-HREF="winbind.html"
-TARGET="_top"
->Winbind Overview</A
-> chapter in
-this HOWTO collection.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1706"
-></A
->9.5.3. Configure Samba as an authentication server</H3
-><P
->This mode of authentication demands that there be on the
-Unix/Linux system both a Unix style account as well as an
-smbpasswd entry for the user. The Unix system account can be
-locked if required as only the encrypted password will be
-used for SMB client authentication.</P
-><P
->This method involves addition of the following parameters to
-the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## please refer to the Samba PDC HOWTO chapter later in
-## this collection for more details
-[global]
- encrypt passwords = Yes
- security = user
- domain logons = Yes
- ; an OS level of 33 or more is recommended
- os level = 33
-
-[NETLOGON]
- path = /somewhare/in/file/system
- read only = yes</PRE
-></P
-><P
->in order for this method to work a Unix system account needs
-to be created for each user, as well as for each MS Windows NT/2000
-machine. The following structure is required.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1713"
-></A
->9.5.3.1. Users</H4
-><P
->A user account that may provide a home directory should be
-created. The following Linux system commands are typical of
-the procedure for creating an account.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # useradd -s /bin/bash -d /home/"userid" -m "userid"
- # passwd "userid"
- Enter Password: &lt;pw&gt;
-
- # smbpasswd -a "userid"
- Enter Password: &lt;pw&gt;</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1718"
-></A
->9.5.3.2. MS Windows NT Machine Accounts</H4
-><P
->These are required only when Samba is used as a domain
-controller. Refer to the Samba-PDC-HOWTO for more details.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # useradd -s /bin/false -d /dev/null "machine_name"\$
- # passwd -l "machine_name"\$
- # smbpasswd -a -m "machine_name"</PRE
-></P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1723"
-></A
->9.6. Conclusions</H2
-><P
->Samba provides a flexible means to operate as...</P
-><P
-></P
-><UL
-><LI
-><P
->A Stand-alone server - No special action is needed
- other than to create user accounts. Stand-alone servers do NOT
- provide network logon services, meaning that machines that use this
- server do NOT perform a domain logon but instead make use only of
- the MS Windows logon which is local to the MS Windows
- workstation/server.
- </P
-></LI
-><LI
-><P
->An MS Windows NT 3.x/4.0 security domain member.
- </P
-></LI
-><LI
-><P
->An alternative to an MS Windows NT 3.x/4.0
- Domain Controller.
- </P
-></LI
-></UL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="UNIX-PERMISSIONS"
-></A
->Chapter 10. UNIX Permission Bits and Windows NT Access Control Lists</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1744"
-></A
->10.1. Viewing and changing UNIX permissions using the NT
- security dialogs</H2
-><P
->New in the Samba 2.0.4 release is the ability for Windows
- NT clients to use their native security settings dialog box to
- view and modify the underlying UNIX permissions.</P
-><P
->Note that this ability is careful not to compromise
- the security of the UNIX host Samba is running on, and
- still obeys all the file permission rules that a Samba
- administrator can set.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1748"
-></A
->10.2. How to view file security on a Samba share</H2
-><P
->From an NT 4.0 client, single-click with the right
- mouse button on any file or directory in a Samba mounted
- drive letter or UNC path. When the menu pops-up, click
- on the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Properties</I
-></SPAN
-> entry at the bottom of
- the menu. This brings up the normal file properties dialog
- box, but with Samba 2.0.4 this will have a new tab along the top
- marked <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Security</I
-></SPAN
->. Click on this tab and you
- will see three buttons, <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Permissions</I
-></SPAN
->,
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Auditing</I
-></SPAN
->, and <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Ownership</I
-></SPAN
->.
- The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Auditing</I
-></SPAN
-> button will cause either
- an error message <SPAN
-CLASS="ERRORNAME"
->A requested privilege is not held
- by the client</SPAN
-> to appear if the user is not the
- NT Administrator, or a dialog which is intended to allow an
- Administrator to add auditing requirements to a file if the
- user is logged on as the NT Administrator. This dialog is
- non-functional with a Samba share at this time, as the only
- useful button, the <B
-CLASS="COMMAND"
->Add</B
-> button will not currently
- allow a list of users to be seen.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1759"
-></A
->10.3. Viewing file ownership</H2
-><P
->Clicking on the <B
-CLASS="COMMAND"
->"Ownership"</B
-> button
- brings up a dialog box telling you who owns the given file. The
- owner name will be of the form :</P
-><P
-><B
-CLASS="COMMAND"
->"SERVER\user (Long name)"</B
-></P
-><P
->Where <TT
-CLASS="REPLACEABLE"
-><I
->SERVER</I
-></TT
-> is the NetBIOS name of
- the Samba server, <TT
-CLASS="REPLACEABLE"
-><I
->user</I
-></TT
-> is the user name of
- the UNIX user who owns the file, and <TT
-CLASS="REPLACEABLE"
-><I
->(Long name)</I
-></TT
->
- is the descriptive string identifying the user (normally found in the
- GECOS field of the UNIX password database). Click on the <B
-CLASS="COMMAND"
->Close
- </B
-> button to remove this dialog.</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then the file owner will
- be shown as the NT user <B
-CLASS="COMMAND"
->"Everyone"</B
->.</P
-><P
->The <B
-CLASS="COMMAND"
->Take Ownership</B
-> button will not allow
- you to change the ownership of this file to yourself (clicking on
- it will display a dialog box complaining that the user you are
- currently logged onto the NT client cannot be found). The reason
- for this is that changing the ownership of a file is a privileged
- operation in UNIX, available only to the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->root</I
-></SPAN
->
- user. As clicking on this button causes NT to attempt to change
- the ownership of a file to the current user logged into the NT
- client this will not work with Samba at this time.</P
-><P
->There is an NT chown command that will work with Samba
- and allow a user with Administrator privilege connected
- to a Samba 2.0.4 server as root to change the ownership of
- files on both a local NTFS filesystem or remote mounted NTFS
- or Samba drive. This is available as part of the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Seclib
- </I
-></SPAN
-> NT security library written by Jeremy Allison of
- the Samba Team, available from the main Samba ftp site.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1779"
-></A
->10.4. Viewing file or directory permissions</H2
-><P
->The third button is the <B
-CLASS="COMMAND"
->"Permissions"</B
->
- button. Clicking on this brings up a dialog box that shows both
- the permissions and the UNIX owner of the file or directory.
- The owner is displayed in the form :</P
-><P
-><B
-CLASS="COMMAND"
->"SERVER\user (Long name)"</B
-></P
-><P
->Where <TT
-CLASS="REPLACEABLE"
-><I
->SERVER</I
-></TT
-> is the NetBIOS name of
- the Samba server, <TT
-CLASS="REPLACEABLE"
-><I
->user</I
-></TT
-> is the user name of
- the UNIX user who owns the file, and <TT
-CLASS="REPLACEABLE"
-><I
->(Long name)</I
-></TT
->
- is the descriptive string identifying the user (normally found in the
- GECOS field of the UNIX password database).</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then the file owner will
- be shown as the NT user <B
-CLASS="COMMAND"
->"Everyone"</B
-> and the
- permissions will be shown as NT "Full Control".</P
-><P
->The permissions field is displayed differently for files
- and directories, so I'll describe the way file permissions
- are displayed first.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1794"
-></A
->10.4.1. File Permissions</H3
-><P
->The standard UNIX user/group/world triple and
- the corresponding "read", "write", "execute" permissions
- triples are mapped by Samba into a three element NT ACL
- with the 'r', 'w', and 'x' bits mapped into the corresponding
- NT permissions. The UNIX world permissions are mapped into
- the global NT group <B
-CLASS="COMMAND"
->Everyone</B
->, followed
- by the list of permissions allowed for UNIX world. The UNIX
- owner and group permissions are displayed as an NT
- <B
-CLASS="COMMAND"
->user</B
-> icon and an NT <B
-CLASS="COMMAND"
->local
- group</B
-> icon respectively followed by the list
- of permissions allowed for the UNIX user and group.</P
-><P
->As many UNIX permission sets don't map into common
- NT names such as <B
-CLASS="COMMAND"
->"read"</B
->, <B
-CLASS="COMMAND"
-> "change"</B
-> or <B
-CLASS="COMMAND"
->"full control"</B
-> then
- usually the permissions will be prefixed by the words <B
-CLASS="COMMAND"
-> "Special Access"</B
-> in the NT display list.</P
-><P
->But what happens if the file has no permissions allowed
- for a particular UNIX user group or world component ? In order
- to allow "no permissions" to be seen and modified then Samba
- overloads the NT <B
-CLASS="COMMAND"
->"Take Ownership"</B
-> ACL attribute
- (which has no meaning in UNIX) and reports a component with
- no permissions as having the NT <B
-CLASS="COMMAND"
->"O"</B
-> bit set.
- This was chosen of course to make it look like a zero, meaning
- zero permissions. More details on the decision behind this will
- be given below.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1808"
-></A
->10.4.2. Directory Permissions</H3
-><P
->Directories on an NT NTFS file system have two
- different sets of permissions. The first set of permissions
- is the ACL set on the directory itself, this is usually displayed
- in the first set of parentheses in the normal <B
-CLASS="COMMAND"
->"RW"</B
->
- NT style. This first set of permissions is created by Samba in
- exactly the same way as normal file permissions are, described
- above, and is displayed in the same way.</P
-><P
->The second set of directory permissions has no real meaning
- in the UNIX permissions world and represents the <B
-CLASS="COMMAND"
-> "inherited"</B
-> permissions that any file created within
- this directory would inherit.</P
-><P
->Samba synthesises these inherited permissions for NT by
- returning as an NT ACL the UNIX permission mode that a new file
- created by Samba on this share would receive.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1815"
-></A
->10.5. Modifying file or directory permissions</H2
-><P
->Modifying file and directory permissions is as simple
- as changing the displayed permissions in the dialog box, and
- clicking the <B
-CLASS="COMMAND"
->OK</B
-> button. However, there are
- limitations that a user needs to be aware of, and also interactions
- with the standard Samba permission masks and mapping of DOS
- attributes that need to also be taken into account.</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then any attempt to set
- security permissions will fail with an <B
-CLASS="COMMAND"
->"Access Denied"
- </B
-> message.</P
-><P
->The first thing to note is that the <B
-CLASS="COMMAND"
->"Add"</B
->
- button will not return a list of users in Samba 2.0.4 (it will give
- an error message of <B
-CLASS="COMMAND"
->"The remote procedure call failed
- and did not execute"</B
->). This means that you can only
- manipulate the current user/group/world permissions listed in
- the dialog box. This actually works quite well as these are the
- only permissions that UNIX actually has.</P
-><P
->If a permission triple (either user, group, or world)
- is removed from the list of permissions in the NT dialog box,
- then when the <B
-CLASS="COMMAND"
->"OK"</B
-> button is pressed it will
- be applied as "no permissions" on the UNIX side. If you then
- view the permissions again the "no permissions" entry will appear
- as the NT <B
-CLASS="COMMAND"
->"O"</B
-> flag, as described above. This
- allows you to add permissions back to a file or directory once
- you have removed them from a triple component.</P
-><P
->As UNIX supports only the "r", "w" and "x" bits of
- an NT ACL then if other NT security attributes such as "Delete
- access" are selected then they will be ignored when applied on
- the Samba server.</P
-><P
->When setting permissions on a directory the second
- set of permissions (in the second set of parentheses) is
- by default applied to all files within that directory. If this
- is not what you want you must uncheck the <B
-CLASS="COMMAND"
->"Replace
- permissions on existing files"</B
-> checkbox in the NT
- dialog before clicking <B
-CLASS="COMMAND"
->"OK"</B
->.</P
-><P
->If you wish to remove all permissions from a
- user/group/world component then you may either highlight the
- component and click the <B
-CLASS="COMMAND"
->"Remove"</B
-> button,
- or set the component to only have the special <B
-CLASS="COMMAND"
->"Take
- Ownership"</B
-> permission (displayed as <B
-CLASS="COMMAND"
->"O"
- </B
->) highlighted.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1837"
-></A
->10.6. Interaction with the standard Samba create mask
- parameters</H2
-><P
->Note that with Samba 2.0.5 there are four new parameters
- to control this interaction. These are :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force security mode</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory security mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory security mode</I
-></TT
-></P
-><P
->Once a user clicks <B
-CLASS="COMMAND"
->"OK"</B
-> to apply the
- permissions Samba maps the given permissions into a user/group/world
- r/w/x triple set, and then will check the changed permissions for a
- file against the bits set in the <A
-HREF="smb.conf.5.html#SECURITYMASK"
-TARGET="_top"
->
- <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-></A
-> parameter. Any bits that
- were changed that are not set to '1' in this parameter are left alone
- in the file permissions.</P
-><P
->Essentially, zero bits in the <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
->
- mask may be treated as a set of bits the user is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
->
- allowed to change, and one bits are those the user is allowed to change.
- </P
-><P
->If not set explicitly this parameter is set to the same value as
- the <A
-HREF="smb.conf.5.html#CREATEMASK"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->create mask
- </I
-></TT
-></A
-> parameter to provide compatibility with Samba 2.0.4
- where this permission change facility was introduced. To allow a user to
- modify all the user/group/world permissions on a file, set this parameter
- to 0777.</P
-><P
->Next Samba checks the changed permissions for a file against
- the bits set in the <A
-HREF="smb.conf.5.html#FORCESECURITYMODE"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->force security mode</I
-></TT
-></A
-> parameter. Any bits
- that were changed that correspond to bits set to '1' in this parameter
- are forced to be set.</P
-><P
->Essentially, bits set in the <TT
-CLASS="PARAMETER"
-><I
->force security mode
- </I
-></TT
-> parameter may be treated as a set of bits that, when
- modifying security on a file, the user has always set to be 'on'.</P
-><P
->If not set explicitly this parameter is set to the same value
- as the <A
-HREF="smb.conf.5.html#FORCECREATEMODE"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->force
- create mode</I
-></TT
-></A
-> parameter to provide compatibility
- with Samba 2.0.4 where the permission change facility was introduced.
- To allow a user to modify all the user/group/world permissions on a file
- with no restrictions set this parameter to 000.</P
-><P
->The <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-> and <TT
-CLASS="PARAMETER"
-><I
->force
- security mode</I
-></TT
-> parameters are applied to the change
- request in that order.</P
-><P
->For a directory Samba will perform the same operations as
- described above for a file except using the parameter <TT
-CLASS="PARAMETER"
-><I
-> directory security mask</I
-></TT
-> instead of <TT
-CLASS="PARAMETER"
-><I
->security
- mask</I
-></TT
->, and <TT
-CLASS="PARAMETER"
-><I
->force directory security mode
- </I
-></TT
-> parameter instead of <TT
-CLASS="PARAMETER"
-><I
->force security mode
- </I
-></TT
->.</P
-><P
->The <TT
-CLASS="PARAMETER"
-><I
->directory security mask</I
-></TT
-> parameter
- by default is set to the same value as the <TT
-CLASS="PARAMETER"
-><I
->directory mask
- </I
-></TT
-> parameter and the <TT
-CLASS="PARAMETER"
-><I
->force directory security
- mode</I
-></TT
-> parameter by default is set to the same value as
- the <TT
-CLASS="PARAMETER"
-><I
->force directory mode</I
-></TT
-> parameter to provide
- compatibility with Samba 2.0.4 where the permission change facility
- was introduced.</P
-><P
->In this way Samba enforces the permission restrictions that
- an administrator can set on a Samba share, whilst still allowing users
- to modify the permission bits within that restriction.</P
-><P
->If you want to set up a share that allows users full control
- in modifying the permission bits on their files and directories and
- doesn't force any particular bits to be set 'on', then set the following
- parameters in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)
- </TT
-></A
-> file in that share specific section :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->security mask = 0777</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force security mode = 0</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory security mask = 0777</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory security mode = 0</I
-></TT
-></P
-><P
->As described, in Samba 2.0.4 the parameters :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->create mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force create mode</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory mode</I
-></TT
-></P
-><P
->were used instead of the parameters discussed here.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1901"
-></A
->10.7. Interaction with the standard Samba file attribute
- mapping</H2
-><P
->Samba maps some of the DOS attribute bits (such as "read
- only") into the UNIX permissions of a file. This means there can
- be a conflict between the permission bits set via the security
- dialog and the permission bits set by the file attribute mapping.
- </P
-><P
->One way this can show up is if a file has no UNIX read access
- for the owner it will show up as "read only" in the standard
- file attributes tabbed dialog. Unfortunately this dialog is
- the same one that contains the security info in another tab.</P
-><P
->What this can mean is that if the owner changes the permissions
- to allow themselves read access using the security dialog, clicks
- <B
-CLASS="COMMAND"
->"OK"</B
-> to get back to the standard attributes tab
- dialog, and then clicks <B
-CLASS="COMMAND"
->"OK"</B
-> on that dialog, then
- NT will set the file permissions back to read-only (as that is what
- the attributes still say in the dialog). This means that after setting
- permissions and clicking <B
-CLASS="COMMAND"
->"OK"</B
-> to get back to the
- attributes dialog you should always hit <B
-CLASS="COMMAND"
->"Cancel"</B
->
- rather than <B
-CLASS="COMMAND"
->"OK"</B
-> to ensure that your changes
- are not overridden.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PAM"
-></A
->Chapter 11. Configuring PAM for distributed but centrally
-managed authentication</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1922"
-></A
->11.1. Samba and PAM</H2
-><P
->A number of Unix systems (eg: Sun Solaris), as well as the
-xxxxBSD family and Linux, now utilize the Pluggable Authentication
-Modules (PAM) facility to provide all authentication,
-authorization and resource control services. Prior to the
-introduction of PAM, a decision to use an alternative to
-the system password database (<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->)
-would require the provision of alternatives for all programs that provide
-security services. Such a choice would involve provision of
-alternatives to such programs as: <B
-CLASS="COMMAND"
->login</B
->,
-<B
-CLASS="COMMAND"
->passwd</B
->, <B
-CLASS="COMMAND"
->chown</B
->, etc.</P
-><P
->PAM provides a mechanism that disconnects these security programs
-from the underlying authentication/authorization infrastructure.
-PAM is configured either through one file <TT
-CLASS="FILENAME"
->/etc/pam.conf</TT
-> (Solaris),
-or by editing individual files that are located in <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
->.</P
-><P
->The following is an example <TT
-CLASS="FILENAME"
->/etc/pam.d/login</TT
-> configuration file.
-This example had all options been uncommented is probably not usable
-as it stacks many conditions before allowing successful completion
-of the login process. Essentially all conditions can be disabled
-by commenting them out except the calls to <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `login' service
-#
-auth required pam_securetty.so
-auth required pam_nologin.so
-# auth required pam_dialup.so
-# auth optional pam_mail.so
-auth required pam_pwdb.so shadow md5
-# account requisite pam_time.so
-account required pam_pwdb.so
-session required pam_pwdb.so
-# session optional pam_lastlog.so
-# password required pam_cracklib.so retry=3
-password required pam_pwdb.so shadow md5</PRE
-></P
-><P
->PAM allows use of replacable modules. Those available on a
-sample system include:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->$ /bin/ls /lib/security
-pam_access.so pam_ftp.so pam_limits.so
-pam_ncp_auth.so pam_rhosts_auth.so pam_stress.so
-pam_cracklib.so pam_group.so pam_listfile.so
-pam_nologin.so pam_rootok.so pam_tally.so
-pam_deny.so pam_issue.so pam_mail.so
-pam_permit.so pam_securetty.so pam_time.so
-pam_dialup.so pam_lastlog.so pam_mkhomedir.so
-pam_pwdb.so pam_shells.so pam_unix.so
-pam_env.so pam_ldap.so pam_motd.so
-pam_radius.so pam_smbpass.so pam_unix_acct.so
-pam_wheel.so pam_unix_auth.so pam_unix_passwd.so
-pam_userdb.so pam_warn.so pam_unix_session.so</PRE
-></P
-><P
->The following example for the login program replaces the use of
-the <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
-> module which uses the system
-password database (<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->,
-<TT
-CLASS="FILENAME"
->/etc/shadow</TT
->, <TT
-CLASS="FILENAME"
->/etc/group</TT
->) with
-the module <TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
-> which uses the Samba
-database which contains the Microsoft MD4 encrypted password
-hashes. This database is stored in either
-<TT
-CLASS="FILENAME"
->/usr/local/samba/private/smbpasswd</TT
->,
-<TT
-CLASS="FILENAME"
->/etc/samba/smbpasswd</TT
->, or in
-<TT
-CLASS="FILENAME"
->/etc/samba.d/smbpasswd</TT
->, depending on the
-Samba implementation for your Unix/Linux system. The
-<TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
-> module is provided by
-Samba version 2.2.1 or later. It can be compiled by specifying the
-<B
-CLASS="COMMAND"
->--with-pam_smbpass</B
-> options when running Samba's
-<TT
-CLASS="FILENAME"
->configure</TT
-> script. For more information
-on the <TT
-CLASS="FILENAME"
->pam_smbpass</TT
-> module, see the documentation
-in the <TT
-CLASS="FILENAME"
->source/pam_smbpass</TT
-> directory of the Samba
-source distribution.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `login' service
-#
-auth required pam_smbpass.so nodelay
-account required pam_smbpass.so nodelay
-session required pam_smbpass.so nodelay
-password required pam_smbpass.so nodelay</PRE
-></P
-><P
->The following is the PAM configuration file for a particular
-Linux system. The default condition uses <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `samba' service
-#
-auth required /lib/security/pam_pwdb.so nullok nodelay shadow audit
-account required /lib/security/pam_pwdb.so audit nodelay
-session required /lib/security/pam_pwdb.so nodelay
-password required /lib/security/pam_pwdb.so shadow md5</PRE
-></P
-><P
->In the following example the decision has been made to use the
-smbpasswd database even for basic samba authentication. Such a
-decision could also be made for the passwd program and would
-thus allow the smbpasswd passwords to be changed using the passwd
-program.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `samba' service
-#
-auth required /lib/security/pam_smbpass.so nodelay
-account required /lib/security/pam_pwdb.so audit nodelay
-session required /lib/security/pam_pwdb.so nodelay
-password required /lib/security/pam_smbpass.so nodelay smbconf=/etc/samba.d/smb.conf</PRE
-></P
-><P
->Note: PAM allows stacking of authentication mechanisms. It is
-also possible to pass information obtained within one PAM module through
-to the next module in the PAM stack. Please refer to the documentation for
-your particular system implementation for details regarding the specific
-capabilities of PAM in this environment. Some Linux implmentations also
-provide the <TT
-CLASS="FILENAME"
->pam_stack.so</TT
-> module that allows all
-authentication to be configured in a single central file. The
-<TT
-CLASS="FILENAME"
->pam_stack.so</TT
-> method has some very devoted followers
-on the basis that it allows for easier administration. As with all issues in
-life though, every decision makes trade-offs, so you may want examine the
-PAM documentation for further helpful information.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1966"
-></A
->11.2. Distributed Authentication</H2
-><P
->The astute administrator will realize from this that the
-combination of <TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
->,
-<B
-CLASS="COMMAND"
->winbindd</B
->, and <B
-CLASS="COMMAND"
->rsync</B
-> (see
-<A
-HREF="http://rsync.samba.org/"
-TARGET="_top"
->http://rsync.samba.org/</A
->)
-will allow the establishment of a centrally managed, distributed
-user/password database that can also be used by all
-PAM (eg: Linux) aware programs and applications. This arrangement
-can have particularly potent advantages compared with the
-use of Microsoft Active Directory Service (ADS) in so far as
-reduction of wide area network authentication traffic.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1973"
-></A
->11.3. PAM Configuration in smb.conf</H2
-><P
->There is an option in smb.conf called <A
-HREF="smb.conf.5.html#OBEYPAMRESTRICTIONS"
-TARGET="_top"
->obey pam restrictions</A
->.
-The following is from the on-line help for this option in SWAT;</P
-><P
->When Samba 2.2 is configure to enable PAM support (i.e.
-<TT
-CLASS="CONSTANT"
->--with-pam</TT
->), this parameter will
-control whether or not Samba should obey PAM's account
-and session management directives. The default behavior
-is to use PAM for clear text authentication only and to
-ignore any account or session management. Note that Samba always
-ignores PAM for authentication in the case of
-<A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->encrypt passwords = yes</A
->.
-The reason is that PAM modules cannot support the challenge/response
-authentication mechanism needed in the presence of SMB
-password encryption. </P
-><P
->Default: <B
-CLASS="COMMAND"
->obey pam restrictions = no</B
-></P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="MSDFS"
-></A
->Chapter 12. Hosting a Microsoft Distributed File System tree on Samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1993"
-></A
->12.1. Instructions</H2
-><P
->The Distributed File System (or Dfs) provides a means of
- separating the logical view of files and directories that users
- see from the actual physical locations of these resources on the
- network. It allows for higher availability, smoother storage expansion,
- load balancing etc. For more information about Dfs, refer to <A
-HREF="http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp"
-TARGET="_top"
-> Microsoft documentation</A
->. </P
-><P
->This document explains how to host a Dfs tree on a Unix
- machine (for Dfs-aware clients to browse) using Samba.</P
-><P
->To enable SMB-based DFS for Samba, configure it with the
- <TT
-CLASS="PARAMETER"
-><I
->--with-msdfs</I
-></TT
-> option. Once built, a
- Samba server can be made a Dfs server by setting the global
- boolean <A
-HREF="smb.conf.5.html#HOSTMSDFS"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> host msdfs</I
-></TT
-></A
-> parameter in the <TT
-CLASS="FILENAME"
->smb.conf
- </TT
-> file. You designate a share as a Dfs root using the share
- level boolean <A
-HREF="smb.conf.5.html#MSDFSROOT"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> msdfs root</I
-></TT
-></A
-> parameter. A Dfs root directory on
- Samba hosts Dfs links in the form of symbolic links that point
- to other servers. For example, a symbolic link
- <TT
-CLASS="FILENAME"
->junction-&gt;msdfs:storage1\share1</TT
-> in
- the share directory acts as the Dfs junction. When Dfs-aware
- clients attempt to access the junction link, they are redirected
- to the storage location (in this case, \\storage1\share1).</P
-><P
->Dfs trees on Samba work with all Dfs-aware clients ranging
- from Windows 95 to 2000.</P
-><P
->Here's an example of setting up a Dfs tree on a Samba
- server.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-># The smb.conf file:
-[global]
- netbios name = SAMBA
- host msdfs = yes
-
-[dfs]
- path = /export/dfsroot
- msdfs root = yes
- </PRE
-></P
-><P
->In the /export/dfsroot directory we set up our dfs links to
- other servers on the network.</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->cd /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->chown root /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->chmod 755 /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->ln -s msdfs:storageA\\shareA linka</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->ln -s msdfs:serverB\\share,serverC\\share linkb</B
-></TT
-></P
-><P
->You should set up the permissions and ownership of
- the directory acting as the Dfs root such that only designated
- users can create, delete or modify the msdfs links. Also note
- that symlink names should be all lowercase. This limitation exists
- to have Samba avoid trying all the case combinations to get at
- the link name. Finally set up the symbolic links to point to the
- network shares you want, and start Samba.</P
-><P
->Users on Dfs-aware clients can now browse the Dfs tree
- on the Samba server at \\samba\dfs. Accessing
- links linka or linkb (which appear as directories to the client)
- takes users directly to the appropriate shares on the network.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2028"
-></A
->12.1.1. Notes</H3
-><P
-></P
-><UL
-><LI
-><P
->Windows clients need to be rebooted
- if a previously mounted non-dfs share is made a dfs
- root or vice versa. A better way is to introduce a
- new share and make it the dfs root.</P
-></LI
-><LI
-><P
->Currently there's a restriction that msdfs
- symlink names should all be lowercase.</P
-></LI
-><LI
-><P
->For security purposes, the directory
- acting as the root of the Dfs tree should have ownership
- and permissions set so that only designated users can
- modify the symbolic links in the directory.</P
-></LI
-></UL
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PRINTING"
-></A
->Chapter 13. Printing Support</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2054"
-></A
->13.1. Introduction</H2
-><P
->Beginning with the 2.2.0 release, Samba supports
-the native Windows NT printing mechanisms implemented via
-MS-RPC (i.e. the SPOOLSS named pipe). Previous versions of
-Samba only supported LanMan printing calls.</P
-><P
->The additional functionality provided by the new
-SPOOLSS support includes:</P
-><P
-></P
-><UL
-><LI
-><P
->Support for downloading printer driver
- files to Windows 95/98/NT/2000 clients upon demand.
- </P
-></LI
-><LI
-><P
->Uploading of printer drivers via the
- Windows NT Add Printer Wizard (APW) or the
- Imprints tool set (refer to <A
-HREF="http://imprints.sourceforge.net"
-TARGET="_top"
->http://imprints.sourceforge.net</A
->).
- </P
-></LI
-><LI
-><P
->Support for the native MS-RPC printing
- calls such as StartDocPrinter, EnumJobs(), etc... (See
- the MSDN documentation at <A
-HREF="http://msdn.microsoft.com/"
-TARGET="_top"
->http://msdn.microsoft.com/</A
->
- for more information on the Win32 printing API)
- </P
-></LI
-><LI
-><P
->Support for NT Access Control Lists (ACL)
- on printer objects</P
-></LI
-><LI
-><P
->Improved support for printer queue manipulation
- through the use of an internal databases for spooled job
- information</P
-></LI
-></UL
-><P
->There has been some initial confusion about what all this means
-and whether or not it is a requirement for printer drivers to be
-installed on a Samba host in order to support printing from Windows
-clients. As a side note, Samba does not use these drivers in any way to process
-spooled files. They are utilized entirely by the clients.</P
-><P
->The following MS KB article, may be of some help if you are dealing with
-Windows 2000 clients: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How to Add Printers with No User
-Interaction in Windows 2000</I
-></SPAN
-></P
-><P
-><A
-HREF="http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP"
-TARGET="_top"
->http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2076"
-></A
->13.2. Configuration</H2
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->[print$] vs. [printer$]</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Previous versions of Samba recommended using a share named [printer$].
-This name was taken from the printer$ service created by Windows 9x
-clients when a printer was shared. Windows 9x printer servers always have
-a printer$ service which provides read-only access via no
-password in order to support printer driver downloads.</P
-><P
->However, the initial implementation allowed for a
-parameter named <TT
-CLASS="PARAMETER"
-><I
->printer driver location</I
-></TT
->
-to be used on a per share basis to specify the location of
-the driver files associated with that printer. Another
-parameter named <TT
-CLASS="PARAMETER"
-><I
->printer driver</I
-></TT
-> provided
-a means of defining the printer driver name to be sent to
-the client.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2084"
-></A
->13.2.1. Creating [print$]</H3
-><P
->In order to support the uploading of printer driver
-files, you must first configure a file share named [print$].
-The name of this share is hard coded in Samba's internals so
-the name is very important (print$ is the service used by
-Windows NT print servers to provide support for printer driver
-download).</P
-><P
->You should modify the server's smb.conf file to add the global
-parameters and to create the
-following file share (of course, some of the parameter values,
-such as 'path' are arbitrary and should be replaced with
-appropriate values for your site):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- ; members of the ntadmin group should be able
- ; to add drivers and set printer properties
- ; root is implicitly a 'printer admin'
- printer admin = @ntadmin
-
-[print$]
- path = /usr/local/samba/printers
- guest ok = yes
- browseable = yes
- read only = yes
- ; since this share is configured as read only, then we need
- ; a 'write list'. Check the file system permissions to make
- ; sure this account can copy files to the share. If this
- ; is setup to a non-root account, then it should also exist
- ; as a 'printer admin'
- write list = @ntadmin,root</PRE
-></P
-><P
->The <A
-HREF="smb.conf.5.html#WRITELIST"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->write list</I
-></TT
-></A
-> is used to allow administrative
-level user accounts to have write access in order to update files
-on the share. See the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)
-man page</A
-> for more information on configuring file shares.</P
-><P
->The requirement for <A
-HREF="smb.conf.5.html#GUESTOK"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->guest
-ok = yes</B
-></A
-> depends upon how your
-site is configured. If users will be guaranteed to have
-an account on the Samba host, then this is a non-issue.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Author's Note</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->The non-issue is that if all your Windows NT users are guaranteed to be
-authenticated by the Samba server (such as a domain member server and the NT
-user has already been validated by the Domain Controller in
-order to logon to the Windows NT console), then guest access
-is not necessary. Of course, in a workgroup environment where
-you just want to be able to print without worrying about
-silly accounts and security, then configure the share for
-guest access. You'll probably want to add <A
-HREF="smb.conf.5.html#MAPTOGUEST"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->map to guest = Bad User</B
-></A
-> in the [global] section as well. Make sure
-you understand what this parameter does before using it
-though. --jerry</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->In order for a Windows NT print server to support
-the downloading of driver files by multiple client architectures,
-it must create subdirectories within the [print$] service
-which correspond to each of the supported client architectures.
-Samba follows this model as well.</P
-><P
->Next create the directory tree below the [print$] share
-for each architecture you wish to support.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[print$]-----
- |-W32X86 ; "Windows NT x86"
- |-WIN40 ; "Windows 95/98"
- |-W32ALPHA ; "Windows NT Alpha_AXP"
- |-W32MIPS ; "Windows NT R4000"
- |-W32PPC ; "Windows NT PowerPC"</PRE
-></P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->ATTENTION! REQUIRED PERMISSIONS</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->In order to currently add a new driver to you Samba host,
-one of two conditions must hold true:</P
-><P
-></P
-><UL
-><LI
-><P
->The account used to connect to the Samba host
- must have a uid of 0 (i.e. a root account)</P
-></LI
-><LI
-><P
->The account used to connect to the Samba host
- must be a member of the <A
-HREF="smb.conf.5.html#PRINTERADMIN"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->printer
- admin</I
-></TT
-></A
-> list.</P
-></LI
-></UL
-><P
->Of course, the connected account must still possess access
-to add files to the subdirectories beneath [print$]. Remember
-that all file shares are set to 'read only' by default.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Once you have created the required [print$] service and
-associated subdirectories, simply log onto the Samba server using
-a root (or <TT
-CLASS="PARAMETER"
-><I
->printer admin</I
-></TT
->) account
-from a Windows NT 4.0/2k client. Open "Network Neighbourhood" or
-"My Network Places" and browse for the Samba host. Once you have located
-the server, navigate to the "Printers..." folder.
-You should see an initial listing of printers
-that matches the printer shares defined on your Samba host.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2119"
-></A
->13.2.2. Setting Drivers for Existing Printers</H3
-><P
->The initial listing of printers in the Samba host's
-Printers folder will have no real printer driver assigned
-to them. This defaults to a NULL string to allow the use
-of the local Add Printer Wizard on NT/2000 clients.
-Attempting to view the printer properties for a printer
-which has this default driver assigned will result in
-the error message:</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Device settings cannot be displayed. The driver
-for the specified printer is not installed, only spooler
-properties will be displayed. Do you want to install the
-driver now?</I
-></SPAN
-></P
-><P
->Click "No" in the error dialog and you will be presented with
-the printer properties window. The way to assign a driver to a
-printer is to either</P
-><P
-></P
-><UL
-><LI
-><P
->Use the "New Driver..." button to install
- a new printer driver, or</P
-></LI
-><LI
-><P
->Select a driver from the popup list of
- installed drivers. Initially this list will be empty.</P
-></LI
-></UL
-><P
->If you wish to install printer drivers for client
-operating systems other than "Windows NT x86", you will need
-to use the "Sharing" tab of the printer properties dialog.</P
-><P
->Assuming you have connected with a root account, you
-will also be able modify other printer properties such as
-ACLs and device settings using this dialog box.</P
-><P
->A few closing comments for this section, it is possible
-on a Windows NT print server to have printers
-listed in the Printers folder which are not shared. Samba does
-not make this distinction. By definition, the only printers of
-which Samba is aware are those which are specified as shares in
-<TT
-CLASS="FILENAME"
->smb.conf</TT
->.</P
-><P
->Another interesting side note is that Windows NT clients do
-not use the SMB printer share, but rather can print directly
-to any printer on another Windows NT host using MS-RPC. This
-of course assumes that the printing client has the necessary
-privileges on the remote host serving the printer. The default
-permissions assigned by Windows NT to a printer gives the "Print"
-permissions to the "Everyone" well-known group.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2135"
-></A
->13.2.3. Support a large number of printers</H3
-><P
->One issue that has arisen during the development
-phase of Samba 2.2 is the need to support driver downloads for
-100's of printers. Using the Windows NT APW is somewhat
-awkward to say the list. If more than one printer are using the
-same driver, the <A
-HREF="rpcclient.1.html"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->rpcclient's
-setdriver command</B
-></A
-> can be used to set the driver
-associated with an installed driver. The following is example
-of how this could be accomplished:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret -c "enumdrivers"
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-
-[Windows NT x86]
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 4000 Series PS]
-
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 2100 Series PS]
-
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 4Si/4SiMX PS]
-
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret -c "enumprinters"
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
- flags:[0x800000]
- name:[\\POGO\hp-print]
- description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
- comment:[]
-
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret \
-<TT
-CLASS="PROMPT"
->&gt; </TT
-> -c "setdriver hp-print \"HP LaserJet 4000 Series PS\""
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-Successfully set hp-print to driver HP LaserJet 4000 Series PS.</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2146"
-></A
->13.2.4. Adding New Printers via the Windows NT APW</H3
-><P
->By default, Samba offers all printer shares defined in <TT
-CLASS="FILENAME"
->smb.conf</TT
->
-in the "Printers..." folder. Also existing in this folder is the Windows NT
-Add Printer Wizard icon. The APW will be show only if</P
-><P
-></P
-><UL
-><LI
-><P
->The connected user is able to successfully
- execute an OpenPrinterEx(\\server) with administrative
- privileges (i.e. root or <TT
-CLASS="PARAMETER"
-><I
->printer admin</I
-></TT
->).
- </P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#SHOWADDPRINTERWIZARD"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->show
- add printer wizard = yes</I
-></TT
-></A
-> (the default).
- </P
-></LI
-></UL
-><P
->In order to be able to use the APW to successfully add a printer to a Samba
-server, the <A
-HREF="smb.conf.5.html#ADDPRINTERCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->add
-printer command</I
-></TT
-></A
-> must have a defined value. The program
-hook must successfully add the printer to the system (i.e.
-<TT
-CLASS="FILENAME"
->/etc/printcap</TT
-> or appropriate files) and
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> if necessary.</P
-><P
->When using the APW from a client, if the named printer share does
-not exist, <B
-CLASS="COMMAND"
->smbd</B
-> will execute the <TT
-CLASS="PARAMETER"
-><I
->add printer
-command</I
-></TT
-> and reparse to the <TT
-CLASS="FILENAME"
->smb.conf</TT
->
-to attempt to locate the new printer share. If the share is still not defined,
-an error of "Access Denied" is returned to the client. Note that the
-<TT
-CLASS="PARAMETER"
-><I
->add printer program</I
-></TT
-> is executed under the context
-of the connected user, not necessarily a root account.</P
-><P
->There is a complementary <A
-HREF="smb.conf.5.html#DELETEPRINTERCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->delete
-printer command</I
-></TT
-></A
-> for removing entries from the "Printers..."
-folder.</P
-><P
->The following is an example <A
-HREF="smb.conf.5.html#ADDPRINTERCOMMAN"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->add printer command</I
-></TT
-></A
-> script. It adds the appropriate entries to <TT
-CLASS="FILENAME"
->/etc/printcap.local</TT
-> (change that to what you need) and returns a line of 'Done' which is needed for the whole process to work.</P
-><PRE
-CLASS="PROGRAMLISTING"
->#!/bin/sh
-
-# Script to insert a new printer entry into printcap.local
-#
-# $1, printer name, used as the descriptive name
-# $2, share name, used as the printer name for Linux
-# $3, port name
-# $4, driver name
-# $5, location, used for the device file of the printer
-# $6, win9x location
-
-#
-# Make sure we use the location that RedHat uses for local printer defs
-PRINTCAP=/etc/printcap.local
-DATE=`date +%Y%m%d-%H%M%S`
-LP=lp
-RESTART="service lpd restart"
-
-# Keep a copy
-cp $PRINTCAP $PRINTCAP.$DATE
-# Add the printer to $PRINTCAP
-echo "" &#62;&#62; $PRINTCAP
-echo "$2|$1:\\" &#62;&#62; $PRINTCAP
-echo " :sd=/var/spool/lpd/$2:\\" &#62;&#62; $PRINTCAP
-echo " :mx=0:ml=0:sh:\\" &#62;&#62; $PRINTCAP
-echo " :lp=/usr/local/samba/var/print/$5.prn:" &#62;&#62; $PRINTCAP
-
-touch "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&amp;1
-chown $LP "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&amp;1
-
-mkdir /var/spool/lpd/$2
-chmod 700 /var/spool/lpd/$2
-chown $LP /var/spool/lpd/$2
-#echo $1 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $2 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $3 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $4 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $5 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $6 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-$RESTART &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-# Not sure if this is needed
-touch /usr/local/samba/lib/smb.conf
-#
-# You need to return a value, but I am not sure what it means.
-#
-echo "Done"
-exit 0</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2176"
-></A
->13.2.5. Samba and Printer Ports</H3
-><P
->Windows NT/2000 print servers associate a port with each printer. These normally
-take the form of LPT1:, COM1:, FILE:, etc... Samba must also support the
-concept of ports associated with a printer. By default, only one printer port,
-named "Samba Printer Port", exists on a system. Samba does not really a port in
-order to print, rather it is a requirement of Windows clients. </P
-><P
->Note that Samba does not support the concept of "Printer Pooling" internally
-either. This is when a logical printer is assigned to multiple ports as
-a form of load balancing or fail over.</P
-><P
->If you require that multiple ports be defined for some reason,
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> possesses a <A
-HREF="smb.conf.5.html#ENUMPORTSCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->enumports
-command</I
-></TT
-></A
-> which can be used to define an external program
-that generates a listing of ports on a system.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2184"
-></A
->13.3. The Imprints Toolset</H2
-><P
->The Imprints tool set provides a UNIX equivalent of the
- Windows NT Add Printer Wizard. For complete information, please
- refer to the Imprints web site at <A
-HREF="http://imprints.sourceforge.net/"
-TARGET="_top"
-> http://imprints.sourceforge.net/</A
-> as well as the documentation
- included with the imprints source distribution. This section will
- only provide a brief introduction to the features of Imprints.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2188"
-></A
->13.3.1. What is Imprints?</H3
-><P
->Imprints is a collection of tools for supporting the goals
- of</P
-><P
-></P
-><UL
-><LI
-><P
->Providing a central repository information
- regarding Windows NT and 95/98 printer driver packages</P
-></LI
-><LI
-><P
->Providing the tools necessary for creating
- the Imprints printer driver packages.</P
-></LI
-><LI
-><P
->Providing an installation client which
- will obtain and install printer drivers on remote Samba
- and Windows NT 4 print servers.</P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2198"
-></A
->13.3.2. Creating Printer Driver Packages</H3
-><P
->The process of creating printer driver packages is beyond
- the scope of this document (refer to Imprints.txt also included
- with the Samba distribution for more information). In short,
- an Imprints driver package is a gzipped tarball containing the
- driver files, related INF files, and a control file needed by the
- installation client.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2201"
-></A
->13.3.3. The Imprints server</H3
-><P
->The Imprints server is really a database server that
- may be queried via standard HTTP mechanisms. Each printer
- entry in the database has an associated URL for the actual
- downloading of the package. Each package is digitally signed
- via GnuPG which can be used to verify that package downloaded
- is actually the one referred in the Imprints database. It is
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
-> recommended that this security check
- be disabled.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2205"
-></A
->13.3.4. The Installation Client</H3
-><P
->More information regarding the Imprints installation client
- is available in the <TT
-CLASS="FILENAME"
->Imprints-Client-HOWTO.ps</TT
->
- file included with the imprints source package.</P
-><P
->The Imprints installation client comes in two forms.</P
-><P
-></P
-><UL
-><LI
-><P
->a set of command line Perl scripts</P
-></LI
-><LI
-><P
->a GTK+ based graphical interface to
- the command line perl scripts</P
-></LI
-></UL
-><P
->The installation client (in both forms) provides a means
- of querying the Imprints database server for a matching
- list of known printer model names as well as a means to
- download and install the drivers on remote Samba and Windows
- NT print servers.</P
-><P
->The basic installation process is in four steps and
- perl code is wrapped around <B
-CLASS="COMMAND"
->smbclient</B
->
- and <B
-CLASS="COMMAND"
->rpcclient</B
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->
-foreach (supported architecture for a given driver)
-{
- 1. rpcclient: Get the appropriate upload directory
- on the remote server
- 2. smbclient: Upload the driver files
- 3. rpcclient: Issues an AddPrinterDriver() MS-RPC
-}
-
-4. rpcclient: Issue an AddPrinterEx() MS-RPC to actually
- create the printer</PRE
-></P
-><P
->One of the problems encountered when implementing
- the Imprints tool set was the name space issues between
- various supported client architectures. For example, Windows
- NT includes a driver named "Apple LaserWriter II NTX v51.8"
- and Windows 95 calls its version of this driver "Apple
- LaserWriter II NTX"</P
-><P
->The problem is how to know what client drivers have
- been uploaded for a printer. As astute reader will remember
- that the Windows NT Printer Properties dialog only includes
- space for one printer driver name. A quick look in the
- Windows NT 4.0 system registry at</P
-><P
-><TT
-CLASS="FILENAME"
->HKLM\System\CurrentControlSet\Control\Print\Environment
- </TT
-></P
-><P
->will reveal that Windows NT always uses the NT driver
- name. This is ok as Windows NT always requires that at least
- the Windows NT version of the printer driver is present.
- However, Samba does not have the requirement internally.
- Therefore, how can you use the NT driver name if is has not
- already been installed?</P
-><P
->The way of sidestepping this limitation is to require
- that all Imprints printer driver packages include both the Intel
- Windows NT and 95/98 printer drivers and that NT driver is
- installed first.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2227"
-></A
->13.4. Diagnosis</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN2229"
-></A
->13.4.1. Introduction</H3
-><P
->This is a short description of how to debug printing problems with
-Samba. This describes how to debug problems with printing from a SMB
-client to a Samba server, not the other way around. For the reverse
-see the examples/printing directory.</P
-><P
->Ok, so you want to print to a Samba server from your PC. The first
-thing you need to understand is that Samba does not actually do any
-printing itself, it just acts as a middleman between your PC client
-and your Unix printing subsystem. Samba receives the file from the PC
-then passes the file to a external "print command". What print command
-you use is up to you.</P
-><P
->The whole things is controlled using options in smb.conf. The most
-relevant options (which you should look up in the smb.conf man page)
-are:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [global]
- print command - send a file to a spooler
- lpq command - get spool queue status
- lprm command - remove a job
- [printers]
- path = /var/spool/lpd/samba</PRE
-></P
-><P
->The following are nice to know about:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> queuepause command - stop a printer or print queue
- queueresume command - start a printer or print queue</PRE
-></P
-><P
->Example:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> print command = /usr/bin/lpr -r -P%p %s
- lpq command = /usr/bin/lpq -P%p %s
- lprm command = /usr/bin/lprm -P%p %j
- queuepause command = /usr/sbin/lpc -P%p stop
- queuepause command = /usr/sbin/lpc -P%p start</PRE
-></P
-><P
->Samba should set reasonable defaults for these depending on your
-system type, but it isn't clairvoyant. It is not uncommon that you
-have to tweak these for local conditions. The commands should
-always have fully specified pathnames, as the smdb may not have
-the correct PATH values.</P
-><P
->When you send a job to Samba to be printed, it will make a temporary
-copy of it in the directory specified in the [printers] section.
-and it should be periodically cleaned out. The lpr -r option
-requests that the temporary copy be removed after printing; If
-printing fails then you might find leftover files in this directory,
-and it should be periodically cleaned out. Samba used the lpq
-command to determine the "job number" assigned to your print job
-by the spooler.</P
-><P
->The %&gt;letter&lt; are "macros" that get dynamically replaced with appropriate
-values when they are used. The %s gets replaced with the name of the spool
-file that Samba creates and the %p gets replaced with the name of the
-printer. The %j gets replaced with the "job number" which comes from
-the lpq output.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2245"
-></A
->13.4.2. Debugging printer problems</H3
-><P
->One way to debug printing problems is to start by replacing these
-command with shell scripts that record the arguments and the contents
-of the print file. A simple example of this kind of things might
-be:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> print command = /tmp/saveprint %p %s
-
- #!/bin/saveprint
- # we make sure that we are the right user
- /usr/bin/id -p &#62;/tmp/tmp.print
- # we run the command and save the error messages
- # replace the command with the one appropriate for your system
- /usr/bin/lpr -r -P$1 $2 2&#62;&#62;&amp;/tmp/tmp.print</PRE
-></P
-><P
->Then you print a file and try removing it. You may find that the
-print queue needs to be stopped in order to see the queue status
-and remove the job:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->&#13;h4: {42} % echo hi &#62;/tmp/hi
-h4: {43} % smbclient //localhost/lw4
-added interface ip=10.0.0.4 bcast=10.0.0.255 nmask=255.255.255.0
-Password:
-Domain=[ASTART] OS=[Unix] Server=[Samba 2.0.7]
-smb: \&#62; print /tmp/hi
-putting file /tmp/hi as hi-17534 (0.0 kb/s) (average 0.0 kb/s)
-smb: \&#62; queue
-1049 3 hi-17534
-smb: \&#62; cancel 1049
-Error cancelling job 1049 : code 0
-smb: \&#62; cancel 1049
-Job 1049 cancelled
-smb: \&#62; queue
-smb: \&#62; exit</PRE
-></P
-><P
->The 'code 0' indicates that the job was removed. The comment
-by the smbclient is a bit misleading on this.
-You can observe the command output and then and look at the
-/tmp/tmp.print file to see what the results are. You can quickly
-find out if the problem is with your printing system. Often people
-have problems with their /etc/printcap file or permissions on
-various print queues.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2254"
-></A
->13.4.3. What printers do I have?</H3
-><P
->You can use the 'testprns' program to check to see if the printer
-name you are using is recognized by Samba. For example, you can
-use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> testprns printer /etc/printcap</PRE
-></P
-><P
->Samba can get its printcap information from a file or from a program.
-You can try the following to see the format of the extracted
-information:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> testprns -a printer /etc/printcap
-
- testprns -a printer '|/bin/cat printcap'</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2262"
-></A
->13.4.4. Setting up printcap and print servers</H3
-><P
->You may need to set up some printcaps for your Samba system to use.
-It is strongly recommended that you use the facilities provided by
-the print spooler to set up queues and printcap information.</P
-><P
->Samba requires either a printcap or program to deliver printcap
-information. This printcap information has the format:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> name|alias1|alias2...:option=value:...</PRE
-></P
-><P
->For almost all printing systems, the printer 'name' must be composed
-only of alphanumeric or underscore '_' characters. Some systems also
-allow hyphens ('-') as well. An alias is an alternative name for the
-printer, and an alias with a space in it is used as a 'comment'
-about the printer. The printcap format optionally uses a \ at the end of lines
-to extend the printcap to multiple lines.</P
-><P
->Here are some examples of printcap files:</P
-><P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->pr just printer name</P
-></LI
-><LI
-><P
->pr|alias printer name and alias</P
-></LI
-><LI
-><P
->pr|My Printer printer name, alias used as comment</P
-></LI
-><LI
-><P
->pr:sh:\ Same as pr:sh:cm= testing
- :cm= \
- testing</P
-></LI
-><LI
-><P
->pr:sh Same as pr:sh:cm= testing
- :cm= testing</P
-></LI
-></OL
-></P
-><P
->Samba reads the printcap information when first started. If you make
-changes in the printcap information, then you must do the following:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->make sure that the print spooler is aware of these changes.
-The LPRng system uses the 'lpc reread' command to do this.</P
-></LI
-><LI
-><P
->make sure that the spool queues, etc., exist and have the
-correct permissions. The LPRng system uses the 'checkpc -f'
-command to do this.</P
-></LI
-><LI
-><P
->You now should send a SIGHUP signal to the smbd server to have
-it reread the printcap information.</P
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2290"
-></A
->13.4.5. Job sent, no output</H3
-><P
->This is the most frustrating part of printing. You may have sent the
-job, verified that the job was forwarded, set up a wrapper around
-the command to send the file, but there was no output from the printer.</P
-><P
->First, check to make sure that the job REALLY is getting to the
-right print queue. If you are using a BSD or LPRng print spooler,
-you can temporarily stop the printing of jobs. Jobs can still be
-submitted, but they will not be printed. Use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> lpc -Pprinter stop</PRE
-></P
-><P
->Now submit a print job and then use 'lpq -Pprinter' to see if the
-job is in the print queue. If it is not in the print queue then
-you will have to find out why it is not being accepted for printing.</P
-><P
->Next, you may want to check to see what the format of the job really
-was. With the assistance of the system administrator you can view
-the submitted jobs files. You may be surprised to find that these
-are not in what you would expect to call a printable format.
-You can use the UNIX 'file' utitily to determine what the job
-format actually is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> cd /var/spool/lpd/printer # spool directory of print jobs
- ls # find job files
- file dfA001myhost</PRE
-></P
-><P
->You should make sure that your printer supports this format OR that
-your system administrator has installed a 'print filter' that will
-convert the file to a format appropriate for your printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2301"
-></A
->13.4.6. Job sent, strange output</H3
-><P
->Once you have the job printing, you can then start worrying about
-making it print nicely.</P
-><P
->The most common problem is extra pages of output: banner pages
-OR blank pages at the end.</P
-><P
->If you are getting banner pages, check and make sure that the
-printcap option or printer option is configured for no banners.
-If you have a printcap, this is the :sh (suppress header or banner
-page) option. You should have the following in your printer.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> printer: ... :sh</PRE
-></P
-><P
->If you have this option and are still getting banner pages, there
-is a strong chance that your printer is generating them for you
-automatically. You should make sure that banner printing is disabled
-for the printer. This usually requires using the printer setup software
-or procedures supplied by the printer manufacturer.</P
-><P
->If you get an extra page of output, this could be due to problems
-with your job format, or if you are generating PostScript jobs,
-incorrect setting on your printer driver on the MicroSoft client.
-For example, under Win95 there is a option:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> Printers|Printer Name|(Right Click)Properties|Postscript|Advanced|</PRE
-></P
-><P
->that allows you to choose if a Ctrl-D is appended to all jobs.
-This is a very bad thing to do, as most spooling systems will
-automatically add a ^D to the end of the job if it is detected as
-PostScript. The multiple ^D may cause an additional page of output.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2313"
-></A
->13.4.7. Raw PostScript printed</H3
-><P
->This is a problem that is usually caused by either the print spooling
-system putting information at the start of the print job that makes
-the printer think the job is a text file, or your printer simply
-does not support PostScript. You may need to enable 'Automatic
-Format Detection' on your printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2316"
-></A
->13.4.8. Advanced Printing</H3
-><P
->Note that you can do some pretty magic things by using your
-imagination with the "print command" option and some shell scripts.
-Doing print accounting is easy by passing the %U option to a print
-command shell script. You could even make the print command detect
-the type of output and its size and send it to an appropriate
-printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2319"
-></A
->13.4.9. Real debugging</H3
-><P
->If the above debug tips don't help, then maybe you need to bring in
-the bug guns, system tracing. See Tracing.txt in this directory.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="WINBIND"
-></A
->Chapter 14. Unified Logons between Windows NT and UNIX using Winbind</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2360"
-></A
->14.1. Abstract</H2
-><P
->Integration of UNIX and Microsoft Windows NT through
- a unified logon has been considered a "holy grail" in heterogeneous
- computing environments for a long time. We present
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->winbind</I
-></SPAN
->, a component of the Samba suite
- of programs as a solution to the unified logon problem. Winbind
- uses a UNIX implementation
- of Microsoft RPC calls, Pluggable Authentication Modules, and the Name
- Service Switch to allow Windows NT domain users to appear and operate
- as UNIX users on a UNIX machine. This paper describes the winbind
- system, explaining the functionality it provides, how it is configured,
- and how it works internally.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2364"
-></A
->14.2. Introduction</H2
-><P
->It is well known that UNIX and Microsoft Windows NT have
- different models for representing user and group information and
- use different technologies for implementing them. This fact has
- made it difficult to integrate the two systems in a satisfactory
- manner.</P
-><P
->One common solution in use today has been to create
- identically named user accounts on both the UNIX and Windows systems
- and use the Samba suite of programs to provide file and print services
- between the two. This solution is far from perfect however, as
- adding and deleting users on both sets of machines becomes a chore
- and two sets of passwords are required both of which
- can lead to synchronization problems between the UNIX and Windows
- systems and confusion for users.</P
-><P
->We divide the unified logon problem for UNIX machines into
- three smaller problems:</P
-><P
-></P
-><UL
-><LI
-><P
->Obtaining Windows NT user and group information
- </P
-></LI
-><LI
-><P
->Authenticating Windows NT users
- </P
-></LI
-><LI
-><P
->Password changing for Windows NT users
- </P
-></LI
-></UL
-><P
->Ideally, a prospective solution to the unified logon problem
- would satisfy all the above components without duplication of
- information on the UNIX machines and without creating additional
- tasks for the system administrator when maintaining users and
- groups on either system. The winbind system provides a simple
- and elegant solution to all three components of the unified logon
- problem.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2377"
-></A
->14.3. What Winbind Provides</H2
-><P
->Winbind unifies UNIX and Windows NT account management by
- allowing a UNIX box to become a full member of a NT domain. Once
- this is done the UNIX box will see NT users and groups as if
- they were native UNIX users and groups, allowing the NT domain
- to be used in much the same manner that NIS+ is used within
- UNIX-only environments.</P
-><P
->The end result is that whenever any
- program on the UNIX machine asks the operating system to lookup
- a user or group name, the query will be resolved by asking the
- NT domain controller for the specified domain to do the lookup.
- Because Winbind hooks into the operating system at a low level
- (via the NSS name resolution modules in the C library) this
- redirection to the NT domain controller is completely
- transparent.</P
-><P
->Users on the UNIX machine can then use NT user and group
- names as they would use "native" UNIX names. They can chown files
- so that they are owned by NT domain users or even login to the
- UNIX machine and run a UNIX X-Window session as a domain user.</P
-><P
->The only obvious indication that Winbind is being used is
- that user and group names take the form DOMAIN\user and
- DOMAIN\group. This is necessary as it allows Winbind to determine
- that redirection to a domain controller is wanted for a particular
- lookup and which trusted domain is being referenced.</P
-><P
->Additionally, Winbind provides an authentication service
- that hooks into the Pluggable Authentication Modules (PAM) system
- to provide authentication via a NT domain to any PAM enabled
- applications. This capability solves the problem of synchronizing
- passwords between systems since all passwords are stored in a single
- location (on the domain controller).</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2384"
-></A
->14.3.1. Target Uses</H3
-><P
->Winbind is targeted at organizations that have an
- existing NT based domain infrastructure into which they wish
- to put UNIX workstations or servers. Winbind will allow these
- organizations to deploy UNIX workstations without having to
- maintain a separate account infrastructure. This greatly
- simplifies the administrative overhead of deploying UNIX
- workstations into a NT based organization.</P
-><P
->Another interesting way in which we expect Winbind to
- be used is as a central part of UNIX based appliances. Appliances
- that provide file and print services to Microsoft based networks
- will be able to use Winbind to provide seamless integration of
- the appliance into the domain.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2388"
-></A
->14.4. How Winbind Works</H2
-><P
->The winbind system is designed around a client/server
- architecture. A long running <B
-CLASS="COMMAND"
->winbindd</B
-> daemon
- listens on a UNIX domain socket waiting for requests
- to arrive. These requests are generated by the NSS and PAM
- clients and processed sequentially.</P
-><P
->The technologies used to implement winbind are described
- in detail below.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2393"
-></A
->14.4.1. Microsoft Remote Procedure Calls</H3
-><P
->Over the last few years, efforts have been underway
- by various Samba Team members to decode various aspects of
- the Microsoft Remote Procedure Call (MSRPC) system. This
- system is used for most network related operations between
- Windows NT machines including remote management, user authentication
- and print spooling. Although initially this work was done
- to aid the implementation of Primary Domain Controller (PDC)
- functionality in Samba, it has also yielded a body of code which
- can be used for other purposes.</P
-><P
->Winbind uses various MSRPC calls to enumerate domain users
- and groups and to obtain detailed information about individual
- users or groups. Other MSRPC calls can be used to authenticate
- NT domain users and to change user passwords. By directly querying
- a Windows PDC for user and group information, winbind maps the
- NT account information onto UNIX user and group names.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2397"
-></A
->14.4.2. Microsoft Active Directory Services</H3
-><P
-> Since late 2001, Samba has gained the ability to
- interact with Microsoft Windows 2000 using its 'Native
- Mode' protocols, rather than the NT4 RPC services.
- Using LDAP and Kerberos, a domain member running
- winbind can enumerate users and groups in exactly the
- same way as a Win2k client would, and in so doing
- provide a much more efficient and
- effective winbind implementation.
- </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2400"
-></A
->14.4.3. Name Service Switch</H3
-><P
->The Name Service Switch, or NSS, is a feature that is
- present in many UNIX operating systems. It allows system
- information such as hostnames, mail aliases and user information
- to be resolved from different sources. For example, a standalone
- UNIX workstation may resolve system information from a series of
- flat files stored on the local filesystem. A networked workstation
- may first attempt to resolve system information from local files,
- and then consult a NIS database for user information or a DNS server
- for hostname information.</P
-><P
->The NSS application programming interface allows winbind
- to present itself as a source of system information when
- resolving UNIX usernames and groups. Winbind uses this interface,
- and information obtained from a Windows NT server using MSRPC
- calls to provide a new source of account enumeration. Using standard
- UNIX library calls, one can enumerate the users and groups on
- a UNIX machine running winbind and see all users and groups in
- a NT domain plus any trusted domain as though they were local
- users and groups.</P
-><P
->The primary control file for NSS is
- <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
->.
- When a UNIX application makes a request to do a lookup
- the C library looks in <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
->
- for a line which matches the service type being requested, for
- example the "passwd" service type is used when user or group names
- are looked up. This config line species which implementations
- of that service should be tried and in what order. If the passwd
- config line is:</P
-><P
-><B
-CLASS="COMMAND"
->passwd: files example</B
-></P
-><P
->then the C library will first load a module called
- <TT
-CLASS="FILENAME"
->/lib/libnss_files.so</TT
-> followed by
- the module <TT
-CLASS="FILENAME"
->/lib/libnss_example.so</TT
->. The
- C library will dynamically load each of these modules in turn
- and call resolver functions within the modules to try to resolve
- the request. Once the request is resolved the C library returns the
- result to the application.</P
-><P
->This NSS interface provides a very easy way for Winbind
- to hook into the operating system. All that needs to be done
- is to put <TT
-CLASS="FILENAME"
->libnss_winbind.so</TT
-> in <TT
-CLASS="FILENAME"
->/lib/</TT
->
- then add "winbind" into <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> at
- the appropriate place. The C library will then call Winbind to
- resolve user and group names.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2416"
-></A
->14.4.4. Pluggable Authentication Modules</H3
-><P
->Pluggable Authentication Modules, also known as PAM,
- is a system for abstracting authentication and authorization
- technologies. With a PAM module it is possible to specify different
- authentication methods for different system applications without
- having to recompile these applications. PAM is also useful
- for implementing a particular policy for authorization. For example,
- a system administrator may only allow console logins from users
- stored in the local password file but only allow users resolved from
- a NIS database to log in over the network.</P
-><P
->Winbind uses the authentication management and password
- management PAM interface to integrate Windows NT users into a
- UNIX system. This allows Windows NT users to log in to a UNIX
- machine and be authenticated against a suitable Primary Domain
- Controller. These users can also change their passwords and have
- this change take effect directly on the Primary Domain Controller.
- </P
-><P
->PAM is configured by providing control files in the directory
- <TT
-CLASS="FILENAME"
->/etc/pam.d/</TT
-> for each of the services that
- require authentication. When an authentication request is made
- by an application the PAM code in the C library looks up this
- control file to determine what modules to load to do the
- authentication check and in what order. This interface makes adding
- a new authentication service for Winbind very easy, all that needs
- to be done is that the <TT
-CLASS="FILENAME"
->pam_winbind.so</TT
-> module
- is copied to <TT
-CLASS="FILENAME"
->/lib/security/</TT
-> and the PAM
- control files for relevant services are updated to allow
- authentication via winbind. See the PAM documentation
- for more details.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2424"
-></A
->14.4.5. User and Group ID Allocation</H3
-><P
->When a user or group is created under Windows NT
- is it allocated a numerical relative identifier (RID). This is
- slightly different to UNIX which has a range of numbers that are
- used to identify users, and the same range in which to identify
- groups. It is winbind's job to convert RIDs to UNIX id numbers and
- vice versa. When winbind is configured it is given part of the UNIX
- user id space and a part of the UNIX group id space in which to
- store Windows NT users and groups. If a Windows NT user is
- resolved for the first time, it is allocated the next UNIX id from
- the range. The same process applies for Windows NT groups. Over
- time, winbind will have mapped all Windows NT users and groups
- to UNIX user ids and group ids.</P
-><P
->The results of this mapping are stored persistently in
- an ID mapping database held in a tdb database). This ensures that
- RIDs are mapped to UNIX IDs in a consistent way.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2428"
-></A
->14.4.6. Result Caching</H3
-><P
->An active system can generate a lot of user and group
- name lookups. To reduce the network cost of these lookups winbind
- uses a caching scheme based on the SAM sequence number supplied
- by NT domain controllers. User or group information returned
- by a PDC is cached by winbind along with a sequence number also
- returned by the PDC. This sequence number is incremented by
- Windows NT whenever any user or group information is modified. If
- a cached entry has expired, the sequence number is requested from
- the PDC and compared against the sequence number of the cached entry.
- If the sequence numbers do not match, then the cached information
- is discarded and up to date information is requested directly
- from the PDC.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2431"
-></A
->14.5. Installation and Configuration</H2
-><P
->Many thanks to John Trostel <A
-HREF="mailto:jtrostel@snapserver.com"
-TARGET="_top"
->jtrostel@snapserver.com</A
->
-for providing the HOWTO for this section.</P
-><P
->This HOWTO describes how to get winbind services up and running
-to control access and authenticate users on your Linux box using
-the winbind services which come with SAMBA 2.2.2.</P
-><P
->There is also some Solaris specific information in
-<TT
-CLASS="FILENAME"
->docs/textdocs/Solaris-Winbind-HOWTO.txt</TT
->.
-Future revisions of this document will incorporate that
-information.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2438"
-></A
->14.5.1. Introduction</H3
-><P
->This HOWTO describes the procedures used to get winbind up and
-running on my RedHat 7.1 system. Winbind is capable of providing access
-and authentication control for Windows Domain users through an NT
-or Win2K PDC for 'regular' services, such as telnet a nd ftp, as
-well for SAMBA services.</P
-><P
->This HOWTO has been written from a 'RedHat-centric' perspective, so if
-you are using another distribution, you may have to modify the instructions
-somewhat to fit the way your distribution works.</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Why should I to this?</I
-></SPAN
->
- </P
-><P
->This allows the SAMBA administrator to rely on the
- authentication mechanisms on the NT/Win2K PDC for the authentication
- of domain members. NT/Win2K users no longer need to have separate
- accounts on the SAMBA server.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Who should be reading this document?</I
-></SPAN
->
- </P
-><P
-> This HOWTO is designed for system administrators. If you are
- implementing SAMBA on a file server and wish to (fairly easily)
- integrate existing NT/Win2K users from your PDC onto the
- SAMBA server, this HOWTO is for you. That said, I am no NT or PAM
- expert, so you may find a better or easier way to accomplish
- these tasks.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2451"
-></A
->14.5.2. Requirements</H3
-><P
->If you have a samba configuration file that you are currently
-using... <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->BACK IT UP!</I
-></SPAN
-> If your system already uses PAM,
-<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->back up the <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> directory
-contents!</I
-></SPAN
-> If you haven't already made a boot disk,
-<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->MAKE ONE NOW!</I
-></SPAN
-></P
-><P
->Messing with the pam configuration files can make it nearly impossible
-to log in to yourmachine. That's why you want to be able to boot back
-into your machine in single user mode and restore your
-<TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> back to the original state they were in if
-you get frustrated with the way things are going. ;-)</P
-><P
->The latest version of SAMBA (version 3.0 as of this writing), now
-includes a functioning winbindd daemon. Please refer to the
-<A
-HREF="http://samba.org/"
-TARGET="_top"
->main SAMBA web page</A
-> or,
-better yet, your closest SAMBA mirror site for instructions on
-downloading the source code.</P
-><P
->To allow Domain users the ability to access SAMBA shares and
-files, as well as potentially other services provided by your
-SAMBA machine, PAM (pluggable authentication modules) must
-be setup properly on your machine. In order to compile the
-winbind modules, you should have at least the pam libraries resident
-on your system. For recent RedHat systems (7.1, for instance), that
-means <TT
-CLASS="FILENAME"
->pam-0.74-22</TT
->. For best results, it is helpful to also
-install the development packages in <TT
-CLASS="FILENAME"
->pam-devel-0.74-22</TT
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2465"
-></A
->14.5.3. Testing Things Out</H3
-><P
->Before starting, it is probably best to kill off all the SAMBA
-related daemons running on your server. Kill off all <B
-CLASS="COMMAND"
->smbd</B
->,
-<B
-CLASS="COMMAND"
->nmbd</B
->, and <B
-CLASS="COMMAND"
->winbindd</B
-> processes that may
-be running. To use PAM, you will want to make sure that you have the
-standard PAM package (for RedHat) which supplies the <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
->
-directory structure, including the pam modules are used by pam-aware
-services, several pam libraries, and the <TT
-CLASS="FILENAME"
->/usr/doc</TT
->
-and <TT
-CLASS="FILENAME"
->/usr/man</TT
-> entries for pam. Winbind built better
-in SAMBA if the pam-devel package was also installed. This package includes
-the header files needed to compile pam-aware applications. For instance,
-my RedHat system has both <TT
-CLASS="FILENAME"
->pam-0.74-22</TT
-> and
-<TT
-CLASS="FILENAME"
->pam-devel-0.74-22</TT
-> RPMs installed.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2476"
-></A
->14.5.3.1. Configure and compile SAMBA</H4
-><P
->The configuration and compilation of SAMBA is pretty straightforward.
-The first three steps may not be necessary depending upon
-whether or not you have previously built the Samba binaries.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->autoconf</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make clean</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->rm config.cache</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->./configure</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make install</B
-></PRE
-></P
-><P
->This will, by default, install SAMBA in <TT
-CLASS="FILENAME"
->/usr/local/samba</TT
->.
-See the main SAMBA documentation if you want to install SAMBA somewhere else.
-It will also build the winbindd executable and libraries. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2495"
-></A
->14.5.3.2. Configure <TT
-CLASS="FILENAME"
->nsswitch.conf</TT
-> and the
-winbind libraries</H4
-><P
->The libraries needed to run the <B
-CLASS="COMMAND"
->winbindd</B
-> daemon
-through nsswitch need to be copied to their proper locations, so</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->cp ../samba/source/nsswitch/libnss_winbind.so /lib</B
-></P
-><P
->I also found it necessary to make the following symbolic link:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2</B
-></P
-><P
->And, in the case of Sun solaris:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/libnss_winbind.so.1</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.1</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.2</B
-></P
-><P
->Now, as root you need to edit <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> to
-allow user and group entries to be visible from the <B
-CLASS="COMMAND"
->winbindd</B
->
-daemon. My <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> file look like
-this after editing:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> passwd: files winbind
- shadow: files
- group: files winbind</PRE
-></P
-><P
->
-The libraries needed by the winbind daemon will be automatically
-entered into the <B
-CLASS="COMMAND"
->ldconfig</B
-> cache the next time
-your system reboots, but it
-is faster (and you don't need to reboot) if you do it manually:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/sbin/ldconfig -v | grep winbind</B
-></P
-><P
->This makes <TT
-CLASS="FILENAME"
->libnss_winbind</TT
-> available to winbindd
-and echos back a check to you.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2528"
-></A
->14.5.3.3. Configure smb.conf</H4
-><P
->Several parameters are needed in the smb.conf file to control
-the behavior of <B
-CLASS="COMMAND"
->winbindd</B
->. Configure
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> These are described in more detail in
-the <A
-HREF="winbindd.8.html"
-TARGET="_top"
->winbindd(8)</A
-> man page. My
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> file was modified to
-include the following entries in the [global] section:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- &lt;...&gt;
- # separate domain and username with '+', like DOMAIN+username
- <A
-HREF="winbindd.8.html#WINBINDSEPARATOR"
-TARGET="_top"
->winbind separator</A
-> = +
- # use uids from 10000 to 20000 for domain users
- <A
-HREF="winbindd.8.html#WINBINDUID"
-TARGET="_top"
->winbind uid</A
-> = 10000-20000
- # use gids from 10000 to 20000 for domain groups
- <A
-HREF="winbindd.8.html#WINBINDGID"
-TARGET="_top"
->winbind gid</A
-> = 10000-20000
- # allow enumeration of winbind users and groups
- <A
-HREF="winbindd.8.html#WINBINDENUMUSERS"
-TARGET="_top"
->winbind enum users</A
-> = yes
- <A
-HREF="winbindd.8.html#WINBINDENUMGROUP"
-TARGET="_top"
->winbind enum groups</A
-> = yes
- # give winbind users a real shell (only needed if they have telnet access)
- <A
-HREF="winbindd.8.html#TEMPLATEHOMEDIR"
-TARGET="_top"
->template homedir</A
-> = /home/winnt/%D/%U
- <A
-HREF="winbindd.8.html#TEMPLATESHELL"
-TARGET="_top"
->template shell</A
-> = /bin/bash</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2544"
-></A
->14.5.3.4. Join the SAMBA server to the PDC domain</H4
-><P
->Enter the following command to make the SAMBA server join the
-PDC domain, where <TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
-> is the name of
-your Windows domain and <TT
-CLASS="REPLACEABLE"
-><I
->Administrator</I
-></TT
-> is
-a domain user who has administrative privileges in the domain.</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/net join -S PDC -U Administrator</B
-></P
-><P
->The proper response to the command should be: "Joined the domain
-<TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
->" where <TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
->
-is your DOMAIN name.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2555"
-></A
->14.5.3.5. Start up the winbindd daemon and test it!</H4
-><P
->Eventually, you will want to modify your smb startup script to
-automatically invoke the winbindd daemon when the other parts of
-SAMBA start, but it is possible to test out just the winbind
-portion first. To start up winbind services, enter the following
-command as root:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/winbindd</B
-></P
-><P
->I'm always paranoid and like to make sure the daemon
-is really running...</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ps -ae | grep winbindd</B
-></P
-><P
->This command should produce output like this, if the daemon is running</P
-><P
->3025 ? 00:00:00 winbindd</P
-><P
->Now... for the real test, try to get some information about the
-users on your PDC</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/wbinfo -u</B
-></P
-><P
->
-This should echo back a list of users on your Windows users on
-your PDC. For example, I get the following response:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->CEO+Administrator
-CEO+burdell
-CEO+Guest
-CEO+jt-ad
-CEO+krbtgt
-CEO+TsInternetUser</PRE
-></P
-><P
->Obviously, I have named my domain 'CEO' and my <TT
-CLASS="PARAMETER"
-><I
->winbind
-separator</I
-></TT
-> is '+'.</P
-><P
->You can do the same sort of thing to get group information from
-the PDC:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/wbinfo -g</B
->
-CEO+Domain Admins
-CEO+Domain Users
-CEO+Domain Guests
-CEO+Domain Computers
-CEO+Domain Controllers
-CEO+Cert Publishers
-CEO+Schema Admins
-CEO+Enterprise Admins
-CEO+Group Policy Creator Owners</PRE
-></P
-><P
->The function 'getent' can now be used to get unified
-lists of both local and PDC users and groups.
-Try the following command:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->getent passwd</B
-></P
-><P
->You should get a list that looks like your <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->
-list followed by the domain users with their new uids, gids, home
-directories and default shells.</P
-><P
->The same thing can be done for groups with the command</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->getent group</B
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2591"
-></A
->14.5.3.6. Fix the init.d startup scripts</H4
-><DIV
-CLASS="SECT4"
-><H5
-CLASS="SECT4"
-><A
-NAME="AEN2593"
-></A
->14.5.3.6.1. Linux</H5
-><P
->The <B
-CLASS="COMMAND"
->winbindd</B
-> daemon needs to start up after the
-<B
-CLASS="COMMAND"
->smbd</B
-> and <B
-CLASS="COMMAND"
->nmbd</B
-> daemons are running.
-To accomplish this task, you need to modify the startup scripts of your system. They are located at <TT
-CLASS="FILENAME"
->/etc/init.d/smb</TT
-> in RedHat and
-<TT
-CLASS="FILENAME"
->/etc/init.d/samba</TT
-> in Debian.
-script to add commands to invoke this daemon in the proper sequence. My
-startup script starts up <B
-CLASS="COMMAND"
->smbd</B
->,
-<B
-CLASS="COMMAND"
->nmbd</B
->, and <B
-CLASS="COMMAND"
->winbindd</B
-> from the
-<TT
-CLASS="FILENAME"
->/usr/local/samba/bin</TT
-> directory directly. The 'start'
-function in the script looks like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->start() {
- KIND="SMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/smbd $SMBDOPTIONS
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/nmbd $NMBDOPTIONS
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/winbindd
- RETVAL3=$?
- echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; touch /var/lock/subsys/smb || \
- RETVAL=1
- return $RETVAL
-}</PRE
-></P
-><P
->The 'stop' function has a corresponding entry to shut down the
-services and look s like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->stop() {
- KIND="SMB"
- echo -n $"Shutting down $KIND services: "
- killproc smbd
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Shutting down $KIND services: "
- killproc nmbd
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Shutting down $KIND services: "
- killproc winbindd
- RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/smb
- echo ""
- return $RETVAL
-}</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2610"
-></A
->14.5.3.6.2. Solaris</H5
-><P
->On solaris, you need to modify the
-<TT
-CLASS="FILENAME"
->/etc/init.d/samba.server</TT
-> startup script. It usually
-only starts smbd and nmbd but should now start winbindd too. If you
-have samba installed in <TT
-CLASS="FILENAME"
->/usr/local/samba/bin</TT
->,
-the file could contains something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->##
-## samba.server
-##
-
-if [ ! -d /usr/bin ]
-then # /usr not mounted
- exit
-fi
-
-killproc() { # kill the named process(es)
- pid=`/usr/bin/ps -e |
- /usr/bin/grep -w $1 |
- /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
- [ "$pid" != "" ] &amp;&amp; kill $pid
-}
-
-# Start/stop processes required for samba server
-
-case "$1" in
-
-'start')
-#
-# Edit these lines to suit your installation (paths, workgroup, host)
-#
-echo Starting SMBD
- /usr/local/samba/bin/smbd -D -s \
- /usr/local/samba/smb.conf
-
-echo Starting NMBD
- /usr/local/samba/bin/nmbd -D -l \
- /usr/local/samba/var/log -s /usr/local/samba/smb.conf
-
-echo Starting Winbind Daemon
- /usr/local/samba/bin/winbindd
- ;;
-
-'stop')
- killproc nmbd
- killproc smbd
- killproc winbindd
- ;;
-
-*)
- echo "Usage: /etc/init.d/samba.server { start | stop }"
- ;;
-esac</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2617"
-></A
->14.5.3.6.3. Restarting</H5
-><P
->If you restart the <B
-CLASS="COMMAND"
->smbd</B
->, <B
-CLASS="COMMAND"
->nmbd</B
->,
-and <B
-CLASS="COMMAND"
->winbindd</B
-> daemons at this point, you
-should be able to connect to the samba server as a domain member just as
-if you were a local user.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2623"
-></A
->14.5.3.7. Configure Winbind and PAM</H4
-><P
->If you have made it this far, you know that winbindd and samba are working
-together. If you want to use winbind to provide authentication for other
-services, keep reading. The pam configuration files need to be altered in
-this step. (Did you remember to make backups of your original
-<TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> files? If not, do it now.)</P
-><P
->You will need a pam module to use winbindd with these other services. This
-module will be compiled in the <TT
-CLASS="FILENAME"
->../source/nsswitch</TT
-> directory
-by invoking the command</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make nsswitch/pam_winbind.so</B
-></P
-><P
->from the <TT
-CLASS="FILENAME"
->../source</TT
-> directory. The
-<TT
-CLASS="FILENAME"
->pam_winbind.so</TT
-> file should be copied to the location of
-your other pam security modules. On my RedHat system, this was the
-<TT
-CLASS="FILENAME"
->/lib/security</TT
-> directory. On Solaris, the pam security
-modules reside in <TT
-CLASS="FILENAME"
->/usr/lib/security</TT
->.</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->cp ../samba/source/nsswitch/pam_winbind.so /lib/security</B
-></P
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2640"
-></A
->14.5.3.7.1. Linux/FreeBSD-specific PAM configuration</H5
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/samba</TT
-> file does not need to be changed. I
-just left this fileas it was:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_stack.so service=system-auth
-account required /lib/security/pam_stack.so service=system-auth</PRE
-></P
-><P
->The other services that I modified to allow the use of winbind
-as an authentication service were the normal login on the console (or a terminal
-session), telnet logins, and ftp service. In order to enable these
-services, you may first need to change the entries in
-<TT
-CLASS="FILENAME"
->/etc/xinetd.d</TT
-> (or <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->).
-RedHat 7.1 uses the new xinetd.d structure, in this case you need
-to change the lines in <TT
-CLASS="FILENAME"
->/etc/xinetd.d/telnet</TT
->
-and <TT
-CLASS="FILENAME"
->/etc/xinetd.d/wu-ftp</TT
-> from </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->enable = no</PRE
-></P
-><P
->to</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->enable = yes</PRE
-></P
-><P
->
-For ftp services to work properly, you will also need to either
-have individual directories for the domain users already present on
-the server, or change the home directory template to a general
-directory for all domain users. These can be easily set using
-the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> global entry
-<B
-CLASS="COMMAND"
->template homedir</B
->.</P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/ftp</TT
-> file can be changed
-to allow winbind ftp access in a manner similar to the
-samba file. My <TT
-CLASS="FILENAME"
->/etc/pam.d/ftp</TT
-> file was
-changed to look like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
-auth sufficient /lib/security/pam_winbind.so
-auth required /lib/security/pam_stack.so service=system-auth
-auth required /lib/security/pam_shells.so
-account sufficient /lib/security/pam_winbind.so
-account required /lib/security/pam_stack.so service=system-auth
-session required /lib/security/pam_stack.so service=system-auth</PRE
-></P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/login</TT
-> file can be changed nearly the
-same way. It now looks like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_securetty.so
-auth sufficient /lib/security/pam_winbind.so
-auth sufficient /lib/security/pam_unix.so use_first_pass
-auth required /lib/security/pam_stack.so service=system-auth
-auth required /lib/security/pam_nologin.so
-account sufficient /lib/security/pam_winbind.so
-account required /lib/security/pam_stack.so service=system-auth
-password required /lib/security/pam_stack.so service=system-auth
-session required /lib/security/pam_stack.so service=system-auth
-session optional /lib/security/pam_console.so</PRE
-></P
-><P
->In this case, I added the <B
-CLASS="COMMAND"
->auth sufficient /lib/security/pam_winbind.so</B
->
-lines as before, but also added the <B
-CLASS="COMMAND"
->required pam_securetty.so</B
->
-above it, to disallow root logins over the network. I also added a
-<B
-CLASS="COMMAND"
->sufficient /lib/security/pam_unix.so use_first_pass</B
->
-line after the <B
-CLASS="COMMAND"
->winbind.so</B
-> line to get rid of annoying
-double prompts for passwords.</P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2673"
-></A
->14.5.3.7.2. Solaris-specific configuration</H5
-><P
->The /etc/pam.conf needs to be changed. I changed this file so that my Domain
-users can logon both locally as well as telnet.The following are the changes
-that I made.You can customize the pam.conf file as per your requirements,but
-be sure of those changes because in the worst case it will leave your system
-nearly impossible to boot.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#
-#ident "@(#)pam.conf 1.14 99/09/16 SMI"
-#
-# Copyright (c) 1996-1999, Sun Microsystems, Inc.
-# All Rights Reserved.
-#
-# PAM configuration
-#
-# Authentication management
-#
-login auth required /usr/lib/security/pam_winbind.so
-login auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-login auth required /usr/lib/security/$ISA/pam_dial_auth.so.1 try_first_pass
-#
-rlogin auth sufficient /usr/lib/security/pam_winbind.so
-rlogin auth sufficient /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-rlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-dtlogin auth sufficient /usr/lib/security/pam_winbind.so
-dtlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-rsh auth required /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-other auth sufficient /usr/lib/security/pam_winbind.so
-other auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-# Account management
-#
-login account sufficient /usr/lib/security/pam_winbind.so
-login account requisite /usr/lib/security/$ISA/pam_roles.so.1
-login account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-dtlogin account sufficient /usr/lib/security/pam_winbind.so
-dtlogin account requisite /usr/lib/security/$ISA/pam_roles.so.1
-dtlogin account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-other account sufficient /usr/lib/security/pam_winbind.so
-other account requisite /usr/lib/security/$ISA/pam_roles.so.1
-other account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Session management
-#
-other session required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Password management
-#
-#other password sufficient /usr/lib/security/pam_winbind.so
-other password required /usr/lib/security/$ISA/pam_unix.so.1
-dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Support for Kerberos V5 authentication (uncomment to use Kerberos)
-#
-#rlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#login auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#other auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other session optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other password optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass</PRE
-></P
-><P
->I also added a try_first_pass line after the winbind.so line to get rid of
-annoying double prompts for passwords.</P
-><P
->Now restart your Samba and try connecting through your application that you
-configured in the pam.conf.</P
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2680"
-></A
->14.6. Limitations</H2
-><P
->Winbind has a number of limitations in its current
- released version that we hope to overcome in future
- releases:</P
-><P
-></P
-><UL
-><LI
-><P
->Winbind is currently only available for
- the Linux, Solaris and IRIX operating systems, although ports to other operating
- systems are certainly possible. For such ports to be feasible,
- we require the C library of the target operating system to
- support the Name Service Switch and Pluggable Authentication
- Modules systems. This is becoming more common as NSS and
- PAM gain support among UNIX vendors.</P
-></LI
-><LI
-><P
->The mappings of Windows NT RIDs to UNIX ids
- is not made algorithmically and depends on the order in which
- unmapped users or groups are seen by winbind. It may be difficult
- to recover the mappings of rid to UNIX id mapping if the file
- containing this information is corrupted or destroyed.</P
-></LI
-><LI
-><P
->Currently the winbind PAM module does not take
- into account possible workstation and logon time restrictions
- that may be been set for Windows NT users, this is
- instead up to the PDC to enforce.</P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2690"
-></A
->14.7. Conclusion</H2
-><P
->The winbind system, through the use of the Name Service
- Switch, Pluggable Authentication Modules, and appropriate
- Microsoft RPC calls have allowed us to provide seamless
- integration of Microsoft Windows NT domain users on a
- UNIX system. The result is a great reduction in the administrative
- cost of running a mixed UNIX and NT network.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="IMPROVED-BROWSING"
-></A
->Chapter 15. Improved browsing in samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2700"
-></A
->15.1. Overview of browsing</H2
-><P
->SMB networking provides a mechanism by which clients can access a list
-of machines in a network, a so-called "browse list". This list
-contains machines that are ready to offer file and/or print services
-to other machines within the network. Thus it does not include
-machines which aren't currently able to do server tasks. The browse
-list is heavily used by all SMB clients. Configuration of SMB
-browsing has been problematic for some Samba users, hence this
-document.</P
-><P
->Browsing will NOT work if name resolution from NetBIOS names to IP
-addresses does not function correctly. Use of a WINS server is highly
-recommended to aid the resolution of NetBIOS (SMB) names to IP addresses.
-WINS allows remote segment clients to obtain NetBIOS name_type information
-that can NOT be provided by any other means of name resolution.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2704"
-></A
->15.2. Browsing support in samba</H2
-><P
->Samba now fully supports browsing. The browsing is supported by nmbd
-and is also controlled by options in the smb.conf file (see smb.conf(5)).</P
-><P
->Samba can act as a local browse master for a workgroup and the ability
-for samba to support domain logons and scripts is now available. See
-DOMAIN.txt for more information on domain logons.</P
-><P
->Samba can also act as a domain master browser for a workgroup. This
-means that it will collate lists from local browse masters into a
-wide area network server list. In order for browse clients to
-resolve the names they may find in this list, it is recommended that
-both samba and your clients use a WINS server.</P
-><P
->Note that you should NOT set Samba to be the domain master for a
-workgroup that has the same name as an NT Domain: on each wide area
-network, you must only ever have one domain master browser per workgroup,
-regardless of whether it is NT, Samba or any other type of domain master
-that is providing this service.</P
-><P
->[Note that nmbd can be configured as a WINS server, but it is not
-necessary to specifically use samba as your WINS server. NTAS can
-be configured as your WINS server. In a mixed NT server and
-samba environment on a Wide Area Network, it is recommended that
-you use the NT server's WINS server capabilities. In a samba-only
-environment, it is recommended that you use one and only one nmbd
-as your WINS server].</P
-><P
->To get browsing to work you need to run nmbd as usual, but will need
-to use the "workgroup" option in smb.conf to control what workgroup
-Samba becomes a part of.</P
-><P
->Samba also has a useful option for a Samba server to offer itself for
-browsing on another subnet. It is recommended that this option is only
-used for 'unusual' purposes: announcements over the internet, for
-example. See "remote announce" in the smb.conf man page. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2713"
-></A
->15.3. Problem resolution</H2
-><P
->If something doesn't work then hopefully the log.nmb file will help
-you track down the problem. Try a debug level of 2 or 3 for finding
-problems. Also note that the current browse list usually gets stored
-in text form in a file called browse.dat.</P
-><P
->Note that if it doesn't work for you, then you should still be able to
-type the server name as \\SERVER in filemanager then hit enter and
-filemanager should display the list of available shares.</P
-><P
->Some people find browsing fails because they don't have the global
-"guest account" set to a valid account. Remember that the IPC$
-connection that lists the shares is done as guest, and thus you must
-have a valid guest account.</P
-><P
->Also, a lot of people are getting bitten by the problem of too many
-parameters on the command line of nmbd in inetd.conf. This trick is to
-not use spaces between the option and the parameter (eg: -d2 instead
-of -d 2), and to not use the -B and -N options. New versions of nmbd
-are now far more likely to correctly find your broadcast and network
-address, so in most cases these aren't needed.</P
-><P
->The other big problem people have is that their broadcast address,
-netmask or IP address is wrong (specified with the "interfaces" option
-in smb.conf)</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2720"
-></A
->15.4. Browsing across subnets</H2
-><P
->With the release of Samba 1.9.17(alpha1 and above) Samba has been
-updated to enable it to support the replication of browse lists
-across subnet boundaries. New code and options have been added to
-achieve this. This section describes how to set this feature up
-in different settings.</P
-><P
->To see browse lists that span TCP/IP subnets (ie. networks separated
-by routers that don't pass broadcast traffic) you must set up at least
-one WINS server. The WINS server acts as a DNS for NetBIOS names, allowing
-NetBIOS name to IP address translation to be done by doing a direct
-query of the WINS server. This is done via a directed UDP packet on
-port 137 to the WINS server machine. The reason for a WINS server is
-that by default, all NetBIOS name to IP address translation is done
-by broadcasts from the querying machine. This means that machines
-on one subnet will not be able to resolve the names of machines on
-another subnet without using a WINS server.</P
-><P
->Remember, for browsing across subnets to work correctly, all machines,
-be they Windows 95, Windows NT, or Samba servers must have the IP address
-of a WINS server given to them by a DHCP server, or by manual configuration
-(for Win95 and WinNT, this is in the TCP/IP Properties, under Network
-settings) for Samba this is in the smb.conf file.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2725"
-></A
->15.4.1. How does cross subnet browsing work ?</H3
-><P
->Cross subnet browsing is a complicated dance, containing multiple
-moving parts. It has taken Microsoft several years to get the code
-that achieves this correct, and Samba lags behind in some areas.
-However, with the 1.9.17 release, Samba is capable of cross subnet
-browsing when configured correctly.</P
-><P
->Consider a network set up as follows :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> (DMB)
- N1_A N1_B N1_C N1_D N1_E
- | | | | |
- -------------------------------------------------------
- | subnet 1 |
- +---+ +---+
- |R1 | Router 1 Router 2 |R2 |
- +---+ +---+
- | |
- | subnet 2 subnet 3 |
- -------------------------- ------------------------------------
- | | | | | | | |
- N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D
- (WINS)</PRE
-></P
-><P
->Consisting of 3 subnets (1, 2, 3) connected by two routers
-(R1, R2) - these do not pass broadcasts. Subnet 1 has 5 machines
-on it, subnet 2 has 4 machines, subnet 3 has 4 machines. Assume
-for the moment that all these machines are configured to be in the
-same workgroup (for simplicities sake). Machine N1_C on subnet 1
-is configured as Domain Master Browser (ie. it will collate the
-browse lists for the workgroup). Machine N2_D is configured as
-WINS server and all the other machines are configured to register
-their NetBIOS names with it.</P
-><P
->As all these machines are booted up, elections for master browsers
-will take place on each of the three subnets. Assume that machine
-N1_C wins on subnet 1, N2_B wins on subnet 2, and N3_D wins on
-subnet 3 - these machines are known as local master browsers for
-their particular subnet. N1_C has an advantage in winning as the
-local master browser on subnet 1 as it is set up as Domain Master
-Browser.</P
-><P
->On each of the three networks, machines that are configured to
-offer sharing services will broadcast that they are offering
-these services. The local master browser on each subnet will
-receive these broadcasts and keep a record of the fact that
-the machine is offering a service. This list of records is
-the basis of the browse list. For this case, assume that
-all the machines are configured to offer services so all machines
-will be on the browse list.</P
-><P
->For each network, the local master browser on that network is
-considered 'authoritative' for all the names it receives via
-local broadcast. This is because a machine seen by the local
-master browser via a local broadcast must be on the same
-network as the local master browser and thus is a 'trusted'
-and 'verifiable' resource. Machines on other networks that
-the local master browsers learn about when collating their
-browse lists have not been directly seen - these records are
-called 'non-authoritative'.</P
-><P
->At this point the browse lists look as follows (these are
-the machines you would see in your network neighborhood if
-you looked in it on a particular network right now).</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D</PRE
-></P
-><P
->Note that at this point all the subnets are separate, no
-machine is seen across any of the subnets.</P
-><P
->Now examine subnet 2. As soon as N2_B has become the local
-master browser it looks for a Domain master browser to synchronize
-its browse list with. It does this by querying the WINS server
-(N2_D) for the IP address associated with the NetBIOS name
-WORKGROUP&gt;1B&lt;. This name was registerd by the Domain master
-browser (N1_C) with the WINS server as soon as it was booted.</P
-><P
->Once N2_B knows the address of the Domain master browser it
-tells it that is the local master browser for subnet 2 by
-sending a MasterAnnouncement packet as a UDP port 138 packet.
-It then synchronizes with it by doing a NetServerEnum2 call. This
-tells the Domain Master Browser to send it all the server
-names it knows about. Once the domain master browser receives
-the MasterAnnouncement packet it schedules a synchronization
-request to the sender of that packet. After both synchronizations
-are done the browse lists look like :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->At this point users looking in their network neighborhood on
-subnets 1 or 2 will see all the servers on both, users on
-subnet 3 will still only see the servers on their own subnet.</P
-><P
->The same sequence of events that occured for N2_B now occurs
-for the local master browser on subnet 3 (N3_D). When it
-synchronizes browse lists with the domain master browser (N1_A)
-it gets both the server entries on subnet 1, and those on
-subnet 2. After N3_D has synchronized with N1_C and vica-versa
-the browse lists look like.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*),
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->At this point users looking in their network neighborhood on
-subnets 1 or 3 will see all the servers on all sunbets, users on
-subnet 2 will still only see the servers on subnets 1 and 2, but not 3.</P
-><P
->Finally, the local master browser for subnet 2 (N2_B) will sync again
-with the domain master browser (N1_C) and will recieve the missing
-server entries. Finally - and as a steady state (if no machines
-are removed or shut off) the browse lists will look like :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*),
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->Synchronizations between the domain master browser and local
-master browsers will continue to occur, but this should be a
-steady state situation.</P
-><P
->If either router R1 or R2 fails the following will occur:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Names of computers on each side of the inaccessible network fragments
- will be maintained for as long as 36 minutes, in the network neighbourhood
- lists.
- </P
-></LI
-><LI
-><P
-> Attempts to connect to these inaccessible computers will fail, but the
- names will not be removed from the network neighbourhood lists.
- </P
-></LI
-><LI
-><P
-> If one of the fragments is cut off from the WINS server, it will only
- be able to access servers on its local subnet, by using subnet-isolated
- broadcast NetBIOS name resolution. The effects are similar to that of
- losing access to a DNS server.
- </P
-></LI
-></OL
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2760"
-></A
->15.5. Setting up a WINS server</H2
-><P
->Either a Samba machine or a Windows NT Server machine may be set up
-as a WINS server. To set a Samba machine to be a WINS server you must
-add the following option to the smb.conf file on the selected machine :
-in the [globals] section add the line </P
-><P
-><B
-CLASS="COMMAND"
-> wins support = yes</B
-></P
-><P
->Versions of Samba previous to 1.9.17 had this parameter default to
-yes. If you have any older versions of Samba on your network it is
-strongly suggested you upgrade to 1.9.17 or above, or at the very
-least set the parameter to 'no' on all these machines.</P
-><P
->Machines with "<B
-CLASS="COMMAND"
->wins support = yes</B
->" will keep a list of
-all NetBIOS names registered with them, acting as a DNS for NetBIOS names.</P
-><P
->You should set up only ONE wins server. Do NOT set the
-"<B
-CLASS="COMMAND"
->wins support = yes</B
->" option on more than one Samba
-server.</P
-><P
->To set up a Windows NT Server as a WINS server you need to set up
-the WINS service - see your NT documentation for details. Note that
-Windows NT WINS Servers can replicate to each other, allowing more
-than one to be set up in a complex subnet environment. As Microsoft
-refuse to document these replication protocols Samba cannot currently
-participate in these replications. It is possible in the future that
-a Samba-&#62;Samba WINS replication protocol may be defined, in which
-case more than one Samba machine could be set up as a WINS server
-but currently only one Samba server should have the "wins support = yes"
-parameter set.</P
-><P
->After the WINS server has been configured you must ensure that all
-machines participating on the network are configured with the address
-of this WINS server. If your WINS server is a Samba machine, fill in
-the Samba machine IP address in the "Primary WINS Server" field of
-the "Control Panel-&#62;Network-&#62;Protocols-&#62;TCP-&#62;WINS Server" dialogs
-in Windows 95 or Windows NT. To tell a Samba server the IP address
-of the WINS server add the following line to the [global] section of
-all smb.conf files :</P
-><P
-><B
-CLASS="COMMAND"
->wins server = &gt;name or IP address&lt;</B
-></P
-><P
->where &gt;name or IP address&lt; is either the DNS name of the WINS server
-machine or its IP address.</P
-><P
->Note that this line MUST NOT BE SET in the smb.conf file of the Samba
-server acting as the WINS server itself. If you set both the
-"<B
-CLASS="COMMAND"
->wins support = yes</B
->" option and the
-"<B
-CLASS="COMMAND"
->wins server = &gt;name&lt;</B
->" option then
-nmbd will fail to start.</P
-><P
->There are two possible scenarios for setting up cross subnet browsing.
-The first details setting up cross subnet browsing on a network containing
-Windows 95, Samba and Windows NT machines that are not configured as
-part of a Windows NT Domain. The second details setting up cross subnet
-browsing on networks that contain NT Domains.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2779"
-></A
->15.6. Setting up Browsing in a WORKGROUP</H2
-><P
->To set up cross subnet browsing on a network containing machines
-in up to be in a WORKGROUP, not an NT Domain you need to set up one
-Samba server to be the Domain Master Browser (note that this is *NOT*
-the same as a Primary Domain Controller, although in an NT Domain the
-same machine plays both roles). The role of a Domain master browser is
-to collate the browse lists from local master browsers on all the
-subnets that have a machine participating in the workgroup. Without
-one machine configured as a domain master browser each subnet would
-be an isolated workgroup, unable to see any machines on any other
-subnet. It is the presense of a domain master browser that makes
-cross subnet browsing possible for a workgroup.</P
-><P
->In an WORKGROUP environment the domain master browser must be a
-Samba server, and there must only be one domain master browser per
-workgroup name. To set up a Samba server as a domain master browser,
-set the following option in the [global] section of the smb.conf file :</P
-><P
-><B
-CLASS="COMMAND"
->domain master = yes</B
-></P
-><P
->The domain master browser should also preferrably be the local master
-browser for its own subnet. In order to achieve this set the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = yes
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->The domain master browser may be the same machine as the WINS
-server, if you require.</P
-><P
->Next, you should ensure that each of the subnets contains a
-machine that can act as a local master browser for the
-workgroup. Any NT machine should be able to do this, as will
-Windows 95 machines (although these tend to get rebooted more
-often, so it's not such a good idea to use these). To make a
-Samba server a local master browser set the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->Do not do this for more than one Samba server on each subnet,
-or they will war with each other over which is to be the local
-master browser.</P
-><P
->The "local master" parameter allows Samba to act as a local master
-browser. The "preferred master" causes nmbd to force a browser
-election on startup and the "os level" parameter sets Samba high
-enough so that it should win any browser elections.</P
-><P
->If you have an NT machine on the subnet that you wish to
-be the local master browser then you can disable Samba from
-becoming a local master browser by setting the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = no
- preferred master = no
- os level = 0</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2797"
-></A
->15.7. Setting up Browsing in a DOMAIN</H2
-><P
->If you are adding Samba servers to a Windows NT Domain then
-you must not set up a Samba server as a domain master browser.
-By default, a Windows NT Primary Domain Controller for a Domain
-name is also the Domain master browser for that name, and many
-things will break if a Samba server registers the Domain master
-browser NetBIOS name (DOMAIN&gt;1B&lt;) with WINS instead of the PDC.</P
-><P
->For subnets other than the one containing the Windows NT PDC
-you may set up Samba servers as local master browsers as
-described. To make a Samba server a local master browser set
-the following options in the [global] section of the smb.conf
-file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->If you wish to have a Samba server fight the election with machines
-on the same subnet you may set the "os level" parameter to lower
-levels. By doing this you can tune the order of machines that
-will become local master browsers if they are running. For
-more details on this see the section "FORCING SAMBA TO BE THE MASTER"
-below.</P
-><P
->If you have Windows NT machines that are members of the domain
-on all subnets, and you are sure they will always be running then
-you can disable Samba from taking part in browser elections and
-ever becoming a local master browser by setting following options
-in the [global] section of the smb.conf file :</P
-><P
-><B
-CLASS="COMMAND"
-> domain master = no
- local master = no
- preferred master = no
- os level = 0</B
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2807"
-></A
->15.8. Forcing samba to be the master</H2
-><P
->Who becomes the "master browser" is determined by an election process
-using broadcasts. Each election packet contains a number of parameters
-which determine what precedence (bias) a host should have in the
-election. By default Samba uses a very low precedence and thus loses
-elections to just about anyone else.</P
-><P
->If you want Samba to win elections then just set the "os level" global
-option in smb.conf to a higher number. It defaults to 0. Using 34
-would make it win all elections over every other system (except other
-samba systems!)</P
-><P
->A "os level" of 2 would make it beat WfWg and Win95, but not NTAS. A
-NTAS domain controller uses level 32.</P
-><P
->The maximum os level is 255</P
-><P
->If you want samba to force an election on startup, then set the
-"preferred master" global option in smb.conf to "yes". Samba will
-then have a slight advantage over other potential master browsers
-that are not preferred master browsers. Use this parameter with
-care, as if you have two hosts (whether they are windows 95 or NT or
-samba) on the same local subnet both set with "preferred master" to
-"yes", then periodically and continually they will force an election
-in order to become the local master browser.</P
-><P
->If you want samba to be a "domain master browser", then it is
-recommended that you also set "preferred master" to "yes", because
-samba will not become a domain master browser for the whole of your
-LAN or WAN if it is not also a local master browser on its own
-broadcast isolated subnet.</P
-><P
->It is possible to configure two samba servers to attempt to become
-the domain master browser for a domain. The first server that comes
-up will be the domain master browser. All other samba servers will
-attempt to become the domain master browser every 5 minutes. They
-will find that another samba server is already the domain master
-browser and will fail. This provides automatic redundancy, should
-the current domain master browser fail.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2816"
-></A
->15.9. Making samba the domain master</H2
-><P
->The domain master is responsible for collating the browse lists of
-multiple subnets so that browsing can occur between subnets. You can
-make samba act as the domain master by setting "domain master = yes"
-in smb.conf. By default it will not be a domain master.</P
-><P
->Note that you should NOT set Samba to be the domain master for a
-workgroup that has the same name as an NT Domain.</P
-><P
->When samba is the domain master and the master browser it will listen
-for master announcements (made roughly every twelve minutes) from local
-master browsers on other subnets and then contact them to synchronise
-browse lists.</P
-><P
->If you want samba to be the domain master then I suggest you also set
-the "os level" high enough to make sure it wins elections, and set
-"preferred master" to "yes", to get samba to force an election on
-startup.</P
-><P
->Note that all your servers (including samba) and clients should be
-using a WINS server to resolve NetBIOS names. If your clients are only
-using broadcasting to resolve NetBIOS names, then two things will occur:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> your local master browsers will be unable to find a domain master
- browser, as it will only be looking on the local subnet.
- </P
-></LI
-><LI
-><P
-> if a client happens to get hold of a domain-wide browse list, and
- a user attempts to access a host in that list, it will be unable to
- resolve the NetBIOS name of that host.
- </P
-></LI
-></OL
-><P
->If, however, both samba and your clients are using a WINS server, then:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> your local master browsers will contact the WINS server and, as long as
- samba has registered that it is a domain master browser with the WINS
- server, your local master browser will receive samba's ip address
- as its domain master browser.
- </P
-></LI
-><LI
-><P
-> when a client receives a domain-wide browse list, and a user attempts
- to access a host in that list, it will contact the WINS server to
- resolve the NetBIOS name of that host. as long as that host has
- registered its NetBIOS name with the same WINS server, the user will
- be able to see that host.
- </P
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2834"
-></A
->15.10. Note about broadcast addresses</H2
-><P
->If your network uses a "0" based broadcast address (for example if it
-ends in a 0) then you will strike problems. Windows for Workgroups
-does not seem to support a 0's broadcast and you will probably find
-that browsing and name lookups won't work.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2837"
-></A
->15.11. Multiple interfaces</H2
-><P
->Samba now supports machines with multiple network interfaces. If you
-have multiple interfaces then you will need to use the "interfaces"
-option in smb.conf to configure them. See smb.conf(5) for details.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="VFS"
-></A
->Chapter 16. Stackable VFS modules</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2855"
-></A
->16.1. Introduction and configuration</H2
-><P
->Since samba 3.0, samba supports stackable VFS(Virtual File System) modules.
-Samba passes each request to access the unix file system thru the loaded VFS modules.
-This chapter covers all the modules that come with the samba source and references to
-some external modules.</P
-><P
->You may have problems to compile these modules, as shared libraries are
-compiled and linked in different ways on different systems.
-They currently have been tested against GNU/linux and IRIX.</P
-><P
->To use the VFS modules, create a share similar to the one below. The
-important parameter is the <B
-CLASS="COMMAND"
->vfs object</B
-> parameter which must point to
-the exact pathname of the shared library objects. For example, to log all access
-to files and use a recycle bin:
-
-<PRE
-CLASS="PROGRAMLISTING"
-> [audit]
- comment = Audited /data directory
- path = /data
- vfs object = /path/to/audit.so /path/to/recycle.so
- writeable = yes
- browseable = yes</PRE
-></P
-><P
->The modules are used in the order they are specified.</P
-><P
->Further documentation on writing VFS modules for Samba can be found in
-the Samba Developers Guide.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2864"
-></A
->16.2. Included modules</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN2866"
-></A
->16.2.1. audit</H3
-><P
->A simple module to audit file access to the syslog
-facility. The following operations are logged:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->share</TD
-></TR
-><TR
-><TD
->connect/disconnect</TD
-></TR
-><TR
-><TD
->directory opens/create/remove</TD
-></TR
-><TR
-><TD
->file open/close/rename/unlink/chmod</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2874"
-></A
->16.2.2. recycle</H3
-><P
->A recycle-bin like modules. When used any unlink call
-will be intercepted and files moved to the recycle
-directory instead of beeing deleted.</P
-><P
->Supported options:
-<P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->vfs_recycle_bin:repository</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:keeptree</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:versions</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:touch</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:maxsize</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:exclude</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:exclude_dir</DT
-><DD
-><P
->FIXME</P
-></DD
-><DT
->vfs_recycle_bin:noversions</DT
-><DD
-><P
->FIXME</P
-></DD
-></DL
-></DIV
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2911"
-></A
->16.2.3. netatalk</H3
-><P
->A netatalk module, that will ease co-existence of samba and
-netatalk file sharing services.</P
-><P
->Advantages compared to the old netatalk module:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->it doesn't care about creating of .AppleDouble forks, just keeps ones in sync</TD
-></TR
-><TR
-><TD
->if share in smb.conf doesn't contain .AppleDouble item in hide or veto list, it will be added automatically</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2918"
-></A
->16.3. VFS modules available elsewhere</H2
-><P
->This section contains a listing of various other VFS modules that
-have been posted but don't currently reside in the Samba CVS
-tree for one reason ot another (e.g. it is easy for the maintainer
-to have his or her own CVS tree).</P
-><P
->No statemets about the stability or functionality any module
-should be implied due to its presence here.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2922"
-></A
->16.3.1. DatabaseFS</H3
-><P
->URL: <A
-HREF="http://www.css.tayloru.edu/~elorimer/databasefs/index.php"
-TARGET="_top"
->http://www.css.tayloru.edu/~elorimer/databasefs/index.php</A
-></P
-><P
->By <A
-HREF="mailto:elorimer@css.tayloru.edu"
-TARGET="_top"
->Eric Lorimer</A
->.</P
-><P
->I have created a VFS module which implements a fairly complete read-only
-filesystem. It presents information from a database as a filesystem in
-a modular and generic way to allow different databases to be used
-(originally designed for organizing MP3s under directories such as
-"Artists," "Song Keywords," etc... I have since applied it to a student
-roster database very easily). The directory structure is stored in the
-database itself and the module makes no assumptions about the database
-structure beyond the table it requires to run.</P
-><P
->Any feedback would be appreciated: comments, suggestions, patches,
-etc... If nothing else, hopefully it might prove useful for someone
-else who wishes to create a virtual filesystem.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2930"
-></A
->16.3.2. vscan</H3
-><P
->URL: <A
-HREF="http://www.openantivirus.org/"
-TARGET="_top"
->http://www.openantivirus.org/</A
-></P
-><P
->samba-vscan is a proof-of-concept module for Samba, which
-uses the VFS (virtual file system) features of Samba 2.2.x/3.0
-alphaX. Of couse, Samba has to be compiled with VFS support.
-samba-vscan supports various virus scanners and is maintained
-by Rainer Link.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="CVS-ACCESS"
-></A
->Chapter 17. Access Samba source code via CVS</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2942"
-></A
->17.1. Introduction</H2
-><P
->Samba is developed in an open environment. Developers use CVS
-(Concurrent Versioning System) to "checkin" (also known as
-"commit") new source code. Samba's various CVS branches can
-be accessed via anonymous CVS using the instructions
-detailed in this chapter.</P
-><P
->This document is a modified version of the instructions found at
-<A
-HREF="http://samba.org/samba/cvs.html"
-TARGET="_top"
->http://samba.org/samba/cvs.html</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2947"
-></A
->17.2. CVS Access to samba.org</H2
-><P
->The machine samba.org runs a publicly accessible CVS
-repository for access to the source code of several packages,
-including samba, rsync and jitterbug. There are two main ways of
-accessing the CVS server on this host.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2950"
-></A
->17.2.1. Access via CVSweb</H3
-><P
->You can access the source code via your
-favourite WWW browser. This allows you to access the contents of
-individual files in the repository and also to look at the revision
-history and commit logs of individual files. You can also ask for a diff
-listing between any two versions on the repository.</P
-><P
->Use the URL : <A
-HREF="http://samba.org/cgi-bin/cvsweb"
-TARGET="_top"
->http://samba.org/cgi-bin/cvsweb</A
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2955"
-></A
->17.2.2. Access via cvs</H3
-><P
->You can also access the source code via a
-normal cvs client. This gives you much more control over you can
-do with the repository and allows you to checkout whole source trees
-and keep them up to date via normal cvs commands. This is the
-preferred method of access if you are a developer and not
-just a casual browser.</P
-><P
->To download the latest cvs source code, point your
-browser at the URL : <A
-HREF="http://www.cyclic.com/"
-TARGET="_top"
->http://www.cyclic.com/</A
->.
-and click on the 'How to get cvs' link. CVS is free software under
-the GNU GPL (as is Samba). Note that there are several graphical CVS clients
-which provide a graphical interface to the sometimes mundane CVS commands.
-Links to theses clients are also available from http://www.cyclic.com.</P
-><P
->To gain access via anonymous cvs use the following steps.
-For this example it is assumed that you want a copy of the
-samba source code. For the other source code repositories
-on this system just substitute the correct package name</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Install a recent copy of cvs. All you really need is a
- copy of the cvs client binary.
- </P
-></LI
-><LI
-><P
-> Run the command
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot login</B
->
- </P
-><P
-> When it asks you for a password type <TT
-CLASS="USERINPUT"
-><B
->cvs</B
-></TT
->.
- </P
-></LI
-><LI
-><P
-> Run the command
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot co samba</B
->
- </P
-><P
-> This will create a directory called samba containing the
- latest samba source code (i.e. the HEAD tagged cvs branch). This
- currently corresponds to the 3.0 development tree.
- </P
-><P
-> CVS branches other HEAD can be obtained by using the <TT
-CLASS="PARAMETER"
-><I
->-r</I
-></TT
->
- and defining a tag name. A list of branch tag names can be found on the
- "Development" page of the samba web site. A common request is to obtain the
- latest 2.2 release code. This could be done by using the following command.
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot co -r SAMBA_2_2 samba</B
->
- </P
-></LI
-><LI
-><P
-> Whenever you want to merge in the latest code changes use
- the following command from within the samba directory:
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs update -d -P</B
->
- </P
-></LI
-></OL
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="GROUPMAPPING"
-></A
->Chapter 18. Group mapping HOWTO</H1
-><P
->
-Starting with Samba 3.0 alpha 2, a new group mapping function is available. The
-current method (likely to change) to manage the groups is a new command called
-<B
-CLASS="COMMAND"
->smbgroupedit</B
->.</P
-><P
->The first immediate reason to use the group mapping on a PDC, is that
-the <B
-CLASS="COMMAND"
->domain admin group</B
-> of <TT
-CLASS="FILENAME"
->smb.conf</TT
-> is
-now gone. This parameter was used to give the listed users local admin rights
-on their workstations. It was some magic stuff that simply worked but didn't
-scale very well for complex setups.</P
-><P
->Let me explain how it works on NT/W2K, to have this magic fade away.
-When installing NT/W2K on a computer, the installer program creates some users
-and groups. Notably the 'Administrators' group, and gives to that group some
-privileges like the ability to change the date and time or to kill any process
-(or close too) running on the local machine. The 'Administrator' user is a
-member of the 'Administrators' group, and thus 'inherit' the 'Administrators'
-group privileges. If a 'joe' user is created and become a member of the
-'Administrator' group, 'joe' has exactly the same rights as 'Administrator'.</P
-><P
->When a NT/W2K machine is joined to a domain, during that phase, the "Domain
-Administrators' group of the PDC is added to the 'Administrators' group of the
-workstation. Every members of the 'Domain Administrators' group 'inherit' the
-rights of the 'Administrators' group when logging on the workstation.</P
-><P
->You are now wondering how to make some of your samba PDC users members of the
-'Domain Administrators' ? That's really easy.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->create a unix group (usually in <TT
-CLASS="FILENAME"
->/etc/group</TT
->), let's call it domadm</P
-></LI
-><LI
-><P
->add to this group the users that must be Administrators. For example if you want joe,john and mary, your entry in <TT
-CLASS="FILENAME"
->/etc/group</TT
-> will look like:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->domadm:x:502:joe,john,mary</PRE
-></P
-></LI
-><LI
-><P
->Map this domadm group to the <B
-CLASS="COMMAND"
->domain admins</B
-> group by running the command:</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -c "Domain Admins" -u domadm</B
-></P
-></LI
-></OL
-><P
->You're set, joe, john and mary are domain administrators !</P
-><P
->Like the Domain Admins group, you can map any arbitrary Unix group to any NT
-group. You can also make any Unix group a domain group. For example, on a domain
-member machine (an NT/W2K or a samba server running winbind), you would like to
-give access to a certain directory to some users who are member of a group on
-your samba PDC. Flag that group as a domain group by running:</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -a unixgroup -td</B
-></P
-><P
->You can list the various groups in the mapping database like this</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -v</B
-></P
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SPEED"
-></A
->Chapter 19. Samba performance issues</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3033"
-></A
->19.1. Comparisons</H2
-><P
->The Samba server uses TCP to talk to the client. Thus if you are
-trying to see if it performs well you should really compare it to
-programs that use the same protocol. The most readily available
-programs for file transfer that use TCP are ftp or another TCP based
-SMB server.</P
-><P
->If you want to test against something like a NT or WfWg server then
-you will have to disable all but TCP on either the client or
-server. Otherwise you may well be using a totally different protocol
-(such as Netbeui) and comparisons may not be valid.</P
-><P
->Generally you should find that Samba performs similarly to ftp at raw
-transfer speed. It should perform quite a bit faster than NFS,
-although this very much depends on your system.</P
-><P
->Several people have done comparisons between Samba and Novell, NFS or
-WinNT. In some cases Samba performed the best, in others the worst. I
-suspect the biggest factor is not Samba vs some other system but the
-hardware and drivers used on the various systems. Given similar
-hardware Samba should certainly be competitive in speed with other
-systems.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3039"
-></A
->19.2. Socket options</H2
-><P
->There are a number of socket options that can greatly affect the
-performance of a TCP based server like Samba.</P
-><P
->The socket options that Samba uses are settable both on the command
-line with the -O option, or in the smb.conf file.</P
-><P
->The "socket options" section of the smb.conf manual page describes how
-to set these and gives recommendations.</P
-><P
->Getting the socket options right can make a big difference to your
-performance, but getting them wrong can degrade it by just as
-much. The correct settings are very dependent on your local network.</P
-><P
->The socket option TCP_NODELAY is the one that seems to make the
-biggest single difference for most networks. Many people report that
-adding "socket options = TCP_NODELAY" doubles the read performance of
-a Samba drive. The best explanation I have seen for this is that the
-Microsoft TCP/IP stack is slow in sending tcp ACKs.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3046"
-></A
->19.3. Read size</H2
-><P
->The option "read size" affects the overlap of disk reads/writes with
-network reads/writes. If the amount of data being transferred in
-several of the SMB commands (currently SMBwrite, SMBwriteX and
-SMBreadbraw) is larger than this value then the server begins writing
-the data before it has received the whole packet from the network, or
-in the case of SMBreadbraw, it begins writing to the network before
-all the data has been read from disk.</P
-><P
->This overlapping works best when the speeds of disk and network access
-are similar, having very little effect when the speed of one is much
-greater than the other.</P
-><P
->The default value is 16384, but very little experimentation has been
-done yet to determine the optimal value, and it is likely that the best
-value will vary greatly between systems anyway. A value over 65536 is
-pointless and will cause you to allocate memory unnecessarily.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3051"
-></A
->19.4. Max xmit</H2
-><P
->At startup the client and server negotiate a "maximum transmit" size,
-which limits the size of nearly all SMB commands. You can set the
-maximum size that Samba will negotiate using the "max xmit = " option
-in smb.conf. Note that this is the maximum size of SMB request that
-Samba will accept, but not the maximum size that the *client* will accept.
-The client maximum receive size is sent to Samba by the client and Samba
-honours this limit.</P
-><P
->It defaults to 65536 bytes (the maximum), but it is possible that some
-clients may perform better with a smaller transmit unit. Trying values
-of less than 2048 is likely to cause severe problems.</P
-><P
->In most cases the default is the best option.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3056"
-></A
->19.5. Log level</H2
-><P
->If you set the log level (also known as "debug level") higher than 2
-then you may suffer a large drop in performance. This is because the
-server flushes the log file after each operation, which can be very
-expensive. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3059"
-></A
->19.6. Read raw</H2
-><P
->The "read raw" operation is designed to be an optimised, low-latency
-file read operation. A server may choose to not support it,
-however. and Samba makes support for "read raw" optional, with it
-being enabled by default.</P
-><P
->In some cases clients don't handle "read raw" very well and actually
-get lower performance using it than they get using the conventional
-read operations. </P
-><P
->So you might like to try "read raw = no" and see what happens on your
-network. It might lower, raise or not affect your performance. Only
-testing can really tell.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3064"
-></A
->19.7. Write raw</H2
-><P
->The "write raw" operation is designed to be an optimised, low-latency
-file write operation. A server may choose to not support it,
-however. and Samba makes support for "write raw" optional, with it
-being enabled by default.</P
-><P
->Some machines may find "write raw" slower than normal write, in which
-case you may wish to change this option.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3068"
-></A
->19.8. Slow Clients</H2
-><P
->One person has reported that setting the protocol to COREPLUS rather
-than LANMAN2 gave a dramatic speed improvement (from 10k/s to 150k/s).</P
-><P
->I suspect that his PC's (386sx16 based) were asking for more data than
-they could chew. I suspect a similar speed could be had by setting
-"read raw = no" and "max xmit = 2048", instead of changing the
-protocol. Lowering the "read size" might also help.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3072"
-></A
->19.9. Slow Logins</H2
-><P
->Slow logins are almost always due to the password checking time. Using
-the lowest practical "password level" will improve things a lot. You
-could also enable the "UFC crypt" option in the Makefile.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3075"
-></A
->19.10. Client tuning</H2
-><P
->Often a speed problem can be traced to the client. The client (for
-example Windows for Workgroups) can often be tuned for better TCP
-performance.</P
-><P
->See your client docs for details. In particular, I have heard rumours
-that the WfWg options TCPWINDOWSIZE and TCPSEGMENTSIZE can have a
-large impact on performance.</P
-><P
->Also note that some people have found that setting DefaultRcvWindow in
-the [MSTCP] section of the SYSTEM.INI file under WfWg to 3072 gives a
-big improvement. I don't know why.</P
-><P
->My own experience wth DefaultRcvWindow is that I get much better
-performance with a large value (16384 or larger). Other people have
-reported that anything over 3072 slows things down enourmously. One
-person even reported a speed drop of a factor of 30 when he went from
-3072 to 8192. I don't know why.</P
-><P
->It probably depends a lot on your hardware, and the type of unix box
-you have at the other end of the link.</P
-><P
->Paul Cochrane has done some testing on client side tuning and come
-to the following conclusions:</P
-><P
->Install the W2setup.exe file from www.microsoft.com. This is an
-update for the winsock stack and utilities which improve performance.</P
-><P
->Configure the win95 TCPIP registry settings to give better
-perfomance. I use a program called MTUSPEED.exe which I got off the
-net. There are various other utilities of this type freely available.
-The setting which give the best performance for me are:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->MaxMTU Remove</P
-></LI
-><LI
-><P
->RWIN Remove</P
-></LI
-><LI
-><P
->MTUAutoDiscover Disable</P
-></LI
-><LI
-><P
->MTUBlackHoleDetect Disable</P
-></LI
-><LI
-><P
->Time To Live Enabled</P
-></LI
-><LI
-><P
->Time To Live - HOPS 32</P
-></LI
-><LI
-><P
->NDI Cache Size 0</P
-></LI
-></OL
-><P
->I tried virtually all of the items mentioned in the document and
-the only one which made a difference to me was the socket options. It
-turned out I was better off without any!!!!!</P
-><P
->In terms of overall speed of transfer, between various win95 clients
-and a DX2-66 20MB server with a crappy NE2000 compatible and old IDE
-drive (Kernel 2.0.30). The transfer rate was reasonable for 10 baseT.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->The figures are: Put Get
-P166 client 3Com card: 420-440kB/s 500-520kB/s
-P100 client 3Com card: 390-410kB/s 490-510kB/s
-DX4-75 client NE2000: 370-380kB/s 330-350kB/s</PRE
-></P
-><P
->I based these test on transfer two files a 4.5MB text file and a 15MB
-textfile. The results arn't bad considering the hardware Samba is
-running on. It's a crap machine!!!!</P
-><P
->The updates mentioned in 1 and 2 brought up the transfer rates from
-just over 100kB/s in some clients.</P
-><P
->A new client is a P333 connected via a 100MB/s card and hub. The
-transfer rates from this were good: 450-500kB/s on put and 600+kB/s
-on get.</P
-><P
->Looking at standard FTP throughput, Samba is a bit slower (100kB/s
-upwards). I suppose there is more going on in the samba protocol, but
-if it could get up to the rate of FTP the perfomance would be quite
-staggering.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="GROUPPROFILES"
-></A
->Chapter 20. Creating Group Profiles</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3123"
-></A
->20.1. Windows '9x</H2
-><P
->You need the Win98 Group Policy Editor to
-set Group Profiles up under Windows '9x. It can be found on the Original
-full product Win98 installation CD under
-<TT
-CLASS="FILENAME"
->tools/reskit/netadmin/poledit</TT
->. You install this
-using the Add/Remove Programs facility and then click on the 'Have Disk'
-tab.</P
-><P
->Use the Group Policy Editor to create a policy file that specifies the
-location of user profiles and/or the <TT
-CLASS="FILENAME"
->My Documents</TT
-> etc.
-stuff. You then save these settings in a file called
-<TT
-CLASS="FILENAME"
->Config.POL</TT
-> that needs to be placed in
-the root of the [NETLOGON] share. If your Win98 is configured to log onto
-the Samba Domain, it will automatically read this file and update the
-Win98 registry of the machine that is logging on.</P
-><P
->All of this is covered in the Win98 Resource Kit documentation.</P
-><P
->If you do not do it this way, then every so often Win98 will check the
-integrity of the registry and will restore it's settings from the back-up
-copy of the registry it stores on each Win98 machine. Hence, you will notice
-things changing back to the original settings.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3132"
-></A
->20.2. Windows NT 4</H2
-><P
->Unfortunately, the Resource Kit info is Win NT4/2K version specific.</P
-><P
->Here is a quick guide:</P
-><P
-></P
-><UL
-><LI
-><P
->On your NT4 Domain Controller, right click on 'My Computer', then
-select the tab labelled 'User Profiles'.</P
-></LI
-><LI
-><P
->Select a user profile you want to migrate and click on it.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="90%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I am using the term &quot;migrate&quot; lossely. You can copy a profile to
-create a group profile. You can give the user 'Everyone' rights to the
-profile you copy this to. That is what you need to do, since your samba
-domain is not a member of a trust relationship with your NT4 PDC.</P
-></TD
-></TR
-></TABLE
-></DIV
-></LI
-><LI
-><P
->Click the 'Copy To' button.</P
-></LI
-><LI
-><P
->In the box labelled 'Copy Profile to' add your new path, eg:
-<TT
-CLASS="FILENAME"
->c:\temp\foobar</TT
-></P
-></LI
-><LI
-><P
->Click on the button labelled 'Change' in the "Permitted to use" box.</P
-></LI
-><LI
-><P
->Click on the group 'Everyone' and then click OK. This closes the
-'chose user' box.</P
-></LI
-><LI
-><P
->Now click OK.</P
-></LI
-></UL
-><P
->Follow the above for every profile you need to migrate.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3155"
-></A
->20.2.1. Side bar Notes</H3
-><P
->You should obtain the SID of your NT4 domain. You can use smbpasswd to do
-this. Read the man page.</P
-><P
->With Samba-3.0.0 alpha code you can import all you NT4 domain accounts
-using the net samsync method. This way you can retain your profile
-settings as well as all your users.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3159"
-></A
->20.2.2. Mandatory profiles</H3
-><P
->The above method can be used to create mandatory profiles also. To convert
-a group profile into a mandatory profile simply locate the NTUser.DAT file
-in the copied profile and rename it to NTUser.MAN.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3162"
-></A
->20.2.3. moveuser.exe</H3
-><P
->The W2K professional resource kit has moveuser.exe. moveuser.exe changes
-the security of a profile from one user to another. This allows the account
-domain to change, and/or the user name to change.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3165"
-></A
->20.2.4. Get SID</H3
-><P
->You can identify the SID by using GetSID.exe from the Windows NT Server 4.0
-Resource Kit.</P
-><P
->Windows NT 4.0 stores the local profile information in the registry under
-the following key:
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList</P
-><P
->Under the ProfileList key, there will be subkeys named with the SIDs of the
-users who have logged on to this computer. (To find the profile information
-for the user whose locally cached profile you want to move, find the SID for
-the user with the GetSID.exe utility.) Inside of the appropriate user's
-subkey, you will see a string value named ProfileImagePath.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3170"
-></A
->20.3. Windows 2000/XP</H2
-><P
->You must first convert the profile from a local profile to a domain
-profile on the MS Windows workstation as follows:</P
-><P
-></P
-><UL
-><LI
-><P
->Log on as the LOCAL workstation administrator.</P
-></LI
-><LI
-><P
->Right click on the 'My Computer' Icon, select 'Properties'</P
-></LI
-><LI
-><P
->Click on the 'User Profiles' tab</P
-></LI
-><LI
-><P
->Select the profile you wish to convert (click on it once)</P
-></LI
-><LI
-><P
->Click on the button 'Copy To'</P
-></LI
-><LI
-><P
->In the "Permitted to use" box, click on the 'Change' button.</P
-></LI
-><LI
-><P
->Click on the 'Look in" area that lists the machine name, when you click
-here it will open up a selection box. Click on the domain to which the
-profile must be accessible.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="90%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->You will need to log on if a logon box opens up. Eg: In the connect
-as: MIDEARTH\root, password: mypassword.</P
-></TD
-></TR
-></TABLE
-></DIV
-></LI
-><LI
-><P
->To make the profile capable of being used by anyone select 'Everyone'</P
-></LI
-><LI
-><P
->Click OK. The Selection box will close.</P
-></LI
-><LI
-><P
->Now click on the 'Ok' button to create the profile in the path you
-nominated.</P
-></LI
-></UL
-><P
->Done. You now have a profile that can be editted using the samba-3.0.0
-profiles tool.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Under NT/2K the use of mandotory profiles forces the use of MS Exchange
-storage of mail data. That keeps desktop profiles usable.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-></P
-><UL
-><LI
-><P
->This is a security check new to Windows XP (or maybe only
-Windows XP service pack 1). It can be disabled via a group policy in
-Active Directory. The policy is:</P
-><P
->"Computer Configuration\Administrative Templates\System\User
-Profiles\Do not check for user ownership of Roaming Profile Folders"</P
-><P
->...and it should be set to "Enabled".
-Does the new version of samba have an Active Directory analogue? If so,
-then you may be able to set the policy through this.</P
-><P
->If you cannot set group policies in samba, then you may be able to set
-the policy locally on each machine. If you want to try this, then do
-the following (N.B. I don't know for sure that this will work in the
-same way as a domain group policy):</P
-></LI
-><LI
-><P
->On the XP workstation log in with an Administrator account.</P
-></LI
-><LI
-><P
->Click: "Start", "Run"</P
-></LI
-><LI
-><P
->Type: "mmc"</P
-></LI
-><LI
-><P
->Click: "OK"</P
-></LI
-><LI
-><P
->A Microsoft Management Console should appear.</P
-></LI
-><LI
-><P
->Click: File, "Add/Remove Snap-in...", "Add"</P
-></LI
-><LI
-><P
->Double-Click: "Group Policy"</P
-></LI
-><LI
-><P
->Click: "Finish", "Close"</P
-></LI
-><LI
-><P
->Click: "OK"</P
-></LI
-><LI
-><P
->In the "Console Root" window:</P
-></LI
-><LI
-><P
->Expand: "Local Computer Policy", "Computer Configuration",</P
-></LI
-><LI
-><P
->"Administrative Templates", "System", "User Profiles"</P
-></LI
-><LI
-><P
->Double-Click: "Do not check for user ownership of Roaming Profile</P
-></LI
-><LI
-><P
->Folders"</P
-></LI
-><LI
-><P
->Select: "Enabled"</P
-></LI
-><LI
-><P
->Click: OK"</P
-></LI
-><LI
-><P
->Close the whole console. You do not need to save the settings (this
-refers to the console settings rather than the policies you have
-changed).</P
-></LI
-><LI
-><P
->Reboot</P
-></LI
-></UL
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="APPENDIXES"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->IV. Appendixes</H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->21. <A
-HREF="#PORTABILITY"
->Portability</A
-></DT
-><DD
-><DL
-><DT
->21.1. <A
-HREF="#AEN3251"
->HPUX</A
-></DT
-><DT
->21.2. <A
-HREF="#AEN3257"
->SCO Unix</A
-></DT
-><DT
->21.3. <A
-HREF="#AEN3261"
->DNIX</A
-></DT
-><DT
->21.4. <A
-HREF="#AEN3290"
->RedHat Linux Rembrandt-II</A
-></DT
-></DL
-></DD
-><DT
->22. <A
-HREF="#OTHER-CLIENTS"
->Samba and other CIFS clients</A
-></DT
-><DD
-><DL
-><DT
->22.1. <A
-HREF="#AEN3311"
->Macintosh clients?</A
-></DT
-><DT
->22.2. <A
-HREF="#AEN3320"
->OS2 Client</A
-></DT
-><DD
-><DL
-><DT
->22.2.1. <A
-HREF="#AEN3322"
->How can I configure OS/2 Warp Connect or
- OS/2 Warp 4 as a client for Samba?</A
-></DT
-><DT
->22.2.2. <A
-HREF="#AEN3337"
->How can I configure OS/2 Warp 3 (not Connect),
- OS/2 1.2, 1.3 or 2.x for Samba?</A
-></DT
-><DT
->22.2.3. <A
-HREF="#AEN3346"
->Are there any other issues when OS/2 (any version)
- is used as a client?</A
-></DT
-><DT
->22.2.4. <A
-HREF="#AEN3350"
->How do I get printer driver download working
- for OS/2 clients?</A
-></DT
-></DL
-></DD
-><DT
->22.3. <A
-HREF="#AEN3360"
->Windows for Workgroups</A
-></DT
-><DD
-><DL
-><DT
->22.3.1. <A
-HREF="#AEN3362"
->Use latest TCP/IP stack from Microsoft</A
-></DT
-><DT
->22.3.2. <A
-HREF="#AEN3367"
->Delete .pwl files after password change</A
-></DT
-><DT
->22.3.3. <A
-HREF="#AEN3372"
->Configure WfW password handling</A
-></DT
-><DT
->22.3.4. <A
-HREF="#AEN3376"
->Case handling of passwords</A
-></DT
-></DL
-></DD
-><DT
->22.4. <A
-HREF="#AEN3381"
->Windows '95/'98</A
-></DT
-><DT
->22.5. <A
-HREF="#AEN3397"
->Windows 2000 Service Pack 2</A
-></DT
-></DL
-></DD
-><DT
->23. <A
-HREF="#BUGREPORT"
->Reporting Bugs</A
-></DT
-><DD
-><DL
-><DT
->23.1. <A
-HREF="#AEN3421"
->Introduction</A
-></DT
-><DT
->23.2. <A
-HREF="#AEN3431"
->General info</A
-></DT
-><DT
->23.3. <A
-HREF="#AEN3437"
->Debug levels</A
-></DT
-><DT
->23.4. <A
-HREF="#AEN3454"
->Internal errors</A
-></DT
-><DT
->23.5. <A
-HREF="#AEN3464"
->Attaching to a running process</A
-></DT
-><DT
->23.6. <A
-HREF="#AEN3467"
->Patches</A
-></DT
-></DL
-></DD
-><DT
->24. <A
-HREF="#DIAGNOSIS"
->Diagnosing your samba server</A
-></DT
-><DD
-><DL
-><DT
->24.1. <A
-HREF="#AEN3490"
->Introduction</A
-></DT
-><DT
->24.2. <A
-HREF="#AEN3495"
->Assumptions</A
-></DT
-><DT
->24.3. <A
-HREF="#AEN3505"
->Tests</A
-></DT
-><DD
-><DL
-><DT
->24.3.1. <A
-HREF="#AEN3507"
->Test 1</A
-></DT
-><DT
->24.3.2. <A
-HREF="#AEN3513"
->Test 2</A
-></DT
-><DT
->24.3.3. <A
-HREF="#AEN3519"
->Test 3</A
-></DT
-><DT
->24.3.4. <A
-HREF="#AEN3534"
->Test 4</A
-></DT
-><DT
->24.3.5. <A
-HREF="#AEN3539"
->Test 5</A
-></DT
-><DT
->24.3.6. <A
-HREF="#AEN3545"
->Test 6</A
-></DT
-><DT
->24.3.7. <A
-HREF="#AEN3553"
->Test 7</A
-></DT
-><DT
->24.3.8. <A
-HREF="#AEN3579"
->Test 8</A
-></DT
-><DT
->24.3.9. <A
-HREF="#AEN3596"
->Test 9</A
-></DT
-><DT
->24.3.10. <A
-HREF="#AEN3604"
->Test 10</A
-></DT
-><DT
->24.3.11. <A
-HREF="#AEN3610"
->Test 11</A
-></DT
-></DL
-></DD
-><DT
->24.4. <A
-HREF="#AEN3615"
->Still having troubles?</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PORTABILITY"
-></A
->Chapter 21. Portability</H1
-><P
->Samba works on a wide range of platforms but the interface all the
-platforms provide is not always compatible. This chapter contains
-platform-specific information about compiling and using samba.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3251"
-></A
->21.1. HPUX</H2
-><P
->HP's implementation of supplementary groups is, er, non-standard (for
-hysterical reasons). There are two group files, /etc/group and
-/etc/logingroup; the system maps UIDs to numbers using the former, but
-initgroups() reads the latter. Most system admins who know the ropes
-symlink /etc/group to /etc/logingroup (hard link doesn't work for reasons
-too stupid to go into here). initgroups() will complain if one of the
-groups you're in in /etc/logingroup has what it considers to be an invalid
-ID, which means outside the range [0..UID_MAX], where UID_MAX is (I think)
-60000 currently on HP-UX. This precludes -2 and 65534, the usual 'nobody'
-GIDs.</P
-><P
->If you encounter this problem, make sure that the programs that are failing
-to initgroups() be run as users not in any groups with GIDs outside the
-allowed range.</P
-><P
->This is documented in the HP manual pages under setgroups(2) and passwd(4).</P
-><P
->On HPUX you must use gcc or the HP Ansi compiler. The free compiler
-that comes with HP-UX is not Ansi compliant and cannot compile
-Samba.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3257"
-></A
->21.2. SCO Unix</H2
-><P
->
-If you run an old version of SCO Unix then you may need to get important
-TCP/IP patches for Samba to work correctly. Without the patch, you may
-encounter corrupt data transfers using samba.</P
-><P
->The patch you need is UOD385 Connection Drivers SLS. It is available from
-SCO (ftp.sco.com, directory SLS, files uod385a.Z and uod385a.ltr.Z).</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3261"
-></A
->21.3. DNIX</H2
-><P
->DNIX has a problem with seteuid() and setegid(). These routines are
-needed for Samba to work correctly, but they were left out of the DNIX
-C library for some reason.</P
-><P
->For this reason Samba by default defines the macro NO_EID in the DNIX
-section of includes.h. This works around the problem in a limited way,
-but it is far from ideal, some things still won't work right.</P
-><P
->
-To fix the problem properly you need to assemble the following two
-functions and then either add them to your C library or link them into
-Samba.</P
-><P
->
-put this in the file <TT
-CLASS="FILENAME"
->setegid.s</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> .globl _setegid
-_setegid:
- moveq #47,d0
- movl #100,a0
- moveq #1,d1
- movl 4(sp),a1
- trap #9
- bccs 1$
- jmp cerror
-1$:
- clrl d0
- rts</PRE
-></P
-><P
->put this in the file <TT
-CLASS="FILENAME"
->seteuid.s</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> .globl _seteuid
-_seteuid:
- moveq #47,d0
- movl #100,a0
- moveq #0,d1
- movl 4(sp),a1
- trap #9
- bccs 1$
- jmp cerror
-1$:
- clrl d0
- rts</PRE
-></P
-><P
->after creating the above files you then assemble them using</P
-><P
-><B
-CLASS="COMMAND"
->as seteuid.s</B
-></P
-><P
-><B
-CLASS="COMMAND"
->as setegid.s</B
-></P
-><P
->that should produce the files <TT
-CLASS="FILENAME"
->seteuid.o</TT
-> and
-<TT
-CLASS="FILENAME"
->setegid.o</TT
-></P
-><P
->then you need to add these to the LIBSM line in the DNIX section of
-the Samba Makefile. Your LIBSM line will then look something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->LIBSM = setegid.o seteuid.o -ln</PRE
-></P
-><P
->
-You should then remove the line:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#define NO_EID</PRE
-></P
-><P
->from the DNIX section of <TT
-CLASS="FILENAME"
->includes.h</TT
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3290"
-></A
->21.4. RedHat Linux Rembrandt-II</H2
-><P
->By default RedHat Rembrandt-II during installation adds an
-entry to /etc/hosts as follows:
-<PRE
-CLASS="PROGRAMLISTING"
-> 127.0.0.1 loopback "hostname"."domainname"</PRE
-></P
-><P
->This causes Samba to loop back onto the loopback interface.
-The result is that Samba fails to communicate correctly with
-the world and therefor may fail to correctly negotiate who
-is the master browse list holder and who is the master browser.</P
-><P
->Corrective Action: Delete the entry after the word loopback
- in the line starting 127.0.0.1</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="OTHER-CLIENTS"
-></A
->Chapter 22. Samba and other CIFS clients</H1
-><P
->This chapter contains client-specific information.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3311"
-></A
->22.1. Macintosh clients?</H2
-><P
->Yes. <A
-HREF="http://www.thursby.com/"
-TARGET="_top"
->Thursby</A
-> now have a CIFS Client / Server called DAVE - see</P
-><P
->They test it against Windows 95, Windows NT and samba for
-compatibility issues. At the time of writing, DAVE was at version
-1.0.1. The 1.0.0 to 1.0.1 update is available as a free download from
-the Thursby web site (the speed of finder copies has been greatly
-enhanced, and there are bug-fixes included).</P
-><P
->
-Alternatives - There are two free implementations of AppleTalk for
-several kinds of UNIX machnes, and several more commercial ones.
-These products allow you to run file services and print services
-natively to Macintosh users, with no additional support required on
-the Macintosh. The two free omplementations are
-<A
-HREF="http://www.umich.edu/~rsug/netatalk/"
-TARGET="_top"
->Netatalk</A
->, and
-<A
-HREF="http://www.cs.mu.oz.au/appletalk/atalk.html"
-TARGET="_top"
->CAP</A
->.
-What Samba offers MS
-Windows users, these packages offer to Macs. For more info on these
-packages, Samba, and Linux (and other UNIX-based systems) see
-<A
-HREF="http://www.eats.com/linux_mac_win.html"
-TARGET="_top"
->http://www.eats.com/linux_mac_win.html</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3320"
-></A
->22.2. OS2 Client</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3322"
-></A
->22.2.1. How can I configure OS/2 Warp Connect or
- OS/2 Warp 4 as a client for Samba?</H3
-><P
->A more complete answer to this question can be
- found on <A
-HREF="http://carol.wins.uva.nl/~leeuw/samba/warp.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/samba/warp.html</A
->.</P
-><P
->Basically, you need three components:</P
-><P
-></P
-><UL
-><LI
-><P
->The File and Print Client ('IBM Peer')
- </P
-></LI
-><LI
-><P
->TCP/IP ('Internet support')
- </P
-></LI
-><LI
-><P
->The "NetBIOS over TCP/IP" driver ('TCPBEUI')
- </P
-></LI
-></UL
-><P
->Installing the first two together with the base operating
- system on a blank system is explained in the Warp manual. If Warp
- has already been installed, but you now want to install the
- networking support, use the "Selective Install for Networking"
- object in the "System Setup" folder.</P
-><P
->Adding the "NetBIOS over TCP/IP" driver is not described
- in the manual and just barely in the online documentation. Start
- MPTS.EXE, click on OK, click on "Configure LAPS" and click
- on "IBM OS/2 NETBIOS OVER TCP/IP" in 'Protocols'. This line
- is then moved to 'Current Configuration'. Select that line,
- click on "Change number" and increase it from 0 to 1. Save this
- configuration.</P
-><P
->If the Samba server(s) is not on your local subnet, you
- can optionally add IP names and addresses of these servers
- to the "Names List", or specify a WINS server ('NetBIOS
- Nameserver' in IBM and RFC terminology). For Warp Connect you
- may need to download an update for 'IBM Peer' to bring it on
- the same level as Warp 4. See the webpage mentioned above.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3337"
-></A
->22.2.2. How can I configure OS/2 Warp 3 (not Connect),
- OS/2 1.2, 1.3 or 2.x for Samba?</H3
-><P
->You can use the free Microsoft LAN Manager 2.2c Client
- for OS/2 from
- <A
-HREF="ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/"
-TARGET="_top"
-> ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/</A
->.
- See <A
-HREF="http://carol.wins.uva.nl/~leeuw/lanman.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/lanman.html</A
-> for
- more information on how to install and use this client. In
- a nutshell, edit the file \OS2VER in the root directory of
- the OS/2 boot partition and add the lines:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> 20=setup.exe
- 20=netwksta.sys
- 20=netvdd.sys
- </PRE
-></P
-><P
->before you install the client. Also, don't use the
- included NE2000 driver because it is buggy. Try the NE2000
- or NS2000 driver from
- <A
-HREF="ftp://ftp.cdrom.com/pub/os2/network/ndis/"
-TARGET="_top"
-> ftp://ftp.cdrom.com/pub/os2/network/ndis/</A
-> instead.
- </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3346"
-></A
->22.2.3. Are there any other issues when OS/2 (any version)
- is used as a client?</H3
-><P
->When you do a NET VIEW or use the "File and Print
- Client Resource Browser", no Samba servers show up. This can
- be fixed by a patch from <A
-HREF="http://carol.wins.uva.nl/~leeuw/samba/fix.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/samba/fix.html</A
->.
- The patch will be included in a later version of Samba. It also
- fixes a couple of other problems, such as preserving long
- filenames when objects are dragged from the Workplace Shell
- to the Samba server. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3350"
-></A
->22.2.4. How do I get printer driver download working
- for OS/2 clients?</H3
-><P
->First, create a share called [PRINTDRV] that is
- world-readable. Copy your OS/2 driver files there. Note
- that the .EA_ files must still be separate, so you will need
- to use the original install files, and not copy an installed
- driver from an OS/2 system.</P
-><P
->Install the NT driver first for that printer. Then,
- add to your smb.conf a parameter, os2 driver map =
- <TT
-CLASS="REPLACEABLE"
-><I
->filename</I
-></TT
->". Then, in the file
- specified by <TT
-CLASS="REPLACEABLE"
-><I
->filename</I
-></TT
->, map the
- name of the NT driver name to the OS/2 driver name as
- follows:</P
-><P
-><B
-CLASS="COMMAND"
->nt driver name = os2 "driver
- name"."device name"</B
->, e.g.:
- HP LaserJet 5L = LASERJET.HP LaserJet 5L</P
-><P
->You can have multiple drivers mapped in this file.</P
-><P
->If you only specify the OS/2 driver name, and not the
- device name, the first attempt to download the driver will
- actually download the files, but the OS/2 client will tell
- you the driver is not available. On the second attempt, it
- will work. This is fixed simply by adding the device name
- to the mapping, after which it will work on the first attempt.
- </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3360"
-></A
->22.3. Windows for Workgroups</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3362"
-></A
->22.3.1. Use latest TCP/IP stack from Microsoft</H3
-><P
->Use the latest TCP/IP stack from microsoft if you use Windows
-for workgroups.</P
-><P
->The early TCP/IP stacks had lots of bugs.</P
-><P
->
-Microsoft has released an incremental upgrade to their TCP/IP 32-Bit
-VxD drivers. The latest release can be found on their ftp site at
-ftp.microsoft.com, located in /peropsys/windows/public/tcpip/wfwt32.exe.
-There is an update.txt file there that describes the problems that were
-fixed. New files include WINSOCK.DLL, TELNET.EXE, WSOCK.386, VNBT.386,
-WSTCP.386, TRACERT.EXE, NETSTAT.EXE, and NBTSTAT.EXE.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3367"
-></A
->22.3.2. Delete .pwl files after password change</H3
-><P
->WfWg does a lousy job with passwords. I find that if I change my
-password on either the unix box or the PC the safest thing to do is to
-delete the .pwl files in the windows directory. The PC will complain about not finding the files, but will soon get over it, allowing you to enter the new password.</P
-><P
->
-If you don't do this you may find that WfWg remembers and uses the old
-password, even if you told it a new one.</P
-><P
->
-Often WfWg will totally ignore a password you give it in a dialog box.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3372"
-></A
->22.3.3. Configure WfW password handling</H3
-><P
->There is a program call admincfg.exe
-on the last disk (disk 8) of the WFW 3.11 disk set. To install it
-type EXPAND A:\ADMINCFG.EX_ C:\WINDOWS\ADMINCFG.EXE Then add an icon
-for it via the "Progam Manager" "New" Menu. This program allows you
-to control how WFW handles passwords. ie disable Password Caching etc
-for use with <B
-CLASS="COMMAND"
->security = user</B
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3376"
-></A
->22.3.4. Case handling of passwords</H3
-><P
->Windows for Workgroups uppercases the password before sending it to the server. Unix passwords can be case-sensitive though. Check the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> information on <B
-CLASS="COMMAND"
->password level</B
-> to specify what characters samba should try to uppercase when checking.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3381"
-></A
->22.4. Windows '95/'98</H2
-><P
->When using Windows 95 OEM SR2 the following updates are recommended where Samba
-is being used. Please NOTE that the above change will affect you once these
-updates have been installed.</P
-><P
->
-There are more updates than the ones mentioned here. You are referred to the
-Microsoft Web site for all currently available updates to your specific version
-of Windows 95.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Kernel Update: KRNLUPD.EXE</P
-></LI
-><LI
-><P
->Ping Fix: PINGUPD.EXE</P
-></LI
-><LI
-><P
->RPC Update: RPCRTUPD.EXE</P
-></LI
-><LI
-><P
->TCP/IP Update: VIPUPD.EXE</P
-></LI
-><LI
-><P
->Redirector Update: VRDRUPD.EXE</P
-></LI
-></OL
-><P
->Also, if using MS OutLook it is desirable to install the OLEUPD.EXE fix. This
-fix may stop your machine from hanging for an extended period when exiting
-OutLook and you may also notice a significant speedup when accessing network
-neighborhood services.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3397"
-></A
->22.5. Windows 2000 Service Pack 2</H2
-><P
->
-There are several annoyances with Windows 2000 SP2. One of which
-only appears when using a Samba server to host user profiles
-to Windows 2000 SP2 clients in a Windows domain. This assumes
-that Samba is a member of the domain, but the problem will
-likely occur if it is not.</P
-><P
->
-In order to server profiles successfully to Windows 2000 SP2
-clients (when not operating as a PDC), Samba must have
-<B
-CLASS="COMMAND"
->nt acl support = no</B
->
-added to the file share which houses the roaming profiles.
-If this is not done, then the Windows 2000 SP2 client will
-complain about not being able to access the profile (Access
-Denied) and create multiple copies of it on disk (DOMAIN.user.001,
-DOMAIN.user.002, etc...). See the
-<A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> man page
-for more details on this option. Also note that the
-<B
-CLASS="COMMAND"
->nt acl support</B
-> parameter was formally a global parameter in
-releases prior to Samba 2.2.2.</P
-><P
->
-The following is a minimal profile share:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [profile]
- path = /export/profile
- create mask = 0600
- directory mask = 0700
- nt acl support = no
- read only = no</PRE
-></P
-><P
->The reason for this bug is that the Win2k SP2 client copies
-the security descriptor for the profile which contains
-the Samba server's SID, and not the domain SID. The client
-compares the SID for SAMBA\user and realizes it is
-different that the one assigned to DOMAIN\user. Hence the reason
-for the "access denied" message.</P
-><P
->By disabling the <B
-CLASS="COMMAND"
->nt acl support</B
-> parameter, Samba will send
-the Win2k client a response to the QuerySecurityDescriptor
-trans2 call which causes the client to set a default ACL
-for the profile. This default ACL includes </P
-><P
-><B
-CLASS="COMMAND"
->DOMAIN\user "Full Control"</B
-></P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE : This bug does not occur when using winbind to
-create accounts on the Samba host for Domain users.</I
-></SPAN
-></P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="BUGREPORT"
-></A
->Chapter 23. Reporting Bugs</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3421"
-></A
->23.1. Introduction</H2
-><P
->The email address for bug reports for stable releases is <A
-HREF="samba@samba.org"
-TARGET="_top"
->samba@samba.org</A
->.
-Bug reports for alpha releases should go to <A
-HREF="mailto:samba-technical@samba.org"
-TARGET="_top"
->samba-technical@samba.org</A
->.</P
-><P
->Please take the time to read this file before you submit a bug
-report. Also, please see if it has changed between releases, as we
-may be changing the bug reporting mechanism at some time.</P
-><P
->Please also do as much as you can yourself to help track down the
-bug. Samba is maintained by a dedicated group of people who volunteer
-their time, skills and efforts. We receive far more mail about it than
-we can possibly answer, so you have a much higher chance of an answer
-and a fix if you send us a "developer friendly" bug report that lets
-us fix it fast. </P
-><P
->Do not assume that if you post the bug to the comp.protocols.smb
-newsgroup or the mailing list that we will read it. If you suspect that your
-problem is not a bug but a configuration problem then it is better to send
-it to the Samba mailing list, as there are (at last count) 5000 other users on
-that list that may be able to help you.</P
-><P
->You may also like to look though the recent mailing list archives,
-which are conveniently accessible on the Samba web pages
-at <A
-HREF="http://samba.org/samba/"
-TARGET="_top"
->http://samba.org/samba/</A
->.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3431"
-></A
->23.2. General info</H2
-><P
->Before submitting a bug report check your config for silly
-errors. Look in your log files for obvious messages that tell you that
-you've misconfigured something and run testparm to test your config
-file for correct syntax.</P
-><P
->Have you run through the <A
-HREF="Diagnosis.html"
-TARGET="_top"
->diagnosis</A
->?
-This is very important.</P
-><P
->If you include part of a log file with your bug report then be sure to
-annotate it with exactly what you were doing on the client at the
-time, and exactly what the results were.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3437"
-></A
->23.3. Debug levels</H2
-><P
->If the bug has anything to do with Samba behaving incorrectly as a
-server (like refusing to open a file) then the log files will probably
-be very useful. Depending on the problem a log level of between 3 and
-10 showing the problem may be appropriate. A higher level givesmore
-detail, but may use too much disk space.</P
-><P
->To set the debug level use <B
-CLASS="COMMAND"
->log level =</B
-> in your
-<TT
-CLASS="FILENAME"
->smb.conf</TT
->. You may also find it useful to set the log
-level higher for just one machine and keep separate logs for each machine.
-To do this use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->log level = 10
-log file = /usr/local/samba/lib/log.%m
-include = /usr/local/samba/lib/smb.conf.%m</PRE
-></P
-><P
->then create a file
-<TT
-CLASS="FILENAME"
->/usr/local/samba/lib/smb.conf.machine</TT
-> where
-"machine" is the name of the client you wish to debug. In that file
-put any smb.conf commands you want, for example
-<B
-CLASS="COMMAND"
->log level=</B
-> may be useful. This also allows you to
-experiment with different security systems, protocol levels etc on just
-one machine.</P
-><P
->The <TT
-CLASS="FILENAME"
->smb.conf</TT
-> entry <B
-CLASS="COMMAND"
->log level =</B
->
-is synonymous with the entry <B
-CLASS="COMMAND"
->debuglevel =</B
-> that has been
-used in older versions of Samba and is being retained for backwards
-compatibility of smb.conf files.</P
-><P
->As the <B
-CLASS="COMMAND"
->log level =</B
-> value is increased you will record
-a significantly increasing level of debugging information. For most
-debugging operations you may not need a setting higher than 3. Nearly
-all bugs can be tracked at a setting of 10, but be prepared for a VERY
-large volume of log data.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3454"
-></A
->23.4. Internal errors</H2
-><P
->If you get a "INTERNAL ERROR" message in your log files it means that
-Samba got an unexpected signal while running. It is probably a
-segmentation fault and almost certainly means a bug in Samba (unless
-you have faulty hardware or system software)</P
-><P
->If the message came from smbd then it will probably be accompanied by
-a message which details the last SMB message received by smbd. This
-info is often very useful in tracking down the problem so please
-include it in your bug report.</P
-><P
->You should also detail how to reproduce the problem, if
-possible. Please make this reasonably detailed.</P
-><P
->You may also find that a core file appeared in a "corefiles"
-subdirectory of the directory where you keep your samba log
-files. This file is the most useful tool for tracking down the bug. To
-use it you do this:</P
-><P
-><B
-CLASS="COMMAND"
->gdb smbd core</B
-></P
-><P
->adding appropriate paths to smbd and core so gdb can find them. If you
-don't have gdb then try "dbx". Then within the debugger use the
-command "where" to give a stack trace of where the problem
-occurred. Include this in your mail.</P
-><P
->If you known any assembly language then do a "disass" of the routine
-where the problem occurred (if its in a library routine then
-disassemble the routine that called it) and try to work out exactly
-where the problem is by looking at the surrounding code. Even if you
-don't know assembly then incuding this info in the bug report can be
-useful. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3464"
-></A
->23.5. Attaching to a running process</H2
-><P
->Unfortunately some unixes (in particular some recent linux kernels)
-refuse to dump a core file if the task has changed uid (which smbd
-does often). To debug with this sort of system you could try to attach
-to the running process using "gdb smbd PID" where you get PID from
-smbstatus. Then use "c" to continue and try to cause the core dump
-using the client. The debugger should catch the fault and tell you
-where it occurred.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3467"
-></A
->23.6. Patches</H2
-><P
->The best sort of bug report is one that includes a fix! If you send us
-patches please use <B
-CLASS="COMMAND"
->diff -u</B
-> format if your version of
-diff supports it, otherwise use <B
-CLASS="COMMAND"
->diff -c4</B
->. Make sure
-your do the diff against a clean version of the source and let me know
-exactly what version you used. </P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="DIAGNOSIS"
-></A
->Chapter 24. Diagnosing your samba server</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3490"
-></A
->24.1. Introduction</H2
-><P
->This file contains a list of tests you can perform to validate your
-Samba server. It also tells you what the likely cause of the problem
-is if it fails any one of these steps. If it passes all these tests
-then it is probably working fine.</P
-><P
->You should do ALL the tests, in the order shown. We have tried to
-carefully choose them so later tests only use capabilities verified in
-the earlier tests.</P
-><P
->If you send one of the samba mailing lists an email saying "it doesn't work"
-and you have not followed this test procedure then you should not be surprised
-your email is ignored.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3495"
-></A
->24.2. Assumptions</H2
-><P
->In all of the tests it is assumed you have a Samba server called
-BIGSERVER and a PC called ACLIENT both in workgroup TESTGROUP.</P
-><P
->The procedure is similar for other types of clients.</P
-><P
->It is also assumed you know the name of an available share in your
-smb.conf. I will assume this share is called "tmp". You can add a
-"tmp" share like by adding the following to smb.conf:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->&#13;[tmp]
- comment = temporary files
- path = /tmp
- read only = yes&#13;</PRE
-></P
-><P
->THESE TESTS ASSUME VERSION 3.0.0 OR LATER OF THE SAMBA SUITE. SOME
-COMMANDS SHOWN DID NOT EXIST IN EARLIER VERSIONS</P
-><P
->Please pay attention to the error messages you receive. If any error message
-reports that your server is being unfriendly you should first check that you
-IP name resolution is correctly set up. eg: Make sure your /etc/resolv.conf
-file points to name servers that really do exist.</P
-><P
->Also, if you do not have DNS server access for name resolution please check
-that the settings for your smb.conf file results in "dns proxy = no". The
-best way to check this is with "testparm smb.conf"</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3505"
-></A
->24.3. Tests</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3507"
-></A
->24.3.1. Test 1</H3
-><P
->In the directory in which you store your smb.conf file, run the command
-"testparm smb.conf". If it reports any errors then your smb.conf
-configuration file is faulty.</P
-><P
->Note: Your smb.conf file may be located in: <TT
-CLASS="FILENAME"
->/etc/samba</TT
->
- Or in: <TT
-CLASS="FILENAME"
->/usr/local/samba/lib</TT
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3513"
-></A
->24.3.2. Test 2</H3
-><P
->Run the command "ping BIGSERVER" from the PC and "ping ACLIENT" from
-the unix box. If you don't get a valid response then your TCP/IP
-software is not correctly installed. </P
-><P
->Note that you will need to start a "dos prompt" window on the PC to
-run ping.</P
-><P
->If you get a message saying "host not found" or similar then your DNS
-software or /etc/hosts file is not correctly setup. It is possible to
-run samba without DNS entries for the server and client, but I assume
-you do have correct entries for the remainder of these tests. </P
-><P
->Another reason why ping might fail is if your host is running firewall
-software. You will need to relax the rules to let in the workstation
-in question, perhaps by allowing access from another subnet (on Linux
-this is done via the ipfwadm program.)</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3519"
-></A
->24.3.3. Test 3</H3
-><P
->Run the command "smbclient -L BIGSERVER" on the unix box. You
-should get a list of available shares back. </P
-><P
->If you get a error message containing the string "Bad password" then
-you probably have either an incorrect "hosts allow", "hosts deny" or
-"valid users" line in your smb.conf, or your guest account is not
-valid. Check what your guest account is using "testparm" and
-temporarily remove any "hosts allow", "hosts deny", "valid users" or
-"invalid users" lines.</P
-><P
->If you get a "connection refused" response then the smbd server may
-not be running. If you installed it in inetd.conf then you probably edited
-that file incorrectly. If you installed it as a daemon then check that
-it is running, and check that the netbios-ssn port is in a LISTEN
-state using "netstat -a".</P
-><P
->If you get a "session request failed" then the server refused the
-connection. If it says "Your server software is being unfriendly" then
-its probably because you have invalid command line parameters to smbd,
-or a similar fatal problem with the initial startup of smbd. Also
-check your config file (smb.conf) for syntax errors with "testparm"
-and that the various directories where samba keeps its log and lock
-files exist.</P
-><P
->There are a number of reasons for which smbd may refuse or decline
-a session request. The most common of these involve one or more of
-the following smb.conf file entries:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> hosts deny = ALL
- hosts allow = xxx.xxx.xxx.xxx/yy
- bind interfaces only = Yes</PRE
-></P
-><P
->In the above, no allowance has been made for any session requests that
-will automatically translate to the loopback adaptor address 127.0.0.1.
-To solve this problem change these lines to:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> hosts deny = ALL
- hosts allow = xxx.xxx.xxx.xxx/yy 127.</PRE
-></P
-><P
->Do NOT use the "bind interfaces only" parameter where you may wish to
-use the samba password change facility, or where smbclient may need to
-access local service for name resolution or for local resource
-connections. (Note: the "bind interfaces only" parameter deficiency
-where it will not allow connections to the loopback address will be
-fixed soon).</P
-><P
->Another common cause of these two errors is having something already running
-on port 139, such as Samba (ie: smbd is running from inetd already) or
-something like Digital's Pathworks. Check your inetd.conf file before trying
-to start smbd as a daemon, it can avoid a lot of frustration!</P
-><P
->And yet another possible cause for failure of TEST 3 is when the subnet mask
-and / or broadcast address settings are incorrect. Please check that the
-network interface IP Address / Broadcast Address / Subnet Mask settings are
-correct and that Samba has correctly noted these in the log.nmb file.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3534"
-></A
->24.3.4. Test 4</H3
-><P
->Run the command "nmblookup -B BIGSERVER __SAMBA__". You should get the
-IP address of your Samba server back.</P
-><P
->If you don't then nmbd is incorrectly installed. Check your inetd.conf
-if you run it from there, or that the daemon is running and listening
-to udp port 137.</P
-><P
->One common problem is that many inetd implementations can't take many
-parameters on the command line. If this is the case then create a
-one-line script that contains the right parameters and run that from
-inetd.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3539"
-></A
->24.3.5. Test 5</H3
-><P
->run the command <B
-CLASS="COMMAND"
->nmblookup -B ACLIENT '*'</B
-></P
-><P
->You should get the PCs IP address back. If you don't then the client
-software on the PC isn't installed correctly, or isn't started, or you
-got the name of the PC wrong. </P
-><P
->If ACLIENT doesn't resolve via DNS then use the IP address of the
-client in the above test.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3545"
-></A
->24.3.6. Test 6</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->nmblookup -d 2 '*'</B
-></P
-><P
->This time we are trying the same as the previous test but are trying
-it via a broadcast to the default broadcast address. A number of
-Netbios/TCPIP hosts on the network should respond, although Samba may
-not catch all of the responses in the short time it listens. You
-should see "got a positive name query response" messages from several
-hosts.</P
-><P
->If this doesn't give a similar result to the previous test then
-nmblookup isn't correctly getting your broadcast address through its
-automatic mechanism. In this case you should experiment use the
-"interfaces" option in smb.conf to manually configure your IP
-address, broadcast and netmask. </P
-><P
->If your PC and server aren't on the same subnet then you will need to
-use the -B option to set the broadcast address to the that of the PCs
-subnet.</P
-><P
->This test will probably fail if your subnet mask and broadcast address are
-not correct. (Refer to TEST 3 notes above).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3553"
-></A
->24.3.7. Test 7</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->smbclient //BIGSERVER/TMP</B
->. You should
-then be prompted for a password. You should use the password of the account
-you are logged into the unix box with. If you want to test with
-another account then add the -U &gt;accountname&lt; option to the end of
-the command line. eg:
-<B
-CLASS="COMMAND"
->smbclient //bigserver/tmp -Ujohndoe</B
-></P
-><P
->Note: It is possible to specify the password along with the username
-as follows:
-<B
-CLASS="COMMAND"
->smbclient //bigserver/tmp -Ujohndoe%secret</B
-></P
-><P
->Once you enter the password you should get the "smb&#62;" prompt. If you
-don't then look at the error message. If it says "invalid network
-name" then the service "tmp" is not correctly setup in your smb.conf.</P
-><P
->If it says "bad password" then the likely causes are:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> you have shadow passords (or some other password system) but didn't
- compile in support for them in smbd
- </P
-></LI
-><LI
-><P
-> your "valid users" configuration is incorrect
- </P
-></LI
-><LI
-><P
-> you have a mixed case password and you haven't enabled the "password
- level" option at a high enough level
- </P
-></LI
-><LI
-><P
-> the "path =" line in smb.conf is incorrect. Check it with testparm
- </P
-></LI
-><LI
-><P
-> you enabled password encryption but didn't create the SMB encrypted
- password file
- </P
-></LI
-></OL
-><P
->Once connected you should be able to use the commands
-<B
-CLASS="COMMAND"
->dir</B
-> <B
-CLASS="COMMAND"
->get</B
-> <B
-CLASS="COMMAND"
->put</B
-> etc.
-Type <B
-CLASS="COMMAND"
->help &gt;command&lt;</B
-> for instructions. You should
-especially check that the amount of free disk space shown is correct
-when you type <B
-CLASS="COMMAND"
->dir</B
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3579"
-></A
->24.3.8. Test 8</H3
-><P
->On the PC type the command <B
-CLASS="COMMAND"
->net view \\BIGSERVER</B
->. You will
-need to do this from within a "dos prompt" window. You should get back a
-list of available shares on the server.</P
-><P
->If you get a "network name not found" or similar error then netbios
-name resolution is not working. This is usually caused by a problem in
-nmbd. To overcome it you could do one of the following (you only need
-to choose one of them):</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> fixup the nmbd installation</P
-></LI
-><LI
-><P
-> add the IP address of BIGSERVER to the "wins server" box in the
- advanced tcp/ip setup on the PC.</P
-></LI
-><LI
-><P
-> enable windows name resolution via DNS in the advanced section of
- the tcp/ip setup</P
-></LI
-><LI
-><P
-> add BIGSERVER to your lmhosts file on the PC.</P
-></LI
-></OL
-><P
->If you get a "invalid network name" or "bad password error" then the
-same fixes apply as they did for the "smbclient -L" test above. In
-particular, make sure your "hosts allow" line is correct (see the man
-pages)</P
-><P
->Also, do not overlook that fact that when the workstation requests the
-connection to the samba server it will attempt to connect using the
-name with which you logged onto your Windows machine. You need to make
-sure that an account exists on your Samba server with that exact same
-name and password.</P
-><P
->If you get "specified computer is not receiving requests" or similar
-it probably means that the host is not contactable via tcp services.
-Check to see if the host is running tcp wrappers, and if so add an entry in
-the hosts.allow file for your client (or subnet, etc.)</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3596"
-></A
->24.3.9. Test 9</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->net use x: \\BIGSERVER\TMP</B
->. You should
-be prompted for a password then you should get a "command completed
-successfully" message. If not then your PC software is incorrectly
-installed or your smb.conf is incorrect. make sure your "hosts allow"
-and other config lines in smb.conf are correct.</P
-><P
->It's also possible that the server can't work out what user name to
-connect you as. To see if this is the problem add the line "user =
-USERNAME" to the [tmp] section of smb.conf where "USERNAME" is the
-username corresponding to the password you typed. If you find this
-fixes things you may need the username mapping option. </P
-><P
->It might also be the case that your client only sends encrypted passwords
-and you have <B
-CLASS="COMMAND"
->encrypt passwords = no</B
-> in <TT
-CLASS="FILENAME"
->smb.conf</TT
->.
-Turn it back on to fix.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3604"
-></A
->24.3.10. Test 10</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->nmblookup -M TESTGROUP</B
-> where
-TESTGROUP is the name of the workgroup that your Samba server and
-Windows PCs belong to. You should get back the IP address of the
-master browser for that workgroup.</P
-><P
->If you don't then the election process has failed. Wait a minute to
-see if it is just being slow then try again. If it still fails after
-that then look at the browsing options you have set in smb.conf. Make
-sure you have <B
-CLASS="COMMAND"
->preferred master = yes</B
-> to ensure that
-an election is held at startup.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3610"
-></A
->24.3.11. Test 11</H3
-><P
->From file manager try to browse the server. Your samba server should
-appear in the browse list of your local workgroup (or the one you
-specified in smb.conf). You should be able to double click on the name
-of the server and get a list of shares. If you get a "invalid
-password" error when you do then you are probably running WinNT and it
-is refusing to browse a server that has no encrypted password
-capability and is in user level security mode. In this case either set
-<B
-CLASS="COMMAND"
->security = server</B
-> AND
-<B
-CLASS="COMMAND"
->password server = Windows_NT_Machine</B
-> in your
-smb.conf file, or enable encrypted passwords AFTER compiling in support
-for encrypted passwords (refer to the Makefile).</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3615"
-></A
->24.4. Still having troubles?</H2
-><P
->Try the mailing list or newsgroup, or use the ethereal utility to
-sniff the problem. The official samba mailing list can be reached at
-<A
-HREF="mailto:samba@samba.org"
-TARGET="_top"
->samba@samba.org</A
->. To find
-out more about samba and how to subscribe to the mailing list check
-out the samba web page at
-<A
-HREF="http://samba.org/samba"
-TARGET="_top"
->http://samba.org/samba</A
-></P
-><P
->Also look at the other docs in the Samba package!</P
-></DIV
-></DIV
-></DIV
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
diff --git a/docs/htmldocs/ads.html b/docs/htmldocs/ads.html
index 2c556b61f3..26ec1d04a7 100644
--- a/docs/htmldocs/ads.html
+++ b/docs/htmldocs/ads.html
@@ -5,7 +5,8 @@
>Samba as a ADS domain member</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,7 +17,7 @@ REL="PREVIOUS"
TITLE="How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain"
HREF="samba-bdc.html"><LINK
REL="NEXT"
-TITLE="Samba as a NT4 or Win2k domain member"
+TITLE="Samba as a NT4 domain member"
HREF="domain-security.html"></HEAD
><BODY
CLASS="CHAPTER"
@@ -72,16 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="ADS"
-></A
->Chapter 7. Samba as a ADS domain member</H1
+NAME="ADS">Chapter 8. Samba as a ADS domain member</H1
><P
>This is a rough guide to setting up Samba 3.0 with kerberos authentication against a
Windows2000 KDC. </P
><P
->Pieces you need before you begin:</P
-><P
-><P
+>Pieces you need before you begin:
+<P
></P
><TABLE
BORDER="0"
@@ -112,13 +110,10 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1339"
-></A
->7.1. Installing the required packages for Debian</H1
-><P
->On Debian you need to install the following packages:</P
-><P
+NAME="AEN1187">8.1. Installing the required packages for Debian</H1
><P
+>On Debian you need to install the following packages:
+<P
></P
><TABLE
BORDER="0"
@@ -142,13 +137,10 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1346"
-></A
->7.2. Installing the required packages for RedHat</H1
-><P
->On RedHat this means you should have at least: </P
-><P
+NAME="AEN1193">8.2. Installing the required packages for RedHat</H1
><P
+>On RedHat this means you should have at least:
+<P
></P
><TABLE
BORDER="0"
@@ -181,15 +173,12 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1356"
-></A
->7.3. Compile Samba</H1
+NAME="AEN1202">8.3. Compile Samba</H1
><P
>If your kerberos libraries are in a non-standard location then
remember to add the configure option --with-krb5=DIR.</P
><P
->After you run configure make sure that include/config.h it
- generates contains
+>After you run configure make sure that include/config.h contains
lines like this:</P
><P
><PRE
@@ -225,10 +214,9 @@ CLASS="PROGRAMLISTING"
> ads server = your.kerberos.server</PRE
></P
><P
->You do *not* need a smbpasswd file, and older clients will
- be authenticated as if "security = domain", although it won't do any harm
- and allows you to have local users not in the domain.
- I expect that the above
+>You do *not* need a smbpasswd file, although it won't do any harm
+ and if you have one then Samba will be able to fall back to normal
+ password security for older clients. I expect that the above
required options will change soon when we get better active
directory integration.</P
></DIV
@@ -237,15 +225,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1371"
-></A
->7.4. Setup your /etc/krb5.conf</H1
+NAME="AEN1217">8.4. Setup your /etc/krb5.conf</H1
><P
>The minimal configuration for krb5.conf is:</P
><P
><PRE
CLASS="PROGRAMLISTING"
->[realms]
+> [realms]
YOUR.KERBEROS.REALM = {
kdc = your.kerberos.server
}</PRE
@@ -269,18 +255,18 @@ to join the realm.</P
><P
>If all you want is kerberos support in smbclient then you can skip
straight to step 5 now. Step 3 is only needed if you want kerberos
-support for smbd and winbindd.</P
+support in smbd.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1381"
-></A
->7.5. Create the computer account</H1
+NAME="AEN1227">8.5. Create the computer account</H1
><P
->As a user that has write permission on the Samba private directory
+>Do a "kinit" as a user that has authority to change arbitrary
+passwords on the KDC ("Administrator" is a good choice). Then as a
+user that has write permission on the Samba private directory
(usually root) run:
<B
CLASS="COMMAND"
@@ -291,9 +277,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1385"
-></A
->7.5.1. Possible errors</H2
+NAME="AEN1231">8.5.1. Possible errors</H2
><P
><P
></P
@@ -301,6 +285,12 @@ NAME="AEN1385"
CLASS="VARIABLELIST"
><DL
><DT
+>"bash: kinit: command not found"</DT
+><DD
+><P
+>kinit is in the krb5-workstation RPM on RedHat systems, and is in /usr/kerberos/bin, so it won't be in the path until you log in again (or open a new terminal)</P
+></DD
+><DT
>"ADS support not compiled in"</DT
><DD
><P
@@ -316,9 +306,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1393"
-></A
->7.6. Test your server setup</H1
+NAME="AEN1243">8.6. Test your server setup</H1
><P
>On a Windows 2000 client try <B
CLASS="COMMAND"
@@ -336,9 +324,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1398"
-></A
->7.7. Testing with smbclient</H1
+NAME="AEN1248">8.7. Testing with smbclient</H1
><P
>On your Samba server try to login to a Win2000 server or your Samba
server using smbclient and kerberos. Use smbclient as usual, but
@@ -349,9 +335,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1401"
-></A
->7.8. Notes</H1
+NAME="AEN1251">8.8. Notes</H1
><P
>You must change administrator password at least once after DC install,
to create the right encoding types</P
@@ -418,7 +402,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Samba as a NT4 or Win2k domain member</TD
+>Samba as a NT4 domain member</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/appendixes.html b/docs/htmldocs/appendixes.html
index 469ef170cd..e7eefcb441 100644
--- a/docs/htmldocs/appendixes.html
+++ b/docs/htmldocs/appendixes.html
@@ -5,13 +5,14 @@
>Appendixes</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
REL="PREVIOUS"
-TITLE="Creating Group Profiles"
-HREF="groupprofiles.html"><LINK
+TITLE="Samba performance issues"
+HREF="speed.html"><LINK
REL="NEXT"
TITLE="Portability"
HREF="portability.html"></HEAD
@@ -42,7 +43,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="groupprofiles.html"
+HREF="speed.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -68,9 +69,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
-NAME="APPENDIXES"
-></A
-><DIV
+NAME="APPENDIXES"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
@@ -83,243 +82,243 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
->21. <A
+>23. <A
HREF="portability.html"
>Portability</A
></DT
><DD
><DL
><DT
->21.1. <A
-HREF="portability.html#AEN3251"
+>23.1. <A
+HREF="portability.html#AEN3139"
>HPUX</A
></DT
><DT
->21.2. <A
-HREF="portability.html#AEN3257"
+>23.2. <A
+HREF="portability.html#AEN3145"
>SCO Unix</A
></DT
><DT
->21.3. <A
-HREF="portability.html#AEN3261"
+>23.3. <A
+HREF="portability.html#AEN3149"
>DNIX</A
></DT
><DT
->21.4. <A
-HREF="portability.html#AEN3290"
+>23.4. <A
+HREF="portability.html#AEN3178"
>RedHat Linux Rembrandt-II</A
></DT
></DL
></DD
><DT
->22. <A
+>24. <A
HREF="other-clients.html"
>Samba and other CIFS clients</A
></DT
><DD
><DL
><DT
->22.1. <A
-HREF="other-clients.html#AEN3311"
+>24.1. <A
+HREF="other-clients.html#AEN3199"
>Macintosh clients?</A
></DT
><DT
->22.2. <A
-HREF="other-clients.html#AEN3320"
+>24.2. <A
+HREF="other-clients.html#AEN3208"
>OS2 Client</A
></DT
><DD
><DL
><DT
->22.2.1. <A
-HREF="other-clients.html#AEN3322"
+>24.2.1. <A
+HREF="other-clients.html#AEN3210"
>How can I configure OS/2 Warp Connect or
OS/2 Warp 4 as a client for Samba?</A
></DT
><DT
->22.2.2. <A
-HREF="other-clients.html#AEN3337"
+>24.2.2. <A
+HREF="other-clients.html#AEN3225"
>How can I configure OS/2 Warp 3 (not Connect),
OS/2 1.2, 1.3 or 2.x for Samba?</A
></DT
><DT
->22.2.3. <A
-HREF="other-clients.html#AEN3346"
+>24.2.3. <A
+HREF="other-clients.html#AEN3234"
>Are there any other issues when OS/2 (any version)
is used as a client?</A
></DT
><DT
->22.2.4. <A
-HREF="other-clients.html#AEN3350"
+>24.2.4. <A
+HREF="other-clients.html#AEN3238"
>How do I get printer driver download working
for OS/2 clients?</A
></DT
></DL
></DD
><DT
->22.3. <A
-HREF="other-clients.html#AEN3360"
+>24.3. <A
+HREF="other-clients.html#AEN3248"
>Windows for Workgroups</A
></DT
><DD
><DL
><DT
->22.3.1. <A
-HREF="other-clients.html#AEN3362"
+>24.3.1. <A
+HREF="other-clients.html#AEN3250"
>Use latest TCP/IP stack from Microsoft</A
></DT
><DT
->22.3.2. <A
-HREF="other-clients.html#AEN3367"
+>24.3.2. <A
+HREF="other-clients.html#AEN3255"
>Delete .pwl files after password change</A
></DT
><DT
->22.3.3. <A
-HREF="other-clients.html#AEN3372"
+>24.3.3. <A
+HREF="other-clients.html#AEN3260"
>Configure WfW password handling</A
></DT
><DT
->22.3.4. <A
-HREF="other-clients.html#AEN3376"
+>24.3.4. <A
+HREF="other-clients.html#AEN3264"
>Case handling of passwords</A
></DT
></DL
></DD
><DT
->22.4. <A
-HREF="other-clients.html#AEN3381"
+>24.4. <A
+HREF="other-clients.html#AEN3269"
>Windows '95/'98</A
></DT
><DT
->22.5. <A
-HREF="other-clients.html#AEN3397"
+>24.5. <A
+HREF="other-clients.html#AEN3285"
>Windows 2000 Service Pack 2</A
></DT
></DL
></DD
><DT
->23. <A
+>25. <A
HREF="bugreport.html"
>Reporting Bugs</A
></DT
><DD
><DL
><DT
->23.1. <A
-HREF="bugreport.html#AEN3421"
+>25.1. <A
+HREF="bugreport.html#AEN3309"
>Introduction</A
></DT
><DT
->23.2. <A
-HREF="bugreport.html#AEN3431"
+>25.2. <A
+HREF="bugreport.html#AEN3319"
>General info</A
></DT
><DT
->23.3. <A
-HREF="bugreport.html#AEN3437"
+>25.3. <A
+HREF="bugreport.html#AEN3325"
>Debug levels</A
></DT
><DT
->23.4. <A
-HREF="bugreport.html#AEN3454"
+>25.4. <A
+HREF="bugreport.html#AEN3342"
>Internal errors</A
></DT
><DT
->23.5. <A
-HREF="bugreport.html#AEN3464"
+>25.5. <A
+HREF="bugreport.html#AEN3352"
>Attaching to a running process</A
></DT
><DT
->23.6. <A
-HREF="bugreport.html#AEN3467"
+>25.6. <A
+HREF="bugreport.html#AEN3355"
>Patches</A
></DT
></DL
></DD
><DT
->24. <A
+>26. <A
HREF="diagnosis.html"
>Diagnosing your samba server</A
></DT
><DD
><DL
><DT
->24.1. <A
-HREF="diagnosis.html#AEN3490"
+>26.1. <A
+HREF="diagnosis.html#AEN3378"
>Introduction</A
></DT
><DT
->24.2. <A
-HREF="diagnosis.html#AEN3495"
+>26.2. <A
+HREF="diagnosis.html#AEN3383"
>Assumptions</A
></DT
><DT
->24.3. <A
-HREF="diagnosis.html#AEN3505"
+>26.3. <A
+HREF="diagnosis.html#AEN3393"
>Tests</A
></DT
><DD
><DL
><DT
->24.3.1. <A
-HREF="diagnosis.html#AEN3507"
+>26.3.1. <A
+HREF="diagnosis.html#AEN3395"
>Test 1</A
></DT
><DT
->24.3.2. <A
-HREF="diagnosis.html#AEN3513"
+>26.3.2. <A
+HREF="diagnosis.html#AEN3401"
>Test 2</A
></DT
><DT
->24.3.3. <A
-HREF="diagnosis.html#AEN3519"
+>26.3.3. <A
+HREF="diagnosis.html#AEN3407"
>Test 3</A
></DT
><DT
->24.3.4. <A
-HREF="diagnosis.html#AEN3534"
+>26.3.4. <A
+HREF="diagnosis.html#AEN3422"
>Test 4</A
></DT
><DT
->24.3.5. <A
-HREF="diagnosis.html#AEN3539"
+>26.3.5. <A
+HREF="diagnosis.html#AEN3427"
>Test 5</A
></DT
><DT
->24.3.6. <A
-HREF="diagnosis.html#AEN3545"
+>26.3.6. <A
+HREF="diagnosis.html#AEN3433"
>Test 6</A
></DT
><DT
->24.3.7. <A
-HREF="diagnosis.html#AEN3553"
+>26.3.7. <A
+HREF="diagnosis.html#AEN3441"
>Test 7</A
></DT
><DT
->24.3.8. <A
-HREF="diagnosis.html#AEN3579"
+>26.3.8. <A
+HREF="diagnosis.html#AEN3467"
>Test 8</A
></DT
><DT
->24.3.9. <A
-HREF="diagnosis.html#AEN3596"
+>26.3.9. <A
+HREF="diagnosis.html#AEN3484"
>Test 9</A
></DT
><DT
->24.3.10. <A
-HREF="diagnosis.html#AEN3604"
+>26.3.10. <A
+HREF="diagnosis.html#AEN3492"
>Test 10</A
></DT
><DT
->24.3.11. <A
-HREF="diagnosis.html#AEN3610"
+>26.3.11. <A
+HREF="diagnosis.html#AEN3498"
>Test 11</A
></DT
></DL
></DD
><DT
->24.4. <A
-HREF="diagnosis.html#AEN3615"
+>26.4. <A
+HREF="diagnosis.html#AEN3503"
>Still having troubles?</A
></DT
></DL
@@ -344,7 +343,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="groupprofiles.html"
+HREF="speed.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -372,7 +371,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Creating Group Profiles</TD
+>Samba performance issues</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/browsing-quick.html b/docs/htmldocs/browsing-quick.html
index 680bdfc1de..8c597e001f 100644
--- a/docs/htmldocs/browsing-quick.html
+++ b/docs/htmldocs/browsing-quick.html
@@ -5,7 +5,8 @@
>Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -13,11 +14,11 @@ REL="UP"
TITLE="General installation"
HREF="introduction.html"><LINK
REL="PREVIOUS"
-TITLE="How to Install and Test SAMBA"
-HREF="install.html"><LINK
+TITLE="Improved browsing in samba"
+HREF="improved-browsing.html"><LINK
REL="NEXT"
-TITLE="User information database"
-HREF="passdb.html"></HEAD
+TITLE="LanMan and NT Password Encryption in Samba"
+HREF="pwencrypt.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -45,7 +46,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="install.html"
+HREF="improved-browsing.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="passdb.html"
+HREF="pwencrypt.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,9 +73,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="BROWSING-QUICK"
-></A
->Chapter 2. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</H1
+NAME="BROWSING-QUICK">Chapter 3. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</H1
><P
>This document should be read in conjunction with Browsing and may
be taken as the fast track guide to implementing browsing across subnets
@@ -86,9 +85,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN230"
-></A
->2.1. Discussion</H1
+NAME="AEN377">3.1. Discussion</H1
><P
>Firstly, all MS Windows networking is based on SMB (Server Message
Block) based messaging. SMB messaging is implemented using NetBIOS. Samba
@@ -132,9 +129,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN238"
-></A
->2.2. Use of the "Remote Announce" parameter</H1
+NAME="AEN385">3.2. Use of the "Remote Announce" parameter</H1
><P
>The "remote announce" parameter of smb.conf can be used to forcibly ensure
that all the NetBIOS names on a network get announced to a remote network.
@@ -190,9 +185,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN252"
-></A
->2.3. Use of the "Remote Browse Sync" parameter</H1
+NAME="AEN399">3.3. Use of the "Remote Browse Sync" parameter</H1
><P
>The "remote browse sync" parameter of smb.conf is used to announce to
another LMB that it must synchronise it's NetBIOS name list with our
@@ -200,10 +193,9 @@ Samba LMB. It works ONLY if the Samba server that has this option is
simultaneously the LMB on it's network segment.</P
><P
>The syntax of the "remote browse sync" parameter is:
-
<PRE
CLASS="PROGRAMLISTING"
->remote browse sync = a.b.c.d</PRE
+> remote browse sync = a.b.c.d</PRE
>
where a.b.c.d is either the IP address of the remote LMB or else is the network broadcast address of the remote segment.</P
@@ -213,9 +205,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN257"
-></A
->2.4. Use of WINS</H1
+NAME="AEN404">3.4. Use of WINS</H1
><P
>Use of WINS (either Samba WINS _or_ MS Windows NT Server WINS) is highly
recommended. Every NetBIOS machine registers it's name together with a
@@ -275,9 +265,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN268"
-></A
->2.5. Do NOT use more than one (1) protocol on MS Windows machines</H1
+NAME="AEN415">3.5. Do NOT use more than one (1) protocol on MS Windows machines</H1
><P
>A very common cause of browsing problems results from installing more than
one protocol on an MS Windows machine.</P
@@ -305,14 +293,12 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN274"
-></A
->2.6. Name Resolution Order</H1
+NAME="AEN421">3.6. Name Resolution Order</H1
><P
>Resolution of NetBIOS names to IP addresses can take place using a number
of methods. The only ones that can provide NetBIOS name_type information
-are:</P
-><P
+are:
+<P
></P
><TABLE
BORDER="0"
@@ -333,9 +319,10 @@ BORDER="0"
></TABLE
><P
></P
+></P
><P
->Alternative means of name resolution includes:</P
-><P
+>Alternative means of name resolution includes:
+<P
></P
><TABLE
BORDER="0"
@@ -352,23 +339,24 @@ BORDER="0"
></TABLE
><P
></P
+></P
><P
>Many sites want to restrict DNS lookups and want to avoid broadcast name
resolution traffic. The "name resolve order" parameter is of great help here.
The syntax of the "name resolve order" parameter is:
<PRE
CLASS="PROGRAMLISTING"
->name resolve order = wins lmhosts bcast host</PRE
+> name resolve order = wins lmhosts bcast host</PRE
>
_or_
<PRE
CLASS="PROGRAMLISTING"
->name resolve order = wins lmhosts (eliminates bcast and host)</PRE
+> name resolve order = wins lmhosts (eliminates bcast and host)</PRE
>
The default is:
<PRE
CLASS="PROGRAMLISTING"
->name resolve order = host lmhost wins bcast</PRE
+> name resolve order = host lmhost wins bcast</PRE
>.
where "host" refers the the native methods used by the Unix system
to implement the gethostbyname() function call. This is normally
@@ -400,7 +388,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="install.html"
+HREF="improved-browsing.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -418,7 +406,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="passdb.html"
+HREF="pwencrypt.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -428,7 +416,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->How to Install and Test SAMBA</TD
+>Improved browsing in samba</TD
><TD
WIDTH="34%"
ALIGN="center"
@@ -442,7 +430,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->User information database</TD
+>LanMan and NT Password Encryption in Samba</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/bugreport.html b/docs/htmldocs/bugreport.html
index 813d0055cc..fcc4b7e91a 100644
--- a/docs/htmldocs/bugreport.html
+++ b/docs/htmldocs/bugreport.html
@@ -5,7 +5,8 @@
>Reporting Bugs</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="BUGREPORT"
-></A
->Chapter 23. Reporting Bugs</H1
+NAME="BUGREPORT">Chapter 25. Reporting Bugs</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3421"
-></A
->23.1. Introduction</H1
+NAME="AEN3309">25.1. Introduction</H1
><P
>The email address for bug reports for stable releases is <A
HREF="samba@samba.org"
@@ -125,9 +122,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3431"
-></A
->23.2. General info</H1
+NAME="AEN3319">25.2. General info</H1
><P
>Before submitting a bug report check your config for silly
errors. Look in your log files for obvious messages that tell you that
@@ -150,9 +145,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3437"
-></A
->23.3. Debug levels</H1
+NAME="AEN3325">25.3. Debug levels</H1
><P
>If the bug has anything to do with Samba behaving incorrectly as a
server (like refusing to open a file) then the log files will probably
@@ -220,9 +213,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3454"
-></A
->23.4. Internal errors</H1
+NAME="AEN3342">25.4. Internal errors</H1
><P
>If you get a "INTERNAL ERROR" message in your log files it means that
Samba got an unexpected signal while running. It is probably a
@@ -264,9 +255,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3464"
-></A
->23.5. Attaching to a running process</H1
+NAME="AEN3352">25.5. Attaching to a running process</H1
><P
>Unfortunately some unixes (in particular some recent linux kernels)
refuse to dump a core file if the task has changed uid (which smbd
@@ -281,9 +270,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3467"
-></A
->23.6. Patches</H1
+NAME="AEN3355">25.6. Patches</H1
><P
>The best sort of bug report is one that includes a fix! If you send us
patches please use <B
diff --git a/docs/htmldocs/cvs-access.html b/docs/htmldocs/cvs-access.html
index 4e088faf70..73cd333805 100644
--- a/docs/htmldocs/cvs-access.html
+++ b/docs/htmldocs/cvs-access.html
@@ -2,10 +2,11 @@
<HTML
><HEAD
><TITLE
->Access Samba source code via CVS</TITLE
+>HOWTO Access Samba source code via CVS</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -13,8 +14,8 @@ REL="UP"
TITLE="Optional configuration"
HREF="optional.html"><LINK
REL="PREVIOUS"
-TITLE="Stackable VFS modules"
-HREF="vfs.html"><LINK
+TITLE="Storing Samba's User/Machine Account information in an LDAP Directory"
+HREF="samba-ldap-howto.html"><LINK
REL="NEXT"
TITLE="Group mapping HOWTO"
HREF="groupmapping.html"></HEAD
@@ -45,7 +46,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="vfs.html"
+HREF="samba-ldap-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="CVS-ACCESS"
-></A
->Chapter 17. Access Samba source code via CVS</H1
+NAME="CVS-ACCESS">Chapter 20. HOWTO Access Samba source code via CVS</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2942"
-></A
->17.1. Introduction</H1
+NAME="AEN2964">20.1. Introduction</H1
><P
>Samba is developed in an open environment. Developers use CVS
(Concurrent Versioning System) to "checkin" (also known as
@@ -102,9 +99,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2947"
-></A
->17.2. CVS Access to samba.org</H1
+NAME="AEN2969">20.2. CVS Access to samba.org</H1
><P
>The machine samba.org runs a publicly accessible CVS
repository for access to the source code of several packages,
@@ -115,9 +110,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2950"
-></A
->17.2.1. Access via CVSweb</H2
+NAME="AEN2972">20.2.1. Access via CVSweb</H2
><P
>You can access the source code via your
favourite WWW browser. This allows you to access the contents of
@@ -136,9 +129,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2955"
-></A
->17.2.2. Access via cvs</H2
+NAME="AEN2977">20.2.2. Access via cvs</H2
><P
>You can also access the source code via a
normal cvs client. This gives you much more control over you can
@@ -256,7 +247,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="vfs.html"
+HREF="samba-ldap-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -284,7 +275,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Stackable VFS modules</TD
+>Storing Samba's User/Machine Account information in an LDAP Directory</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/diagnosis.html b/docs/htmldocs/diagnosis.html
index 0c71043074..a7b2e59436 100644
--- a/docs/htmldocs/diagnosis.html
+++ b/docs/htmldocs/diagnosis.html
@@ -5,7 +5,8 @@
>Diagnosing your samba server</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -65,17 +66,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="DIAGNOSIS"
-></A
->Chapter 24. Diagnosing your samba server</H1
+NAME="DIAGNOSIS">Chapter 26. Diagnosing your samba server</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3490"
-></A
->24.1. Introduction</H1
+NAME="AEN3378">26.1. Introduction</H1
><P
>This file contains a list of tests you can perform to validate your
Samba server. It also tells you what the likely cause of the problem
@@ -95,9 +92,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3495"
-></A
->24.2. Assumptions</H1
+NAME="AEN3383">26.2. Assumptions</H1
><P
>In all of the tests it is assumed you have a Samba server called
BIGSERVER and a PC called ACLIENT both in workgroup TESTGROUP.</P
@@ -133,17 +128,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3505"
-></A
->24.3. Tests</H1
+NAME="AEN3393">26.3. Tests</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3507"
-></A
->24.3.1. Test 1</H2
+NAME="AEN3395">26.3.1. Test 1</H2
><P
>In the directory in which you store your smb.conf file, run the command
"testparm smb.conf". If it reports any errors then your smb.conf
@@ -163,9 +154,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3513"
-></A
->24.3.2. Test 2</H2
+NAME="AEN3401">26.3.2. Test 2</H2
><P
>Run the command "ping BIGSERVER" from the PC and "ping ACLIENT" from
the unix box. If you don't get a valid response then your TCP/IP
@@ -189,9 +178,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3519"
-></A
->24.3.3. Test 3</H2
+NAME="AEN3407">26.3.3. Test 3</H2
><P
>Run the command "smbclient -L BIGSERVER" on the unix box. You
should get a list of available shares back. </P
@@ -260,9 +247,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3534"
-></A
->24.3.4. Test 4</H2
+NAME="AEN3422">26.3.4. Test 4</H2
><P
>Run the command "nmblookup -B BIGSERVER __SAMBA__". You should get the
IP address of your Samba server back.</P
@@ -281,9 +266,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3539"
-></A
->24.3.5. Test 5</H2
+NAME="AEN3427">26.3.5. Test 5</H2
><P
>run the command <B
CLASS="COMMAND"
@@ -302,9 +285,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3545"
-></A
->24.3.6. Test 6</H2
+NAME="AEN3433">26.3.6. Test 6</H2
><P
>Run the command <B
CLASS="COMMAND"
@@ -336,9 +317,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3553"
-></A
->24.3.7. Test 7</H2
+NAME="AEN3441">26.3.7. Test 7</H2
><P
>Run the command <B
CLASS="COMMAND"
@@ -425,9 +404,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3579"
-></A
->24.3.8. Test 8</H2
+NAME="AEN3467">26.3.8. Test 8</H2
><P
>On the PC type the command <B
CLASS="COMMAND"
@@ -485,9 +462,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3596"
-></A
->24.3.9. Test 9</H2
+NAME="AEN3484">26.3.9. Test 9</H2
><P
>Run the command <B
CLASS="COMMAND"
@@ -519,9 +494,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3604"
-></A
->24.3.10. Test 10</H2
+NAME="AEN3492">26.3.10. Test 10</H2
><P
>Run the command <B
CLASS="COMMAND"
@@ -545,9 +518,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3610"
-></A
->24.3.11. Test 11</H2
+NAME="AEN3498">26.3.11. Test 11</H2
><P
>From file manager try to browse the server. Your samba server should
appear in the browse list of your local workgroup (or the one you
@@ -573,9 +544,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3615"
-></A
->24.4. Still having troubles?</H1
+NAME="AEN3503">26.4. Still having troubles?</H1
><P
>Try the mailing list or newsgroup, or use the ethereal utility to
sniff the problem. The official samba mailing list can be reached at
diff --git a/docs/htmldocs/domain-security.html b/docs/htmldocs/domain-security.html
index fcb40641e4..670d96ba5f 100644
--- a/docs/htmldocs/domain-security.html
+++ b/docs/htmldocs/domain-security.html
@@ -2,10 +2,11 @@
<HTML
><HEAD
><TITLE
->Samba as a NT4 or Win2k domain member</TITLE
+>Samba as a NT4 domain member</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,23 +73,19 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="DOMAIN-SECURITY"
-></A
->Chapter 8. Samba as a NT4 or Win2k domain member</H1
+NAME="DOMAIN-SECURITY">Chapter 9. Samba as a NT4 domain member</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1423"
-></A
->8.1. Joining an NT Domain with Samba 3.0</H1
+NAME="AEN1273">9.1. Joining an NT Domain with Samba 2.2</H1
><P
->Assume you have a Samba 3.0 server with a NetBIOS name of
+>Assume you have a Samba 2.x server with a NetBIOS name of
<TT
CLASS="CONSTANT"
>SERV1</TT
-> and are joining an or Win2k NT domain called
+> and are joining an NT domain called
<TT
CLASS="CONSTANT"
>DOM</TT
@@ -106,7 +103,107 @@ CLASS="CONSTANT"
</TT
>.</P
><P
->Firstly, you must edit your <A
+>In order to join the domain, first stop all Samba daemons
+ and run the command:</P
+><P
+><TT
+CLASS="PROMPT"
+>root# </TT
+><TT
+CLASS="USERINPUT"
+><B
+>smbpasswd -j DOM -r DOMPDC
+ -U<TT
+CLASS="REPLACEABLE"
+><I
+>Administrator%password</I
+></TT
+></B
+></TT
+></P
+><P
+>as we are joining the domain DOM and the PDC for that domain
+ (the only machine that has write access to the domain SAM database)
+ is DOMPDC. The <TT
+CLASS="REPLACEABLE"
+><I
+>Administrator%password</I
+></TT
+> is
+ the login name and password for an account which has the necessary
+ privilege to add machines to the domain. If this is successful
+ you will see the message:</P
+><P
+><TT
+CLASS="COMPUTEROUTPUT"
+>smbpasswd: Joined domain DOM.</TT
+>
+ </P
+><P
+>in your terminal window. See the <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+> smbpasswd(8)</A
+> man page for more details.</P
+><P
+>There is existing development code to join a domain
+ without having to create the machine trust account on the PDC
+ beforehand. This code will hopefully be available soon
+ in release branches as well.</P
+><P
+>This command goes through the machine account password
+ change protocol, then writes the new (random) machine account
+ password for this Samba server into a file in the same directory
+ in which an smbpasswd file would be stored - normally :</P
+><P
+><TT
+CLASS="FILENAME"
+>/usr/local/samba/private</TT
+></P
+><P
+>In Samba 2.0.x, the filename looks like this:</P
+><P
+><TT
+CLASS="FILENAME"
+><TT
+CLASS="REPLACEABLE"
+><I
+>&lt;NT DOMAIN NAME&gt;</I
+></TT
+>.<TT
+CLASS="REPLACEABLE"
+><I
+>&lt;Samba
+ Server Name&gt;</I
+></TT
+>.mac</TT
+></P
+><P
+>The <TT
+CLASS="FILENAME"
+>.mac</TT
+> suffix stands for machine account
+ password file. So in our example above, the file would be called:</P
+><P
+><TT
+CLASS="FILENAME"
+>DOM.SERV1.mac</TT
+></P
+><P
+>In Samba 2.2, this file has been replaced with a TDB
+ (Trivial Database) file named <TT
+CLASS="FILENAME"
+>secrets.tdb</TT
+>.
+ </P
+><P
+>This file is created and owned by root and is not
+ readable by any other user. It is the key to the domain-level
+ security for your system, and should be treated as carefully
+ as a shadow password file.</P
+><P
+>Now, before restarting the Samba daemons you must
+ edit your <A
HREF="smb.conf.5.html"
TARGET="_top"
><TT
@@ -131,12 +228,7 @@ CLASS="PARAMETER"
><B
CLASS="COMMAND"
>security = domain</B
-> or
- <B
-CLASS="COMMAND"
->security = ads</B
-> depending on if the PDC is
- NT4 or running Active Directory respectivly.</P
+></P
><P
>Next change the <A
HREF="smb.conf.5.html#WORKGROUP"
@@ -203,77 +295,11 @@ CLASS="COMMAND"
>password server = *</B
></P
><P
->This method, allows Samba to use exactly the same
- mechanism that NT does. This
+>This method, which was introduced in Samba 2.0.6,
+ allows Samba to use exactly the same mechanism that NT does. This
method either broadcasts or uses a WINS database in order to
find domain controllers to authenticate against.</P
><P
->In order to actually join the domain, you must run this
- command:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->net join -S DOMPDC
- -U<TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-></B
-></TT
-></P
-><P
->as we are joining the domain DOM and the PDC for that domain
- (the only machine that has write access to the domain SAM database)
- is DOMPDC. The <TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-> is
- the login name and password for an account which has the necessary
- privilege to add machines to the domain. If this is successful
- you will see the message:</P
-><P
-><TT
-CLASS="COMPUTEROUTPUT"
->Joined domain DOM.</TT
->
- or <TT
-CLASS="COMPUTEROUTPUT"
->Joined 'SERV1' to realm 'MYREALM'</TT
->
- </P
-><P
->in your terminal window. See the <A
-HREF="net.8.html"
-TARGET="_top"
-> net(8)</A
-> man page for more details.</P
-><P
->This process joins the server to thedomain
- without having to create the machine trust account on the PDC
- beforehand.</P
-><P
->This command goes through the machine account password
- change protocol, then writes the new (random) machine account
- password for this Samba server into a file in the same directory
- in which an smbpasswd file would be stored - normally :</P
-><P
-><TT
-CLASS="FILENAME"
->/usr/local/samba/private/secrets.tdb</TT
-></P
-><P
->This file is created and owned by root and is not
- readable by any other user. It is the key to the domain-level
- security for your system, and should be treated as carefully
- as a shadow password file.</P
-><P
>Finally, restart your Samba daemons and get ready for
clients to begin using domain security!</P
></DIV
@@ -282,23 +308,30 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1478"
-></A
->8.2. Samba and Windows 2000 Domains</H1
+NAME="AEN1337">9.2. Samba and Windows 2000 Domains</H1
><P
>Many people have asked regarding the state of Samba's ability to participate in
a Windows 2000 Domain. Samba 3.0 is able to act as a member server of a Windows
-2000 domain operating in mixed or native mode. The steps above apply
-to both NT4 and Windows 2000.</P
+2000 domain operating in mixed or native mode.</P
+><P
+>There is much confusion between the circumstances that require a "mixed" mode
+Win2k DC and a when this host can be switched to "native" mode. A "mixed" mode
+Win2k domain controller is only needed if Windows NT BDCs must exist in the same
+domain. By default, a Win2k DC in "native" mode will still support
+NetBIOS and NTLMv1 for authentication of legacy clients such as Windows 9x and
+NT 4.0. Samba has the same requirements as a Windows NT 4.0 member server.</P
+><P
+>The steps for adding a Samba 2.2 host to a Win2k domain are the same as those
+for adding a Samba server to a Windows NT 4.0 domain. The only exception is that
+the "Server Manager" from NT 4 has been replaced by the "Active Directory Users and
+Computers" MMC (Microsoft Management Console) plugin.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1481"
-></A
->8.3. Why is this better than security = server?</H1
+NAME="AEN1342">9.3. Why is this better than security = server?</H1
><P
>Currently, domain security in Samba doesn't free you from
having to create local Unix users to represent the users attaching
@@ -354,7 +387,13 @@ CLASS="COMMAND"
>And finally, acting in the same manner as an NT server
authenticating to a PDC means that as part of the authentication
reply, the Samba server gets the user identification information such
- as the user SID, the list of NT groups the user belongs to, etc. </P
+ as the user SID, the list of NT groups the user belongs to, etc. All
+ this information will allow Samba to be extended in the future into
+ a mode the developers currently call appliance mode. In this mode,
+ no local Unix users will be necessary, and Samba will generate Unix
+ uids and gids from the information passed back from the PDC when a
+ user is authenticated, making a Samba server truly plug and play
+ in an NT domain environment. Watch for this code soon.</P
><P
><SPAN
CLASS="emphasis"
diff --git a/docs/htmldocs/findsmb.1.html b/docs/htmldocs/findsmb.1.html
index bf63db867c..af7100ed6f 100644
--- a/docs/htmldocs/findsmb.1.html
+++ b/docs/htmldocs/findsmb.1.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>findsmb</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="FINDSMB.1"
-></A
->findsmb</H1
+NAME="FINDSMB">findsmb</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -30,15 +29,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>findsmb</B
-> [subnet broadcast address]</P
+> [subnet broadcast address]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -48,14 +45,11 @@ NAME="AEN12"
><H2
>DESCRIPTION</H2
><P
->This perl script is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
->
- suite.</P
+>This perl script is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
+> suite.</P
><P
><B
CLASS="COMMAND"
@@ -63,27 +57,27 @@ CLASS="COMMAND"
> is a perl script that
prints out several pieces of information about machines
on a subnet that respond to SMB name query requests.
- It uses <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
->
- and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->
- to obtain this information.
+ It uses <A
+HREF="nmblookup.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> nmblookup(1)</B
+></A
+> and <A
+HREF="smbclient.1.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>smbclient(1)</B
+></A
+> to obtain this information.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN26"
+NAME="AEN22"
></A
><H2
>OPTIONS</H2
@@ -103,12 +97,13 @@ CLASS="COMMAND"
bugs in Windows95 into account when trying to find a Netbios name
registered of the remote machine. This option is disabled by default
because it is specific to Windows 95 and Windows 95 machines only.
- If set, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
+ If set, <A
+HREF="nmblookup.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmblookup</B
+></A
>
will be called with <TT
CLASS="CONSTANT"
@@ -124,22 +119,15 @@ CLASS="COMMAND"
>findsmb
</B
> will probe the subnet of the machine where
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->findsmb</SPAN
->(1)</SPAN
->
- is run. This value is passed to
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
->
- as part of the <TT
+ <B
+CLASS="COMMAND"
+>findsmb</B
+> is run. This value is passed
+ to <B
+CLASS="COMMAND"
+>nmblookup</B
+> as part of the
+ <TT
CLASS="CONSTANT"
>-B</TT
> option.</P
@@ -150,7 +138,7 @@ CLASS="CONSTANT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN50"
+NAME="AEN41"
></A
><H2
>EXAMPLES</H2
@@ -178,14 +166,14 @@ CLASS="COMMAND"
CLASS="CONSTANT"
>-r</TT
> option
- must be run on a system without <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> running.
-
+ must be run on a system without <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd</B
+></A
+> running.
If <B
CLASS="COMMAND"
>nmbd</B
@@ -204,14 +192,22 @@ CLASS="COMMAND"
>For example, running <B
CLASS="COMMAND"
>findsmb</B
->
- without <TT
+> without
+ <TT
CLASS="CONSTANT"
>-r</TT
> option set would yield output similar
to the following</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
+><TT
+CLASS="COMPUTEROUTPUT"
>IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
192.168.35.10 MINESET-TEST1 [DMVENGR]
@@ -223,12 +219,17 @@ CLASS="SCREEN"
192.168.35.78 HERBDHCP1 +[HERB]
192.168.35.88 SCNT2 +[MVENGR] [Windows NT 4.0] [NT LAN Manager 4.0]
192.168.35.93 FROGSTAR-PC [MVENGR] [Windows 5.0] [Windows 2000 LAN Manager]
-192.168.35.97 HERBNT1 *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]</PRE
+192.168.35.97 HERBNT1 *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]
+ </TT
+></PRE
+></TD
+></TR
+></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN68"
+NAME="AEN59"
></A
><H2
>VERSION</H2
@@ -239,37 +240,41 @@ NAME="AEN68"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN71"
+NAME="AEN62"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
->,
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
+><A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
+>,
+ <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)
+ </B
+></A
+>, and <A
+HREF="nmblookup.1.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>nmblookup(1)</B
+></A
>
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN83"
+NAME="AEN71"
></A
><H2
>AUTHOR</H2
@@ -281,14 +286,14 @@ NAME="AEN83"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
->ftp://ftp.icce.rug.nl/pub/unix/</A
->)
- and updated for the Samba 2.0 release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+> ftp://ftp.icce.rug.nl/pub/unix/</A
+>) and updated for the Samba 2.0
+ release by Jeremy Allison. The conversion to DocBook for
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/groupmapping.html b/docs/htmldocs/groupmapping.html
index d7eafcb58f..84cf521fc9 100644
--- a/docs/htmldocs/groupmapping.html
+++ b/docs/htmldocs/groupmapping.html
@@ -5,7 +5,8 @@
>Group mapping HOWTO</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -13,7 +14,7 @@ REL="UP"
TITLE="Optional configuration"
HREF="optional.html"><LINK
REL="PREVIOUS"
-TITLE="Access Samba source code via CVS"
+TITLE="HOWTO Access Samba source code via CVS"
HREF="cvs-access.html"><LINK
REL="NEXT"
TITLE="Samba performance issues"
@@ -72,9 +73,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="GROUPMAPPING"
-></A
->Chapter 18. Group mapping HOWTO</H1
+NAME="GROUPMAPPING">Chapter 21. Group mapping HOWTO</H1
><P
>
Starting with Samba 3.0 alpha 2, a new group mapping function is available. The
@@ -213,7 +212,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Access Samba source code via CVS</TD
+>HOWTO Access Samba source code via CVS</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/groupprofiles.html b/docs/htmldocs/groupprofiles.html
deleted file mode 100644
index c9184032aa..0000000000
--- a/docs/htmldocs/groupprofiles.html
+++ /dev/null
@@ -1,565 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML
-><HEAD
-><TITLE
->Creating Group Profiles</TITLE
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
-REL="HOME"
-TITLE="SAMBA Project Documentation"
-HREF="samba-howto-collection.html"><LINK
-REL="UP"
-TITLE="Optional configuration"
-HREF="optional.html"><LINK
-REL="PREVIOUS"
-TITLE="Samba performance issues"
-HREF="speed.html"><LINK
-REL="NEXT"
-TITLE="Appendixes"
-HREF="appendixes.html"></HEAD
-><BODY
-CLASS="CHAPTER"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="NAVHEADER"
-><TABLE
-SUMMARY="Header navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TH
-COLSPAN="3"
-ALIGN="center"
->SAMBA Project Documentation</TH
-></TR
-><TR
-><TD
-WIDTH="10%"
-ALIGN="left"
-VALIGN="bottom"
-><A
-HREF="speed.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="80%"
-ALIGN="center"
-VALIGN="bottom"
-></TD
-><TD
-WIDTH="10%"
-ALIGN="right"
-VALIGN="bottom"
-><A
-HREF="appendixes.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-></TABLE
-><HR
-ALIGN="LEFT"
-WIDTH="100%"></DIV
-><DIV
-CLASS="CHAPTER"
-><H1
-><A
-NAME="GROUPPROFILES"
-></A
->Chapter 20. Creating Group Profiles</H1
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN3123"
-></A
->20.1. Windows '9x</H1
-><P
->You need the Win98 Group Policy Editor to
-set Group Profiles up under Windows '9x. It can be found on the Original
-full product Win98 installation CD under
-<TT
-CLASS="FILENAME"
->tools/reskit/netadmin/poledit</TT
->. You install this
-using the Add/Remove Programs facility and then click on the 'Have Disk'
-tab.</P
-><P
->Use the Group Policy Editor to create a policy file that specifies the
-location of user profiles and/or the <TT
-CLASS="FILENAME"
->My Documents</TT
-> etc.
-stuff. You then save these settings in a file called
-<TT
-CLASS="FILENAME"
->Config.POL</TT
-> that needs to be placed in
-the root of the [NETLOGON] share. If your Win98 is configured to log onto
-the Samba Domain, it will automatically read this file and update the
-Win98 registry of the machine that is logging on.</P
-><P
->All of this is covered in the Win98 Resource Kit documentation.</P
-><P
->If you do not do it this way, then every so often Win98 will check the
-integrity of the registry and will restore it's settings from the back-up
-copy of the registry it stores on each Win98 machine. Hence, you will notice
-things changing back to the original settings.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN3132"
-></A
->20.2. Windows NT 4</H1
-><P
->Unfortunately, the Resource Kit info is Win NT4/2K version specific.</P
-><P
->Here is a quick guide:</P
-><P
-></P
-><UL
-><LI
-><P
->On your NT4 Domain Controller, right click on 'My Computer', then
-select the tab labelled 'User Profiles'.</P
-></LI
-><LI
-><P
->Select a user profile you want to migrate and click on it.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="90%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I am using the term &quot;migrate&quot; lossely. You can copy a profile to
-create a group profile. You can give the user 'Everyone' rights to the
-profile you copy this to. That is what you need to do, since your samba
-domain is not a member of a trust relationship with your NT4 PDC.</P
-></TD
-></TR
-></TABLE
-></DIV
-></LI
-><LI
-><P
->Click the 'Copy To' button.</P
-></LI
-><LI
-><P
->In the box labelled 'Copy Profile to' add your new path, eg:
-<TT
-CLASS="FILENAME"
->c:\temp\foobar</TT
-></P
-></LI
-><LI
-><P
->Click on the button labelled 'Change' in the "Permitted to use" box.</P
-></LI
-><LI
-><P
->Click on the group 'Everyone' and then click OK. This closes the
-'chose user' box.</P
-></LI
-><LI
-><P
->Now click OK.</P
-></LI
-></UL
-><P
->Follow the above for every profile you need to migrate.</P
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN3155"
-></A
->20.2.1. Side bar Notes</H2
-><P
->You should obtain the SID of your NT4 domain. You can use smbpasswd to do
-this. Read the man page.</P
-><P
->With Samba-3.0.0 alpha code you can import all you NT4 domain accounts
-using the net samsync method. This way you can retain your profile
-settings as well as all your users.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN3159"
-></A
->20.2.2. Mandatory profiles</H2
-><P
->The above method can be used to create mandatory profiles also. To convert
-a group profile into a mandatory profile simply locate the NTUser.DAT file
-in the copied profile and rename it to NTUser.MAN.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN3162"
-></A
->20.2.3. moveuser.exe</H2
-><P
->The W2K professional resource kit has moveuser.exe. moveuser.exe changes
-the security of a profile from one user to another. This allows the account
-domain to change, and/or the user name to change.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN3165"
-></A
->20.2.4. Get SID</H2
-><P
->You can identify the SID by using GetSID.exe from the Windows NT Server 4.0
-Resource Kit.</P
-><P
->Windows NT 4.0 stores the local profile information in the registry under
-the following key:
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList</P
-><P
->Under the ProfileList key, there will be subkeys named with the SIDs of the
-users who have logged on to this computer. (To find the profile information
-for the user whose locally cached profile you want to move, find the SID for
-the user with the GetSID.exe utility.) Inside of the appropriate user's
-subkey, you will see a string value named ProfileImagePath.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN3170"
-></A
->20.3. Windows 2000/XP</H1
-><P
->You must first convert the profile from a local profile to a domain
-profile on the MS Windows workstation as follows:</P
-><P
-></P
-><UL
-><LI
-><P
->Log on as the LOCAL workstation administrator.</P
-></LI
-><LI
-><P
->Right click on the 'My Computer' Icon, select 'Properties'</P
-></LI
-><LI
-><P
->Click on the 'User Profiles' tab</P
-></LI
-><LI
-><P
->Select the profile you wish to convert (click on it once)</P
-></LI
-><LI
-><P
->Click on the button 'Copy To'</P
-></LI
-><LI
-><P
->In the "Permitted to use" box, click on the 'Change' button.</P
-></LI
-><LI
-><P
->Click on the 'Look in" area that lists the machine name, when you click
-here it will open up a selection box. Click on the domain to which the
-profile must be accessible.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="90%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->You will need to log on if a logon box opens up. Eg: In the connect
-as: MIDEARTH\root, password: mypassword.</P
-></TD
-></TR
-></TABLE
-></DIV
-></LI
-><LI
-><P
->To make the profile capable of being used by anyone select 'Everyone'</P
-></LI
-><LI
-><P
->Click OK. The Selection box will close.</P
-></LI
-><LI
-><P
->Now click on the 'Ok' button to create the profile in the path you
-nominated.</P
-></LI
-></UL
-><P
->Done. You now have a profile that can be editted using the samba-3.0.0
-profiles tool.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Under NT/2K the use of mandotory profiles forces the use of MS Exchange
-storage of mail data. That keeps desktop profiles usable.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-></P
-><UL
-><LI
-><P
->This is a security check new to Windows XP (or maybe only
-Windows XP service pack 1). It can be disabled via a group policy in
-Active Directory. The policy is:</P
-><P
->"Computer Configuration\Administrative Templates\System\User
-Profiles\Do not check for user ownership of Roaming Profile Folders"</P
-><P
->...and it should be set to "Enabled".
-Does the new version of samba have an Active Directory analogue? If so,
-then you may be able to set the policy through this.</P
-><P
->If you cannot set group policies in samba, then you may be able to set
-the policy locally on each machine. If you want to try this, then do
-the following (N.B. I don't know for sure that this will work in the
-same way as a domain group policy):</P
-></LI
-><LI
-><P
->On the XP workstation log in with an Administrator account.</P
-></LI
-><LI
-><P
->Click: "Start", "Run"</P
-></LI
-><LI
-><P
->Type: "mmc"</P
-></LI
-><LI
-><P
->Click: "OK"</P
-></LI
-><LI
-><P
->A Microsoft Management Console should appear.</P
-></LI
-><LI
-><P
->Click: File, "Add/Remove Snap-in...", "Add"</P
-></LI
-><LI
-><P
->Double-Click: "Group Policy"</P
-></LI
-><LI
-><P
->Click: "Finish", "Close"</P
-></LI
-><LI
-><P
->Click: "OK"</P
-></LI
-><LI
-><P
->In the "Console Root" window:</P
-></LI
-><LI
-><P
->Expand: "Local Computer Policy", "Computer Configuration",</P
-></LI
-><LI
-><P
->"Administrative Templates", "System", "User Profiles"</P
-></LI
-><LI
-><P
->Double-Click: "Do not check for user ownership of Roaming Profile</P
-></LI
-><LI
-><P
->Folders"</P
-></LI
-><LI
-><P
->Select: "Enabled"</P
-></LI
-><LI
-><P
->Click: OK"</P
-></LI
-><LI
-><P
->Close the whole console. You do not need to save the settings (this
-refers to the console settings rather than the policies you have
-changed).</P
-></LI
-><LI
-><P
->Reboot</P
-></LI
-></UL
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="NAVFOOTER"
-><HR
-ALIGN="LEFT"
-WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
-><A
-HREF="speed.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="samba-howto-collection.html"
-ACCESSKEY="H"
->Home</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
-><A
-HREF="appendixes.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
->Samba performance issues</TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="optional.html"
-ACCESSKEY="U"
->Up</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
->Appendixes</TD
-></TR
-></TABLE
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
diff --git a/docs/htmldocs/improved-browsing.html b/docs/htmldocs/improved-browsing.html
index b912cb57e5..4e9d7f639e 100644
--- a/docs/htmldocs/improved-browsing.html
+++ b/docs/htmldocs/improved-browsing.html
@@ -5,19 +5,20 @@
>Improved browsing in samba</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
REL="UP"
-TITLE="Optional configuration"
-HREF="optional.html"><LINK
+TITLE="General installation"
+HREF="introduction.html"><LINK
REL="PREVIOUS"
-TITLE="Unified Logons between Windows NT and UNIX using Winbind"
-HREF="winbind.html"><LINK
+TITLE="How to Install and Test SAMBA"
+HREF="install.html"><LINK
REL="NEXT"
-TITLE="Stackable VFS modules"
-HREF="vfs.html"></HEAD
+TITLE="Quick Cross Subnet Browsing / Cross Workgroup Browsing guide"
+HREF="browsing-quick.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -45,7 +46,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="winbind.html"
+HREF="install.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="vfs.html"
+HREF="browsing-quick.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="IMPROVED-BROWSING"
-></A
->Chapter 15. Improved browsing in samba</H1
+NAME="IMPROVED-BROWSING">Chapter 2. Improved browsing in samba</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2700"
-></A
->15.1. Overview of browsing</H1
+NAME="AEN229">2.1. Overview of browsing</H1
><P
>SMB networking provides a mechanism by which clients can access a list
of machines in a network, a so-called "browse list". This list
@@ -104,9 +101,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2704"
-></A
->15.2. Browsing support in samba</H1
+NAME="AEN233">2.2. Browsing support in samba</H1
><P
>Samba now fully supports browsing. The browsing is supported by nmbd
and is also controlled by options in the smb.conf file (see smb.conf(5)).</P
@@ -149,9 +144,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2713"
-></A
->15.3. Problem resolution</H1
+NAME="AEN242">2.3. Problem resolution</H1
><P
>If something doesn't work then hopefully the log.nmb file will help
you track down the problem. Try a debug level of 2 or 3 for finding
@@ -183,9 +176,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2720"
-></A
->15.4. Browsing across subnets</H1
+NAME="AEN249">2.4. Browsing across subnets</H1
><P
>With the release of Samba 1.9.17(alpha1 and above) Samba has been
updated to enable it to support the replication of browse lists
@@ -214,9 +205,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2725"
-></A
->15.4.1. How does cross subnet browsing work ?</H2
+NAME="AEN254">2.4.1. How does cross subnet browsing work ?</H2
><P
>Cross subnet browsing is a complicated dance, containing multiple
moving parts. It has taken Microsoft several years to get the code
@@ -426,9 +415,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2760"
-></A
->15.5. Setting up a WINS server</H1
+NAME="AEN289">2.5. Setting up a WINS server</H1
><P
>Either a Samba machine or a Windows NT Server machine may be set up
as a WINS server. To set a Samba machine to be a WINS server you must
@@ -509,9 +496,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2779"
-></A
->15.6. Setting up Browsing in a WORKGROUP</H1
+NAME="AEN308">2.6. Setting up Browsing in a WORKGROUP</H1
><P
>To set up cross subnet browsing on a network containing machines
in up to be in a WORKGROUP, not an NT Domain you need to set up one
@@ -593,9 +578,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2797"
-></A
->15.7. Setting up Browsing in a DOMAIN</H1
+NAME="AEN326">2.7. Setting up Browsing in a DOMAIN</H1
><P
>If you are adding Samba servers to a Windows NT Domain then
you must not set up a Samba server as a domain master browser.
@@ -644,9 +627,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2807"
-></A
->15.8. Forcing samba to be the master</H1
+NAME="AEN336">2.8. Forcing samba to be the master</H1
><P
>Who becomes the "master browser" is determined by an election process
using broadcasts. Each election packet contains a number of parameters
@@ -692,9 +673,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2816"
-></A
->15.9. Making samba the domain master</H1
+NAME="AEN345">2.9. Making samba the domain master</H1
><P
>The domain master is responsible for collating the browse lists of
multiple subnets so that browsing can occur between subnets. You can
@@ -765,9 +744,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2834"
-></A
->15.10. Note about broadcast addresses</H1
+NAME="AEN363">2.10. Note about broadcast addresses</H1
><P
>If your network uses a "0" based broadcast address (for example if it
ends in a 0) then you will strike problems. Windows for Workgroups
@@ -779,9 +756,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2837"
-></A
->15.11. Multiple interfaces</H1
+NAME="AEN366">2.11. Multiple interfaces</H1
><P
>Samba now supports machines with multiple network interfaces. If you
have multiple interfaces then you will need to use the "interfaces"
@@ -804,7 +779,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="winbind.html"
+HREF="install.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -822,7 +797,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="vfs.html"
+HREF="browsing-quick.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -832,13 +807,13 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Unified Logons between Windows NT and UNIX using Winbind</TD
+>How to Install and Test SAMBA</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
-HREF="optional.html"
+HREF="introduction.html"
ACCESSKEY="U"
>Up</A
></TD
@@ -846,7 +821,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Stackable VFS modules</TD
+>Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/install.html b/docs/htmldocs/install.html
index e518e270bf..0ba79dbe26 100644
--- a/docs/htmldocs/install.html
+++ b/docs/htmldocs/install.html
@@ -5,7 +5,8 @@
>How to Install and Test SAMBA</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,8 +17,8 @@ REL="PREVIOUS"
TITLE="General installation"
HREF="introduction.html"><LINK
REL="NEXT"
-TITLE="Quick Cross Subnet Browsing / Cross Workgroup Browsing guide"
-HREF="browsing-quick.html"></HEAD
+TITLE="Improved browsing in samba"
+HREF="improved-browsing.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="browsing-quick.html"
+HREF="improved-browsing.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="INSTALL"
-></A
->Chapter 1. How to Install and Test SAMBA</H1
+NAME="INSTALL">Chapter 1. How to Install and Test SAMBA</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN26"
-></A
->1.1. Read the man pages</H1
+NAME="AEN26">1.1. Read the man pages</H1
><P
>The man pages distributed with SAMBA contain
lots of useful info that will help to get you started.
@@ -122,9 +119,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN36"
-></A
->1.2. Building the Binaries</H1
+NAME="AEN36">1.2. Building the Binaries</H1
><P
>To do this, first run the program <B
CLASS="COMMAND"
@@ -221,9 +216,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN64"
-></A
->1.3. The all important step</H1
+NAME="AEN64">1.3. The all important step</H1
><P
>At this stage you must fetch yourself a
coffee or other drink you find stimulating. Getting the rest
@@ -238,9 +231,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN68"
-></A
->1.4. Create the smb configuration file.</H1
+NAME="AEN68">1.4. Create the smb configuration file.</H1
><P
>There are sample configuration files in the examples
subdirectory in the distribution. I suggest you read them
@@ -294,9 +285,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN82"
-></A
->1.5. Test your config file with
+NAME="AEN82">1.5. Test your config file with
<B
CLASS="COMMAND"
>testparm</B
@@ -324,9 +313,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN90"
-></A
->1.6. Starting the smbd and nmbd</H1
+NAME="AEN90">1.6. Starting the smbd and nmbd</H1
><P
>You must choose to start smbd and nmbd either
as daemons or from <B
@@ -364,9 +351,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN100"
-></A
->1.6.1. Starting from inetd.conf</H2
+NAME="AEN100">1.6.1. Starting from inetd.conf</H2
><P
>NOTE; The following will be different if
you use NIS or NIS+ to distributed services maps.</P
@@ -468,9 +453,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN129"
-></A
->1.6.2. Alternative: starting it as a daemon</H2
+NAME="AEN129">1.6.2. Alternative: starting it as a daemon</H2
><P
>To start the server as a daemon you should create
a script something like this one, perhaps calling
@@ -525,9 +508,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN145"
-></A
->1.7. Try listing the shares available on your
+NAME="AEN145">1.7. Try listing the shares available on your
server</H1
><P
><TT
@@ -566,9 +547,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN154"
-></A
->1.8. Try connecting with the unix client</H1
+NAME="AEN154">1.8. Try connecting with the unix client</H1
><P
><TT
CLASS="PROMPT"
@@ -629,9 +608,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN170"
-></A
->1.9. Try connecting from a DOS, WfWg, Win9x, WinNT,
+NAME="AEN170">1.9. Try connecting from a DOS, WfWg, Win9x, WinNT,
Win2k, OS/2, etc... client</H1
><P
>Try mounting disks. eg:</P
@@ -678,9 +655,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN184"
-></A
->1.10. What If Things Don't Work?</H1
+NAME="AEN184">1.10. What If Things Don't Work?</H1
><P
>If nothing works and you start to think "who wrote
this pile of trash" then I suggest you do step 2 again (and
@@ -701,9 +676,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN189"
-></A
->1.10.1. Diagnosing Problems</H2
+NAME="AEN189">1.10.1. Diagnosing Problems</H2
><P
>If you have installation problems then go to the
<A
@@ -718,9 +691,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN193"
-></A
->1.10.2. Scope IDs</H2
+NAME="AEN193">1.10.2. Scope IDs</H2
><P
>By default Samba uses a blank scope ID. This means
all your windows boxes must also have a blank scope ID.
@@ -734,9 +705,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN196"
-></A
->1.10.3. Choosing the Protocol Level</H2
+NAME="AEN196">1.10.3. Choosing the Protocol Level</H2
><P
>The SMB protocol has many dialects. Currently
Samba supports 5, called CORE, COREPLUS, LANMAN1,
@@ -775,9 +744,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN205"
-></A
->1.10.4. Printing from UNIX to a Client PC</H2
+NAME="AEN205">1.10.4. Printing from UNIX to a Client PC</H2
><P
>To use a printer that is available via a smb-based
server from a unix host with LPR you will need to compile the
@@ -796,9 +763,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN210"
-></A
->1.10.5. Locking</H2
+NAME="AEN210">1.10.5. Locking</H2
><P
>One area which sometimes causes trouble is locking.</P
><P
@@ -856,9 +821,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN219"
-></A
->1.10.6. Mapping Usernames</H2
+NAME="AEN219">1.10.6. Mapping Usernames</H2
><P
>If you have different usernames on the PCs and
the unix server then take a look at the "username map" option.
@@ -900,7 +863,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="browsing-quick.html"
+HREF="improved-browsing.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -924,7 +887,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</TD
+>Improved browsing in samba</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/integrate-ms-networks.html b/docs/htmldocs/integrate-ms-networks.html
index 8299a456bb..ad6aa9e225 100644
--- a/docs/htmldocs/integrate-ms-networks.html
+++ b/docs/htmldocs/integrate-ms-networks.html
@@ -5,7 +5,8 @@
>Integrating MS Windows networks with Samba</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="INTEGRATE-MS-NETWORKS"
-></A
->Chapter 9. Integrating MS Windows networks with Samba</H1
+NAME="INTEGRATE-MS-NETWORKS">Chapter 10. Integrating MS Windows networks with Samba</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1513"
-></A
->9.1. Agenda</H1
+NAME="AEN1374">10.1. Agenda</H1
><P
>To identify the key functional mechanisms of MS Windows networking
to enable the deployment of Samba as a means of extending and/or
@@ -147,9 +144,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1535"
-></A
->9.2. Name Resolution in a pure Unix/Linux world</H1
+NAME="AEN1396">10.2. Name Resolution in a pure Unix/Linux world</H1
><P
>The key configuration files covered in this section are:</P
><P
@@ -189,9 +184,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1551"
-></A
->9.2.1. <TT
+NAME="AEN1412">10.2.1. <TT
CLASS="FILENAME"
>/etc/hosts</TT
></H2
@@ -270,9 +263,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1567"
-></A
->9.2.2. <TT
+NAME="AEN1428">10.2.2. <TT
CLASS="FILENAME"
>/etc/resolv.conf</TT
></H2
@@ -308,9 +299,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1578"
-></A
->9.2.3. <TT
+NAME="AEN1439">10.2.3. <TT
CLASS="FILENAME"
>/etc/host.conf</TT
></H2
@@ -337,9 +326,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1586"
-></A
->9.2.4. <TT
+NAME="AEN1447">10.2.4. <TT
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
></H2
@@ -406,9 +393,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1598"
-></A
->9.3. Name resolution as used within MS Windows networking</H1
+NAME="AEN1459">10.3. Name resolution as used within MS Windows networking</H1
><P
>MS Windows networking is predicated about the name each machine
is given. This name is known variously (and inconsistently) as
@@ -428,16 +413,16 @@ the client/server.</P
><PRE
CLASS="PROGRAMLISTING"
> Unique NetBIOS Names:
- MACHINENAME&lt;00&gt; = Server Service is running on MACHINENAME
- MACHINENAME&lt;03&gt; = Generic Machine Name (NetBIOS name)
- MACHINENAME&lt;20&gt; = LanMan Server service is running on MACHINENAME
- WORKGROUP&lt;1b&gt; = Domain Master Browser
+ MACHINENAME&#60;00&#62; = Server Service is running on MACHINENAME
+ MACHINENAME&#60;03&#62; = Generic Machine Name (NetBIOS name)
+ MACHINENAME&#60;20&#62; = LanMan Server service is running on MACHINENAME
+ WORKGROUP&#60;1b&#62; = Domain Master Browser
Group Names:
- WORKGROUP&lt;03&gt; = Generic Name registered by all members of WORKGROUP
- WORKGROUP&lt;1c&gt; = Domain Controllers / Netlogon Servers
- WORKGROUP&lt;1d&gt; = Local Master Browsers
- WORKGROUP&lt;1e&gt; = Internet Name Resolvers</PRE
+ WORKGROUP&#60;03&#62; = Generic Name registered by all members of WORKGROUP
+ WORKGROUP&#60;1c&#62; = Domain Controllers / Netlogon Servers
+ WORKGROUP&#60;1d&#62; = Local Master Browsers
+ WORKGROUP&#60;1e&#62; = Internet Name Resolvers</PRE
></P
><P
>It should be noted that all NetBIOS machines register their own
@@ -456,7 +441,7 @@ be needed. An example of this is what happens when an MS Windows client
wants to locate a domain logon server. It find this service and the IP
address of a server that provides it by performing a lookup (via a
NetBIOS broadcast) for enumeration of all machines that have
-registered the name type *&lt;1c&gt;. A logon request is then sent to each
+registered the name type *&#60;1c&#62;. A logon request is then sent to each
IP address that is returned in the enumerated list of IP addresses. Which
ever machine first replies then ends up providing the logon services.</P
><P
@@ -491,9 +476,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1610"
-></A
->9.3.1. The NetBIOS Name Cache</H2
+NAME="AEN1471">10.3.1. The NetBIOS Name Cache</H2
><P
>All MS Windows machines employ an in memory buffer in which is
stored the NetBIOS names and IP addresses for all external
@@ -518,9 +501,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1615"
-></A
->9.3.2. The LMHOSTS file</H2
+NAME="AEN1476">10.3.2. The LMHOSTS file</H2
><P
>This file is usually located in MS Windows NT 4.0 or
2000 in <TT
@@ -621,9 +602,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1623"
-></A
->9.3.3. HOSTS file</H2
+NAME="AEN1484">10.3.3. HOSTS file</H2
><P
>This file is usually located in MS Windows NT 4.0 or 2000 in
<TT
@@ -643,9 +622,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1628"
-></A
->9.3.4. DNS Lookup</H2
+NAME="AEN1489">10.3.4. DNS Lookup</H2
><P
>This capability is configured in the TCP/IP setup area in the network
configuration facility. If enabled an elaborate name resolution sequence
@@ -663,9 +640,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1631"
-></A
->9.3.5. WINS Lookup</H2
+NAME="AEN1492">10.3.5. WINS Lookup</H2
><P
>A WINS (Windows Internet Name Server) service is the equivaent of the
rfc1001/1002 specified NBNS (NetBIOS Name Server). A WINS server stores
@@ -706,9 +681,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1643"
-></A
->9.4. How browsing functions and how to deploy stable and
+NAME="AEN1504">10.4. How browsing functions and how to deploy stable and
dependable browsing using Samba</H1
><P
>As stated above, MS Windows machines register their NetBIOS names
@@ -773,9 +746,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1653"
-></A
->9.5. MS Windows security options and how to configure
+NAME="AEN1514">10.5. MS Windows security options and how to configure
Samba for seemless integration</H1
><P
>MS Windows clients may use encrypted passwords as part of a
@@ -910,9 +881,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1681"
-></A
->9.5.1. Use MS Windows NT as an authentication server</H2
+NAME="AEN1542">10.5.1. Use MS Windows NT as an authentication server</H2
><P
>This method involves the additions of the following parameters
in the smb.conf file:</P
@@ -946,9 +915,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1689"
-></A
->9.5.2. Make Samba a member of an MS Windows NT security domain</H2
+NAME="AEN1550">10.5.2. Make Samba a member of an MS Windows NT security domain</H2
><P
>This method involves additon of the following paramters in the smb.conf file:</P
><P
@@ -1009,9 +976,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1706"
-></A
->9.5.3. Configure Samba as an authentication server</H2
+NAME="AEN1567">10.5.3. Configure Samba as an authentication server</H2
><P
>This mode of authentication demands that there be on the
Unix/Linux system both a Unix style account as well as an
@@ -1046,9 +1011,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1713"
-></A
->9.5.3.1. Users</H3
+NAME="AEN1574">10.5.3.1. Users</H3
><P
>A user account that may provide a home directory should be
created. The following Linux system commands are typical of
@@ -1069,9 +1032,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1718"
-></A
->9.5.3.2. MS Windows NT Machine Accounts</H3
+NAME="AEN1579">10.5.3.2. MS Windows NT Machine Accounts</H3
><P
>These are required only when Samba is used as a domain
controller. Refer to the Samba-PDC-HOWTO for more details.</P
@@ -1090,9 +1051,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1723"
-></A
->9.6. Conclusions</H1
+NAME="AEN1584">10.6. Conclusions</H1
><P
>Samba provides a flexible means to operate as...</P
><P
diff --git a/docs/htmldocs/introduction.html b/docs/htmldocs/introduction.html
index a68950fede..762d56ba6a 100644
--- a/docs/htmldocs/introduction.html
+++ b/docs/htmldocs/introduction.html
@@ -5,7 +5,8 @@
>General installation</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -68,9 +69,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
-NAME="INTRODUCTION"
-></A
-><DIV
+NAME="INTRODUCTION"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
@@ -78,9 +77,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
-NAME="AEN21"
-></A
-><H1
+NAME="AEN21"><H1
>Introduction</H1
><P
>This part contains general info on how to install samba
@@ -209,196 +206,152 @@ HREF="install.html#AEN219"
></DD
><DT
>2. <A
-HREF="browsing-quick.html"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
+HREF="improved-browsing.html"
+>Improved browsing in samba</A
></DT
><DD
><DL
><DT
>2.1. <A
-HREF="browsing-quick.html#AEN230"
->Discussion</A
+HREF="improved-browsing.html#AEN229"
+>Overview of browsing</A
></DT
><DT
>2.2. <A
-HREF="browsing-quick.html#AEN238"
->Use of the "Remote Announce" parameter</A
+HREF="improved-browsing.html#AEN233"
+>Browsing support in samba</A
></DT
><DT
>2.3. <A
-HREF="browsing-quick.html#AEN252"
->Use of the "Remote Browse Sync" parameter</A
+HREF="improved-browsing.html#AEN242"
+>Problem resolution</A
></DT
><DT
>2.4. <A
-HREF="browsing-quick.html#AEN257"
->Use of WINS</A
-></DT
-><DT
->2.5. <A
-HREF="browsing-quick.html#AEN268"
->Do NOT use more than one (1) protocol on MS Windows machines</A
+HREF="improved-browsing.html#AEN249"
+>Browsing across subnets</A
></DT
+><DD
+><DL
><DT
->2.6. <A
-HREF="browsing-quick.html#AEN274"
->Name Resolution Order</A
+>2.4.1. <A
+HREF="improved-browsing.html#AEN254"
+>How does cross subnet browsing work ?</A
></DT
></DL
></DD
><DT
->3. <A
-HREF="passdb.html"
->User information database</A
-></DT
-><DD
-><DL
-><DT
->3.1. <A
-HREF="passdb.html#AEN324"
->Introduction</A
+>2.5. <A
+HREF="improved-browsing.html#AEN289"
+>Setting up a WINS server</A
></DT
><DT
->3.2. <A
-HREF="passdb.html#AEN331"
->Important Notes About Security</A
+>2.6. <A
+HREF="improved-browsing.html#AEN308"
+>Setting up Browsing in a WORKGROUP</A
></DT
-><DD
-><DL
><DT
->3.2.1. <A
-HREF="passdb.html#AEN346"
->Advantages of SMB Encryption</A
+>2.7. <A
+HREF="improved-browsing.html#AEN326"
+>Setting up Browsing in a DOMAIN</A
></DT
><DT
->3.2.2. <A
-HREF="passdb.html#AEN351"
->Advantages of non-encrypted passwords</A
+>2.8. <A
+HREF="improved-browsing.html#AEN336"
+>Forcing samba to be the master</A
></DT
-></DL
-></DD
><DT
->3.3. <A
-HREF="passdb.html#AEN357"
->The smbpasswd Command</A
+>2.9. <A
+HREF="improved-browsing.html#AEN345"
+>Making samba the domain master</A
></DT
><DT
->3.4. <A
-HREF="passdb.html#AEN388"
->Plain text</A
+>2.10. <A
+HREF="improved-browsing.html#AEN363"
+>Note about broadcast addresses</A
></DT
><DT
->3.5. <A
-HREF="passdb.html#AEN393"
->TDB</A
+>2.11. <A
+HREF="improved-browsing.html#AEN366"
+>Multiple interfaces</A
></DT
+></DL
+></DD
><DT
->3.6. <A
-HREF="passdb.html#AEN396"
->LDAP</A
+>3. <A
+HREF="browsing-quick.html"
+>Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
></DT
><DD
><DL
><DT
->3.6.1. <A
-HREF="passdb.html#AEN398"
->Introduction</A
-></DT
-><DT
->3.6.2. <A
-HREF="passdb.html#AEN418"
->Introduction</A
-></DT
-><DT
->3.6.3. <A
-HREF="passdb.html#AEN447"
->Supported LDAP Servers</A
-></DT
-><DT
->3.6.4. <A
-HREF="passdb.html#AEN452"
->Schema and Relationship to the RFC 2307 posixAccount</A
+>3.1. <A
+HREF="browsing-quick.html#AEN377"
+>Discussion</A
></DT
><DT
->3.6.5. <A
-HREF="passdb.html#AEN464"
->Configuring Samba with LDAP</A
+>3.2. <A
+HREF="browsing-quick.html#AEN385"
+>Use of the "Remote Announce" parameter</A
></DT
><DT
->3.6.6. <A
-HREF="passdb.html#AEN511"
->Accounts and Groups management</A
+>3.3. <A
+HREF="browsing-quick.html#AEN399"
+>Use of the "Remote Browse Sync" parameter</A
></DT
><DT
->3.6.7. <A
-HREF="passdb.html#AEN516"
->Security and sambaAccount</A
+>3.4. <A
+HREF="browsing-quick.html#AEN404"
+>Use of WINS</A
></DT
><DT
->3.6.8. <A
-HREF="passdb.html#AEN536"
->LDAP specials attributes for sambaAccounts</A
+>3.5. <A
+HREF="browsing-quick.html#AEN415"
+>Do NOT use more than one (1) protocol on MS Windows machines</A
></DT
><DT
->3.6.9. <A
-HREF="passdb.html#AEN606"
->Example LDIF Entries for a sambaAccount</A
+>3.6. <A
+HREF="browsing-quick.html#AEN421"
+>Name Resolution Order</A
></DT
></DL
></DD
><DT
->3.7. <A
-HREF="passdb.html#AEN614"
->MySQL</A
+>4. <A
+HREF="pwencrypt.html"
+>LanMan and NT Password Encryption in Samba</A
></DT
><DD
><DL
><DT
->3.7.1. <A
-HREF="passdb.html#AEN616"
->Building</A
-></DT
-><DT
->3.7.2. <A
-HREF="passdb.html#AEN622"
->Creating the database</A
-></DT
-><DT
->3.7.3. <A
-HREF="passdb.html#AEN632"
->Configuring</A
-></DT
-><DT
->3.7.4. <A
-HREF="passdb.html#AEN649"
->Using plaintext passwords or encrypted password</A
-></DT
-><DT
->3.7.5. <A
-HREF="passdb.html#AEN654"
->Getting non-column data from the table</A
+>4.1. <A
+HREF="pwencrypt.html#AEN457"
+>Introduction</A
></DT
-></DL
-></DD
><DT
->3.8. <A
-HREF="passdb.html#AEN662"
->Passdb XML plugin</A
+>4.2. <A
+HREF="pwencrypt.html#AEN462"
+>Important Notes About Security</A
></DT
><DD
><DL
><DT
->3.8.1. <A
-HREF="passdb.html#AEN664"
->Building</A
+>4.2.1. <A
+HREF="pwencrypt.html#AEN481"
+>Advantages of SMB Encryption</A
></DT
><DT
->3.8.2. <A
-HREF="passdb.html#AEN670"
->Usage</A
+>4.2.2. <A
+HREF="pwencrypt.html#AEN488"
+>Advantages of non-encrypted passwords</A
></DT
></DL
></DD
+><DT
+>4.3. <A
+HREF="pwencrypt.html#AEN497"
+>The smbpasswd Command</A
+></DT
></DL
></DD
></DL
diff --git a/docs/htmldocs/lmhosts.5.html b/docs/htmldocs/lmhosts.5.html
index 2977cb1227..4d7f11e64b 100644
--- a/docs/htmldocs/lmhosts.5.html
+++ b/docs/htmldocs/lmhosts.5.html
@@ -5,7 +5,7 @@
>lmhosts</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="LMHOSTS.5"
+NAME="LMHOSTS"
></A
>lmhosts</H1
><DIV
@@ -37,28 +37,24 @@ NAME="AEN8"
><TT
CLASS="FILENAME"
>lmhosts</TT
-> is the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+> is the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> NetBIOS name to IP address mapping file.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN14"
+NAME="AEN12"
></A
><H2
>DESCRIPTION</H2
><P
->This file is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This file is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><TT
@@ -82,7 +78,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN24"
+NAME="AEN20"
></A
><H2
>FILE FORMAT</H2
@@ -90,7 +86,7 @@ NAME="AEN24"
>It is an ASCII file containing one line for NetBIOS name.
The two fields on each line are separated from each other by
white space. Any entry beginning with '#' is ignored. Each line
- in the lmhosts file contains the following information:</P
+ in the lmhosts file contains the following information :</P
><P
></P
><UL
@@ -111,7 +107,8 @@ NAME="AEN24"
></LI
></UL
><P
->An example follows:</P
+>An example follows :</P
+><P
><PRE
CLASS="PROGRAMLISTING"
>#
@@ -121,6 +118,7 @@ CLASS="PROGRAMLISTING"
192.9.200.20 NTSERVER#20
192.9.200.21 SAMBASERVER
</PRE
+></P
><P
>Contains three IP to NetBIOS name mappings. The first
and third will be returned for any queries for the names "TESTPC"
@@ -135,57 +133,58 @@ CLASS="PROGRAMLISTING"
CLASS="FILENAME"
>lmhosts</TT
> file
- is in the same directory as the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ is in the same directory as the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>
+ smb.conf(5)&#62;</A
> file.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN42"
+NAME="AEN37"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 3.0 of the Samba suite.</P
+>This man page is correct for version 2.2 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN45"
+NAME="AEN40"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->, and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
+><A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)
+ </B
+></A
+>, <A
+HREF="smb.conf.5.html#NAMERESOLVEORDER"
+TARGET="_top"
+> smb.conf(5)</A
+>, and <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> smbpasswd(8)</B
+></A
>
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN57"
+NAME="AEN48"
></A
><H2
>AUTHOR</H2
@@ -204,8 +203,7 @@ TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/msdfs.html b/docs/htmldocs/msdfs.html
index f10e0995d5..f6fe1c7e1d 100644
--- a/docs/htmldocs/msdfs.html
+++ b/docs/htmldocs/msdfs.html
@@ -5,7 +5,8 @@
>Hosting a Microsoft Distributed File System tree on Samba</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -73,17 +74,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="MSDFS"
-></A
->Chapter 12. Hosting a Microsoft Distributed File System tree on Samba</H1
+NAME="MSDFS">Chapter 13. Hosting a Microsoft Distributed File System tree on Samba</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1993"
-></A
->12.1. Instructions</H1
+NAME="AEN1859">13.1. Instructions</H1
><P
>The Distributed File System (or Dfs) provides a means of
separating the logical view of files and directories that users
@@ -229,9 +226,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2028"
-></A
->12.1.1. Notes</H2
+NAME="AEN1894">13.1.1. Notes</H2
><P
></P
><UL
diff --git a/docs/htmldocs/net.8.html b/docs/htmldocs/net.8.html
index 1652fb4141..b7ed1357c3 100644
--- a/docs/htmldocs/net.8.html
+++ b/docs/htmldocs/net.8.html
@@ -5,7 +5,7 @@
>net</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="NET.8"
+NAME="NET"
></A
>net</H1
><DIV
@@ -48,12 +48,10 @@ NAME="AEN31"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>The samba net utility is meant to work just like the net utility
@@ -62,7 +60,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN38"
+NAME="AEN36"
></A
><H2
>OPTIONS</H2
@@ -83,8 +81,7 @@ CLASS="VARIABLELIST"
>-w target-workgroup</DT
><DD
><P
-> Sets target workgroup or domain. You have to specify
- either this option or the IP address or the name of a server.
+> Sets target workgroup or domain. You have to specify either this option or the IP address or the name of a server.
</P
></DD
><DT
@@ -105,8 +102,7 @@ CLASS="VARIABLELIST"
>-I ip-address</DT
><DD
><P
-> IP address of target server to use. You have to
- specify either this option or a target workgroup or a target server.
+> IP address of target server to use. You have to specify either this option or a target workgroup or a target server.
</P
></DD
><DT
@@ -134,8 +130,7 @@ CLASS="VARIABLELIST"
>-S server</DT
><DD
><P
-> Name of target server. You should specify either
- this option or a target workgroup or a target IP address.
+> Name of target server. You should specify either this option or a target workgroup or a target IP address.
</P
></DD
><DT
@@ -220,7 +215,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN118"
+NAME="AEN116"
></A
><H2
>TIME</H2
@@ -250,10 +245,7 @@ CLASS="COMMAND"
>SYSTEM</DT
><DD
><P
-> Displays the time on the remote server in a format ready for <B
-CLASS="COMMAND"
->/bin/date</B
->
+> Displays the time on the remote server in a format ready for /bin/date
</P
></DD
><DT
@@ -261,10 +253,7 @@ CLASS="COMMAND"
><DD
><P
> Tries to set the date and time of the local server to that on
- the remote server using <B
-CLASS="COMMAND"
->/bin/date</B
->.
+ the remote server using /bin/date.
</P
></DD
><DT
@@ -280,7 +269,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN142"
+NAME="AEN138"
></A
><H2
>RPC</H2
@@ -331,7 +320,7 @@ CLASS="VARIABLELIST"
</P
></DD
><DT
->USER ADD &lt;name&gt; [password] [-F user flags] [misc. options]</DT
+>USER ADD &lt;name&gt; [password] [-F user flags] [misc. options</DT
><DD
><P
> Add specified user
@@ -384,7 +373,7 @@ CLASS="VARIABLELIST"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN195"
+NAME="AEN191"
></A
><H2
>VERSION</H2
@@ -395,7 +384,7 @@ NAME="AEN195"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN198"
+NAME="AEN194"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/nmbd.8.html b/docs/htmldocs/nmbd.8.html
index 87a042a912..1183a14522 100644
--- a/docs/htmldocs/nmbd.8.html
+++ b/docs/htmldocs/nmbd.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>nmbd</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="NMBD.8"
-></A
->nmbd</H1
+NAME="NMBD">nmbd</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -30,15 +29,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>nmbd</B
-> [-D] [-F] [-S] [-a] [-i] [-o] [-h] [-V] [-d &lt;debug level&gt;] [-H &lt;lmhosts file&gt;] [-l &lt;log directory&gt;] [-n &lt;primary netbios name&gt;] [-p &lt;port number&gt;] [-s &lt;configuration file&gt;]</P
+> [-D] [-F] [-S] [-a] [-i] [-o] [-h] [-V] [-d &#60;debug level&#62;] [-H &#60;lmhosts file&#62;] [-l &#60;log directory&#62;] [-n &#60;primary netbios name&#62;] [-p &#60;port number&#62;] [-s &#60;configuration file&#62;]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -48,13 +45,7 @@ NAME="AEN25"
><H2
>DESCRIPTION</H2
><P
->This program is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
-> suite.</P
+>This program is part of the Samba suite.</P
><P
><B
CLASS="COMMAND"
@@ -78,12 +69,9 @@ CLASS="COMMAND"
specified it will respond with the IP number of the host it
is running on. Its "own NetBIOS name" is by
default the primary DNS name of the host it is running on,
- but this can be overridden with the <SPAN
-CLASS="emphasis"
-><I
+ but this can be overridden with the <I
CLASS="EMPHASIS"
>-n</I
-></SPAN
>
option (see OPTIONS below). Thus <B
CLASS="COMMAND"
@@ -94,12 +82,13 @@ CLASS="COMMAND"
CLASS="COMMAND"
>nmbd</B
> to respond on can be set
- via parameters in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ via parameters in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
+></A
> configuration file.</P
><P
><B
@@ -122,7 +111,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN46"
+NAME="AEN42"
></A
><H2
>OPTIONS</H2
@@ -215,9 +204,9 @@ CLASS="COMMAND"
CLASS="COMMAND"
>nmbd</B
> also logs to standard
- output, as if the <TT
-CLASS="CONSTANT"
->-S</TT
+ output, as if the <B
+CLASS="COMMAND"
+>-S</B
> parameter had been
given. </P
></DD
@@ -244,7 +233,7 @@ CLASS="COMMAND"
>.</P
></DD
><DT
->-H &lt;filename&gt;</DT
+>-H &#60;filename&#62;</DT
><DD
><P
>NetBIOS lmhosts file. The lmhosts
@@ -253,39 +242,28 @@ CLASS="COMMAND"
resolution mechanism <A
HREF="smb.conf.5.html#nameresolveorder"
TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->name resolve
- order</I
-></TT
+> name resolve order</A
+> described in <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+> <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
></A
-> described in <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> to resolve any
- NetBIOS name queries needed by the server. Note
- that the contents of this file are <SPAN
-CLASS="emphasis"
-><I
+>
+ to resolve any NetBIOS name queries needed by the server. Note
+ that the contents of this file are <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
>
used by <B
CLASS="COMMAND"
>nmbd</B
> to answer any name queries.
Adding a line to this file affects name NetBIOS resolution
- from this host <SPAN
-CLASS="emphasis"
-><I
+ from this host <I
CLASS="EMPHASIS"
>ONLY</I
-></SPAN
>.</P
><P
>The default path to this file is compiled into
@@ -300,14 +278,17 @@ CLASS="FILENAME"
> or
<TT
CLASS="FILENAME"
->/etc/samba/lmhosts</TT
->. See the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->lmhosts</SPAN
->(5)</SPAN
-> man page for details on the contents of this file.</P
+>/etc/lmhosts</TT
+>. See the
+ <A
+HREF="lmhosts.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>lmhosts(5)</TT
+></A
+>
+ man page for details on the contents of this file.</P
></DD
><DT
>-V</DT
@@ -320,7 +301,7 @@ CLASS="COMMAND"
>.</P
></DD
><DT
->-d &lt;debug level&gt;</DT
+>-d &#60;debug level&#62;</DT
><DD
><P
>debuglevel is an integer
@@ -344,23 +325,19 @@ CLASS="COMMAND"
the <A
HREF="smb.conf.5.html#loglevel"
TARGET="_top"
+>log level</A
+>
+ parameter in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
><TT
-CLASS="PARAMETER"
-><I
->log level</I
-></TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
></A
->
- parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
> file.</P
></DD
><DT
->-l &lt;log directory&gt;</DT
+>-l &#60;log directory&#62;</DT
><DD
><P
>The -l parameter specifies a directory
@@ -380,12 +357,9 @@ CLASS="FILENAME"
<TT
CLASS="FILENAME"
>/var/log/log.nmb</TT
->. <SPAN
-CLASS="emphasis"
-><I
+>. <I
CLASS="EMPHASIS"
>Beware:</I
-></SPAN
>
If the directory specified does not exist, <B
CLASS="COMMAND"
@@ -395,7 +369,7 @@ CLASS="COMMAND"
</P
></DD
><DT
->-n &lt;primary NetBIOS name&gt;</DT
+>-n &#60;primary NetBIOS name&#62;</DT
><DD
><P
>This option allows you to override
@@ -403,31 +377,24 @@ CLASS="COMMAND"
to setting the <A
HREF="smb.conf.5.html#netbiosname"
TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->NetBIOS
- name</I
-></TT
+> NetBIOS name</A
+> parameter in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
></A
-> parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
> file. However, a command
line setting will take precedence over settings in
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
>.</P
></DD
><DT
->-p &lt;UDP port number&gt;</DT
+>-p &#60;UDP port number&#62;</DT
><DD
><P
>UDP port number is a positive integer value.
@@ -440,7 +407,7 @@ CLASS="COMMAND"
won't need help!</P
></DD
><DT
->-s &lt;configuration file&gt;</DT
+>-s &#60;configuration file&#62;</DT
><DD
><P
>The default configuration file name
@@ -451,12 +418,13 @@ CLASS="FILENAME"
this may be changed when Samba is autoconfigured.</P
><P
>The file specified contains the configuration details
- required by the server. See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ required by the server. See <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+> <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+></A
> for more information.
</P
></DD
@@ -466,7 +434,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN162"
+NAME="AEN148"
></A
><H2
>FILES</H2
@@ -489,9 +457,9 @@ CLASS="COMMAND"
> meta-daemon, this file
must contain suitable startup information for the
meta-daemon. See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->install</A
+>UNIX_INSTALL.html</A
> document
for details.
</P
@@ -509,9 +477,9 @@ CLASS="FILENAME"
>If running the server as a daemon at startup,
this file will need to contain an appropriate startup
sequence for the server. See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->"How to Install and Test SAMBA"</A
+>UNIX_INSTALL.html</A
> document
for details.</P
></DD
@@ -530,9 +498,9 @@ CLASS="COMMAND"
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->"How to Install and Test SAMBA"</A
+>UNIX_INSTALL.html</A
>
document for details.</P
></DD
@@ -543,39 +511,34 @@ CLASS="FILENAME"
></DT
><DD
><P
->This is the default location of
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> server
- configuration file. Other common places that systems
+>This is the default location of the
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf</TT
+></A
+>
+ server configuration file. Other common places that systems
install this file are <TT
CLASS="FILENAME"
>/usr/samba/lib/smb.conf</TT
>
and <TT
CLASS="FILENAME"
->/etc/samba/smb.conf</TT
+>/etc/smb.conf</TT
>.</P
><P
>When run as a WINS server (see the
<A
HREF="smb.conf.5.html#WINSSUPPORT"
TARGET="_top"
-><TT
-CLASS="CONSTANT"
->wins support</TT
-></A
+>wins support</A
>
- parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ parameter in the <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
> man page),
<B
CLASS="COMMAND"
@@ -594,27 +557,19 @@ CLASS="FILENAME"
>If <B
CLASS="COMMAND"
>nmbd</B
-> is acting as a <SPAN
-CLASS="emphasis"
-><I
+> is acting as a <I
CLASS="EMPHASIS"
> browse master</I
-></SPAN
> (see the <A
HREF="smb.conf.5.html#LOCALMASTER"
TARGET="_top"
-><TT
-CLASS="CONSTANT"
->local master</TT
-></A
+>local master</A
>
- parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> man page, <B
+ parameter in the <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+> man page,
+ <B
CLASS="COMMAND"
>nmbd</B
>
@@ -635,7 +590,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN216"
+NAME="AEN195"
></A
><H2
>SIGNALS</H2
@@ -644,12 +599,9 @@ NAME="AEN216"
CLASS="COMMAND"
>nmbd</B
> process it is recommended
- that SIGKILL (-9) <SPAN
-CLASS="emphasis"
-><I
+ that SIGKILL (-9) <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> be used, except as a last
resort, as this may leave the name database in an inconsistent state.
The correct way to terminate <B
@@ -684,22 +636,23 @@ CLASS="FILENAME"
>log.nmb</TT
> file.</P
><P
->The debug log level of nmbd may be raised or lowered
- using <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbcontrol</SPAN
->(1)</SPAN
-> (SIGUSR[1|2] signals
- are no longer used since Samba 2.2). This is to allow
- transient problems to be diagnosed, whilst still running
+>The debug log level of nmbd may be raised or lowered using
+ <A
+HREF="smbcontrol.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbcontrol(1)</B
+>
+ </A
+> (SIGUSR[1|2] signals are no longer used in Samba 2.2). This is
+ to allow transient problems to be diagnosed, whilst still running
at a normally low log level.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN233"
+NAME="AEN211"
></A
><H2
>VERSION</H2
@@ -710,49 +663,54 @@ NAME="AEN233"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN236"
+NAME="AEN214"
></A
><H2
>SEE ALSO</H2
><P
-> <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->inetd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testprns</SPAN
->(1)</SPAN
->, and the Internet
- RFC's <TT
+><B
+CLASS="COMMAND"
+>inetd(8)</B
+>, <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+>
+ </A
+>, <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)
+ </B
+></A
+>, <A
+HREF="testparm.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> testparm(1)</B
+></A
+>, <A
+HREF="testprns.1.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>testprns(1)</B
+></A
+>, and the Internet RFC's
+ <TT
CLASS="FILENAME"
>rfc1001.txt</TT
>, <TT
@@ -770,7 +728,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN260"
+NAME="AEN231"
></A
><H2
>AUTHOR</H2
@@ -782,14 +740,14 @@ NAME="AEN260"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/nmblookup.1.html b/docs/htmldocs/nmblookup.1.html
index 9e6da1c7b2..2ce322990f 100644
--- a/docs/htmldocs/nmblookup.1.html
+++ b/docs/htmldocs/nmblookup.1.html
@@ -5,7 +5,7 @@
>nmblookup</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -48,12 +48,10 @@ NAME="AEN25"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -68,7 +66,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN33"
+NAME="AEN31"
></A
><H2
>OPTIONS</H2
@@ -111,7 +109,7 @@ CLASS="CONSTANT"
query to a machine running a WINS server and the user wishes
to query the names in the WINS server. If this bit is unset
the normal (broadcast responding) NetBIOS processing code
- on a machine is used instead. See RFC1001, RFC1002 for details.
+ on a machine is used instead. See rfc1001, rfc1002 for details.
</P
></DD
><DT
@@ -132,13 +130,12 @@ CLASS="CONSTANT"
where it ignores the source port of the requesting packet
and only replies to UDP port 137. Unfortunately, on most UNIX
systems root privilege is needed to bind to this port, and
- in addition, if the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> daemon is running on this machine it also binds to this port.
+ in addition, if the <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
+>
+ daemon is running on this machine it also binds to this port.
</P
></DD
><DT
@@ -176,12 +173,9 @@ CLASS="PARAMETER"
></TT
>
</A
-> parameter of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+> parameter of the <TT
+CLASS="FILENAME"
+>smb.conf (5)</TT
> file.
</P
></DD
@@ -317,7 +311,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN121"
+NAME="AEN115"
></A
><H2
>EXAMPLES</H2
@@ -330,11 +324,11 @@ CLASS="COMMAND"
CLASS="COMMAND"
>nslookup</B
> is
- used to query DNS servers). To query a WINS server, <B
+ used to query DNS servers). To query a WINS server,
+ <B
CLASS="COMMAND"
>nmblookup</B
->
- must be called like this:</P
+> must be called like this:</P
><P
><B
CLASS="COMMAND"
@@ -354,7 +348,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN133"
+NAME="AEN127"
></A
><H2
>VERSION</H2
@@ -365,35 +359,34 @@ NAME="AEN133"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN136"
+NAME="AEN130"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->samba</SPAN
->(7)</SPAN
->, and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->.</P
+><A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
+>,
+ <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>, and <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN148"
+NAME="AEN137"
></A
><H2
>AUTHOR</H2
@@ -405,14 +398,14 @@ NAME="AEN148"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/optional.html b/docs/htmldocs/optional.html
index b5564b9f26..b15515ddab 100644
--- a/docs/htmldocs/optional.html
+++ b/docs/htmldocs/optional.html
@@ -5,12 +5,13 @@
>Optional configuration</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
REL="PREVIOUS"
-TITLE="Samba as a NT4 or Win2k domain member"
+TITLE="Samba as a NT4 domain member"
HREF="domain-security.html"><LINK
REL="NEXT"
TITLE="Integrating MS Windows networks with Samba"
@@ -68,9 +69,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
-NAME="OPTIONAL"
-></A
-><DIV
+NAME="OPTIONAL"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
@@ -78,9 +77,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
-NAME="AEN1499"
-></A
-><H1
+NAME="AEN1360"><H1
>Introduction</H1
><P
>Samba has several features that you might want or might not want to use. The chapters in this
@@ -94,51 +91,51 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
->9. <A
+>10. <A
HREF="integrate-ms-networks.html"
>Integrating MS Windows networks with Samba</A
></DT
><DD
><DL
><DT
->9.1. <A
-HREF="integrate-ms-networks.html#AEN1513"
+>10.1. <A
+HREF="integrate-ms-networks.html#AEN1374"
>Agenda</A
></DT
><DT
->9.2. <A
-HREF="integrate-ms-networks.html#AEN1535"
+>10.2. <A
+HREF="integrate-ms-networks.html#AEN1396"
>Name Resolution in a pure Unix/Linux world</A
></DT
><DD
><DL
><DT
->9.2.1. <A
-HREF="integrate-ms-networks.html#AEN1551"
+>10.2.1. <A
+HREF="integrate-ms-networks.html#AEN1412"
><TT
CLASS="FILENAME"
>/etc/hosts</TT
></A
></DT
><DT
->9.2.2. <A
-HREF="integrate-ms-networks.html#AEN1567"
+>10.2.2. <A
+HREF="integrate-ms-networks.html#AEN1428"
><TT
CLASS="FILENAME"
>/etc/resolv.conf</TT
></A
></DT
><DT
->9.2.3. <A
-HREF="integrate-ms-networks.html#AEN1578"
+>10.2.3. <A
+HREF="integrate-ms-networks.html#AEN1439"
><TT
CLASS="FILENAME"
>/etc/host.conf</TT
></A
></DT
><DT
->9.2.4. <A
-HREF="integrate-ms-networks.html#AEN1586"
+>10.2.4. <A
+HREF="integrate-ms-networks.html#AEN1447"
><TT
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
@@ -147,140 +144,140 @@ CLASS="FILENAME"
></DL
></DD
><DT
->9.3. <A
-HREF="integrate-ms-networks.html#AEN1598"
+>10.3. <A
+HREF="integrate-ms-networks.html#AEN1459"
>Name resolution as used within MS Windows networking</A
></DT
><DD
><DL
><DT
->9.3.1. <A
-HREF="integrate-ms-networks.html#AEN1610"
+>10.3.1. <A
+HREF="integrate-ms-networks.html#AEN1471"
>The NetBIOS Name Cache</A
></DT
><DT
->9.3.2. <A
-HREF="integrate-ms-networks.html#AEN1615"
+>10.3.2. <A
+HREF="integrate-ms-networks.html#AEN1476"
>The LMHOSTS file</A
></DT
><DT
->9.3.3. <A
-HREF="integrate-ms-networks.html#AEN1623"
+>10.3.3. <A
+HREF="integrate-ms-networks.html#AEN1484"
>HOSTS file</A
></DT
><DT
->9.3.4. <A
-HREF="integrate-ms-networks.html#AEN1628"
+>10.3.4. <A
+HREF="integrate-ms-networks.html#AEN1489"
>DNS Lookup</A
></DT
><DT
->9.3.5. <A
-HREF="integrate-ms-networks.html#AEN1631"
+>10.3.5. <A
+HREF="integrate-ms-networks.html#AEN1492"
>WINS Lookup</A
></DT
></DL
></DD
><DT
->9.4. <A
-HREF="integrate-ms-networks.html#AEN1643"
+>10.4. <A
+HREF="integrate-ms-networks.html#AEN1504"
>How browsing functions and how to deploy stable and
dependable browsing using Samba</A
></DT
><DT
->9.5. <A
-HREF="integrate-ms-networks.html#AEN1653"
+>10.5. <A
+HREF="integrate-ms-networks.html#AEN1514"
>MS Windows security options and how to configure
Samba for seemless integration</A
></DT
><DD
><DL
><DT
->9.5.1. <A
-HREF="integrate-ms-networks.html#AEN1681"
+>10.5.1. <A
+HREF="integrate-ms-networks.html#AEN1542"
>Use MS Windows NT as an authentication server</A
></DT
><DT
->9.5.2. <A
-HREF="integrate-ms-networks.html#AEN1689"
+>10.5.2. <A
+HREF="integrate-ms-networks.html#AEN1550"
>Make Samba a member of an MS Windows NT security domain</A
></DT
><DT
->9.5.3. <A
-HREF="integrate-ms-networks.html#AEN1706"
+>10.5.3. <A
+HREF="integrate-ms-networks.html#AEN1567"
>Configure Samba as an authentication server</A
></DT
></DL
></DD
><DT
->9.6. <A
-HREF="integrate-ms-networks.html#AEN1723"
+>10.6. <A
+HREF="integrate-ms-networks.html#AEN1584"
>Conclusions</A
></DT
></DL
></DD
><DT
->10. <A
+>11. <A
HREF="unix-permissions.html"
>UNIX Permission Bits and Windows NT Access Control Lists</A
></DT
><DD
><DL
><DT
->10.1. <A
-HREF="unix-permissions.html#AEN1744"
+>11.1. <A
+HREF="unix-permissions.html#AEN1605"
>Viewing and changing UNIX permissions using the NT
security dialogs</A
></DT
><DT
->10.2. <A
-HREF="unix-permissions.html#AEN1748"
+>11.2. <A
+HREF="unix-permissions.html#AEN1614"
>How to view file security on a Samba share</A
></DT
><DT
->10.3. <A
-HREF="unix-permissions.html#AEN1759"
+>11.3. <A
+HREF="unix-permissions.html#AEN1625"
>Viewing file ownership</A
></DT
><DT
->10.4. <A
-HREF="unix-permissions.html#AEN1779"
+>11.4. <A
+HREF="unix-permissions.html#AEN1645"
>Viewing file or directory permissions</A
></DT
><DD
><DL
><DT
->10.4.1. <A
-HREF="unix-permissions.html#AEN1794"
+>11.4.1. <A
+HREF="unix-permissions.html#AEN1660"
>File Permissions</A
></DT
><DT
->10.4.2. <A
-HREF="unix-permissions.html#AEN1808"
+>11.4.2. <A
+HREF="unix-permissions.html#AEN1674"
>Directory Permissions</A
></DT
></DL
></DD
><DT
->10.5. <A
-HREF="unix-permissions.html#AEN1815"
+>11.5. <A
+HREF="unix-permissions.html#AEN1681"
>Modifying file or directory permissions</A
></DT
><DT
->10.6. <A
-HREF="unix-permissions.html#AEN1837"
+>11.6. <A
+HREF="unix-permissions.html#AEN1703"
>Interaction with the standard Samba create mask
parameters</A
></DT
><DT
->10.7. <A
-HREF="unix-permissions.html#AEN1901"
+>11.7. <A
+HREF="unix-permissions.html#AEN1767"
>Interaction with the standard Samba file attribute
mapping</A
></DT
></DL
></DD
><DT
->11. <A
+>12. <A
HREF="pam.html"
>Configuring PAM for distributed but centrally
managed authentication</A
@@ -288,39 +285,39 @@ managed authentication</A
><DD
><DL
><DT
->11.1. <A
-HREF="pam.html#AEN1922"
+>12.1. <A
+HREF="pam.html#AEN1788"
>Samba and PAM</A
></DT
><DT
->11.2. <A
-HREF="pam.html#AEN1966"
+>12.2. <A
+HREF="pam.html#AEN1832"
>Distributed Authentication</A
></DT
><DT
->11.3. <A
-HREF="pam.html#AEN1973"
+>12.3. <A
+HREF="pam.html#AEN1839"
>PAM Configuration in smb.conf</A
></DT
></DL
></DD
><DT
->12. <A
+>13. <A
HREF="msdfs.html"
>Hosting a Microsoft Distributed File System tree on Samba</A
></DT
><DD
><DL
><DT
->12.1. <A
-HREF="msdfs.html#AEN1993"
+>13.1. <A
+HREF="msdfs.html#AEN1859"
>Instructions</A
></DT
><DD
><DL
><DT
->12.1.1. <A
-HREF="msdfs.html#AEN2028"
+>13.1.1. <A
+HREF="msdfs.html#AEN1894"
>Notes</A
></DT
></DL
@@ -328,130 +325,130 @@ HREF="msdfs.html#AEN2028"
></DL
></DD
><DT
->13. <A
+>14. <A
HREF="printing.html"
>Printing Support</A
></DT
><DD
><DL
><DT
->13.1. <A
-HREF="printing.html#AEN2054"
+>14.1. <A
+HREF="printing.html#AEN1920"
>Introduction</A
></DT
><DT
->13.2. <A
-HREF="printing.html#AEN2076"
+>14.2. <A
+HREF="printing.html#AEN1942"
>Configuration</A
></DT
><DD
><DL
><DT
->13.2.1. <A
-HREF="printing.html#AEN2084"
+>14.2.1. <A
+HREF="printing.html#AEN1950"
>Creating [print$]</A
></DT
><DT
->13.2.2. <A
-HREF="printing.html#AEN2119"
+>14.2.2. <A
+HREF="printing.html#AEN1985"
>Setting Drivers for Existing Printers</A
></DT
><DT
->13.2.3. <A
-HREF="printing.html#AEN2135"
+>14.2.3. <A
+HREF="printing.html#AEN2001"
>Support a large number of printers</A
></DT
><DT
->13.2.4. <A
-HREF="printing.html#AEN2146"
+>14.2.4. <A
+HREF="printing.html#AEN2012"
>Adding New Printers via the Windows NT APW</A
></DT
><DT
->13.2.5. <A
-HREF="printing.html#AEN2176"
+>14.2.5. <A
+HREF="printing.html#AEN2042"
>Samba and Printer Ports</A
></DT
></DL
></DD
><DT
->13.3. <A
-HREF="printing.html#AEN2184"
+>14.3. <A
+HREF="printing.html#AEN2050"
>The Imprints Toolset</A
></DT
><DD
><DL
><DT
->13.3.1. <A
-HREF="printing.html#AEN2188"
+>14.3.1. <A
+HREF="printing.html#AEN2054"
>What is Imprints?</A
></DT
><DT
->13.3.2. <A
-HREF="printing.html#AEN2198"
+>14.3.2. <A
+HREF="printing.html#AEN2064"
>Creating Printer Driver Packages</A
></DT
><DT
->13.3.3. <A
-HREF="printing.html#AEN2201"
+>14.3.3. <A
+HREF="printing.html#AEN2067"
>The Imprints server</A
></DT
><DT
->13.3.4. <A
-HREF="printing.html#AEN2205"
+>14.3.4. <A
+HREF="printing.html#AEN2071"
>The Installation Client</A
></DT
></DL
></DD
><DT
->13.4. <A
-HREF="printing.html#AEN2227"
+>14.4. <A
+HREF="printing.html#AEN2093"
>Diagnosis</A
></DT
><DD
><DL
><DT
->13.4.1. <A
-HREF="printing.html#AEN2229"
+>14.4.1. <A
+HREF="printing.html#AEN2095"
>Introduction</A
></DT
><DT
->13.4.2. <A
-HREF="printing.html#AEN2245"
+>14.4.2. <A
+HREF="printing.html#AEN2111"
>Debugging printer problems</A
></DT
><DT
->13.4.3. <A
-HREF="printing.html#AEN2254"
+>14.4.3. <A
+HREF="printing.html#AEN2120"
>What printers do I have?</A
></DT
><DT
->13.4.4. <A
-HREF="printing.html#AEN2262"
+>14.4.4. <A
+HREF="printing.html#AEN2128"
>Setting up printcap and print servers</A
></DT
><DT
->13.4.5. <A
-HREF="printing.html#AEN2290"
+>14.4.5. <A
+HREF="printing.html#AEN2156"
>Job sent, no output</A
></DT
><DT
->13.4.6. <A
-HREF="printing.html#AEN2301"
+>14.4.6. <A
+HREF="printing.html#AEN2167"
>Job sent, strange output</A
></DT
><DT
->13.4.7. <A
-HREF="printing.html#AEN2313"
+>14.4.7. <A
+HREF="printing.html#AEN2179"
>Raw PostScript printed</A
></DT
><DT
->13.4.8. <A
-HREF="printing.html#AEN2316"
+>14.4.8. <A
+HREF="printing.html#AEN2182"
>Advanced Printing</A
></DT
><DT
->13.4.9. <A
-HREF="printing.html#AEN2319"
+>14.4.9. <A
+HREF="printing.html#AEN2185"
>Real debugging</A
></DT
></DL
@@ -459,235 +456,205 @@ HREF="printing.html#AEN2319"
></DL
></DD
><DT
->14. <A
+>15. <A
HREF="winbind.html"
>Unified Logons between Windows NT and UNIX using Winbind</A
></DT
><DD
><DL
><DT
->14.1. <A
-HREF="winbind.html#AEN2360"
+>15.1. <A
+HREF="winbind.html#AEN2225"
>Abstract</A
></DT
><DT
->14.2. <A
-HREF="winbind.html#AEN2364"
+>15.2. <A
+HREF="winbind.html#AEN2229"
>Introduction</A
></DT
><DT
->14.3. <A
-HREF="winbind.html#AEN2377"
+>15.3. <A
+HREF="winbind.html#AEN2242"
>What Winbind Provides</A
></DT
><DD
><DL
><DT
->14.3.1. <A
-HREF="winbind.html#AEN2384"
+>15.3.1. <A
+HREF="winbind.html#AEN2249"
>Target Uses</A
></DT
></DL
></DD
><DT
->14.4. <A
-HREF="winbind.html#AEN2388"
+>15.4. <A
+HREF="winbind.html#AEN2253"
>How Winbind Works</A
></DT
><DD
><DL
><DT
->14.4.1. <A
-HREF="winbind.html#AEN2393"
+>15.4.1. <A
+HREF="winbind.html#AEN2258"
>Microsoft Remote Procedure Calls</A
></DT
><DT
->14.4.2. <A
-HREF="winbind.html#AEN2397"
->Microsoft Active Directory Services</A
-></DT
-><DT
->14.4.3. <A
-HREF="winbind.html#AEN2400"
+>15.4.2. <A
+HREF="winbind.html#AEN2262"
>Name Service Switch</A
></DT
><DT
->14.4.4. <A
-HREF="winbind.html#AEN2416"
+>15.4.3. <A
+HREF="winbind.html#AEN2278"
>Pluggable Authentication Modules</A
></DT
><DT
->14.4.5. <A
-HREF="winbind.html#AEN2424"
+>15.4.4. <A
+HREF="winbind.html#AEN2286"
>User and Group ID Allocation</A
></DT
><DT
->14.4.6. <A
-HREF="winbind.html#AEN2428"
+>15.4.5. <A
+HREF="winbind.html#AEN2290"
>Result Caching</A
></DT
></DL
></DD
><DT
->14.5. <A
-HREF="winbind.html#AEN2431"
+>15.5. <A
+HREF="winbind.html#AEN2293"
>Installation and Configuration</A
></DT
><DD
><DL
><DT
->14.5.1. <A
-HREF="winbind.html#AEN2438"
+>15.5.1. <A
+HREF="winbind.html#AEN2300"
>Introduction</A
></DT
><DT
->14.5.2. <A
-HREF="winbind.html#AEN2451"
+>15.5.2. <A
+HREF="winbind.html#AEN2313"
>Requirements</A
></DT
><DT
->14.5.3. <A
-HREF="winbind.html#AEN2465"
+>15.5.3. <A
+HREF="winbind.html#AEN2327"
>Testing Things Out</A
></DT
></DL
></DD
><DT
->14.6. <A
-HREF="winbind.html#AEN2680"
+>15.6. <A
+HREF="winbind.html#AEN2542"
>Limitations</A
></DT
><DT
->14.7. <A
-HREF="winbind.html#AEN2690"
+>15.7. <A
+HREF="winbind.html#AEN2552"
>Conclusion</A
></DT
></DL
></DD
><DT
->15. <A
-HREF="improved-browsing.html"
->Improved browsing in samba</A
+>16. <A
+HREF="pdb-mysql.html"
+>Passdb MySQL plugin</A
></DT
><DD
><DL
><DT
->15.1. <A
-HREF="improved-browsing.html#AEN2700"
->Overview of browsing</A
-></DT
-><DT
->15.2. <A
-HREF="improved-browsing.html#AEN2704"
->Browsing support in samba</A
+>16.1. <A
+HREF="pdb-mysql.html#AEN2566"
+>Building</A
></DT
><DT
->15.3. <A
-HREF="improved-browsing.html#AEN2713"
->Problem resolution</A
+>16.2. <A
+HREF="pdb-mysql.html#AEN2572"
+>Configuring</A
></DT
><DT
->15.4. <A
-HREF="improved-browsing.html#AEN2720"
->Browsing across subnets</A
+>16.3. <A
+HREF="pdb-mysql.html#AEN2589"
+>Using plaintext passwords or encrypted password</A
></DT
-><DD
-><DL
><DT
->15.4.1. <A
-HREF="improved-browsing.html#AEN2725"
->How does cross subnet browsing work ?</A
+>16.4. <A
+HREF="pdb-mysql.html#AEN2594"
+>Getting non-column data from the table</A
></DT
></DL
></DD
><DT
->15.5. <A
-HREF="improved-browsing.html#AEN2760"
->Setting up a WINS server</A
-></DT
-><DT
->15.6. <A
-HREF="improved-browsing.html#AEN2779"
->Setting up Browsing in a WORKGROUP</A
-></DT
-><DT
->15.7. <A
-HREF="improved-browsing.html#AEN2797"
->Setting up Browsing in a DOMAIN</A
-></DT
-><DT
->15.8. <A
-HREF="improved-browsing.html#AEN2807"
->Forcing samba to be the master</A
-></DT
-><DT
->15.9. <A
-HREF="improved-browsing.html#AEN2816"
->Making samba the domain master</A
+>17. <A
+HREF="pdb-xml.html"
+>Passdb XML plugin</A
></DT
+><DD
+><DL
><DT
->15.10. <A
-HREF="improved-browsing.html#AEN2834"
->Note about broadcast addresses</A
+>17.1. <A
+HREF="pdb-xml.html#AEN2613"
+>Building</A
></DT
><DT
->15.11. <A
-HREF="improved-browsing.html#AEN2837"
->Multiple interfaces</A
+>17.2. <A
+HREF="pdb-xml.html#AEN2619"
+>Usage</A
></DT
></DL
></DD
><DT
->16. <A
+>18. <A
HREF="vfs.html"
>Stackable VFS modules</A
></DT
><DD
><DL
><DT
->16.1. <A
-HREF="vfs.html#AEN2855"
+>18.1. <A
+HREF="vfs.html#AEN2640"
>Introduction and configuration</A
></DT
><DT
->16.2. <A
-HREF="vfs.html#AEN2864"
+>18.2. <A
+HREF="vfs.html#AEN2649"
>Included modules</A
></DT
><DD
><DL
><DT
->16.2.1. <A
-HREF="vfs.html#AEN2866"
+>18.2.1. <A
+HREF="vfs.html#AEN2651"
>audit</A
></DT
><DT
->16.2.2. <A
-HREF="vfs.html#AEN2874"
+>18.2.2. <A
+HREF="vfs.html#AEN2659"
>recycle</A
></DT
><DT
->16.2.3. <A
-HREF="vfs.html#AEN2911"
+>18.2.3. <A
+HREF="vfs.html#AEN2696"
>netatalk</A
></DT
></DL
></DD
><DT
->16.3. <A
-HREF="vfs.html#AEN2918"
+>18.3. <A
+HREF="vfs.html#AEN2703"
>VFS modules available elsewhere</A
></DT
><DD
><DL
><DT
->16.3.1. <A
-HREF="vfs.html#AEN2922"
+>18.3.1. <A
+HREF="vfs.html#AEN2707"
>DatabaseFS</A
></DT
><DT
->16.3.2. <A
-HREF="vfs.html#AEN2930"
+>18.3.2. <A
+HREF="vfs.html#AEN2715"
>vscan</A
></DT
></DL
@@ -695,32 +662,105 @@ HREF="vfs.html#AEN2930"
></DL
></DD
><DT
->17. <A
+>19. <A
+HREF="samba-ldap-howto.html"
+>Storing Samba's User/Machine Account information in an LDAP Directory</A
+></DT
+><DD
+><DL
+><DT
+>19.1. <A
+HREF="samba-ldap-howto.html#AEN2737"
+>Purpose</A
+></DT
+><DT
+>19.2. <A
+HREF="samba-ldap-howto.html#AEN2757"
+>Introduction</A
+></DT
+><DT
+>19.3. <A
+HREF="samba-ldap-howto.html#AEN2786"
+>Supported LDAP Servers</A
+></DT
+><DT
+>19.4. <A
+HREF="samba-ldap-howto.html#AEN2791"
+>Schema and Relationship to the RFC 2307 posixAccount</A
+></DT
+><DT
+>19.5. <A
+HREF="samba-ldap-howto.html#AEN2803"
+>Configuring Samba with LDAP</A
+></DT
+><DD
+><DL
+><DT
+>19.5.1. <A
+HREF="samba-ldap-howto.html#AEN2805"
+>OpenLDAP configuration</A
+></DT
+><DT
+>19.5.2. <A
+HREF="samba-ldap-howto.html#AEN2822"
+>Configuring Samba</A
+></DT
+></DL
+></DD
+><DT
+>19.6. <A
+HREF="samba-ldap-howto.html#AEN2850"
+>Accounts and Groups management</A
+></DT
+><DT
+>19.7. <A
+HREF="samba-ldap-howto.html#AEN2855"
+>Security and sambaAccount</A
+></DT
+><DT
+>19.8. <A
+HREF="samba-ldap-howto.html#AEN2875"
+>LDAP specials attributes for sambaAccounts</A
+></DT
+><DT
+>19.9. <A
+HREF="samba-ldap-howto.html#AEN2945"
+>Example LDIF Entries for a sambaAccount</A
+></DT
+><DT
+>19.10. <A
+HREF="samba-ldap-howto.html#AEN2953"
+>Comments</A
+></DT
+></DL
+></DD
+><DT
+>20. <A
HREF="cvs-access.html"
->Access Samba source code via CVS</A
+>HOWTO Access Samba source code via CVS</A
></DT
><DD
><DL
><DT
->17.1. <A
-HREF="cvs-access.html#AEN2942"
+>20.1. <A
+HREF="cvs-access.html#AEN2964"
>Introduction</A
></DT
><DT
->17.2. <A
-HREF="cvs-access.html#AEN2947"
+>20.2. <A
+HREF="cvs-access.html#AEN2969"
>CVS Access to samba.org</A
></DT
><DD
><DL
><DT
->17.2.1. <A
-HREF="cvs-access.html#AEN2950"
+>20.2.1. <A
+HREF="cvs-access.html#AEN2972"
>Access via CVSweb</A
></DT
><DT
->17.2.2. <A
-HREF="cvs-access.html#AEN2955"
+>20.2.2. <A
+HREF="cvs-access.html#AEN2977"
>Access via cvs</A
></DT
></DL
@@ -728,117 +768,69 @@ HREF="cvs-access.html#AEN2955"
></DL
></DD
><DT
->18. <A
+>21. <A
HREF="groupmapping.html"
>Group mapping HOWTO</A
></DT
><DT
->19. <A
+>22. <A
HREF="speed.html"
>Samba performance issues</A
></DT
><DD
><DL
><DT
->19.1. <A
-HREF="speed.html#AEN3033"
+>22.1. <A
+HREF="speed.html#AEN3055"
>Comparisons</A
></DT
><DT
->19.2. <A
-HREF="speed.html#AEN3039"
+>22.2. <A
+HREF="speed.html#AEN3061"
>Socket options</A
></DT
><DT
->19.3. <A
-HREF="speed.html#AEN3046"
+>22.3. <A
+HREF="speed.html#AEN3068"
>Read size</A
></DT
><DT
->19.4. <A
-HREF="speed.html#AEN3051"
+>22.4. <A
+HREF="speed.html#AEN3073"
>Max xmit</A
></DT
><DT
->19.5. <A
-HREF="speed.html#AEN3056"
+>22.5. <A
+HREF="speed.html#AEN3078"
>Log level</A
></DT
><DT
->19.6. <A
-HREF="speed.html#AEN3059"
+>22.6. <A
+HREF="speed.html#AEN3081"
>Read raw</A
></DT
><DT
->19.7. <A
-HREF="speed.html#AEN3064"
+>22.7. <A
+HREF="speed.html#AEN3086"
>Write raw</A
></DT
><DT
->19.8. <A
-HREF="speed.html#AEN3068"
+>22.8. <A
+HREF="speed.html#AEN3090"
>Slow Clients</A
></DT
><DT
->19.9. <A
-HREF="speed.html#AEN3072"
+>22.9. <A
+HREF="speed.html#AEN3094"
>Slow Logins</A
></DT
><DT
->19.10. <A
-HREF="speed.html#AEN3075"
+>22.10. <A
+HREF="speed.html#AEN3097"
>Client tuning</A
></DT
></DL
></DD
-><DT
->20. <A
-HREF="groupprofiles.html"
->Creating Group Profiles</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="groupprofiles.html#AEN3123"
->Windows '9x</A
-></DT
-><DT
->20.2. <A
-HREF="groupprofiles.html#AEN3132"
->Windows NT 4</A
-></DT
-><DD
-><DL
-><DT
->20.2.1. <A
-HREF="groupprofiles.html#AEN3155"
->Side bar Notes</A
-></DT
-><DT
->20.2.2. <A
-HREF="groupprofiles.html#AEN3159"
->Mandatory profiles</A
-></DT
-><DT
->20.2.3. <A
-HREF="groupprofiles.html#AEN3162"
->moveuser.exe</A
-></DT
-><DT
->20.2.4. <A
-HREF="groupprofiles.html#AEN3165"
->Get SID</A
-></DT
-></DL
-></DD
-><DT
->20.3. <A
-HREF="groupprofiles.html#AEN3170"
->Windows 2000/XP</A
-></DT
-></DL
-></DD
></DL
></DIV
></DIV
@@ -887,7 +879,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Samba as a NT4 or Win2k domain member</TD
+>Samba as a NT4 domain member</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/other-clients.html b/docs/htmldocs/other-clients.html
index 7f0f99319e..130c9691e7 100644
--- a/docs/htmldocs/other-clients.html
+++ b/docs/htmldocs/other-clients.html
@@ -5,7 +5,8 @@
>Samba and other CIFS clients</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,9 +73,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="OTHER-CLIENTS"
-></A
->Chapter 22. Samba and other CIFS clients</H1
+NAME="OTHER-CLIENTS">Chapter 24. Samba and other CIFS clients</H1
><P
>This chapter contains client-specific information.</P
><DIV
@@ -82,9 +81,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3311"
-></A
->22.1. Macintosh clients?</H1
+NAME="AEN3199">24.1. Macintosh clients?</H1
><P
>Yes. <A
HREF="http://www.thursby.com/"
@@ -128,17 +125,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3320"
-></A
->22.2. OS2 Client</H1
+NAME="AEN3208">24.2. OS2 Client</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3322"
-></A
->22.2.1. How can I configure OS/2 Warp Connect or
+NAME="AEN3210">24.2.1. How can I configure OS/2 Warp Connect or
OS/2 Warp 4 as a client for Samba?</H2
><P
>A more complete answer to this question can be
@@ -195,9 +188,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3337"
-></A
->22.2.2. How can I configure OS/2 Warp 3 (not Connect),
+NAME="AEN3225">24.2.2. How can I configure OS/2 Warp 3 (not Connect),
OS/2 1.2, 1.3 or 2.x for Samba?</H2
><P
>You can use the free Microsoft LAN Manager 2.2c Client
@@ -239,9 +230,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3346"
-></A
->22.2.3. Are there any other issues when OS/2 (any version)
+NAME="AEN3234">24.2.3. Are there any other issues when OS/2 (any version)
is used as a client?</H2
><P
>When you do a NET VIEW or use the "File and Print
@@ -261,9 +250,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3350"
-></A
->22.2.4. How do I get printer driver download working
+NAME="AEN3238">24.2.4. How do I get printer driver download working
for OS/2 clients?</H2
><P
>First, create a share called [PRINTDRV] that is
@@ -312,17 +299,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3360"
-></A
->22.3. Windows for Workgroups</H1
+NAME="AEN3248">24.3. Windows for Workgroups</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3362"
-></A
->22.3.1. Use latest TCP/IP stack from Microsoft</H2
+NAME="AEN3250">24.3.1. Use latest TCP/IP stack from Microsoft</H2
><P
>Use the latest TCP/IP stack from microsoft if you use Windows
for workgroups.</P
@@ -342,9 +325,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3367"
-></A
->22.3.2. Delete .pwl files after password change</H2
+NAME="AEN3255">24.3.2. Delete .pwl files after password change</H2
><P
>WfWg does a lousy job with passwords. I find that if I change my
password on either the unix box or the PC the safest thing to do is to
@@ -362,9 +343,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3372"
-></A
->22.3.3. Configure WfW password handling</H2
+NAME="AEN3260">24.3.3. Configure WfW password handling</H2
><P
>There is a program call admincfg.exe
on the last disk (disk 8) of the WFW 3.11 disk set. To install it
@@ -381,9 +360,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3376"
-></A
->22.3.4. Case handling of passwords</H2
+NAME="AEN3264">24.3.4. Case handling of passwords</H2
><P
>Windows for Workgroups uppercases the password before sending it to the server. Unix passwords can be case-sensitive though. Check the <A
HREF="smb.conf.5.html"
@@ -400,9 +377,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3381"
-></A
->22.4. Windows '95/'98</H1
+NAME="AEN3269">24.4. Windows '95/'98</H1
><P
>When using Windows 95 OEM SR2 the following updates are recommended where Samba
is being used. Please NOTE that the above change will affect you once these
@@ -448,9 +423,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3397"
-></A
->22.5. Windows 2000 Service Pack 2</H1
+NAME="AEN3285">24.5. Windows 2000 Service Pack 2</H1
><P
>
There are several annoyances with Windows 2000 SP2. One of which
diff --git a/docs/htmldocs/pam.html b/docs/htmldocs/pam.html
index a64de2a1b4..ba2bf6c922 100644
--- a/docs/htmldocs/pam.html
+++ b/docs/htmldocs/pam.html
@@ -6,7 +6,8 @@
managed authentication</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -73,18 +74,14 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PAM"
-></A
->Chapter 11. Configuring PAM for distributed but centrally
+NAME="PAM">Chapter 12. Configuring PAM for distributed but centrally
managed authentication</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1922"
-></A
->11.1. Samba and PAM</H1
+NAME="AEN1788">12.1. Samba and PAM</H1
><P
>A number of Unix systems (eg: Sun Solaris), as well as the
xxxxBSD family and Linux, now utilize the Pluggable Authentication
@@ -296,9 +293,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1966"
-></A
->11.2. Distributed Authentication</H1
+NAME="AEN1832">12.2. Distributed Authentication</H1
><P
>The astute administrator will realize from this that the
combination of <TT
@@ -329,9 +324,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1973"
-></A
->11.3. PAM Configuration in smb.conf</H1
+NAME="AEN1839">12.3. PAM Configuration in smb.conf</H1
><P
>There is an option in smb.conf called <A
HREF="smb.conf.5.html#OBEYPAMRESTRICTIONS"
diff --git a/docs/htmldocs/passdb.html b/docs/htmldocs/passdb.html
deleted file mode 100644
index f53641624a..0000000000
--- a/docs/htmldocs/passdb.html
+++ /dev/null
@@ -1,1646 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML
-><HEAD
-><TITLE
->User information database</TITLE
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
-REL="HOME"
-TITLE="SAMBA Project Documentation"
-HREF="samba-howto-collection.html"><LINK
-REL="UP"
-TITLE="General installation"
-HREF="introduction.html"><LINK
-REL="PREVIOUS"
-TITLE="Quick Cross Subnet Browsing / Cross Workgroup Browsing guide"
-HREF="browsing-quick.html"><LINK
-REL="NEXT"
-TITLE="Type of installation"
-HREF="type.html"></HEAD
-><BODY
-CLASS="CHAPTER"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="NAVHEADER"
-><TABLE
-SUMMARY="Header navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TH
-COLSPAN="3"
-ALIGN="center"
->SAMBA Project Documentation</TH
-></TR
-><TR
-><TD
-WIDTH="10%"
-ALIGN="left"
-VALIGN="bottom"
-><A
-HREF="browsing-quick.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="80%"
-ALIGN="center"
-VALIGN="bottom"
-></TD
-><TD
-WIDTH="10%"
-ALIGN="right"
-VALIGN="bottom"
-><A
-HREF="type.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-></TABLE
-><HR
-ALIGN="LEFT"
-WIDTH="100%"></DIV
-><DIV
-CLASS="CHAPTER"
-><H1
-><A
-NAME="PASSDB"
-></A
->Chapter 3. User information database</H1
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN324"
-></A
->3.1. Introduction</H1
-><P
->Old windows clients send plain text passwords over the wire.
- Samba can check these passwords by crypting them and comparing them
- to the hash stored in the unix user database.
- </P
-><P
-> Newer windows clients send encrypted passwords (so-called
- Lanman and NT hashes) over
- the wire, instead of plain text passwords. The newest clients
- will only send encrypted passwords and refuse to send plain text
- passwords, unless their registry is tweaked.
- </P
-><P
->These passwords can't be converted to unix style encrypted
- passwords. Because of that you can't use the standard unix
- user database, and you have to store the Lanman and NT hashes
- somewhere else. </P
-><P
->Next to a differently encrypted passwords,
- windows also stores certain data for each user
- that is not stored in a unix user database, e.g.
- workstations the user may logon from, the location where his/her
- profile is stored, etc.
- Samba retrieves and stores this information using a "passdb backend".
- Commonly
- available backends are LDAP, plain text file, MySQL and nisplus.
- For more information, see the documentation about the
- <B
-CLASS="COMMAND"
->passdb backend = </B
-> parameter.
- </P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN331"
-></A
->3.2. Important Notes About Security</H1
-><P
->The unix and SMB password encryption techniques seem similar
- on the surface. This similarity is, however, only skin deep. The unix
- scheme typically sends clear text passwords over the network when
- logging in. This is bad. The SMB encryption scheme never sends the
- cleartext password over the network but it does store the 16 byte
- hashed values on disk. This is also bad. Why? Because the 16 byte hashed
- values are a "password equivalent". You cannot derive the user's
- password from them, but they could potentially be used in a modified
- client to gain access to a server. This would require considerable
- technical knowledge on behalf of the attacker but is perfectly possible.
- You should thus treat the data stored in whatever
- passdb backend you use (smbpasswd file, ldap, mysql) as though it contained the
- cleartext passwords of all your users. Its contents must be kept
- secret, and the file should be protected accordingly.</P
-><P
->Ideally we would like a password scheme which neither requires
- plain text passwords on the net or on disk. Unfortunately this
- is not available as Samba is stuck with being compatible with
- other SMB systems (WinNT, WfWg, Win95 etc). </P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Note that Windows NT 4.0 Service pack 3 changed the
- default for permissible authentication so that plaintext
- passwords are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->never</I
-></SPAN
-> sent over the wire.
- The solution to this is either to switch to encrypted passwords
- with Samba or edit the Windows NT registry to re-enable plaintext
- passwords. See the document WinNT.txt for details on how to do
- this.</P
-><P
->Other Microsoft operating systems which also exhibit
- this behavior includes</P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->MS DOS Network client 3.0 with
- the basic network redirector installed</TD
-></TR
-><TR
-><TD
->Windows 95 with the network redirector
- update installed</TD
-></TR
-><TR
-><TD
->Windows 98 [se]</TD
-></TR
-><TR
-><TD
->Windows 2000</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
->All current release of
- Microsoft SMB/CIFS clients support authentication via the
- SMB Challenge/Response mechanism described here. Enabling
- clear text authentication does not disable the ability
- of the client to participate in encrypted authentication.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN346"
-></A
->3.2.1. Advantages of SMB Encryption</H2
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->plain text passwords are not passed across
- the network. Someone using a network sniffer cannot just
- record passwords going to the SMB server.</TD
-></TR
-><TR
-><TD
->WinNT doesn't like talking to a server
- that isn't using SMB encrypted passwords. It will refuse
- to browse the server if the server is also in user level
- security mode. It will insist on prompting the user for the
- password on each connection, which is very annoying. The
- only things you can do to stop this is to use SMB encryption.
- </TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN351"
-></A
->3.2.2. Advantages of non-encrypted passwords</H2
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->plain text passwords are not kept
- on disk. </TD
-></TR
-><TR
-><TD
->uses same password file as other unix
- services such as login and ftp</TD
-></TR
-><TR
-><TD
->you are probably already using other
- services (such as telnet and ftp) which send plain text
- passwords over the net, so sending them for SMB isn't
- such a big deal.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN357"
-></A
->3.3. The smbpasswd Command</H1
-><P
->The smbpasswd utility is a utility similar to the
- <B
-CLASS="COMMAND"
->passwd</B
-> or <B
-CLASS="COMMAND"
->yppasswd</B
-> programs.
- It maintains the two 32 byte password fields
- in the passdb backend. </P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> works in a client-server mode
- where it contacts the local smbd to change the user's password on its
- behalf. This has enormous benefits - as follows.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> has the capability
- to change passwords on Windows NT servers (this only works when
- the request is sent to the NT Primary Domain Controller if you
- are changing an NT Domain user's password).</P
-><P
->To run smbpasswd as a normal user just type :</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbpasswd</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Old SMB password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type old value here -
- or hit return if there was no old password&gt;</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type new value&gt;
- </B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Repeat New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;re-type new value
- </B
-></TT
-></P
-><P
->If the old value does not match the current value stored for
- that user, or the two new values do not match each other, then the
- password will not be changed.</P
-><P
->If invoked by an ordinary user it will only allow the user
- to change his or her own Samba password.</P
-><P
->If run by the root user smbpasswd may take an optional
- argument, specifying the user name whose SMB password you wish to
- change. Note that when run as root smbpasswd does not prompt for
- or check the old password value, thus allowing root to set passwords
- for users who have forgotten their passwords.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> is designed to work in the same way
- and be familiar to UNIX users who use the <B
-CLASS="COMMAND"
->passwd</B
-> or
- <B
-CLASS="COMMAND"
->yppasswd</B
-> commands.</P
-><P
->For more details on using <B
-CLASS="COMMAND"
->smbpasswd</B
-> refer
- to the man page which will always be the definitive reference.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN388"
-></A
->3.4. Plain text</H1
-><P
->Older versions of samba retrieved user information from the unix user database
-and eventually some other fields from the file <TT
-CLASS="FILENAME"
->/etc/samba/smbpasswd</TT
->
-or <TT
-CLASS="FILENAME"
->/etc/smbpasswd</TT
->. When password encryption is disabled, no
-data is stored at all.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN393"
-></A
->3.5. TDB</H1
-><P
->Samba can also store the user data in a "TDB" (Trivial Database). Using this backend
-doesn't require any additional configuration. This backend is recommended for new installations who
-don't require LDAP.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN396"
-></A
->3.6. LDAP</H1
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN398"
-></A
->3.6.1. Introduction</H2
-><P
->This document describes how to use an LDAP directory for storing Samba user
-account information traditionally stored in the smbpasswd(5) file. It is
-assumed that the reader already has a basic understanding of LDAP concepts
-and has a working directory server already installed. For more information
-on LDAP architectures and Directories, please refer to the following sites.</P
-><P
-></P
-><UL
-><LI
-><P
->OpenLDAP - <A
-HREF="http://www.openldap.org/"
-TARGET="_top"
->http://www.openldap.org/</A
-></P
-></LI
-><LI
-><P
->iPlanet Directory Server - <A
-HREF="http://iplanet.netscape.com/directory"
-TARGET="_top"
->http://iplanet.netscape.com/directory</A
-></P
-></LI
-></UL
-><P
->Note that <A
-HREF="http://www.ora.com/"
-TARGET="_top"
->O'Reilly Publishing</A
-> is working on
-a guide to LDAP for System Administrators which has a planned release date of
-early summer, 2002.</P
-><P
->Two additional Samba resources which may prove to be helpful are</P
-><P
-></P
-><UL
-><LI
-><P
->The <A
-HREF="http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html"
-TARGET="_top"
->Samba-PDC-LDAP-HOWTO</A
->
- maintained by Ignacio Coupeau.</P
-></LI
-><LI
-><P
->The NT migration scripts from <A
-HREF="http://samba.idealx.org/"
-TARGET="_top"
->IDEALX</A
-> that are
- geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN418"
-></A
->3.6.2. Introduction</H2
-><P
->Traditionally, when configuring <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->"encrypt
-passwords = yes"</A
-> in Samba's <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file, user account
-information such as username, LM/NT password hashes, password change times, and account
-flags have been stored in the <TT
-CLASS="FILENAME"
->smbpasswd(5)</TT
-> file. There are several
-disadvantages to this approach for sites with very large numbers of users (counted
-in the thousands).</P
-><P
-></P
-><UL
-><LI
-><P
->The first is that all lookups must be performed sequentially. Given that
-there are approximately two lookups per domain logon (one for a normal
-session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for lareg sites. What is needed is an indexed approach
-such as is used in databases.</P
-></LI
-><LI
-><P
->The second problem is that administrators who desired to replicate a
-smbpasswd file to more than one Samba server were left to use external
-tools such as <B
-CLASS="COMMAND"
->rsync(1)</B
-> and <B
-CLASS="COMMAND"
->ssh(1)</B
->
-and wrote custom, in-house scripts.</P
-></LI
-><LI
-><P
->And finally, the amount of information which is stored in an
-smbpasswd entry leaves no room for additional attributes such as
-a home directory, password expiration time, or even a Relative
-Identified (RID).</P
-></LI
-></UL
-><P
->As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed. The API which defines access to user accounts
-is commonly referred to as the samdb interface (previously this was called the passdb
-API, and is still so named in the CVS trees). In Samba 2.2.3, enabling support
-for a samdb backend (e.g. <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> or
-<TT
-CLASS="PARAMETER"
-><I
->--with-tdbsam</I
-></TT
->) requires compile time support.</P
-><P
->When compiling Samba to include the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> autoconf
-option, smbd (and associated tools) will store and lookup user accounts in
-an LDAP directory. In reality, this is very easy to understand. If you are
-comfortable with using an smbpasswd file, simply replace "smbpasswd" with
-"LDAP directory" in all the documentation.</P
-><P
->There are a few points to stress about what the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-does not provide. The LDAP support referred to in the this documentation does not
-include:</P
-><P
-></P
-><UL
-><LI
-><P
->A means of retrieving user account information from
- an Windows 2000 Active Directory server.</P
-></LI
-><LI
-><P
->A means of replacing /etc/passwd.</P
-></LI
-></UL
-><P
->The second item can be accomplished by using LDAP NSS and PAM modules. LGPL
-versions of these libraries can be obtained from PADL Software
-(<A
-HREF="http://www.padl.com/"
-TARGET="_top"
->http://www.padl.com/</A
->). However,
-the details of configuring these packages are beyond the scope of this document.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN447"
-></A
->3.6.3. Supported LDAP Servers</H2
-><P
->The LDAP samdb code in 2.2.3 has been developed and tested using the OpenLDAP
-2.0 server and client libraries. The same code should be able to work with
-Netscape's Directory Server and client SDK. However, due to lack of testing
-so far, there are bound to be compile errors and bugs. These should not be
-hard to fix. If you are so inclined, please be sure to forward all patches to
-<A
-HREF="samba-patches@samba.org"
-TARGET="_top"
->samba-patches@samba.org</A
-> and
-<A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN452"
-></A
->3.6.4. Schema and Relationship to the RFC 2307 posixAccount</H2
-><P
->Samba 3.0 includes the necessary schema file for OpenLDAP 2.0 in
-<TT
-CLASS="FILENAME"
->examples/LDAP/samba.schema</TT
->. The sambaAccount objectclass is given here:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
- DESC 'Samba Account'
- MUST ( uid $ rid )
- MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
- logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
- displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
- description $ userWorkstations $ primaryGroupID $ domain ))</PRE
-></P
-><P
->The samba.schema file has been formatted for OpenLDAP 2.0. The OID's are
-owned by the Samba Team and as such is legal to be openly published.
-If you translate the schema to be used with Netscape DS, please
-submit the modified schema file as a patch to <A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
-></P
-><P
->Just as the smbpasswd file is mean to store information which supplements a
-user's <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information. A sambaAccount is a
-<TT
-CLASS="CONSTANT"
->STRUCTURAL</TT
-> objectclass so it can be stored individually
-in the directory. However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307. This is by design.</P
-><P
->In order to store all user account information (UNIX and Samba) in the directory,
-it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination. However, smbd will still obtain the user's UNIX account
-information via the standard C library calls (e.g. getpwnam(), et. al.).
-This means that the Samba server must also have the LDAP NSS library installed
-and functioning correctly. This division of information makes it possible to
-store all Samba account information in LDAP, but still maintain UNIX account
-information in NIS while the network is transitioning to a full LDAP infrastructure.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN464"
-></A
->3.6.5. Configuring Samba with LDAP</H2
-><DIV
-CLASS="SECT3"
-><H3
-CLASS="SECT3"
-><A
-NAME="AEN466"
-></A
->3.6.5.1. OpenLDAP configuration</H3
-><P
->To include support for the sambaAccount object in an OpenLDAP directory
-server, first copy the samba.schema file to slapd's configuration directory.</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->cp samba.schema /etc/openldap/schema/</B
-></P
-><P
->Next, include the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->.
-The sambaAccount object contains two attributes which depend upon other schema
-files. The 'uid' attribute is defined in <TT
-CLASS="FILENAME"
->cosine.schema</TT
-> and
-the 'displayName' attribute is defined in the <TT
-CLASS="FILENAME"
->inetorgperson.schema</TT
->
-file. Both of these must be included before the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /etc/openldap/slapd.conf
-
-## schema files (core.schema is required by default)
-include /etc/openldap/schema/core.schema
-
-## needed for sambaAccount
-include /etc/openldap/schema/cosine.schema
-include /etc/openldap/schema/inetorgperson.schema
-include /etc/openldap/schema/samba.schema
-
-## uncomment this line if you want to support the RFC2307 (NIS) schema
-## include /etc/openldap/schema/nis.schema
-
-....</PRE
-></P
-><P
->It is recommended that you maintain some indices on some of the most usefull attributes,
-like in the following example, to speed up searches made on sambaAccount objectclasses
-(and possibly posixAccount and posixGroup as well).</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-># Indices to maintain
-## required by OpenLDAP 2.0
-index objectclass eq
-
-## support pb_getsampwnam()
-index uid pres,eq
-## support pdb_getsambapwrid()
-index rid eq
-
-## uncomment these if you are storing posixAccount and
-## posixGroup entries in the directory as well
-##index uidNumber eq
-##index gidNumber eq
-##index cn eq
-##index memberUid eq</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><H3
-CLASS="SECT3"
-><A
-NAME="AEN483"
-></A
->3.6.5.2. Configuring Samba</H3
-><P
->The following parameters are available in smb.conf only with <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-was included with compiling Samba.</P
-><P
-></P
-><UL
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSSL"
-TARGET="_top"
->ldap ssl</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSERVER"
-TARGET="_top"
->ldap server</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPADMINDN"
-TARGET="_top"
->ldap admin dn</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSUFFIX"
-TARGET="_top"
->ldap suffix</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPFILTER"
-TARGET="_top"
->ldap filter</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPPORT"
-TARGET="_top"
->ldap port</A
-></P
-></LI
-></UL
-><P
->These are described in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> man
-page and so will not be repeated here. However, a sample smb.conf file for
-use with an LDAP directory could appear as</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /usr/local/samba/lib/smb.conf
-[global]
- security = user
- encrypt passwords = yes
-
- netbios name = TASHTEGO
- workgroup = NARNIA
-
- # ldap related parameters
-
- # define the DN to use when binding to the directory servers
- # The password for this DN is not stored in smb.conf. Rather it
- # must be set by using 'smbpasswd -w <TT
-CLASS="REPLACEABLE"
-><I
->secretpw</I
-></TT
->' to store the
- # passphrase in the secrets.tdb file. If the "ldap admin dn" values
- # changes, this password will need to be reset.
- ldap admin dn = "cn=Samba Manager,ou=people,dc=samba,dc=org"
-
- # specify the LDAP server's hostname (defaults to locahost)
- ldap server = ahab.samba.org
-
- # Define the SSL option when connecting to the directory
- # ('off', 'start tls', or 'on' (default))
- ldap ssl = start tls
-
- # define the port to use in the LDAP session (defaults to 636 when
- # "ldap ssl = on")
- ldap port = 389
-
- # specify the base DN to use when searching the directory
- ldap suffix = "ou=people,dc=samba,dc=org"
-
- # generally the default ldap search filter is ok
- # ldap filter = "(&amp;(uid=%u)(objectclass=sambaAccount))"</PRE
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN511"
-></A
->3.6.6. Accounts and Groups management</H2
-><P
->As users accounts are managed thru the sambaAccount objectclass, you should
-modify you existing administration tools to deal with sambaAccount attributes.</P
-><P
->Machines accounts are managed with the sambaAccount objectclass, just
-like users accounts. However, it's up to you to stored thoses accounts
-in a different tree of you LDAP namespace: you should use
-"ou=Groups,dc=plainjoe,dc=org" to store groups and
-"ou=People,dc=plainjoe,dc=org" to store users. Just configure your
-NSS and PAM accordingly (usually, in the /etc/ldap.conf configuration
-file).</P
-><P
->In Samba release 3.0, the group management system is based on posix
-groups. This means that Samba make usage of the posixGroup objectclass.
-For now, there is no NT-like group system management (global and local
-groups).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN516"
-></A
->3.6.7. Security and sambaAccount</H2
-><P
->There are two important points to remember when discussing the security
-of sambaAccount entries in the directory.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> retrieve the lmPassword or
- ntPassword attribute values over an unencrypted LDAP session.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> allow non-admin users to
- view the lmPassword or ntPassword attribute values.</P
-></LI
-></UL
-><P
->These password hashes are clear text equivalents and can be used to impersonate
-the user without deriving the original clear text strings. For more information
-on the details of LM/NT password hashes, refer to the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->ENCRYPTION chapter</A
-> of the Samba-HOWTO-Collection.</P
-><P
->To remedy the first security issue, the "ldap ssl" smb.conf parameter defaults
-to require an encrypted session (<B
-CLASS="COMMAND"
->ldap ssl = on</B
->) using
-the default port of 636
-when contacting the directory server. When using an OpenLDAP 2.0 server, it
-is possible to use the use the StartTLS LDAP extended operation in the place of
-LDAPS. In either case, you are strongly discouraged to disable this security
-(<B
-CLASS="COMMAND"
->ldap ssl = off</B
->).</P
-><P
->Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
-extended operation. However, the OpenLDAP library still provides support for
-the older method of securing communication between clients and servers.</P
-><P
->The second security precaution is to prevent non-administrative users from
-harvesting password hashes from the directory. This can be done using the
-following ACL in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## allow the "ldap admin dn" access, but deny everyone else
-access to attrs=lmPassword,ntPassword
- by dn="cn=Samba Admin,ou=people,dc=plainjoe,dc=org" write
- by * none</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN536"
-></A
->3.6.8. LDAP specials attributes for sambaAccounts</H2
-><P
->The sambaAccount objectclass is composed of the following attributes:</P
-><P
-></P
-><UL
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->lmPassword</TT
->: the LANMAN password 16-byte hash stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->ntPassword</TT
->: the NT password hash 16-byte stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdLastSet</TT
->: The integer time in seconds since 1970 when the
- <TT
-CLASS="CONSTANT"
->lmPassword</TT
-> and <TT
-CLASS="CONSTANT"
->ntPassword</TT
-> attributes were last set.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->acctFlags</TT
->: string of 11 characters surrounded by square brackets []
- representing account flags such as U (user), W(workstation), X(no password expiration), and
- D(disabled).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logonTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->kickoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdCanChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdMustChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->homeDrive</TT
->: specifies the drive letter to which to map the
- UNC path specified by homeDirectory. The drive letter must be specified in the form "X:"
- where X is the letter of the drive to map. Refer to the "logon drive" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->scriptPath</TT
->: The scriptPath property specifies the path of
- the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
- is relative to the netlogon share. Refer to the "logon script" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->profilePath</TT
->: specifies a path to the user's profile.
- This value can be a null string, a local absolute path, or a UNC path. Refer to the
- "logon path" parameter in the smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->smbHome</TT
->: The homeDirectory property specifies the path of
- the home directory for the user. The string can be null. If homeDrive is set and specifies
- a drive letter, homeDirectory should be a UNC path. The path must be a network
- UNC path of the form \\server\share\directory. This value can be a null string.
- Refer to the "logon home" parameter in the smb.conf(5) man page for more information.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->userWorkstation</TT
->: character string value currently unused.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->rid</TT
->: the integer representation of the user's relative identifier
- (RID).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->primaryGroupID</TT
->: the relative identifier (RID) of the primary group
- of the user.</P
-></LI
-></UL
-><P
->The majority of these parameters are only used when Samba is acting as a PDC of
-a domain (refer to the <A
-HREF="Samba-PDC-HOWTO.html"
-TARGET="_top"
->Samba-PDC-HOWTO</A
-> for details on
-how to configure Samba as a Primary Domain Controller). The following four attributes
-are only stored with the sambaAccount entry if the values are non-default values:</P
-><P
-></P
-><UL
-><LI
-><P
->smbHome</P
-></LI
-><LI
-><P
->scriptPath</P
-></LI
-><LI
-><P
->logonPath</P
-></LI
-><LI
-><P
->homeDrive</P
-></LI
-></UL
-><P
->These attributes are only stored with the sambaAccount entry if
-the values are non-default values. For example, assume TASHTEGO has now been
-configured as a PDC and that <B
-CLASS="COMMAND"
->logon home = \\%L\%u</B
-> was defined in
-its <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. When a user named "becky" logons to the domain,
-the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> string is expanded to \\TASHTEGO\becky.
-If the smbHome attribute exists in the entry "uid=becky,ou=people,dc=samba,dc=org",
-this value is used. However, if this attribute does not exist, then the value
-of the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> parameter is used in its place. Samba
-will only write the attribute value to the directory entry is the value is
-something other than the default (e.g. \\MOBY\becky).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN606"
-></A
->3.6.9. Example LDIF Entries for a sambaAccount</H2
-><P
->The following is a working LDIF with the inclusion of the posixAccount objectclass:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=guest2, ou=people,dc=plainjoe,dc=org
-ntPassword: 878D8014606CDA29677A44EFA1353FC7
-pwdMustChange: 2147483647
-primaryGroupID: 1201
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-pwdLastSet: 1010179124
-logonTime: 0
-objectClass: sambaAccount
-uid: guest2
-kickoffTime: 2147483647
-acctFlags: [UX ]
-logoffTime: 2147483647
-rid: 19006
-pwdCanChange: 0</PRE
-></P
-><P
->The following is an LDIF entry for using both the sambaAccount and
-posixAccount objectclasses:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=gcarter, ou=people,dc=plainjoe,dc=org
-logonTime: 0
-displayName: Gerald Carter
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-primaryGroupID: 1201
-objectClass: posixAccount
-objectClass: sambaAccount
-acctFlags: [UX ]
-userPassword: {crypt}BpM2ej8Rkzogo
-uid: gcarter
-uidNumber: 9000
-cn: Gerald Carter
-loginShell: /bin/bash
-logoffTime: 2147483647
-gidNumber: 100
-kickoffTime: 2147483647
-pwdLastSet: 1010179230
-rid: 19000
-homeDirectory: /home/tashtego/gcarter
-pwdCanChange: 0
-pwdMustChange: 2147483647
-ntPassword: 878D8014606CDA29677A44EFA1353FC7</PRE
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN614"
-></A
->3.7. MySQL</H1
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN616"
-></A
->3.7.1. Building</H2
-><P
->To build the plugin, run <B
-CLASS="COMMAND"
->make bin/pdb_mysql.so</B
->
-in the <TT
-CLASS="FILENAME"
->source/</TT
-> directory of samba distribution. </P
-><P
->Next, copy pdb_mysql.so to any location you want. I
-strongly recommend installing it in $PREFIX/lib or /usr/lib/samba/</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN622"
-></A
->3.7.2. Creating the database</H2
-><P
->You either can set up your own table and specify the field names to pdb_mysql (see below
-for the column names) or use the default table. The file <TT
-CLASS="FILENAME"
->examples/pdb/mysql/mysql.dump</TT
->
-contains the correct queries to create the required tables. Use the command :
-
-<B
-CLASS="COMMAND"
->mysql -u<TT
-CLASS="REPLACEABLE"
-><I
->username</I
-></TT
-> -h<TT
-CLASS="REPLACEABLE"
-><I
->hostname</I
-></TT
-> -p<TT
-CLASS="REPLACEABLE"
-><I
->password</I
-></TT
-> <TT
-CLASS="REPLACEABLE"
-><I
->databasename</I
-></TT
-> &#60; <TT
-CLASS="FILENAME"
->/path/to/samba/examples/pdb/mysql/mysql.dump</TT
-></B
->&#13;</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN632"
-></A
->3.7.3. Configuring</H2
-><P
->This plugin lacks some good documentation, but here is some short info:</P
-><P
->Add a the following to the <B
-CLASS="COMMAND"
->passdb backend</B
-> variable in your <TT
-CLASS="FILENAME"
->smb.conf</TT
->:
-<PRE
-CLASS="PROGRAMLISTING"
->passdb backend = [other-plugins] plugin:/location/to/pdb_mysql.so:identifier [other-plugins]</PRE
-></P
-><P
->The identifier can be any string you like, as long as it doesn't collide with
-the identifiers of other plugins or other instances of pdb_mysql. If you
-specify multiple pdb_mysql.so entries in 'passdb backend', you also need to
-use different identifiers!</P
-><P
->Additional options can be given thru the smb.conf file in the [global] section.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:mysql host - host name, defaults to 'localhost'
-identifier:mysql password
-identifier:mysql user - defaults to 'samba'
-identifier:mysql database - defaults to 'samba'
-identifier:mysql port - defaults to 3306
-identifier:table - Name of the table containing users</PRE
-></P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Since the password for the mysql user is stored in the
-smb.conf file, you should make the the smb.conf file
-readable only to the user that runs samba. This is considered a security
-bug and will be fixed soon.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Names of the columns in this table(I've added column types those columns should have first):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:logon time column - int(9)
-identifier:logoff time column - int(9)
-identifier:kickoff time column - int(9)
-identifier:pass last set time column - int(9)
-identifier:pass can change time column - int(9)
-identifier:pass must change time column - int(9)
-identifier:username column - varchar(255) - unix username
-identifier:domain column - varchar(255) - NT domain user is part of
-identifier:nt username column - varchar(255) - NT username
-identifier:fullname column - varchar(255) - Full name of user
-identifier:home dir column - varchar(255) - Unix homedir path
-identifier:dir drive column - varchar(2) - Directory drive path (eg: 'H:')
-identifier:logon script column - varchar(255) - Batch file to run on client side when logging on
-identifier:profile path column - varchar(255) - Path of profile
-identifier:acct desc column - varchar(255) - Some ASCII NT user data
-identifier:workstations column - varchar(255) - Workstations user can logon to (or NULL for all)
-identifier:unknown string column - varchar(255) - unknown string
-identifier:munged dial column - varchar(255) - ?
-identifier:uid column - int(9) - Unix user ID (uid)
-identifier:gid column - int(9) - Unix user group (gid)
-identifier:user sid column - varchar(255) - NT user SID
-identifier:group sid column - varchar(255) - NT group ID
-identifier:lanman pass column - varchar(255) - encrypted lanman password
-identifier:nt pass column - varchar(255) - encrypted nt passwd
-identifier:plain pass column - varchar(255) - plaintext password
-identifier:acct control column - int(9) - nt user data
-identifier:unknown 3 column - int(9) - unknown
-identifier:logon divs column - int(9) - ?
-identifier:hours len column - int(9) - ?
-identifier:unknown 5 column - int(9) - unknown
-identifier:unknown 6 column - int(9) - unknown</PRE
-></P
-><P
->Eventually, you can put a colon (:) after the name of each column, which
-should specify the column to update when updating the table. You can also
-specify nothing behind the colon - then the data from the field will not be
-updated. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN649"
-></A
->3.7.4. Using plaintext passwords or encrypted password</H2
-><P
->I strongly discourage the use of plaintext passwords, however, you can use them:</P
-><P
->If you would like to use plaintext passwords, set 'identifier:lanman pass column' and 'identifier:nt pass column' to 'NULL' (without the quotes) and 'identifier:plain pass column' to the name of the column containing the plaintext passwords. </P
-><P
->If you use encrypted passwords, set the 'identifier:plain pass column' to 'NULL' (without the quotes). This is the default.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN654"
-></A
->3.7.5. Getting non-column data from the table</H2
-><P
->It is possible to have not all data in the database and making some 'constant'.</P
-><P
->For example, you can set 'identifier:fullname column' to :
-<B
-CLASS="COMMAND"
->CONCAT(First_name,' ',Sur_name)</B
-></P
-><P
->Or, set 'identifier:workstations column' to :
-<B
-CLASS="COMMAND"
->NULL</B
-></P
-><P
->See the MySQL documentation for more language constructs.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN662"
-></A
->3.8. Passdb XML plugin</H1
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN664"
-></A
->3.8.1. Building</H2
-><P
->This module requires libxml2 to be installed.</P
-><P
->To build pdb_xml, run: <B
-CLASS="COMMAND"
->make bin/pdb_xml.so</B
-> in
-the directory <TT
-CLASS="FILENAME"
->source/</TT
->. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN670"
-></A
->3.8.2. Usage</H2
-><P
->The usage of pdb_xml is pretty straightforward. To export data, use:
-
-<B
-CLASS="COMMAND"
->pdbedit -e plugin:/usr/lib/samba/pdb_xml.so:filename</B
->
-
-(where filename is the name of the file to put the data in)</P
-><P
->To import data, use:
-<B
-CLASS="COMMAND"
->pdbedit -i plugin:/usr/lib/samba/pdb_xml.so:filename -e current-pdb</B
->
-
-Where filename is the name to read the data from and current-pdb to put it in.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="NAVFOOTER"
-><HR
-ALIGN="LEFT"
-WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
-><A
-HREF="browsing-quick.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="samba-howto-collection.html"
-ACCESSKEY="H"
->Home</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
-><A
-HREF="type.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="introduction.html"
-ACCESSKEY="U"
->Up</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
->Type of installation</TD
-></TR
-></TABLE
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
diff --git a/docs/htmldocs/pdb-mysql.html b/docs/htmldocs/pdb-mysql.html
index e98d0c30d0..abca946f6f 100644
--- a/docs/htmldocs/pdb-mysql.html
+++ b/docs/htmldocs/pdb-mysql.html
@@ -5,7 +5,8 @@
>Passdb MySQL plugin</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PDB-MYSQL"
-></A
->Chapter 16. Passdb MySQL plugin</H1
+NAME="PDB-MYSQL">Chapter 16. Passdb MySQL plugin</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2562"
-></A
->16.1. Building</H1
+NAME="AEN2566">16.1. Building</H1
><P
>To build the plugin, run <B
CLASS="COMMAND"
@@ -101,53 +98,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2568"
-></A
->16.2. Creating the database</H1
-><P
->You either can set up your own table and specify the field names to pdb_mysql (see below
-for the column names) or use the default table. The file <TT
-CLASS="FILENAME"
->examples/pdb/mysql/mysql.dump</TT
->
-contains the correct queries to create the required tables. Use the command :
-
-<B
-CLASS="COMMAND"
->mysql -u<TT
-CLASS="REPLACEABLE"
-><I
->username</I
-></TT
-> -h<TT
-CLASS="REPLACEABLE"
-><I
->hostname</I
-></TT
-> -p<TT
-CLASS="REPLACEABLE"
-><I
->password</I
-></TT
-> <TT
-CLASS="REPLACEABLE"
-><I
->databasename</I
-></TT
-> &#60; <TT
-CLASS="FILENAME"
->/path/to/samba/examples/pdb/mysql/mysql.dump</TT
-></B
->&#13;</P
-></DIV
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="AEN2578"
-></A
->16.3. Configuring</H1
+NAME="AEN2572">16.2. Configuring</H1
><P
>This plugin lacks some good documentation, but here is some short info:</P
><P
@@ -238,9 +189,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2595"
-></A
->16.4. Using plaintext passwords or encrypted password</H1
+NAME="AEN2589">16.3. Using plaintext passwords or encrypted password</H1
><P
>I strongly discourage the use of plaintext passwords, however, you can use them:</P
><P
@@ -253,9 +202,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2600"
-></A
->16.5. Getting non-column data from the table</H1
+NAME="AEN2594">16.4. Getting non-column data from the table</H1
><P
>It is possible to have not all data in the database and making some 'constant'.</P
><P
diff --git a/docs/htmldocs/pdb-xml.html b/docs/htmldocs/pdb-xml.html
index 1b419dcc74..4d300d7be0 100644
--- a/docs/htmldocs/pdb-xml.html
+++ b/docs/htmldocs/pdb-xml.html
@@ -5,7 +5,8 @@
>Passdb XML plugin</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PDB-XML"
-></A
->Chapter 17. Passdb XML plugin</H1
+NAME="PDB-XML">Chapter 17. Passdb XML plugin</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2619"
-></A
->17.1. Building</H1
+NAME="AEN2613">17.1. Building</H1
><P
>This module requires libxml2 to be installed.</P
><P
@@ -100,9 +97,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2625"
-></A
->17.2. Usage</H1
+NAME="AEN2619">17.2. Usage</H1
><P
>The usage of pdb_xml is pretty straightforward. To export data, use:
diff --git a/docs/htmldocs/pdbedit.8.html b/docs/htmldocs/pdbedit.8.html
index 14497f522c..e3cf1e4fba 100644
--- a/docs/htmldocs/pdbedit.8.html
+++ b/docs/htmldocs/pdbedit.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>pdbedit</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="PDBEDIT.8"
-></A
->pdbedit</H1
+NAME="PDBEDIT">pdbedit</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -29,15 +28,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>pdbedit</B
-> [-l] [-v] [-w] [-u username] [-f fullname] [-h homedir] [-D drive] [-S script] [-p profile] [-a] [-m] [-x] [-i passdb-backend] [-e passdb-backend] [-b passdb-backend] [-d debuglevel] [-s configfile] [-P account-policy] [-V value]</P
+> [-l] [-v] [-w] [-u username] [-f fullname] [-h homedir] [-D drive] [-S script] [-p profile] [-a] [-m] [-x] [-i passdb-backend] [-e passdb-backend] [-b passdb-backend] [-d debuglevel] [-s configfile] [-P account-policy] [-V value]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -47,12 +44,10 @@ NAME="AEN30"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>The pdbedit program is used to manage the users accounts
@@ -70,7 +65,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN39"
+NAME="AEN37"
></A
><H2
>OPTIONS</H2
@@ -93,10 +88,20 @@ CLASS="COMMAND"
>pdbedit -l</B
></P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
-CLASS="SCREEN"
->sorce:500:Simo Sorce
-samba:45:Test User</PRE
+CLASS="PROGRAMLISTING"
+> sorce:500:Simo Sorce
+ samba:45:Test User
+ </PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
@@ -112,26 +117,36 @@ CLASS="COMMAND"
>pdbedit -l -v</B
></P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
-CLASS="SCREEN"
->---------------
-username: sorce
-user ID/Group: 500/500
-user RID/GRID: 2000/2001
-Full Name: Simo Sorce
-Home Directory: \\BERSERKER\sorce
-HomeDir Drive: H:
-Logon Script: \\BERSERKER\netlogon\sorce.bat
-Profile Path: \\BERSERKER\profile
----------------
-username: samba
-user ID/Group: 45/45
-user RID/GRID: 1090/1091
-Full Name: Test User
-Home Directory: \\BERSERKER\samba
-HomeDir Drive:
-Logon Script:
-Profile Path: \\BERSERKER\profile</PRE
+CLASS="PROGRAMLISTING"
+> ---------------
+ username: sorce
+ user ID/Group: 500/500
+ user RID/GRID: 2000/2001
+ Full Name: Simo Sorce
+ Home Directory: \\BERSERKER\sorce
+ HomeDir Drive: H:
+ Logon Script: \\BERSERKER\netlogon\sorce.bat
+ Profile Path: \\BERSERKER\profile
+ ---------------
+ username: samba
+ user ID/Group: 45/45
+ user RID/GRID: 1090/1091
+ Full Name: Test User
+ Home Directory: \\BERSERKER\samba
+ HomeDir Drive:
+ Logon Script:
+ Profile Path: \\BERSERKER\profile
+ </PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
@@ -144,23 +159,35 @@ Profile Path: \\BERSERKER\profile</PRE
<TT
CLASS="FILENAME"
>smbpasswd</TT
-> file format. (see the
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
+> file format. (see the <A
+HREF="smbpasswd.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smbpasswd(5)</TT
+></A
> for details)</P
><P
>Example: <B
CLASS="COMMAND"
>pdbedit -l -w</B
></P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
-CLASS="SCREEN"
->sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
-samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:</PRE
+CLASS="PROGRAMLISTING"
+> sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
+ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:
+ </PRE
+></TD
+></TR
+></TABLE
+></P
></DD
><DT
>-u username</DT
@@ -168,19 +195,13 @@ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX
><P
>This option specifies the username to be
used for the operation requested (listing, adding, removing).
- It is <SPAN
-CLASS="emphasis"
-><I
+ It is <I
CLASS="EMPHASIS"
>required</I
-></SPAN
> in add, remove and modify
- operations and <SPAN
-CLASS="emphasis"
-><I
+ operations and <I
CLASS="EMPHASIS"
>optional</I
-></SPAN
> in list
operations.</P
></DD
@@ -266,11 +287,21 @@ CLASS="COMMAND"
CLASS="COMMAND"
>pdbedit -a -u sorce</B
>
-<PRE
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>new password:
-retype new password</PRE
-></P
+ retype new password</PRE
+></TD
+></TR
+></TABLE
+>
+ </P
></DD
><DT
>-m</DT
@@ -363,9 +394,19 @@ CLASS="COMMAND"
>pdbedit -P "bad lockout attempt"</B
></P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
->account policy value for bad lockout attempt is 0</PRE
+> account policy value for bad lockout attempt is 0
+ </PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
@@ -387,10 +428,20 @@ CLASS="COMMAND"
>pdbedit -P "bad lockout attempt" -V 3</B
></P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
->account policy value for bad lockout attempt was 0
-account policy value for bad lockout attempt is now 3</PRE
+> account policy value for bad lockout attempt was 0
+ account policy value for bad lockout attempt is now 3
+ </PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
@@ -441,7 +492,7 @@ CLASS="FILENAME"
>Print a summary of command line options.</P
></DD
><DT
->-s &lt;configuration file&gt;</DT
+>-s &#60;configuration file&#62;</DT
><DD
><P
>The file specified contains the
@@ -466,7 +517,7 @@ compile time.</P
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN184"
+NAME="AEN182"
></A
><H2
>NOTES</H2
@@ -476,7 +527,7 @@ NAME="AEN184"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN187"
+NAME="AEN185"
></A
><H2
>VERSION</H2
@@ -487,29 +538,27 @@ NAME="AEN187"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN190"
+NAME="AEN188"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->samba</SPAN
->(7)</SPAN
-></P
+><A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+>smbpasswd(8)</A
+>,
+ <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN199"
+NAME="AEN193"
></A
><H2
>AUTHOR</H2
@@ -521,14 +570,14 @@ NAME="AEN199"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook
- XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/portability.html b/docs/htmldocs/portability.html
index 4942cdb1bb..424fbe5c6c 100644
--- a/docs/htmldocs/portability.html
+++ b/docs/htmldocs/portability.html
@@ -5,7 +5,8 @@
>Portability</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,9 +73,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PORTABILITY"
-></A
->Chapter 21. Portability</H1
+NAME="PORTABILITY">Chapter 23. Portability</H1
><P
>Samba works on a wide range of platforms but the interface all the
platforms provide is not always compatible. This chapter contains
@@ -84,9 +83,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3251"
-></A
->21.1. HPUX</H1
+NAME="AEN3139">23.1. HPUX</H1
><P
>HP's implementation of supplementary groups is, er, non-standard (for
hysterical reasons). There are two group files, /etc/group and
@@ -114,9 +111,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3257"
-></A
->21.2. SCO Unix</H1
+NAME="AEN3145">23.2. SCO Unix</H1
><P
>
If you run an old version of SCO Unix then you may need to get important
@@ -131,9 +126,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3261"
-></A
->21.3. DNIX</H1
+NAME="AEN3149">23.3. DNIX</H1
><P
>DNIX has a problem with seteuid() and setegid(). These routines are
needed for Samba to work correctly, but they were left out of the DNIX
@@ -238,9 +231,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3290"
-></A
->21.4. RedHat Linux Rembrandt-II</H1
+NAME="AEN3178">23.4. RedHat Linux Rembrandt-II</H1
><P
>By default RedHat Rembrandt-II during installation adds an
entry to /etc/hosts as follows:
diff --git a/docs/htmldocs/printing.html b/docs/htmldocs/printing.html
index 92eb52c7cc..46ebbcdf84 100644
--- a/docs/htmldocs/printing.html
+++ b/docs/htmldocs/printing.html
@@ -5,7 +5,8 @@
>Printing Support</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PRINTING"
-></A
->Chapter 13. Printing Support</H1
+NAME="PRINTING">Chapter 14. Printing Support</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2054"
-></A
->13.1. Introduction</H1
+NAME="AEN1920">14.1. Introduction</H1
><P
>Beginning with the 2.2.0 release, Samba supports
the native Windows NT printing mechanisms implemented via
@@ -163,9 +160,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2076"
-></A
->13.2. Configuration</H1
+NAME="AEN1942">14.2. Configuration</H1
><DIV
CLASS="WARNING"
><P
@@ -180,7 +175,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
@@ -229,9 +224,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2084"
-></A
->13.2.1. Creating [print$]</H2
+NAME="AEN1950">14.2.1. Creating [print$]</H2
><P
>In order to support the uploading of printer driver
files, you must first configure a file share named [print$].
@@ -310,7 +303,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TH
@@ -381,7 +374,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
@@ -452,9 +445,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2119"
-></A
->13.2.2. Setting Drivers for Existing Printers</H2
+NAME="AEN1985">14.2.2. Setting Drivers for Existing Printers</H2
><P
>The initial listing of printers in the Samba host's
Printers folder will have no real printer driver assigned
@@ -524,9 +515,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2135"
-></A
->13.2.3. Support a large number of printers</H2
+NAME="AEN2001">14.2.3. Support a large number of printers</H2
><P
>One issue that has arisen during the development
phase of Samba 2.2 is the need to support driver downloads for
@@ -590,9 +579,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2146"
-></A
->13.2.4. Adding New Printers via the Windows NT APW</H2
+NAME="AEN2012">14.2.4. Adding New Printers via the Windows NT APW</H2
><P
>By default, Samba offers all printer shares defined in <TT
CLASS="FILENAME"
@@ -733,8 +720,8 @@ echo " :sd=/var/spool/lpd/$2:\\" &#62;&#62; $PRINTCAP
echo " :mx=0:ml=0:sh:\\" &#62;&#62; $PRINTCAP
echo " :lp=/usr/local/samba/var/print/$5.prn:" &#62;&#62; $PRINTCAP
-touch "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&amp;1
-chown $LP "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&amp;1
+touch "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&#38;1
+chown $LP "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&#38;1
mkdir /var/spool/lpd/$2
chmod 700 /var/spool/lpd/$2
@@ -759,9 +746,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2176"
-></A
->13.2.5. Samba and Printer Ports</H2
+NAME="AEN2042">14.2.5. Samba and Printer Ports</H2
><P
>Windows NT/2000 print servers associate a port with each printer. These normally
take the form of LPT1:, COM1:, FILE:, etc... Samba must also support the
@@ -796,9 +781,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2184"
-></A
->13.3. The Imprints Toolset</H1
+NAME="AEN2050">14.3. The Imprints Toolset</H1
><P
>The Imprints tool set provides a UNIX equivalent of the
Windows NT Add Printer Wizard. For complete information, please
@@ -814,9 +797,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2188"
-></A
->13.3.1. What is Imprints?</H2
+NAME="AEN2054">14.3.1. What is Imprints?</H2
><P
>Imprints is a collection of tools for supporting the goals
of</P
@@ -846,9 +827,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2198"
-></A
->13.3.2. Creating Printer Driver Packages</H2
+NAME="AEN2064">14.3.2. Creating Printer Driver Packages</H2
><P
>The process of creating printer driver packages is beyond
the scope of this document (refer to Imprints.txt also included
@@ -862,9 +841,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2201"
-></A
->13.3.3. The Imprints server</H2
+NAME="AEN2067">14.3.3. The Imprints server</H2
><P
>The Imprints server is really a database server that
may be queried via standard HTTP mechanisms. Each printer
@@ -886,9 +863,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2205"
-></A
->13.3.4. The Installation Client</H2
+NAME="AEN2071">14.3.4. The Installation Client</H2
><P
>More information regarding the Imprints installation client
is available in the <TT
@@ -980,17 +955,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2227"
-></A
->13.4. Diagnosis</H1
+NAME="AEN2093">14.4. Diagnosis</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2229"
-></A
->13.4.1. Introduction</H2
+NAME="AEN2095">14.4.1. Introduction</H2
><P
>This is a short description of how to debug printing problems with
Samba. This describes how to debug problems with printing from a SMB
@@ -1063,9 +1034,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2245"
-></A
->13.4.2. Debugging printer problems</H2
+NAME="AEN2111">14.4.2. Debugging printer problems</H2
><P
>One way to debug printing problems is to start by replacing these
command with shell scripts that record the arguments and the contents
@@ -1081,7 +1050,7 @@ CLASS="PROGRAMLISTING"
/usr/bin/id -p &#62;/tmp/tmp.print
# we run the command and save the error messages
# replace the command with the one appropriate for your system
- /usr/bin/lpr -r -P$1 $2 2&#62;&#62;&amp;/tmp/tmp.print</PRE
+ /usr/bin/lpr -r -P$1 $2 2&#62;&#62;&#38;/tmp/tmp.print</PRE
></P
><P
>Then you print a file and try removing it. You may find that the
@@ -1120,9 +1089,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2254"
-></A
->13.4.3. What printers do I have?</H2
+NAME="AEN2120">14.4.3. What printers do I have?</H2
><P
>You can use the 'testprns' program to check to see if the printer
name you are using is recognized by Samba. For example, you can
@@ -1149,9 +1116,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2262"
-></A
->13.4.4. Setting up printcap and print servers</H2
+NAME="AEN2128">14.4.4. Setting up printcap and print servers</H2
><P
>You may need to set up some printcaps for your Samba system to use.
It is strongly recommended that you use the facilities provided by
@@ -1233,9 +1198,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2290"
-></A
->13.4.5. Job sent, no output</H2
+NAME="AEN2156">14.4.5. Job sent, no output</H2
><P
>This is the most frustrating part of printing. You may have sent the
job, verified that the job was forwarded, set up a wrapper around
@@ -1278,9 +1241,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2301"
-></A
->13.4.6. Job sent, strange output</H2
+NAME="AEN2167">14.4.6. Job sent, strange output</H2
><P
>Once you have the job printing, you can then start worrying about
making it print nicely.</P
@@ -1324,9 +1285,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2313"
-></A
->13.4.7. Raw PostScript printed</H2
+NAME="AEN2179">14.4.7. Raw PostScript printed</H2
><P
>This is a problem that is usually caused by either the print spooling
system putting information at the start of the print job that makes
@@ -1339,9 +1298,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2316"
-></A
->13.4.8. Advanced Printing</H2
+NAME="AEN2182">14.4.8. Advanced Printing</H2
><P
>Note that you can do some pretty magic things by using your
imagination with the "print command" option and some shell scripts.
@@ -1355,9 +1312,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2319"
-></A
->13.4.9. Real debugging</H2
+NAME="AEN2185">14.4.9. Real debugging</H2
><P
>If the above debug tips don't help, then maybe you need to bring in
the bug guns, system tracing. See Tracing.txt in this directory.</P
diff --git a/docs/htmldocs/pwencrypt.html b/docs/htmldocs/pwencrypt.html
index b15d74c5d0..9414399bf4 100644
--- a/docs/htmldocs/pwencrypt.html
+++ b/docs/htmldocs/pwencrypt.html
@@ -5,7 +5,8 @@
>LanMan and NT Password Encryption in Samba</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,8 +17,8 @@ REL="PREVIOUS"
TITLE="Quick Cross Subnet Browsing / Cross Workgroup Browsing guide"
HREF="browsing-quick.html"><LINK
REL="NEXT"
-TITLE="User information database"
-HREF="passdb.html"></HEAD
+TITLE="Type of installation"
+HREF="type.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="passdb.html"
+HREF="type.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="PWENCRYPT"
-></A
->Chapter 4. LanMan and NT Password Encryption in Samba</H1
+NAME="PWENCRYPT">Chapter 4. LanMan and NT Password Encryption in Samba</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN457"
-></A
->4.1. Introduction</H1
+NAME="AEN457">4.1. Introduction</H1
><P
>Newer windows clients send encrypted passwords over
the wire, instead of plain text passwords. The newest clients
@@ -104,9 +101,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN462"
-></A
->4.2. Important Notes About Security</H1
+NAME="AEN462">4.2. Important Notes About Security</H1
><P
>The unix and SMB password encryption techniques seem similar
on the surface. This similarity is, however, only skin deep. The unix
@@ -140,7 +135,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
@@ -206,9 +201,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN481"
-></A
->4.2.1. Advantages of SMB Encryption</H2
+NAME="AEN481">4.2.1. Advantages of SMB Encryption</H2
><P
></P
><UL
@@ -235,9 +228,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN488"
-></A
->4.2.2. Advantages of non-encrypted passwords</H2
+NAME="AEN488">4.2.2. Advantages of non-encrypted passwords</H2
><P
></P
><UL
@@ -266,9 +257,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN497"
-></A
->4.3. The smbpasswd Command</H1
+NAME="AEN497">4.3. The smbpasswd Command</H1
><P
>The smbpasswd command maintains the two 32 byte password fields
in the smbpasswd file. If you wish to make it similar to the unix
@@ -412,7 +401,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="passdb.html"
+HREF="type.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -436,7 +425,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->User information database</TD
+>Type of installation</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/rpcclient.1.html b/docs/htmldocs/rpcclient.1.html
index 611512a53b..e695663c8a 100644
--- a/docs/htmldocs/rpcclient.1.html
+++ b/docs/htmldocs/rpcclient.1.html
@@ -5,7 +5,7 @@
>rpcclient</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="RPCCLIENT.1"
+NAME="RPCCLIENT"
></A
>rpcclient</H1
><DIV
@@ -48,12 +48,10 @@ NAME="AEN23"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -68,7 +66,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN31"
+NAME="AEN29"
></A
><H2
>OPTIONS</H2
@@ -92,12 +90,10 @@ CLASS="PARAMETER"
>name resolve order</I
></TT
></A
-> line from <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+> line from
+ <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
>.</P
></DD
><DT
@@ -111,9 +107,10 @@ CLASS="REFENTRYTITLE"
><P
><PRE
CLASS="PROGRAMLISTING"
->username = &lt;value&gt;
-password = &lt;value&gt;
-domain = &lt;value&gt;</PRE
+> username = &lt;value&gt;
+ password = &lt;value&gt;
+ domain = &lt;value&gt;
+ </PRE
></P
><P
>Make certain that the permissions on the file restrict
@@ -127,12 +124,6 @@ domain = &lt;value&gt;</PRE
below)) </P
></DD
><DT
->-h|--help</DT
-><DD
-><P
->Print a summary of command line options.</P
-></DD
-><DT
>-d|--debug=debuglevel</DT
><DD
><P
@@ -174,6 +165,12 @@ CLASS="FILENAME"
> file.</P
></DD
><DT
+>-h|--help</DT
+><DD
+><P
+>Print a summary of command line options.</P
+></DD
+><DT
>-I IP-address</DT
><DD
><P
@@ -306,7 +303,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN111"
+NAME="AEN107"
></A
><H2
>COMMANDS</H2
@@ -470,14 +467,15 @@ CLASS="PARAMETER"
><P
><PRE
CLASS="PROGRAMLISTING"
->Long Printer Name:\
-Driver File Name:\
-Data File Name:\
-Config File Name:\
-Help File Name:\
-Language Monitor Name:\
-Default Data Type:\
-Comma Separated list of Files</PRE
+> Long Printer Name:\
+ Driver File Name:\
+ Data File Name:\
+ Config File Name:\
+ Help File Name:\
+ Language Monitor Name:\
+ Default Data Type:\
+ Comma Separated list of Files
+ </PRE
></P
><P
>Any empty fields should be enter as the string "NULL". </P
@@ -707,7 +705,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN231"
+NAME="AEN227"
></A
><H2
>BUGS</H2
@@ -726,7 +724,7 @@ CLASS="COMMAND"
CLASS="emphasis"
><I
CLASS="EMPHASIS"
->WARNING!</I
+>"WARNING!</I
></SPAN
> The MSRPC over SMB code has
been developed from examining Network traces. No documentation is
@@ -736,28 +734,23 @@ CLASS="EMPHASIS"
to be... a bit flaky in places. </P
><P
>The development of Samba's implementation is also a bit rough,
- and as more of the services are understood, it can even result in
- versions of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->rpcclient</SPAN
->(1)</SPAN
-> that are incompatible for some commands or services. Additionally,
+ and as more of the services are understood, it can even result in
+ versions of <B
+CLASS="COMMAND"
+>smbd(8)</B
+> and <B
+CLASS="COMMAND"
+>rpcclient(1)</B
+>
+ that are incompatible for some commands or services. Additionally,
the developers are sending reports to Microsoft, and problems found
or reported to Microsoft are fixed in Service Packs, which may
- result in incompatibilities.</P
+ result in incompatibilities." </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN245"
+NAME="AEN237"
></A
><H2
>VERSION</H2
@@ -768,7 +761,7 @@ NAME="AEN245"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN248"
+NAME="AEN240"
></A
><H2
>AUTHOR</H2
@@ -781,8 +774,7 @@ NAME="AEN248"
>The original rpcclient man page was written by Matthew
Geddes, Luke Kenneth Casson Leighton, and rewritten by Gerald Carter.
The conversion to DocBook for Samba 2.2 was done by Gerald
- Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was
- done by Alexander Bokovoy.</P
+ Carter.</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/samba-bdc.html b/docs/htmldocs/samba-bdc.html
index 42f653fb7d..ef06a89416 100644
--- a/docs/htmldocs/samba-bdc.html
+++ b/docs/htmldocs/samba-bdc.html
@@ -5,7 +5,8 @@
>How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -13,7 +14,7 @@ REL="UP"
TITLE="Type of installation"
HREF="type.html"><LINK
REL="PREVIOUS"
-TITLE="Samba as a NT4 or Win2k Primary Domain Controller"
+TITLE="How to Configure Samba as a NT4 Primary Domain Controller"
HREF="samba-pdc.html"><LINK
REL="NEXT"
TITLE="Samba as a ADS domain member"
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="SAMBA-BDC"
-></A
->Chapter 6. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</H1
+NAME="SAMBA-BDC">Chapter 7. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1274"
-></A
->6.1. Prerequisite Reading</H1
+NAME="AEN1127">7.1. Prerequisite Reading</H1
><P
>Before you continue reading in this chapter, please make sure
that you are comfortable with configuring a Samba PDC
@@ -97,9 +94,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1278"
-></A
->6.2. Background</H1
+NAME="AEN1131">7.2. Background</H1
><P
>What is a Domain Controller? It is a machine that is able to answer
logon requests from workstations in a Windows NT Domain. Whenever a
@@ -142,9 +137,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1286"
-></A
->6.3. What qualifies a Domain Controller on the network?</H1
+NAME="AEN1139">7.3. What qualifies a Domain Controller on the network?</H1
><P
>Every machine that is a Domain Controller for the domain SAMBA has to
register the NetBIOS group name SAMBA#1c with the WINS server and/or
@@ -159,9 +152,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1289"
-></A
->6.3.1. How does a Workstation find its domain controller?</H2
+NAME="AEN1142">7.3.1. How does a Workstation find its domain controller?</H2
><P
>A NT workstation in the domain SAMBA that wants a local user to be
authenticated has to find the domain controller for SAMBA. It does
@@ -178,9 +169,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1292"
-></A
->6.3.2. When is the PDC needed?</H2
+NAME="AEN1145">7.3.2. When is the PDC needed?</H2
><P
>Whenever a user wants to change his password, this has to be done on
the PDC. To find the PDC, the workstation does a NetBIOS name query
@@ -194,19 +183,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1295"
-></A
->6.4. Can Samba be a Backup Domain Controller to an NT PDC?</H1
+NAME="AEN1148">7.4. Can Samba be a Backup Domain Controller?</H1
><P
>With version 2.2, no. The native NT SAM replication protocols have
not yet been fully implemented. The Samba Team is working on
understanding and implementing the protocols, but this work has not
been finished for version 2.2.</P
><P
->With version 3.0, the work on both the replication protocols and a
-suitable storage mechanism has progressed, and some form of NT4 BDC
-support is expected soon.</P
-><P
>Can I get the benefits of a BDC with Samba? Yes. The main reason for
implementing a BDC is availability. If the PDC is a Samba machine,
a second Samba machine can be set up to
@@ -217,9 +200,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1300"
-></A
->6.5. How do I set up a Samba BDC?</H1
+NAME="AEN1152">7.5. How do I set up a Samba BDC?</H1
><P
>Several things have to be done:</P
><P
@@ -284,9 +265,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1317"
-></A
->6.5.1. How do I replicate the smbpasswd file?</H2
+NAME="AEN1169">7.5.1. How do I replicate the smbpasswd file?</H2
><P
>Replication of the smbpasswd file is sensitive. It has to be done
whenever changes to the SAM are made. Every user's password change is
@@ -300,21 +279,6 @@ rsync. rsync can use ssh as a transport. ssh itself can be set up to
accept *only* rsync transfer without requiring the user to type a
password.</P
></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN1321"
-></A
->6.5.2. Can I do this all with LDAP?</H2
-><P
->The simple answer is YES. Samba's pdb_ldap code supports
-binding to a replica LDAP server, and will also follow referrals and
-rebind to the master if it ever needs to make a modification to the
-database. (Normally BDCs are read only, so this will not occur
-often).</P
-></DIV
></DIV
></DIV
><DIV
@@ -361,7 +325,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Samba as a NT4 or Win2k Primary Domain Controller</TD
+>How to Configure Samba as a NT4 Primary Domain Controller</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/samba-howto-collection.html b/docs/htmldocs/samba-howto-collection.html
index 82e29206ac..0062e257dc 100644
--- a/docs/htmldocs/samba-howto-collection.html
+++ b/docs/htmldocs/samba-howto-collection.html
@@ -5,7 +5,8 @@
>SAMBA Project Documentation</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="NEXT"
TITLE="General installation"
HREF="introduction.html"></HEAD
@@ -19,28 +20,20 @@ ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
-><DIV
+NAME="SAMBA-HOWTO-COLLECTION"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
->SAMBA Project Documentation</H1
+NAME="SAMBA-HOWTO-COLLECTION">SAMBA Project Documentation</H1
><H3
CLASS="AUTHOR"
><A
-NAME="AEN4"
-></A
->SAMBA Team</H3
+NAME="AEN4">SAMBA Team</H3
><HR></DIV
><H1
><A
-NAME="AEN8"
-></A
->Abstract</H1
+NAME="AEN8">Abstract</H1
><P
><SPAN
CLASS="emphasis"
@@ -159,89 +152,128 @@ HREF="install.html#AEN184"
></DD
><DT
>2. <A
-HREF="browsing-quick.html"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
+HREF="improved-browsing.html"
+>Improved browsing in samba</A
></DT
><DD
><DL
><DT
>2.1. <A
-HREF="browsing-quick.html#AEN230"
->Discussion</A
+HREF="improved-browsing.html#AEN229"
+>Overview of browsing</A
></DT
><DT
>2.2. <A
-HREF="browsing-quick.html#AEN238"
->Use of the "Remote Announce" parameter</A
+HREF="improved-browsing.html#AEN233"
+>Browsing support in samba</A
></DT
><DT
>2.3. <A
-HREF="browsing-quick.html#AEN252"
->Use of the "Remote Browse Sync" parameter</A
+HREF="improved-browsing.html#AEN242"
+>Problem resolution</A
></DT
><DT
>2.4. <A
-HREF="browsing-quick.html#AEN257"
->Use of WINS</A
+HREF="improved-browsing.html#AEN249"
+>Browsing across subnets</A
></DT
><DT
>2.5. <A
-HREF="browsing-quick.html#AEN268"
->Do NOT use more than one (1) protocol on MS Windows machines</A
+HREF="improved-browsing.html#AEN289"
+>Setting up a WINS server</A
></DT
><DT
>2.6. <A
-HREF="browsing-quick.html#AEN274"
->Name Resolution Order</A
+HREF="improved-browsing.html#AEN308"
+>Setting up Browsing in a WORKGROUP</A
+></DT
+><DT
+>2.7. <A
+HREF="improved-browsing.html#AEN326"
+>Setting up Browsing in a DOMAIN</A
+></DT
+><DT
+>2.8. <A
+HREF="improved-browsing.html#AEN336"
+>Forcing samba to be the master</A
+></DT
+><DT
+>2.9. <A
+HREF="improved-browsing.html#AEN345"
+>Making samba the domain master</A
+></DT
+><DT
+>2.10. <A
+HREF="improved-browsing.html#AEN363"
+>Note about broadcast addresses</A
+></DT
+><DT
+>2.11. <A
+HREF="improved-browsing.html#AEN366"
+>Multiple interfaces</A
></DT
></DL
></DD
><DT
>3. <A
-HREF="passdb.html"
->User information database</A
+HREF="browsing-quick.html"
+>Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
></DT
><DD
><DL
><DT
>3.1. <A
-HREF="passdb.html#AEN324"
->Introduction</A
+HREF="browsing-quick.html#AEN377"
+>Discussion</A
></DT
><DT
>3.2. <A
-HREF="passdb.html#AEN331"
->Important Notes About Security</A
+HREF="browsing-quick.html#AEN385"
+>Use of the "Remote Announce" parameter</A
></DT
><DT
>3.3. <A
-HREF="passdb.html#AEN357"
->The smbpasswd Command</A
+HREF="browsing-quick.html#AEN399"
+>Use of the "Remote Browse Sync" parameter</A
></DT
><DT
>3.4. <A
-HREF="passdb.html#AEN388"
->Plain text</A
+HREF="browsing-quick.html#AEN404"
+>Use of WINS</A
></DT
><DT
>3.5. <A
-HREF="passdb.html#AEN393"
->TDB</A
+HREF="browsing-quick.html#AEN415"
+>Do NOT use more than one (1) protocol on MS Windows machines</A
></DT
><DT
>3.6. <A
-HREF="passdb.html#AEN396"
->LDAP</A
+HREF="browsing-quick.html#AEN421"
+>Name Resolution Order</A
></DT
+></DL
+></DD
><DT
->3.7. <A
-HREF="passdb.html#AEN614"
->MySQL</A
+>4. <A
+HREF="pwencrypt.html"
+>LanMan and NT Password Encryption in Samba</A
></DT
+><DD
+><DL
><DT
->3.8. <A
-HREF="passdb.html#AEN662"
->Passdb XML plugin</A
+>4.1. <A
+HREF="pwencrypt.html#AEN457"
+>Introduction</A
+></DT
+><DT
+>4.2. <A
+HREF="pwencrypt.html#AEN462"
+>Important Notes About Security</A
+></DT
+><DT
+>4.3. <A
+HREF="pwencrypt.html#AEN497"
+>The smbpasswd Command</A
></DT
></DL
></DD
@@ -255,168 +287,168 @@ HREF="type.html"
><DD
><DL
><DT
->4. <A
+>5. <A
HREF="securitylevels.html"
>User and Share security level (for servers not in a domain)</A
></DT
><DT
->5. <A
+>6. <A
HREF="samba-pdc.html"
->Samba as a NT4 or Win2k Primary Domain Controller</A
+>How to Configure Samba as a NT4 Primary Domain Controller</A
></DT
><DD
><DL
><DT
->5.1. <A
-HREF="samba-pdc.html#AEN722"
+>6.1. <A
+HREF="samba-pdc.html#AEN575"
>Prerequisite Reading</A
></DT
><DT
->5.2. <A
-HREF="samba-pdc.html#AEN728"
+>6.2. <A
+HREF="samba-pdc.html#AEN581"
>Background</A
></DT
><DT
->5.3. <A
-HREF="samba-pdc.html#AEN767"
+>6.3. <A
+HREF="samba-pdc.html#AEN620"
>Configuring the Samba Domain Controller</A
></DT
><DT
->5.4. <A
-HREF="samba-pdc.html#AEN810"
+>6.4. <A
+HREF="samba-pdc.html#AEN663"
>Creating Machine Trust Accounts and Joining Clients to the
Domain</A
></DT
><DT
->5.5. <A
-HREF="samba-pdc.html#AEN894"
+>6.5. <A
+HREF="samba-pdc.html#AEN747"
>Common Problems and Errors</A
></DT
><DT
->5.6. <A
-HREF="samba-pdc.html#AEN942"
+>6.6. <A
+HREF="samba-pdc.html#AEN795"
>System Policies and Profiles</A
></DT
><DT
->5.7. <A
-HREF="samba-pdc.html#AEN986"
+>6.7. <A
+HREF="samba-pdc.html#AEN839"
>What other help can I get?</A
></DT
><DT
->5.8. <A
-HREF="samba-pdc.html#AEN1100"
+>6.8. <A
+HREF="samba-pdc.html#AEN953"
>Domain Control for Windows 9x/ME</A
></DT
><DT
->5.9. <A
-HREF="samba-pdc.html#AEN1238"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</A
+>6.9. <A
+HREF="samba-pdc.html#AEN1091"
+>DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
></DT
></DL
></DD
><DT
->6. <A
+>7. <A
HREF="samba-bdc.html"
>How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
></DT
><DD
><DL
><DT
->6.1. <A
-HREF="samba-bdc.html#AEN1274"
+>7.1. <A
+HREF="samba-bdc.html#AEN1127"
>Prerequisite Reading</A
></DT
><DT
->6.2. <A
-HREF="samba-bdc.html#AEN1278"
+>7.2. <A
+HREF="samba-bdc.html#AEN1131"
>Background</A
></DT
><DT
->6.3. <A
-HREF="samba-bdc.html#AEN1286"
+>7.3. <A
+HREF="samba-bdc.html#AEN1139"
>What qualifies a Domain Controller on the network?</A
></DT
><DT
->6.4. <A
-HREF="samba-bdc.html#AEN1295"
->Can Samba be a Backup Domain Controller to an NT PDC?</A
+>7.4. <A
+HREF="samba-bdc.html#AEN1148"
+>Can Samba be a Backup Domain Controller?</A
></DT
><DT
->6.5. <A
-HREF="samba-bdc.html#AEN1300"
+>7.5. <A
+HREF="samba-bdc.html#AEN1152"
>How do I set up a Samba BDC?</A
></DT
></DL
></DD
><DT
->7. <A
+>8. <A
HREF="ads.html"
>Samba as a ADS domain member</A
></DT
><DD
><DL
><DT
->7.1. <A
-HREF="ads.html#AEN1339"
+>8.1. <A
+HREF="ads.html#AEN1187"
>Installing the required packages for Debian</A
></DT
><DT
->7.2. <A
-HREF="ads.html#AEN1346"
+>8.2. <A
+HREF="ads.html#AEN1193"
>Installing the required packages for RedHat</A
></DT
><DT
->7.3. <A
-HREF="ads.html#AEN1356"
+>8.3. <A
+HREF="ads.html#AEN1202"
>Compile Samba</A
></DT
><DT
->7.4. <A
-HREF="ads.html#AEN1371"
+>8.4. <A
+HREF="ads.html#AEN1217"
>Setup your /etc/krb5.conf</A
></DT
><DT
->7.5. <A
-HREF="ads.html#AEN1381"
+>8.5. <A
+HREF="ads.html#AEN1227"
>Create the computer account</A
></DT
><DT
->7.6. <A
-HREF="ads.html#AEN1393"
+>8.6. <A
+HREF="ads.html#AEN1243"
>Test your server setup</A
></DT
><DT
->7.7. <A
-HREF="ads.html#AEN1398"
+>8.7. <A
+HREF="ads.html#AEN1248"
>Testing with smbclient</A
></DT
><DT
->7.8. <A
-HREF="ads.html#AEN1401"
+>8.8. <A
+HREF="ads.html#AEN1251"
>Notes</A
></DT
></DL
></DD
><DT
->8. <A
+>9. <A
HREF="domain-security.html"
->Samba as a NT4 or Win2k domain member</A
+>Samba as a NT4 domain member</A
></DT
><DD
><DL
><DT
->8.1. <A
-HREF="domain-security.html#AEN1423"
->Joining an NT Domain with Samba 3.0</A
+>9.1. <A
+HREF="domain-security.html#AEN1273"
+>Joining an NT Domain with Samba 2.2</A
></DT
><DT
->8.2. <A
-HREF="domain-security.html#AEN1478"
+>9.2. <A
+HREF="domain-security.html#AEN1337"
>Samba and Windows 2000 Domains</A
></DT
><DT
->8.3. <A
-HREF="domain-security.html#AEN1481"
+>9.3. <A
+HREF="domain-security.html#AEN1342"
>Why is this better than security = server?</A
></DT
></DL
@@ -431,95 +463,95 @@ HREF="optional.html"
><DD
><DL
><DT
->9. <A
+>10. <A
HREF="integrate-ms-networks.html"
>Integrating MS Windows networks with Samba</A
></DT
><DD
><DL
><DT
->9.1. <A
-HREF="integrate-ms-networks.html#AEN1513"
+>10.1. <A
+HREF="integrate-ms-networks.html#AEN1374"
>Agenda</A
></DT
><DT
->9.2. <A
-HREF="integrate-ms-networks.html#AEN1535"
+>10.2. <A
+HREF="integrate-ms-networks.html#AEN1396"
>Name Resolution in a pure Unix/Linux world</A
></DT
><DT
->9.3. <A
-HREF="integrate-ms-networks.html#AEN1598"
+>10.3. <A
+HREF="integrate-ms-networks.html#AEN1459"
>Name resolution as used within MS Windows networking</A
></DT
><DT
->9.4. <A
-HREF="integrate-ms-networks.html#AEN1643"
+>10.4. <A
+HREF="integrate-ms-networks.html#AEN1504"
>How browsing functions and how to deploy stable and
dependable browsing using Samba</A
></DT
><DT
->9.5. <A
-HREF="integrate-ms-networks.html#AEN1653"
+>10.5. <A
+HREF="integrate-ms-networks.html#AEN1514"
>MS Windows security options and how to configure
Samba for seemless integration</A
></DT
><DT
->9.6. <A
-HREF="integrate-ms-networks.html#AEN1723"
+>10.6. <A
+HREF="integrate-ms-networks.html#AEN1584"
>Conclusions</A
></DT
></DL
></DD
><DT
->10. <A
+>11. <A
HREF="unix-permissions.html"
>UNIX Permission Bits and Windows NT Access Control Lists</A
></DT
><DD
><DL
><DT
->10.1. <A
-HREF="unix-permissions.html#AEN1744"
+>11.1. <A
+HREF="unix-permissions.html#AEN1605"
>Viewing and changing UNIX permissions using the NT
security dialogs</A
></DT
><DT
->10.2. <A
-HREF="unix-permissions.html#AEN1748"
+>11.2. <A
+HREF="unix-permissions.html#AEN1614"
>How to view file security on a Samba share</A
></DT
><DT
->10.3. <A
-HREF="unix-permissions.html#AEN1759"
+>11.3. <A
+HREF="unix-permissions.html#AEN1625"
>Viewing file ownership</A
></DT
><DT
->10.4. <A
-HREF="unix-permissions.html#AEN1779"
+>11.4. <A
+HREF="unix-permissions.html#AEN1645"
>Viewing file or directory permissions</A
></DT
><DT
->10.5. <A
-HREF="unix-permissions.html#AEN1815"
+>11.5. <A
+HREF="unix-permissions.html#AEN1681"
>Modifying file or directory permissions</A
></DT
><DT
->10.6. <A
-HREF="unix-permissions.html#AEN1837"
+>11.6. <A
+HREF="unix-permissions.html#AEN1703"
>Interaction with the standard Samba create mask
parameters</A
></DT
><DT
->10.7. <A
-HREF="unix-permissions.html#AEN1901"
+>11.7. <A
+HREF="unix-permissions.html#AEN1767"
>Interaction with the standard Samba file attribute
mapping</A
></DT
></DL
></DD
><DT
->11. <A
+>12. <A
HREF="pam.html"
>Configuring PAM for distributed but centrally
managed authentication</A
@@ -527,304 +559,323 @@ managed authentication</A
><DD
><DL
><DT
->11.1. <A
-HREF="pam.html#AEN1922"
+>12.1. <A
+HREF="pam.html#AEN1788"
>Samba and PAM</A
></DT
><DT
->11.2. <A
-HREF="pam.html#AEN1966"
+>12.2. <A
+HREF="pam.html#AEN1832"
>Distributed Authentication</A
></DT
><DT
->11.3. <A
-HREF="pam.html#AEN1973"
+>12.3. <A
+HREF="pam.html#AEN1839"
>PAM Configuration in smb.conf</A
></DT
></DL
></DD
><DT
->12. <A
+>13. <A
HREF="msdfs.html"
>Hosting a Microsoft Distributed File System tree on Samba</A
></DT
><DD
><DL
><DT
->12.1. <A
-HREF="msdfs.html#AEN1993"
+>13.1. <A
+HREF="msdfs.html#AEN1859"
>Instructions</A
></DT
></DL
></DD
><DT
->13. <A
+>14. <A
HREF="printing.html"
>Printing Support</A
></DT
><DD
><DL
><DT
->13.1. <A
-HREF="printing.html#AEN2054"
+>14.1. <A
+HREF="printing.html#AEN1920"
>Introduction</A
></DT
><DT
->13.2. <A
-HREF="printing.html#AEN2076"
+>14.2. <A
+HREF="printing.html#AEN1942"
>Configuration</A
></DT
><DT
->13.3. <A
-HREF="printing.html#AEN2184"
+>14.3. <A
+HREF="printing.html#AEN2050"
>The Imprints Toolset</A
></DT
><DT
->13.4. <A
-HREF="printing.html#AEN2227"
+>14.4. <A
+HREF="printing.html#AEN2093"
>Diagnosis</A
></DT
></DL
></DD
><DT
->14. <A
+>15. <A
HREF="winbind.html"
>Unified Logons between Windows NT and UNIX using Winbind</A
></DT
><DD
><DL
><DT
->14.1. <A
-HREF="winbind.html#AEN2360"
+>15.1. <A
+HREF="winbind.html#AEN2225"
>Abstract</A
></DT
><DT
->14.2. <A
-HREF="winbind.html#AEN2364"
+>15.2. <A
+HREF="winbind.html#AEN2229"
>Introduction</A
></DT
><DT
->14.3. <A
-HREF="winbind.html#AEN2377"
+>15.3. <A
+HREF="winbind.html#AEN2242"
>What Winbind Provides</A
></DT
><DT
->14.4. <A
-HREF="winbind.html#AEN2388"
+>15.4. <A
+HREF="winbind.html#AEN2253"
>How Winbind Works</A
></DT
><DT
->14.5. <A
-HREF="winbind.html#AEN2431"
+>15.5. <A
+HREF="winbind.html#AEN2293"
>Installation and Configuration</A
></DT
><DT
->14.6. <A
-HREF="winbind.html#AEN2680"
+>15.6. <A
+HREF="winbind.html#AEN2542"
>Limitations</A
></DT
><DT
->14.7. <A
-HREF="winbind.html#AEN2690"
+>15.7. <A
+HREF="winbind.html#AEN2552"
>Conclusion</A
></DT
></DL
></DD
><DT
->15. <A
-HREF="improved-browsing.html"
->Improved browsing in samba</A
+>16. <A
+HREF="pdb-mysql.html"
+>Passdb MySQL plugin</A
></DT
><DD
><DL
><DT
->15.1. <A
-HREF="improved-browsing.html#AEN2700"
->Overview of browsing</A
+>16.1. <A
+HREF="pdb-mysql.html#AEN2566"
+>Building</A
></DT
><DT
->15.2. <A
-HREF="improved-browsing.html#AEN2704"
->Browsing support in samba</A
+>16.2. <A
+HREF="pdb-mysql.html#AEN2572"
+>Configuring</A
></DT
><DT
->15.3. <A
-HREF="improved-browsing.html#AEN2713"
->Problem resolution</A
+>16.3. <A
+HREF="pdb-mysql.html#AEN2589"
+>Using plaintext passwords or encrypted password</A
></DT
><DT
->15.4. <A
-HREF="improved-browsing.html#AEN2720"
->Browsing across subnets</A
+>16.4. <A
+HREF="pdb-mysql.html#AEN2594"
+>Getting non-column data from the table</A
></DT
+></DL
+></DD
><DT
->15.5. <A
-HREF="improved-browsing.html#AEN2760"
->Setting up a WINS server</A
+>17. <A
+HREF="pdb-xml.html"
+>Passdb XML plugin</A
></DT
+><DD
+><DL
><DT
->15.6. <A
-HREF="improved-browsing.html#AEN2779"
->Setting up Browsing in a WORKGROUP</A
+>17.1. <A
+HREF="pdb-xml.html#AEN2613"
+>Building</A
></DT
><DT
->15.7. <A
-HREF="improved-browsing.html#AEN2797"
->Setting up Browsing in a DOMAIN</A
+>17.2. <A
+HREF="pdb-xml.html#AEN2619"
+>Usage</A
></DT
+></DL
+></DD
><DT
->15.8. <A
-HREF="improved-browsing.html#AEN2807"
->Forcing samba to be the master</A
+>18. <A
+HREF="vfs.html"
+>Stackable VFS modules</A
></DT
+><DD
+><DL
><DT
->15.9. <A
-HREF="improved-browsing.html#AEN2816"
->Making samba the domain master</A
+>18.1. <A
+HREF="vfs.html#AEN2640"
+>Introduction and configuration</A
></DT
><DT
->15.10. <A
-HREF="improved-browsing.html#AEN2834"
->Note about broadcast addresses</A
+>18.2. <A
+HREF="vfs.html#AEN2649"
+>Included modules</A
></DT
><DT
->15.11. <A
-HREF="improved-browsing.html#AEN2837"
->Multiple interfaces</A
+>18.3. <A
+HREF="vfs.html#AEN2703"
+>VFS modules available elsewhere</A
></DT
></DL
></DD
><DT
->16. <A
-HREF="vfs.html"
->Stackable VFS modules</A
+>19. <A
+HREF="samba-ldap-howto.html"
+>Storing Samba's User/Machine Account information in an LDAP Directory</A
></DT
><DD
><DL
><DT
->16.1. <A
-HREF="vfs.html#AEN2855"
->Introduction and configuration</A
+>19.1. <A
+HREF="samba-ldap-howto.html#AEN2737"
+>Purpose</A
></DT
><DT
->16.2. <A
-HREF="vfs.html#AEN2864"
->Included modules</A
+>19.2. <A
+HREF="samba-ldap-howto.html#AEN2757"
+>Introduction</A
></DT
><DT
->16.3. <A
-HREF="vfs.html#AEN2918"
->VFS modules available elsewhere</A
+>19.3. <A
+HREF="samba-ldap-howto.html#AEN2786"
+>Supported LDAP Servers</A
+></DT
+><DT
+>19.4. <A
+HREF="samba-ldap-howto.html#AEN2791"
+>Schema and Relationship to the RFC 2307 posixAccount</A
+></DT
+><DT
+>19.5. <A
+HREF="samba-ldap-howto.html#AEN2803"
+>Configuring Samba with LDAP</A
+></DT
+><DT
+>19.6. <A
+HREF="samba-ldap-howto.html#AEN2850"
+>Accounts and Groups management</A
+></DT
+><DT
+>19.7. <A
+HREF="samba-ldap-howto.html#AEN2855"
+>Security and sambaAccount</A
+></DT
+><DT
+>19.8. <A
+HREF="samba-ldap-howto.html#AEN2875"
+>LDAP specials attributes for sambaAccounts</A
+></DT
+><DT
+>19.9. <A
+HREF="samba-ldap-howto.html#AEN2945"
+>Example LDIF Entries for a sambaAccount</A
+></DT
+><DT
+>19.10. <A
+HREF="samba-ldap-howto.html#AEN2953"
+>Comments</A
></DT
></DL
></DD
><DT
->17. <A
+>20. <A
HREF="cvs-access.html"
->Access Samba source code via CVS</A
+>HOWTO Access Samba source code via CVS</A
></DT
><DD
><DL
><DT
->17.1. <A
-HREF="cvs-access.html#AEN2942"
+>20.1. <A
+HREF="cvs-access.html#AEN2964"
>Introduction</A
></DT
><DT
->17.2. <A
-HREF="cvs-access.html#AEN2947"
+>20.2. <A
+HREF="cvs-access.html#AEN2969"
>CVS Access to samba.org</A
></DT
></DL
></DD
><DT
->18. <A
+>21. <A
HREF="groupmapping.html"
>Group mapping HOWTO</A
></DT
><DT
->19. <A
+>22. <A
HREF="speed.html"
>Samba performance issues</A
></DT
><DD
><DL
><DT
->19.1. <A
-HREF="speed.html#AEN3033"
+>22.1. <A
+HREF="speed.html#AEN3055"
>Comparisons</A
></DT
><DT
->19.2. <A
-HREF="speed.html#AEN3039"
+>22.2. <A
+HREF="speed.html#AEN3061"
>Socket options</A
></DT
><DT
->19.3. <A
-HREF="speed.html#AEN3046"
+>22.3. <A
+HREF="speed.html#AEN3068"
>Read size</A
></DT
><DT
->19.4. <A
-HREF="speed.html#AEN3051"
+>22.4. <A
+HREF="speed.html#AEN3073"
>Max xmit</A
></DT
><DT
->19.5. <A
-HREF="speed.html#AEN3056"
+>22.5. <A
+HREF="speed.html#AEN3078"
>Log level</A
></DT
><DT
->19.6. <A
-HREF="speed.html#AEN3059"
+>22.6. <A
+HREF="speed.html#AEN3081"
>Read raw</A
></DT
><DT
->19.7. <A
-HREF="speed.html#AEN3064"
+>22.7. <A
+HREF="speed.html#AEN3086"
>Write raw</A
></DT
><DT
->19.8. <A
-HREF="speed.html#AEN3068"
+>22.8. <A
+HREF="speed.html#AEN3090"
>Slow Clients</A
></DT
><DT
->19.9. <A
-HREF="speed.html#AEN3072"
+>22.9. <A
+HREF="speed.html#AEN3094"
>Slow Logins</A
></DT
><DT
->19.10. <A
-HREF="speed.html#AEN3075"
+>22.10. <A
+HREF="speed.html#AEN3097"
>Client tuning</A
></DT
></DL
></DD
-><DT
->20. <A
-HREF="groupprofiles.html"
->Creating Group Profiles</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="groupprofiles.html#AEN3123"
->Windows '9x</A
-></DT
-><DT
->20.2. <A
-HREF="groupprofiles.html#AEN3132"
->Windows NT 4</A
-></DT
-><DT
->20.3. <A
-HREF="groupprofiles.html#AEN3170"
->Windows 2000/XP</A
-></DT
-></DL
-></DD
></DL
></DD
><DT
@@ -835,132 +886,132 @@ HREF="appendixes.html"
><DD
><DL
><DT
->21. <A
+>23. <A
HREF="portability.html"
>Portability</A
></DT
><DD
><DL
><DT
->21.1. <A
-HREF="portability.html#AEN3251"
+>23.1. <A
+HREF="portability.html#AEN3139"
>HPUX</A
></DT
><DT
->21.2. <A
-HREF="portability.html#AEN3257"
+>23.2. <A
+HREF="portability.html#AEN3145"
>SCO Unix</A
></DT
><DT
->21.3. <A
-HREF="portability.html#AEN3261"
+>23.3. <A
+HREF="portability.html#AEN3149"
>DNIX</A
></DT
><DT
->21.4. <A
-HREF="portability.html#AEN3290"
+>23.4. <A
+HREF="portability.html#AEN3178"
>RedHat Linux Rembrandt-II</A
></DT
></DL
></DD
><DT
->22. <A
+>24. <A
HREF="other-clients.html"
>Samba and other CIFS clients</A
></DT
><DD
><DL
><DT
->22.1. <A
-HREF="other-clients.html#AEN3311"
+>24.1. <A
+HREF="other-clients.html#AEN3199"
>Macintosh clients?</A
></DT
><DT
->22.2. <A
-HREF="other-clients.html#AEN3320"
+>24.2. <A
+HREF="other-clients.html#AEN3208"
>OS2 Client</A
></DT
><DT
->22.3. <A
-HREF="other-clients.html#AEN3360"
+>24.3. <A
+HREF="other-clients.html#AEN3248"
>Windows for Workgroups</A
></DT
><DT
->22.4. <A
-HREF="other-clients.html#AEN3381"
+>24.4. <A
+HREF="other-clients.html#AEN3269"
>Windows '95/'98</A
></DT
><DT
->22.5. <A
-HREF="other-clients.html#AEN3397"
+>24.5. <A
+HREF="other-clients.html#AEN3285"
>Windows 2000 Service Pack 2</A
></DT
></DL
></DD
><DT
->23. <A
+>25. <A
HREF="bugreport.html"
>Reporting Bugs</A
></DT
><DD
><DL
><DT
->23.1. <A
-HREF="bugreport.html#AEN3421"
+>25.1. <A
+HREF="bugreport.html#AEN3309"
>Introduction</A
></DT
><DT
->23.2. <A
-HREF="bugreport.html#AEN3431"
+>25.2. <A
+HREF="bugreport.html#AEN3319"
>General info</A
></DT
><DT
->23.3. <A
-HREF="bugreport.html#AEN3437"
+>25.3. <A
+HREF="bugreport.html#AEN3325"
>Debug levels</A
></DT
><DT
->23.4. <A
-HREF="bugreport.html#AEN3454"
+>25.4. <A
+HREF="bugreport.html#AEN3342"
>Internal errors</A
></DT
><DT
->23.5. <A
-HREF="bugreport.html#AEN3464"
+>25.5. <A
+HREF="bugreport.html#AEN3352"
>Attaching to a running process</A
></DT
><DT
->23.6. <A
-HREF="bugreport.html#AEN3467"
+>25.6. <A
+HREF="bugreport.html#AEN3355"
>Patches</A
></DT
></DL
></DD
><DT
->24. <A
+>26. <A
HREF="diagnosis.html"
>Diagnosing your samba server</A
></DT
><DD
><DL
><DT
->24.1. <A
-HREF="diagnosis.html#AEN3490"
+>26.1. <A
+HREF="diagnosis.html#AEN3378"
>Introduction</A
></DT
><DT
->24.2. <A
-HREF="diagnosis.html#AEN3495"
+>26.2. <A
+HREF="diagnosis.html#AEN3383"
>Assumptions</A
></DT
><DT
->24.3. <A
-HREF="diagnosis.html#AEN3505"
+>26.3. <A
+HREF="diagnosis.html#AEN3393"
>Tests</A
></DT
><DT
->24.4. <A
-HREF="diagnosis.html#AEN3615"
+>26.4. <A
+HREF="diagnosis.html#AEN3503"
>Still having troubles?</A
></DT
></DL
diff --git a/docs/htmldocs/samba-ldap-howto.html b/docs/htmldocs/samba-ldap-howto.html
index fa966d8eb1..884bb756c1 100644
--- a/docs/htmldocs/samba-ldap-howto.html
+++ b/docs/htmldocs/samba-ldap-howto.html
@@ -5,7 +5,8 @@
>Storing Samba's User/Machine Account information in an LDAP Directory</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="SAMBA-LDAP-HOWTO"
-></A
->Chapter 17. Storing Samba's User/Machine Account information in an LDAP Directory</H1
+NAME="SAMBA-LDAP-HOWTO">Chapter 19. Storing Samba's User/Machine Account information in an LDAP Directory</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2957"
-></A
->17.1. Purpose</H1
+NAME="AEN2737">19.1. Purpose</H1
><P
>This document describes how to use an LDAP directory for storing Samba user
account information traditionally stored in the smbpasswd(5) file. It is
@@ -148,9 +145,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2977"
-></A
->17.2. Introduction</H1
+NAME="AEN2757">19.2. Introduction</H1
><P
>Traditionally, when configuring <A
HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
@@ -265,9 +260,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3006"
-></A
->17.3. Supported LDAP Servers</H1
+NAME="AEN2786">19.3. Supported LDAP Servers</H1
><P
>The LDAP samdb code in 2.2.3 has been developed and tested using the OpenLDAP
2.0 server and client libraries. The same code should be able to work with
@@ -290,9 +283,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3011"
-></A
->17.4. Schema and Relationship to the RFC 2307 posixAccount</H1
+NAME="AEN2791">19.4. Schema and Relationship to the RFC 2307 posixAccount</H1
><P
>Samba 2.2.3 includes the necessary schema file for OpenLDAP 2.0 in
<TT
@@ -349,17 +340,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3023"
-></A
->17.5. Configuring Samba with LDAP</H1
+NAME="AEN2803">19.5. Configuring Samba with LDAP</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3025"
-></A
->17.5.1. OpenLDAP configuration</H2
+NAME="AEN2805">19.5.1. OpenLDAP configuration</H2
><P
>To include support for the sambaAccount object in an OpenLDAP directory
server, first copy the samba.schema file to slapd's configuration directory.</P
@@ -439,9 +426,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN3042"
-></A
->17.5.2. Configuring Samba</H2
+NAME="AEN2822">19.5.2. Configuring Samba</H2
><P
>The following parameters are available in smb.conf only with <TT
CLASS="PARAMETER"
@@ -559,9 +544,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3070"
-></A
->17.6. Accounts and Groups management</H1
+NAME="AEN2850">19.6. Accounts and Groups management</H1
><P
>As users accounts are managed thru the sambaAccount objectclass, you should
modify you existing administration tools to deal with sambaAccount attributes.</P
@@ -584,9 +567,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3075"
-></A
->17.7. Security and sambaAccount</H1
+NAME="AEN2855">19.7. Security and sambaAccount</H1
><P
>There are two important points to remember when discussing the security
of sambaAccount entries in the directory.</P
@@ -663,9 +644,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3095"
-></A
->17.8. LDAP specials attributes for sambaAccounts</H1
+NAME="AEN2875">19.8. LDAP specials attributes for sambaAccounts</H1
><P
>The sambaAccount objectclass is composed of the following attributes:</P
><P
@@ -874,9 +853,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3165"
-></A
->17.9. Example LDIF Entries for a sambaAccount</H1
+NAME="AEN2945">19.9. Example LDIF Entries for a sambaAccount</H1
><P
>The following is a working LDIF with the inclusion of the posixAccount objectclass:</P
><P
@@ -932,9 +909,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3173"
-></A
->17.10. Comments</H1
+NAME="AEN2953">19.10. Comments</H1
><P
>Please mail all comments regarding this HOWTO to <A
HREF="mailto:jerry@samba.org"
diff --git a/docs/htmldocs/samba-pdc.html b/docs/htmldocs/samba-pdc.html
index 63a52129d0..93bbc727d4 100644
--- a/docs/htmldocs/samba-pdc.html
+++ b/docs/htmldocs/samba-pdc.html
@@ -2,10 +2,11 @@
<HTML
><HEAD
><TITLE
->Samba as a NT4 or Win2k Primary Domain Controller</TITLE
+>How to Configure Samba as a NT4 Primary Domain Controller</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="SAMBA-PDC"
-></A
->Chapter 5. Samba as a NT4 or Win2k Primary Domain Controller</H1
+NAME="SAMBA-PDC">Chapter 6. How to Configure Samba as a NT4 Primary Domain Controller</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN722"
-></A
->5.1. Prerequisite Reading</H1
+NAME="AEN575">6.1. Prerequisite Reading</H1
><P
>Before you continue reading in this chapter, please make sure
that you are comfortable with configuring basic files services
@@ -108,9 +105,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN728"
-></A
->5.2. Background</H1
+NAME="AEN581">6.2. Background</H1
><DIV
CLASS="NOTE"
><P
@@ -125,7 +120,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -260,9 +255,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN767"
-></A
->5.3. Configuring the Samba Domain Controller</H1
+NAME="AEN620">6.3. Configuring the Samba Domain Controller</H1
><P
>The first step in creating a working Samba PDC is to
understand the parameters necessary in smb.conf. I will not
@@ -472,9 +465,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN810"
-></A
->5.4. Creating Machine Trust Accounts and Joining Clients to the
+NAME="AEN663">6.4. Creating Machine Trust Accounts and Joining Clients to the
Domain</H1
><P
>A machine trust account is a Samba account that is used to
@@ -546,9 +537,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN829"
-></A
->5.4.1. Manual Creation of Machine Trust Accounts</H2
+NAME="AEN682">6.4.1. Manual Creation of Machine Trust Accounts</H2
><P
>The first step in manually creating a machine trust account is to
manually create the corresponding Unix account in
@@ -700,7 +689,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
@@ -736,9 +725,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN870"
-></A
->5.4.2. "On-the-Fly" Creation of Machine Trust Accounts</H2
+NAME="AEN723">6.4.2. "On-the-Fly" Creation of Machine Trust Accounts</H2
><P
>The second (and recommended) way of creating machine trust accounts is
simply to allow the Samba server to create them as needed when the client
@@ -764,7 +751,7 @@ be created manually.</P
><PRE
CLASS="PROGRAMLISTING"
>[global]
- # &lt;...remainder of parameters...&gt;
+ # &#60;...remainder of parameters...&#62;
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u </PRE
></P
></DIV
@@ -773,9 +760,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN879"
-></A
->5.4.3. Joining the Client to the Domain</H2
+NAME="AEN732">6.4.3. Joining the Client to the Domain</H2
><P
>The procedure for joining a client to the domain varies with the
version of Windows.</P
@@ -841,9 +826,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN894"
-></A
->5.5. Common Problems and Errors</H1
+NAME="AEN747">6.5. Common Problems and Errors</H1
><P
></P
><P
@@ -1051,9 +1034,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN942"
-></A
->5.6. System Policies and Profiles</H1
+NAME="AEN795">6.6. System Policies and Profiles</H1
><P
>Much of the information necessary to implement System Policies and
Roving User Profiles in a Samba domain is the same as that for
@@ -1228,9 +1209,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN986"
-></A
->5.7. What other help can I get?</H1
+NAME="AEN839">6.7. What other help can I get?</H1
><P
>There are many sources of information available in the form
of mailing lists, RFC's and documentation. The docs that come
@@ -1648,9 +1627,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1100"
-></A
->5.8. Domain Control for Windows 9x/ME</H1
+NAME="AEN953">6.8. Domain Control for Windows 9x/ME</H1
><DIV
CLASS="NOTE"
><P
@@ -1665,7 +1642,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -1727,7 +1704,7 @@ TYPE="1"
><LI
><P
> The client broadcasts (to the IP broadcast address of the subnet it is in)
- a NetLogon request. This is sent to the NetBIOS name DOMAIN&lt;1c&gt; at the
+ a NetLogon request. This is sent to the NetBIOS name DOMAIN&#60;1c&#62; at the
NetBIOS layer. The client chooses the first response it receives, which
contains the NetBIOS name of the logon server to use in the format of
\\SERVER.
@@ -1782,9 +1759,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1126"
-></A
->5.8.1. Configuration Instructions: Network Logons</H2
+NAME="AEN979">6.8.1. Configuration Instructions: Network Logons</H2
><P
>The main difference between a PDC and a Windows 9x logon
server configuration is that</P
@@ -1817,7 +1792,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
@@ -1888,9 +1863,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1145"
-></A
->5.8.2. Configuration Instructions: Setting up Roaming User Profiles</H2
+NAME="AEN998">6.8.2. Configuration Instructions: Setting up Roaming User Profiles</H2
><DIV
CLASS="WARNING"
><P
@@ -1905,7 +1878,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
@@ -1941,9 +1914,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1153"
-></A
->5.8.2.1. Windows NT Configuration</H3
+NAME="AEN1006">6.8.2.1. Windows NT Configuration</H3
><P
>To support WinNT clients, in the [global] section of smb.conf set the
following (for example):</P
@@ -1972,7 +1943,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -1992,9 +1963,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1161"
-></A
->5.8.2.2. Windows 9X Configuration</H3
+NAME="AEN1014">6.8.2.2. Windows 9X Configuration</H3
><P
>To support Win9X clients, you must use the "logon home" parameter. Samba has
now been fixed so that "net use/home" now works as well, and it, too, relies
@@ -2023,9 +1992,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1169"
-></A
->5.8.2.3. Win9X and WinNT Configuration</H3
+NAME="AEN1022">6.8.2.3. Win9X and WinNT Configuration</H3
><P
>You can support profiles for both Win9X and WinNT clients by setting both the
"logon home" and "logon path" parameters. For example:</P
@@ -2049,7 +2016,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -2068,9 +2035,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1176"
-></A
->5.8.2.4. Windows 9X Profile Setup</H3
+NAME="AEN1029">6.8.2.4. Windows 9X Profile Setup</H3
><P
>When a user first logs in on Windows 9X, the file user.DAT is created,
as are folders "Start Menu", "Desktop", "Programs" and "Nethood".
@@ -2228,9 +2193,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1212"
-></A
->5.8.2.5. Windows NT Workstation 4.0</H3
+NAME="AEN1065">6.8.2.5. Windows NT Workstation 4.0</H3
><P
>When a user first logs in to a Windows NT Workstation, the profile
NTuser.DAT is created. The profile location can be now specified
@@ -2249,7 +2212,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -2307,7 +2270,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -2342,9 +2305,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1225"
-></A
->5.8.2.6. Windows NT Server</H3
+NAME="AEN1078">6.8.2.6. Windows NT Server</H3
><P
>There is nothing to stop you specifying any path that you like for the
location of users' profiles. Therefore, you could specify that the
@@ -2356,9 +2317,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN1228"
-></A
->5.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</H3
+NAME="AEN1081">6.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</H3
><DIV
CLASS="WARNING"
><P
@@ -2373,7 +2332,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
@@ -2425,7 +2384,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/note.gif"
+SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
@@ -2449,9 +2408,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1238"
-></A
->5.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</H1
+NAME="AEN1091">6.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</H1
><DIV
CLASS="WARNING"
><P
@@ -2466,7 +2423,7 @@ WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
-SRC="/usr/share/sgml/docbook/stylesheet/dsssl/modular/images/warning.gif"
+SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TH
diff --git a/docs/htmldocs/samba.7.html b/docs/htmldocs/samba.7.html
index 796bce7d20..0851e99bd5 100644
--- a/docs/htmldocs/samba.7.html
+++ b/docs/htmldocs/samba.7.html
@@ -5,7 +5,7 @@
>samba</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SAMBA.7"
+NAME="SAMBA"
></A
>samba</H1
><DIV
@@ -25,7 +25,7 @@ NAME="AEN5"
></A
><H2
>Name</H2
->Samba&nbsp;--&nbsp;A Windows SMB/CIFS fileserver for UNIX</DIV
+>SAMBA&nbsp;--&nbsp;A Windows SMB/CIFS fileserver for UNIX</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
@@ -63,37 +63,29 @@ TARGET="_top"
CLASS="VARIABLELIST"
><DL
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+><B
+CLASS="COMMAND"
+>smbd</B
></DT
><DD
><P
>The <B
CLASS="COMMAND"
->smbd</B
-> daemon provides the file and print services to
+>smbd </B
+>
+ daemon provides the file and print services to
SMB clients, such as Windows 95/98, Windows NT, Windows
for Workgroups or LanManager. The configuration file
- for this daemon is described in <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ for this daemon is described in <TT
+CLASS="FILENAME"
+>smb.conf</TT
>
</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+><B
+CLASS="COMMAND"
+>nmbd</B
></DT
><DD
><P
@@ -103,21 +95,15 @@ CLASS="COMMAND"
>
daemon provides NetBIOS nameservice and browsing
support. The configuration file for this daemon
- is described in <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ is described in <TT
+CLASS="FILENAME"
+>smb.conf</TT
></P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
+><B
+CLASS="COMMAND"
+>smbclient</B
></DT
><DD
><P
@@ -132,12 +118,9 @@ CLASS="COMMAND"
any SMB server (such as a PC running Windows NT).</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
+><B
+CLASS="COMMAND"
+>testparm</B
></DT
><DD
><P
@@ -145,21 +128,16 @@ CLASS="REFENTRYTITLE"
CLASS="COMMAND"
>testparm</B
>
- utility is a simple syntax checker for Samba's <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> configuration file.</P
+ utility is a simple syntax checker for Samba's
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>configuration file.</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testprns</SPAN
->(1)</SPAN
+><B
+CLASS="COMMAND"
+>testprns</B
></DT
><DD
><P
@@ -175,12 +153,9 @@ CLASS="FILENAME"
by Samba.</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbstatus</SPAN
->(1)</SPAN
+><B
+CLASS="COMMAND"
+>smbstatus</B
></DT
><DD
><P
@@ -195,12 +170,9 @@ CLASS="COMMAND"
>.</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
+><B
+CLASS="COMMAND"
+>nmblookup</B
></DT
><DD
><P
@@ -212,30 +184,26 @@ CLASS="COMMAND"
from a UNIX host.</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbgroupedit</SPAN
->(8)</SPAN
+><B
+CLASS="COMMAND"
+>make_smbcodepage</B
></DT
><DD
><P
>The <B
CLASS="COMMAND"
->smbgroupedit</B
+>make_smbcodepage</B
>
- tool allows for mapping unix groups to NT Builtin,
- Domain, or Local groups. Also it allows setting
- priviledges for that group, such as saAddUser, etc.</P
+ utility provides a means of creating SMB code page
+ definition files for your <B
+CLASS="COMMAND"
+>smbd</B
+> server.</P
></DD
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
+><B
+CLASS="COMMAND"
+>smbpasswd</B
></DT
><DD
><P
@@ -252,7 +220,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN99"
+NAME="AEN76"
></A
><H2
>COMPONENTS</H2
@@ -281,7 +249,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN105"
+NAME="AEN82"
></A
><H2
>AVAILABILITY</H2
@@ -306,8 +274,8 @@ TARGET="_top"
list. Details on how to join the mailing list are given in
the README file that comes with Samba.</P
><P
->If you have access to a WWW viewer (such as Mozilla
- or Konqueror) then you will also find lots of useful information,
+>If you have access to a WWW viewer (such as Netscape
+ or Mosaic) then you will also find lots of useful information,
including back issues of the Samba mailing list, at
<A
HREF="http://lists.samba.org/"
@@ -318,18 +286,18 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN113"
+NAME="AEN90"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 3.0 of the
+>This man page is correct for version 2.2 of the
Samba suite. </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN116"
+NAME="AEN93"
></A
><H2
>CONTRIBUTIONS</H2
@@ -349,8 +317,8 @@ HREF="http://devel.samba.org/"
TARGET="_top"
>http://devel.samba.org/</A
>
- for information on how to do it properly. We prefer patches
- in <B
+ for information on how to do it properly. We prefer patches in
+ <B
CLASS="COMMAND"
>diff -u</B
> format.</P
@@ -358,7 +326,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN123"
+NAME="AEN100"
></A
><H2
>CONTRIBUTORS</H2
@@ -390,7 +358,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN130"
+NAME="AEN107"
></A
><H2
>AUTHOR</H2
@@ -402,14 +370,14 @@ NAME="AEN130"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML
- 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/securitylevels.html b/docs/htmldocs/securitylevels.html
index 9501fa5c6a..f1b9967540 100644
--- a/docs/htmldocs/securitylevels.html
+++ b/docs/htmldocs/securitylevels.html
@@ -5,7 +5,8 @@
>User and Share security level (for servers not in a domain)</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,7 +17,7 @@ REL="PREVIOUS"
TITLE="Type of installation"
HREF="type.html"><LINK
REL="NEXT"
-TITLE="Samba as a NT4 or Win2k Primary Domain Controller"
+TITLE="How to Configure Samba as a NT4 Primary Domain Controller"
HREF="samba-pdc.html"></HEAD
><BODY
CLASS="CHAPTER"
@@ -72,9 +73,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="SECURITYLEVELS"
-></A
->Chapter 4. User and Share security level (for servers not in a domain)</H1
+NAME="SECURITYLEVELS">Chapter 5. User and Share security level (for servers not in a domain)</H1
><P
>A SMB server tells the client at startup what "security level" it is
running. There are two options "share level" and "user level". Which
@@ -226,7 +225,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Samba as a NT4 or Win2k Primary Domain Controller</TD
+>How to Configure Samba as a NT4 Primary Domain Controller</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/smb.conf.5.html b/docs/htmldocs/smb.conf.5.html
index 5a8bfe7d67..9c1ee7a67b 100644
--- a/docs/htmldocs/smb.conf.5.html
+++ b/docs/htmldocs/smb.conf.5.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>smb.conf</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMB.CONF.5"
-></A
->smb.conf</H1
+NAME="SMB.CONF">smb.conf</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -37,29 +36,31 @@ NAME="AEN8"
>The <TT
CLASS="FILENAME"
>smb.conf</TT
-> file is a configuration
+> file is a configuration
file for the Samba suite. <TT
CLASS="FILENAME"
>smb.conf</TT
-> contains
- runtime configuration information for the Samba programs. The <TT
+> contains
+ runtime configuration information for the Samba programs. The
+ <TT
CLASS="FILENAME"
>smb.conf</TT
-> file
- is designed to be configured and administered by the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->swat</SPAN
->(8)</SPAN
-> program. The complete
- description of the file format and possible parameters held within
- are here for reference purposes.</P
+> file is designed to be configured and
+ administered by the <A
+HREF="swat.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>swat(8)</B
+>
+ </A
+> program. The complete description of the file format and
+ possible parameters held within are here for reference purposes.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN17"
+NAME="AEN16"
></A
><H2
>FILE FORMAT</H2
@@ -109,7 +110,7 @@ CLASS="REPLACEABLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN29"
+NAME="AEN28"
></A
><H2
>SECTION DESCRIPTIONS</H2
@@ -122,12 +123,9 @@ NAME="AEN29"
><P
>There are three special sections, [global],
[homes] and [printers], which are
- described under <SPAN
-CLASS="emphasis"
-><I
+ described under <I
CLASS="EMPHASIS"
>special sections</I
-></SPAN
>. The
following notes apply to ordinary section descriptions.</P
><P
@@ -141,20 +139,14 @@ CLASS="EMPHASIS"
printable services (used by the client to access print services
on the host running the server).</P
><P
->Sections may be designated <SPAN
-CLASS="emphasis"
-><I
+>Sections may be designated <I
CLASS="EMPHASIS"
>guest</I
-></SPAN
> services,
in which case no password is required to access them. A specified
- UNIX <SPAN
-CLASS="emphasis"
-><I
+ UNIX <I
CLASS="EMPHASIS"
>guest account</I
-></SPAN
> is used to define access
privileges in this case.</P
><P
@@ -176,49 +168,68 @@ CLASS="FILENAME"
>/home/bar</TT
>.
The share is accessed via the share name "foo":</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
-><TT
+> <TT
CLASS="COMPUTEROUTPUT"
->[foo]
- path = /home/bar
- read only = no</TT
-></PRE
+> [foo]
+ path = /home/bar
+ read only = no
+ </TT
+>
+ </PRE
+></TD
+></TR
+></TABLE
><P
>The following sample section defines a printable share.
The share is readonly, but printable. That is, the only write
access permitted is via calls to open, write to and close a
- spool file. The <SPAN
-CLASS="emphasis"
-><I
+ spool file. The <I
CLASS="EMPHASIS"
>guest ok</I
-></SPAN
> parameter means
access will be permitted as the default guest user (specified
elsewhere):</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
-><TT
+> <TT
CLASS="COMPUTEROUTPUT"
->[aprinter]
- path = /usr/spool/public
- read only = yes
- printable = yes
- guest ok = yes</TT
-></PRE
+> [aprinter]
+ path = /usr/spool/public
+ read only = yes
+ printable = yes
+ guest ok = yes
+ </TT
+>
+ </PRE
+></TD
+></TR
+></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN49"
+NAME="AEN48"
></A
><H2
>SPECIAL SECTIONS</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN51"
+NAME="AEN50"
></A
><H3
>The [global] section</H3
@@ -231,7 +242,7 @@ NAME="AEN51"
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN54"
+NAME="AEN53"
></A
><H3
>The [homes] section</H3
@@ -264,12 +275,9 @@ NAME="AEN54"
></LI
></UL
><P
->If you decide to use a <SPAN
-CLASS="emphasis"
-><I
+>If you decide to use a <I
CLASS="EMPHASIS"
>path =</I
-></SPAN
> line
in your [homes] section then you may find it useful
to use the %S macro. For example :</P
@@ -298,48 +306,47 @@ CLASS="USERINPUT"
a normal service section can specify, though some make more sense
than others. The following is a typical and suitable [homes]
section:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
-><TT
+> <TT
CLASS="COMPUTEROUTPUT"
->[homes]
- read only = no</TT
-></PRE
+> [homes]
+ read only = no
+ </TT
+>
+ </PRE
+></TD
+></TR
+></TABLE
><P
>An important point is that if guest access is specified
in the [homes] section, all home directories will be
- visible to all clients <SPAN
-CLASS="emphasis"
-><I
+ visible to all clients <I
CLASS="EMPHASIS"
>without a password</I
-></SPAN
>.
In the very unlikely event that this is actually desirable, it
- would be wise to also specify <SPAN
-CLASS="emphasis"
-><I
+ would be wise to also specify <I
CLASS="EMPHASIS"
>read only
access</I
-></SPAN
>.</P
><P
->Note that the <SPAN
-CLASS="emphasis"
-><I
+>Note that the <I
CLASS="EMPHASIS"
>browseable</I
-></SPAN
> flag for
auto home directories will be inherited from the global browseable
flag, not the [homes] browseable flag. This is useful as
- it means setting <SPAN
-CLASS="emphasis"
-><I
+ it means setting <I
CLASS="EMPHASIS"
>browseable = no</I
-></SPAN
> in
the [homes] section will hide the [homes] share but make
any auto home directories visible.</P
@@ -347,7 +354,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN80"
+NAME="AEN79"
></A
><H3
>The [printers] section</H3
@@ -399,27 +406,48 @@ NAME="AEN80"
world-writeable spool directory with the sticky bit set on
it. A typical [printers] entry would look like
this:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
><TT
CLASS="COMPUTEROUTPUT"
->[printers]
- path = /usr/spool/public
- guest ok = yes
- printable = yes </TT
+> [printers]
+ path = /usr/spool/public
+ guest ok = yes
+ printable = yes
+ </TT
></PRE
+></TD
+></TR
+></TABLE
><P
>All aliases given for a printer in the printcap file
are legitimate printer names as far as the server is concerned.
If your printing subsystem doesn't work like that, you will have
to set up a pseudo-printcap. This is a file consisting of one or
more lines like this:</P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
><PRE
CLASS="SCREEN"
-><TT
+> <TT
CLASS="COMPUTEROUTPUT"
->alias|alias|alias|alias... </TT
-></PRE
+> alias|alias|alias|alias...
+ </TT
+>
+ </PRE
+></TD
+></TR
+></TABLE
><P
>Each alias should be an acceptable printer name for
your printing subsystem. In the [global] section, specify
@@ -443,7 +471,7 @@ CLASS="COMPUTEROUTPUT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN103"
+NAME="AEN102"
></A
><H2
>PARAMETERS</H2
@@ -451,44 +479,29 @@ NAME="AEN103"
>parameters define the specific attributes of sections.</P
><P
>Some parameters are specific to the [global] section
- (e.g., <SPAN
-CLASS="emphasis"
-><I
+ (e.g., <I
CLASS="EMPHASIS"
>security</I
-></SPAN
>). Some parameters are usable
- in all sections (e.g., <SPAN
-CLASS="emphasis"
-><I
+ in all sections (e.g., <I
CLASS="EMPHASIS"
>create mode</I
-></SPAN
>). All others
are permissible only in normal sections. For the purposes of the
following descriptions the [homes] and [printers]
- sections will be considered normal. The letter <SPAN
-CLASS="emphasis"
-><I
+ sections will be considered normal. The letter <I
CLASS="EMPHASIS"
>G</I
-></SPAN
>
in parentheses indicates that a parameter is specific to the
- [global] section. The letter <SPAN
-CLASS="emphasis"
-><I
+ [global] section. The letter <I
CLASS="EMPHASIS"
>S</I
-></SPAN
>
indicates that a parameter can be specified in a service specific
- section. Note that all <SPAN
-CLASS="emphasis"
-><I
+ section. Note that all <I
CLASS="EMPHASIS"
>S</I
-></SPAN
> parameters can also be specified in
the [global] section - in which case they will define
the default behavior for all services.</P
@@ -501,7 +514,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN113"
+NAME="AEN112"
></A
><H2
>VARIABLE SUBSTITUTIONS</H2
@@ -678,12 +691,9 @@ CLASS="VARIABLELIST"
><P
>the name of your NIS home directory server.
This is obtained from your NIS auto.map entry. If you have
- not compiled Samba with the <SPAN
-CLASS="emphasis"
-><I
+ not compiled Samba with the <I
CLASS="EMPHASIS"
>--with-automount</I
-></SPAN
>
option then this value will be the same as %L.</P
></DD
@@ -704,7 +714,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN206"
+NAME="AEN205"
></A
><H2
>NAME MANGLING</H2
@@ -733,12 +743,9 @@ CLASS="VARIABLELIST"
> controls if names that have characters that
aren't of the "default" case are mangled. For example,
if this is yes then a name like "Mail" would be mangled.
- Default <SPAN
-CLASS="emphasis"
-><I
+ Default <I
CLASS="EMPHASIS"
>no</I
-></SPAN
>.</P
></DD
><DT
@@ -747,12 +754,9 @@ CLASS="EMPHASIS"
><P
>controls whether filenames are case sensitive. If
they aren't then Samba must do a filename search and match on passed
- names. Default <SPAN
-CLASS="emphasis"
-><I
+ names. Default <I
CLASS="EMPHASIS"
>no</I
-></SPAN
>.</P
></DD
><DT
@@ -760,12 +764,9 @@ CLASS="EMPHASIS"
><DD
><P
>controls what the default case is for new
- filenames. Default <SPAN
-CLASS="emphasis"
-><I
+ filenames. Default <I
CLASS="EMPHASIS"
>lower</I
-></SPAN
>.</P
></DD
><DT
@@ -774,12 +775,9 @@ CLASS="EMPHASIS"
><P
>controls if new files are created with the
case that the client passes, or if they are forced to be the
- "default" case. Default <SPAN
-CLASS="emphasis"
-><I
+ "default" case. Default <I
CLASS="EMPHASIS"
>yes</I
-></SPAN
>.
</P
></DD
@@ -792,12 +790,9 @@ CLASS="EMPHASIS"
upper case, or if they are forced to be the "default"
case. This option can be use with "preserve case = yes"
to permit long filenames to retain their case, while short names
- are lowercased. Default <SPAN
-CLASS="emphasis"
-><I
+ are lowercased. Default <I
CLASS="EMPHASIS"
>yes</I
-></SPAN
>.</P
></DD
></DL
@@ -809,7 +804,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN239"
+NAME="AEN238"
></A
><H2
>NOTE ABOUT USERNAME/PASSWORD VALIDATION</H2
@@ -887,7 +882,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN258"
+NAME="AEN257"
></A
><H2
>COMPLETE LIST OF GLOBAL PARAMETERS</H2
@@ -3182,7 +3177,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN1022"
+NAME="AEN1021"
></A
><H2
>COMPLETE LIST OF SERVICE PARAMETERS</H2
@@ -4697,7 +4692,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN1526"
+NAME="AEN1525"
></A
><H2
>EXPLANATION OF EACH PARAMETER</H2
@@ -4710,23 +4705,22 @@ CLASS="VARIABLELIST"
><A
NAME="ABORTSHUTDOWNSCRIPT"
></A
->&#62;abort shutdown script (G)</DT
+>abort shutdown script (G)</DT
><DD
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>This parameter only exists in the HEAD cvs branch</I
-></SPAN
>
- This a full path name to a script called by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> that
+ This a full path name to a script called by
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+> that
should stop a shutdown procedure issued by the <A
HREF="#SHUTDOWNSCRIPT"
><TT
@@ -4739,12 +4733,9 @@ CLASS="PARAMETER"
><P
>This command will be run as user.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>None</I
-></SPAN
>.</P
><P
>Example: <B
@@ -4756,7 +4747,7 @@ CLASS="COMMAND"
><A
NAME="ADDPRINTERCOMMAND"
></A
->&#62;addprinter command (G)</DT
+>addprinter command (G)</DT
><DD
><P
>With the introduction of MS-RPC based printing
@@ -4780,12 +4771,14 @@ CLASS="PARAMETER"
CLASS="FILENAME"
>smb.conf</TT
> file in order that it can be
- shared by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ shared by <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+>
+ </A
>.</P
><P
>The <TT
@@ -4795,7 +4788,7 @@ CLASS="PARAMETER"
></TT
> is
automatically invoked with the following parameter (in
- order):</P
+ order:</P
><P
></P
><UL
@@ -4909,12 +4902,9 @@ CLASS="PARAMETER"
></A
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -4927,7 +4917,7 @@ CLASS="COMMAND"
><A
NAME="ADDSHARECOMMAND"
></A
->&#62;add share command (G)</DT
+>add share command (G)</DT
><DD
><P
>Samba 2.2.0 introduced the ability to dynamically
@@ -5053,12 +5043,9 @@ CLASS="PARAMETER"
>.
</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -5070,17 +5057,15 @@ CLASS="COMMAND"
><A
NAME="ADDMACHINESCRIPT"
></A
->&#62;add machine script (G)</DT
+>add machine script (G)</DT
><DD
><P
>This is the full pathname to a script that will
- be run by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> when a machine is added
+ be run by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+> when a machine is added
to it's domain using the administrator username and password method. </P
><P
>This option is only required when using sam back-ends tied to the
@@ -5089,7 +5074,7 @@ CLASS="REFENTRYTITLE"
><P
>Default: <B
CLASS="COMMAND"
->add machine script = &lt;empty string&gt;
+>add machine script = &#60;empty string&#62;
</B
></P
><P
@@ -5103,7 +5088,7 @@ CLASS="COMMAND"
><A
NAME="ADSSERVER"
></A
->&#62;ads server (G)</DT
+>ads server (G)</DT
><DD
><P
>If this option is specified, samba does
@@ -5125,22 +5110,18 @@ CLASS="COMMAND"
><A
NAME="ADDUSERSCRIPT"
></A
->&#62;add user script (G)</DT
+>add user script (G)</DT
><DD
><P
>This is the full pathname to a script that will
- be run <SPAN
-CLASS="emphasis"
-><I
+ be run <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
-> by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+> by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)
+ </A
> under special circumstances described below.</P
><P
>Normally, a Samba server requires that UNIX users are
@@ -5152,26 +5133,19 @@ HREF="smbd.8.html"
TARGET="_top"
>smbd</A
> to create the required UNIX users
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>ON DEMAND</I
-></SPAN
> when a user accesses the Samba server.</P
><P
->In order to use this option, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> must <SPAN
-CLASS="emphasis"
-><I
+>In order to use this option, <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
+>
+ must <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> be set to <TT
CLASS="PARAMETER"
><I
@@ -5194,12 +5168,10 @@ CLASS="PARAMETER"
the UNIX user name to create.</P
><P
>When the Windows user attempts to access the Samba server,
- at login (session setup in the SMB protocol) time, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ at login (session setup in the SMB protocol) time, <A
+HREF="smbd.8.html"
+TARGET="_top"
+> smbd</A
> contacts the <TT
CLASS="PARAMETER"
><I
@@ -5222,12 +5194,9 @@ CLASS="PARAMETER"
CLASS="COMMAND"
>smbd</B
> will
- call the specified script <SPAN
-CLASS="emphasis"
-><I
+ call the specified script <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
>, expanding
any <TT
CLASS="PARAMETER"
@@ -5274,7 +5243,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->add user script = &lt;empty string&gt;
+>add user script = &#60;empty string&#62;
</B
></P
><P
@@ -5288,22 +5257,17 @@ CLASS="COMMAND"
><A
NAME="ADDGROUPSCRIPT"
></A
->&#62;add group script (G)</DT
+>add group script (G)</DT
><DD
><P
>This is the full pathname to a script that will
- be run <SPAN
-CLASS="emphasis"
-><I
+ be run <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
-> by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+> by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> when a new group is
requested. It will expand any
<TT
@@ -5324,7 +5288,7 @@ CLASS="PARAMETER"
><A
NAME="ADMINUSERS"
></A
->&#62;admin users (S)</DT
+>admin users (S)</DT
><DD
><P
>This is a list of users who will be granted
@@ -5335,12 +5299,9 @@ NAME="ADMINUSERS"
this list will be able to do anything they like on the share,
irrespective of file permissions.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no admin users</I
-></SPAN
></P
><P
>Example: <B
@@ -5352,36 +5313,32 @@ CLASS="COMMAND"
><A
NAME="ADDUSERTOGROUPSCRIPT"
></A
->&#62;add user to group script (G)</DT
+>add user to group script (G)</DT
><DD
><P
>Full path to the script that will be called when
a user is added to a group using the Windows NT domain administration
- tools. It will be run by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> <SPAN
-CLASS="emphasis"
-><I
+ tools. It will be run by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+>
+ <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
->.
- Any <TT
+>. Any <TT
CLASS="PARAMETER"
><I
>%g</I
></TT
-> will be replaced with the group name and
- any <TT
+> will be
+ replaced with the group name and any <TT
CLASS="PARAMETER"
><I
>%u</I
></TT
-> will be replaced with the user name.
+> will
+ be replaced with the user name.
</P
><P
>Default: <B
@@ -5398,7 +5355,7 @@ CLASS="COMMAND"
><A
NAME="ALLOWHOSTS"
></A
->&#62;allow hosts (S)</DT
+>allow hosts (S)</DT
><DD
><P
>Synonym for <A
@@ -5415,7 +5372,7 @@ CLASS="PARAMETER"
><A
NAME="ALGORITHMICRIDBASE"
></A
->&#62;algorithmic rid base (G)</DT
+>algorithmic rid base (G)</DT
><DD
><P
>This determines how Samba will use its
@@ -5447,7 +5404,7 @@ CLASS="COMMAND"
><A
NAME="ALLOWTRUSTEDDOMAINS"
></A
->&#62;allow trusted domains (G)</DT
+>allow trusted domains (G)</DT
><DD
><P
>This option only takes effect when the <A
@@ -5493,16 +5450,19 @@ CLASS="COMMAND"
><A
NAME="ANNOUNCEAS"
></A
->&#62;announce as (G)</DT
+>announce as (G)</DT
><DD
><P
->This specifies what type of server <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> will announce itself as, to a network neighborhood browse
+>This specifies what type of server
+ <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd</B
+></A
+>
+ will announce itself as, to a network neighborhood browse
list. By default this is set to Windows NT. The valid options
are : "NT Server" (which can also be written as "NT"),
"NT Workstation", "Win95" or "WfW" meaning Windows NT Server,
@@ -5526,7 +5486,7 @@ CLASS="COMMAND"
><A
NAME="ANNOUNCEVERSION"
></A
->&#62;announce version (G)</DT
+>announce version (G)</DT
><DD
><P
>This specifies the major and minor version numbers
@@ -5548,7 +5508,7 @@ CLASS="COMMAND"
><A
NAME="AUTOSERVICES"
></A
->&#62;auto services (G)</DT
+>auto services (G)</DT
><DD
><P
>This is a synonym for the <A
@@ -5565,7 +5525,7 @@ CLASS="PARAMETER"
><A
NAME="AUTHMETHODS"
></A
->&#62;auth methods (G)</DT
+>auth methods (G)</DT
><DD
><P
>This option allows the administrator to chose what
@@ -5590,7 +5550,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->auth methods = &lt;empty string&gt;</B
+>auth methods = &#60;empty string&#62;</B
></P
><P
>Example: <B
@@ -5602,7 +5562,7 @@ CLASS="COMMAND"
><A
NAME="AVAILABLE"
></A
->&#62;available (S)</DT
+>available (S)</DT
><DD
><P
>This parameter lets you "turn off" a service. If
@@ -5611,12 +5571,9 @@ CLASS="PARAMETER"
><I
>available = no</I
></TT
->, then <SPAN
-CLASS="emphasis"
-><I
+>, then <I
CLASS="EMPHASIS"
>ALL</I
-></SPAN
>
attempts to connect to the service will fail. Such failures are
logged.</P
@@ -5630,24 +5587,22 @@ CLASS="COMMAND"
><A
NAME="BINDINTERFACESONLY"
></A
->&#62;bind interfaces only (G)</DT
+>bind interfaces only (G)</DT
><DD
><P
>This global parameter allows the Samba admin
to limit what interfaces on a machine will serve SMB requests. It
- affects file service <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> and name service <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> in a slightly different ways.</P
+ affects file service <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+> and
+ name service <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
+> in slightly
+ different ways.</P
><P
>For name service it causes <B
CLASS="COMMAND"
@@ -5702,14 +5657,12 @@ CLASS="COMMAND"
>nmbd</B
>.</P
><P
->For file service it causes <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> to bind only to the interface list
- given in the <A
+>For file service it causes <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+>
+ to bind only to the interface list given in the <A
HREF="#INTERFACES"
> interfaces</A
> parameter. This restricts the networks that
@@ -5727,42 +5680,40 @@ CLASS="PARAMETER"
>bind interfaces only</I
></TT
> is set then
- unless the network address <SPAN
-CLASS="emphasis"
-><I
+ unless the network address <I
CLASS="EMPHASIS"
>127.0.0.1</I
-></SPAN
> is added
to the <TT
CLASS="PARAMETER"
><I
>interfaces</I
></TT
-> parameter list <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
-> and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->swat</SPAN
->(8)</SPAN
-> may not work as expected due to the reasons covered below.</P
+> parameter list <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+></A
+>
+ and <A
+HREF="swat.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>swat(8)</B
+></A
+> may
+ not work as expected due to the reasons covered below.</P
><P
>To change a users SMB password, the <B
CLASS="COMMAND"
>smbpasswd</B
>
- by default connects to the <SPAN
-CLASS="emphasis"
-><I
+ by default connects to the <I
CLASS="EMPHASIS"
>localhost - 127.0.0.1</I
-></SPAN
>
address as an SMB client to issue the password change request. If
<TT
@@ -5771,12 +5722,9 @@ CLASS="PARAMETER"
>bind interfaces only</I
></TT
> is set then unless the
- network address <SPAN
-CLASS="emphasis"
-><I
+ network address <I
CLASS="EMPHASIS"
>127.0.0.1</I
-></SPAN
> is added to the
<TT
CLASS="PARAMETER"
@@ -5791,13 +5739,10 @@ CLASS="COMMAND"
CLASS="COMMAND"
>smbpasswd</B
> can be forced to use the primary IP interface
- of the local host by using its <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
-> <TT
+ of the local host by using its <A
+HREF="smbpasswd.8.html#minusr"
+TARGET="_top"
+> <TT
CLASS="PARAMETER"
><I
>-r <TT
@@ -5808,7 +5753,8 @@ CLASS="REPLACEABLE"
></I
></TT
>
- parameter, with <TT
+ </A
+> parameter, with <TT
CLASS="REPLACEABLE"
><I
>remote machine</I
@@ -5827,19 +5773,13 @@ CLASS="COMMAND"
CLASS="COMMAND"
>nmbd</B
> at the address
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>127.0.0.1</I
-></SPAN
> to determine if they are running.
- Not adding <SPAN
-CLASS="emphasis"
-><I
+ Not adding <I
CLASS="EMPHASIS"
>127.0.0.1</I
-></SPAN
> will cause <B
CLASS="COMMAND"
> smbd</B
@@ -5868,16 +5808,13 @@ CLASS="COMMAND"
><A
NAME="BLOCKINGLOCKS"
></A
->&#62;blocking locks (S)</DT
+>blocking locks (S)</DT
><DD
><P
->This parameter controls the behavior
- of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This parameter controls the behavior of <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> when given a request by a client
to obtain a byte range lock on a region of an open file, and the
request has a time limit associated with it.</P
@@ -5904,15 +5841,14 @@ CLASS="COMMAND"
><A
NAME="BLOCKSIZE"
></A
->&#62;block size (S)</DT
+>block size (S)</DT
><DD
><P
->This parameter controls the behavior of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This parameter controls the behavior of
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> when reporting disk free
sizes. By default, this reports a disk block size of 1024 bytes.
</P
@@ -5927,12 +5863,22 @@ CLASS="REFENTRYTITLE"
><P
>Changing this option does not change the disk free reporting
size, just the block size unit reported to the client.</P
+><P
+>Default: <B
+CLASS="COMMAND"
+>block size = 1024</B
+></P
+><P
+>Example: <B
+CLASS="COMMAND"
+>block size = 65536</B
+></P
></DD
><DT
><A
NAME="BROWSABLE"
></A
->&#62;browsable (S)</DT
+>browsable (S)</DT
><DD
><P
>See the <A
@@ -5949,15 +5895,16 @@ CLASS="PARAMETER"
><A
NAME="BROWSELIST"
></A
->&#62;browse list (G)</DT
+>browse list (G)</DT
><DD
><P
->This controls whether <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This controls whether <A
+HREF="smbd.8.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
> will serve a browse list to
a client doing a <B
CLASS="COMMAND"
@@ -5978,7 +5925,7 @@ CLASS="COMMAND"
><A
NAME="BROWSEABLE"
></A
->&#62;browseable (S)</DT
+>browseable (S)</DT
><DD
><P
>This controls whether this share is seen in
@@ -5993,11 +5940,11 @@ CLASS="COMMAND"
><A
NAME="CASESENSITIVE"
></A
->&#62;case sensitive (S)</DT
+>case sensitive (S)</DT
><DD
><P
>See the discussion in the section <A
-HREF="#AEN206"
+HREF="#AEN205"
>NAME MANGLING</A
>.</P
><P
@@ -6010,7 +5957,7 @@ CLASS="COMMAND"
><A
NAME="CASESIGNAMES"
></A
->&#62;casesignames (S)</DT
+>casesignames (S)</DT
><DD
><P
>Synonym for <A
@@ -6023,18 +5970,19 @@ HREF="#CASESENSITIVE"
><A
NAME="CHANGENOTIFYTIMEOUT"
></A
->&#62;change notify timeout (G)</DT
+>change notify timeout (G)</DT
><DD
><P
>This SMB allows a client to tell a server to
"watch" a particular directory for any changes and only reply to
the SMB request when a change has occurred. Such constant scanning of
- a directory is expensive under UNIX, hence an <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ a directory is expensive under UNIX, hence an <A
+HREF="smbd.8.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
> daemon only performs such a scan
on each requested directory once every <TT
CLASS="PARAMETER"
@@ -6060,7 +6008,7 @@ CLASS="COMMAND"
><A
NAME="CHANGESHARECOMMAND"
></A
->&#62;change share command (G)</DT
+>change share command (G)</DT
><DD
><P
>Samba 2.2.0 introduced the ability to dynamically
@@ -6177,12 +6125,9 @@ CLASS="PARAMETER"
>.
</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -6194,7 +6139,7 @@ CLASS="COMMAND"
><A
NAME="COMMENT"
></A
->&#62;comment (S)</DT
+>comment (S)</DT
><DD
><P
>This is a text field that is seen next to a share
@@ -6216,12 +6161,9 @@ CLASS="PARAMETER"
></A
> parameter.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>No comment string</I
-></SPAN
></P
><P
>Example: <B
@@ -6233,7 +6175,7 @@ CLASS="COMMAND"
><A
NAME="CONFIGFILE"
></A
->&#62;config file (G)</DT
+>config file (G)</DT
><DD
><P
>This allows you to override the config file
@@ -6265,7 +6207,7 @@ CLASS="COMMAND"
><A
NAME="COPY"
></A
->&#62;copy (S)</DT
+>copy (S)</DT
><DD
><P
>This parameter allows you to "clone" service
@@ -6278,12 +6220,9 @@ NAME="COPY"
copied must occur earlier in the configuration file than the
service doing the copying.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no value</I
-></SPAN
></P
><P
>Example: <B
@@ -6295,7 +6234,7 @@ CLASS="COMMAND"
><A
NAME="CREATEMASK"
></A
->&#62;create mask (S)</DT
+>create mask (S)</DT
><DD
><P
>A synonym for this parameter is
@@ -6314,12 +6253,9 @@ CLASS="PARAMETER"
calculated according to the mapping from DOS modes to UNIX
permissions, and the resulting UNIX mode is then bit-wise 'AND'ed
with this parameter. This parameter may be thought of as a bit-wise
- MASK for the UNIX modes of a file. Any bit <SPAN
-CLASS="emphasis"
-><I
+ MASK for the UNIX modes of a file. Any bit <I
CLASS="EMPHASIS"
>not</I
-></SPAN
>
set here will be removed from the modes set on a file when it is
created.</P
@@ -6406,7 +6342,7 @@ CLASS="COMMAND"
><A
NAME="CREATEMODE"
></A
->&#62;create mode (S)</DT
+>create mode (S)</DT
><DD
><P
>This is a synonym for <A
@@ -6423,16 +6359,13 @@ CLASS="PARAMETER"
><A
NAME="CSCPOLICY"
></A
->&#62;csc policy (S)</DT
+>csc policy (S)</DT
><DD
><P
->This stands for <SPAN
-CLASS="emphasis"
-><I
+>This stands for <I
CLASS="EMPHASIS"
>client-side caching
policy</I
-></SPAN
>, and specifies how clients capable of offline
caching will cache the files in the share. The valid values
are: manual, documents, programs, disable.</P
@@ -6461,7 +6394,7 @@ CLASS="COMMAND"
><A
NAME="DEADTIME"
></A
->&#62;deadtime (G)</DT
+>deadtime (G)</DT
><DD
><P
>The value of the parameter (a decimal integer)
@@ -6496,7 +6429,7 @@ CLASS="COMMAND"
><A
NAME="DEBUGHIRESTIMESTAMP"
></A
->&#62;debug hires timestamp (G)</DT
+>debug hires timestamp (G)</DT
><DD
><P
>Sometimes the timestamps in the log messages
@@ -6524,7 +6457,7 @@ CLASS="COMMAND"
><A
NAME="DEBUGPID"
></A
->&#62;debug pid (G)</DT
+>debug pid (G)</DT
><DD
><P
>When using only one log file for more then one
@@ -6556,7 +6489,7 @@ CLASS="COMMAND"
><A
NAME="DEBUGTIMESTAMP"
></A
->&#62;debug timestamp (G)</DT
+>debug timestamp (G)</DT
><DD
><P
>Samba debug log messages are timestamped
@@ -6581,7 +6514,7 @@ CLASS="COMMAND"
><A
NAME="DEBUGUID"
></A
->&#62;debug uid (G)</DT
+>debug uid (G)</DT
><DD
><P
>Samba is sometimes run as root and sometime
@@ -6609,7 +6542,7 @@ CLASS="COMMAND"
><A
NAME="DEBUGLEVEL"
></A
->&#62;debuglevel (G)</DT
+>debuglevel (G)</DT
><DD
><P
>Synonym for <A
@@ -6626,7 +6559,7 @@ CLASS="PARAMETER"
><A
NAME="DEFAULT"
></A
->&#62;default (G)</DT
+>default (G)</DT
><DD
><P
>A synonym for <A
@@ -6643,11 +6576,11 @@ CLASS="PARAMETER"
><A
NAME="DEFAULTCASE"
></A
->&#62;default case (S)</DT
+>default case (S)</DT
><DD
><P
>See the section on <A
-HREF="#AEN206"
+HREF="#AEN205"
> NAME MANGLING</A
>. Also note the <A
HREF="#SHORTPRESERVECASE"
@@ -6668,7 +6601,7 @@ CLASS="COMMAND"
><A
NAME="DEFAULTDEVMODE"
></A
->&#62;default devmode (S)</DT
+>default devmode (S)</DT
><DD
><P
>This parameter is only applicable to <A
@@ -6719,17 +6652,14 @@ CLASS="COMMAND"
><A
NAME="DEFAULTSERVICE"
></A
->&#62;default service (G)</DT
+>default service (G)</DT
><DD
><P
>This parameter specifies the name of a service
which will be connected to if the service actually requested cannot
- be found. Note that the square brackets are <SPAN
-CLASS="emphasis"
-><I
+ be found. Note that the square brackets are <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
>
given in the parameter value (see example below).</P
><P
@@ -6771,50 +6701,53 @@ CLASS="PARAMETER"
><P
>Example:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
>[global]
default service = pub
[pub]
- path = /%S</PRE
+ path = /%S
+ </PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
><A
NAME="DELETEGROUPSCRIPT"
></A
->&#62;delete group script (G)</DT
+>delete group script (G)</DT
><DD
><P
>This is the full pathname to a script that will
- be run <SPAN
-CLASS="emphasis"
-><I
+ be run <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
-> <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> when a group is requested to be deleted.
- It will expand any <TT
+> by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+> when a group is requested to be deleted. It will expand any <TT
CLASS="PARAMETER"
><I
>%g</I
></TT
-> to the group name passed.
- This script is only useful for installations using the Windows NT domain administration tools.
+> to the group name passed. This script is only useful for installations using the Windows NT domain administration tools.
</P
></DD
><DT
><A
NAME="DELETEPRINTERCOMMAND"
></A
->&#62;deleteprinter command (G)</DT
+>deleteprinter command (G)</DT
><DD
><P
>With the introduction of MS-RPC based printer
@@ -6896,12 +6829,9 @@ CLASS="PARAMETER"
></A
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -6914,7 +6844,7 @@ CLASS="COMMAND"
><A
NAME="DELETEREADONLY"
></A
->&#62;delete readonly (S)</DT
+>delete readonly (S)</DT
><DD
><P
>This parameter allows readonly files to be deleted.
@@ -6933,7 +6863,7 @@ CLASS="COMMAND"
><A
NAME="DELETESHARECOMMAND"
></A
->&#62;delete share command (G)</DT
+>delete share command (G)</DT
><DD
><P
>Samba 2.2.0 introduced the ability to dynamically
@@ -7037,12 +6967,9 @@ CLASS="PARAMETER"
>.
</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -7054,18 +6981,19 @@ CLASS="COMMAND"
><A
NAME="DELETEUSERSCRIPT"
></A
->&#62;delete user script (G)</DT
+>delete user script (G)</DT
><DD
><P
>This is the full pathname to a script that will
- be run by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> when managing users
- with remote RPC (NT) tools.
+ be run by <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>
+ when managing user's with remote RPC (NT) tools.
</P
><P
>This script is called when a remote client removes a user
@@ -7081,7 +7009,7 @@ CLASS="COMMAND"
><P
>Default: <B
CLASS="COMMAND"
->delete user script = &lt;empty string&gt;
+>delete user script = &#60;empty string&#62;
</B
></P
><P
@@ -7095,36 +7023,32 @@ CLASS="COMMAND"
><A
NAME="DELETEUSERFROMGROUPSCRIPT"
></A
->&#62;delete user from group script (G)</DT
+>delete user from group script (G)</DT
><DD
><P
>Full path to the script that will be called when
a user is removed from a group using the Windows NT domain administration
- tools. It will be run by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> <SPAN
-CLASS="emphasis"
-><I
+ tools. It will be run by <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+>
+ <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
->.
- Any <TT
+>. Any <TT
CLASS="PARAMETER"
><I
>%g</I
></TT
-> will be replaced with the group name and
- any <TT
+> will be
+ replaced with the group name and any <TT
CLASS="PARAMETER"
><I
>%u</I
></TT
-> will be replaced with the user name.
+> will
+ be replaced with the user name.
</P
><P
>Default: <B
@@ -7141,7 +7065,7 @@ CLASS="COMMAND"
><A
NAME="DELETEVETOFILES"
></A
->&#62;delete veto files (S)</DT
+>delete veto files (S)</DT
><DD
><P
>This option is used when Samba is attempting to
@@ -7202,7 +7126,7 @@ CLASS="COMMAND"
><A
NAME="DENYHOSTS"
></A
->&#62;deny hosts (S)</DT
+>deny hosts (S)</DT
><DD
><P
>Synonym for <A
@@ -7220,7 +7144,7 @@ CLASS="PARAMETER"
><A
NAME="DFREECOMMAND"
></A
->&#62;dfree command (G)</DT
+>dfree command (G)</DT
><DD
><P
>The <TT
@@ -7251,23 +7175,17 @@ CLASS="FILENAME"
third return value can give the block size in bytes. The default
blocksize is 1024 bytes.</P
><P
->Note: Your script should <SPAN
-CLASS="emphasis"
-><I
+>Note: Your script should <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> be setuid or
setgid and should be owned by (and writeable only by) root!</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>By default internal routines for
determining the disk capacity and remaining space will be used.
</I
-></SPAN
></P
><P
>Example: <B
@@ -7278,20 +7196,40 @@ CLASS="COMMAND"
><P
>Where the script dfree (which must be made executable) could be:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
>
-#!/bin/sh
-df $1 | tail -1 | awk '{print $2" "$4}'</PRE
+ #!/bin/sh
+ df $1 | tail -1 | awk '{print $2" "$4}'
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>or perhaps (on Sys V based systems):</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
>
-#!/bin/sh
-/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'</PRE
+ #!/bin/sh
+ /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>Note that you may have to replace the command names
@@ -7301,7 +7239,7 @@ CLASS="PROGRAMLISTING"
><A
NAME="DIRECTORY"
></A
->&#62;directory (S)</DT
+>directory (S)</DT
><DD
><P
>Synonym for <A
@@ -7319,7 +7257,7 @@ CLASS="PARAMETER"
><A
NAME="DIRECTORYMASK"
></A
->&#62;directory mask (S)</DT
+>directory mask (S)</DT
><DD
><P
>This parameter is the octal modes which are
@@ -7330,12 +7268,9 @@ NAME="DIRECTORYMASK"
calculated according to the mapping from DOS modes to UNIX permissions,
and the resulting UNIX mode is then bit-wise 'AND'ed with this
parameter. This parameter may be thought of as a bit-wise MASK for
- the UNIX modes of a directory. Any bit <SPAN
-CLASS="emphasis"
-><I
+ the UNIX modes of a directory. Any bit <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> set
here will be removed from the modes set on a directory when it is
created.</P
@@ -7426,7 +7361,7 @@ CLASS="COMMAND"
><A
NAME="DIRECTORYMODE"
></A
->&#62;directory mode (S)</DT
+>directory mode (S)</DT
><DD
><P
>Synonym for <A
@@ -7443,7 +7378,7 @@ CLASS="PARAMETER"
><A
NAME="DIRECTORYSECURITYMASK"
></A
->&#62;directory security mask (S)</DT
+>directory security mask (S)</DT
><DD
><P
>This parameter controls what UNIX permission bits
@@ -7461,12 +7396,9 @@ NAME="DIRECTORYSECURITYMASK"
meaning a user is allowed to modify all the user/group/world
permissions on a directory.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that users who can access the
Samba server through other means can easily bypass this restriction,
so it is primarily useful for standalone "appliance" systems.
@@ -7518,7 +7450,7 @@ CLASS="COMMAND"
><A
NAME="DISABLENETBIOS"
></A
->&#62;disable netbios (G)</DT
+>disable netbios (G)</DT
><DD
><P
>Enabling this parameter will disable netbios support
@@ -7543,7 +7475,7 @@ CLASS="COMMAND"
><A
NAME="DISABLESPOOLSS"
></A
->&#62;disable spoolss (G)</DT
+>disable spoolss (G)</DT
><DD
><P
>Enabling this parameter will disable Samba's support
@@ -7555,12 +7487,9 @@ NAME="DISABLESPOOLSS"
Wizard or by using the NT printer properties dialog window. It will
also disable the capability of Windows NT/2000 clients to download
print drivers from the Samba host upon demand.
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>Be very careful about enabling this parameter.</I
-></SPAN
>
</P
><P
@@ -7579,7 +7508,7 @@ CLASS="COMMAND"
><A
NAME="DISPLAYCHARSET"
></A
->&#62;display charset (G)</DT
+>display charset (G)</DT
><DD
><P
>Specifies the charset that samba will use
@@ -7604,19 +7533,18 @@ CLASS="COMMAND"
><A
NAME="DNSPROXY"
></A
->&#62;dns proxy (G)</DT
+>dns proxy (G)</DT
><DD
><P
->Specifies that <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> when acting as a WINS server and
- finding that a NetBIOS name has not been registered, should treat the
- NetBIOS name word-for-word as a DNS name and do a lookup with the DNS server
- for that name on behalf of the name-querying client.</P
+>Specifies that <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
+>
+ when acting as a WINS server and finding that a NetBIOS name has not
+ been registered, should treat the NetBIOS name word-for-word as a DNS
+ name and do a lookup with the DNS server for that name on behalf of
+ the name-querying client.</P
><P
>Note that the maximum length for a NetBIOS name is 15
characters, so the DNS name (or DNS alias) can likewise only be
@@ -7648,7 +7576,7 @@ CLASS="COMMAND"
><A
NAME="DOMAINLOGONS"
></A
->&#62;domain logons (G)</DT
+>domain logons (G)</DT
><DD
><P
>If set to <TT
@@ -7681,15 +7609,16 @@ CLASS="COMMAND"
><A
NAME="DOMAINMASTER"
></A
->&#62;domain master (G)</DT
+>domain master (G)</DT
><DD
><P
->Tell <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>Tell <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> nmbd(8)</B
+></A
> to enable WAN-wide browse list
collation. Setting this option causes <B
CLASS="COMMAND"
@@ -7715,16 +7644,18 @@ CLASS="PARAMETER"
CLASS="COMMAND"
>nmbd</B
> their local browse lists,
- and then ask <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> for a complete copy of the browse
- list for the whole wide area network. Browser clients will then contact
- their local master browser, and will receive the domain-wide browse list,
- instead of just the list for their broadcast-isolated subnet.</P
+ and then ask <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>
+ for a complete copy of the browse list for the whole wide area
+ network. Browser clients will then contact their local master browser,
+ and will receive the domain-wide browse list, instead of just the list
+ for their broadcast-isolated subnet.</P
><P
>Note that Windows NT Primary Domain Controllers expect to be
able to claim this <TT
@@ -7790,7 +7721,7 @@ CLASS="COMMAND"
><A
NAME="DONTDESCEND"
></A
->&#62;dont descend (S)</DT
+>dont descend (S)</DT
><DD
><P
>There are certain directories on some systems
@@ -7812,13 +7743,10 @@ CLASS="FILENAME"
>.
Experimentation is the best policy :-) </P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (i.e., all directories are OK
to descend)</I
-></SPAN
></P
><P
>Example: <B
@@ -7830,7 +7758,7 @@ CLASS="COMMAND"
><A
NAME="DOSCHARSET"
></A
->&#62;dos charset (G)</DT
+>dos charset (G)</DT
><DD
><P
>DOS SMB clients assume the server has
@@ -7840,12 +7768,11 @@ NAME="DOSCHARSET"
><P
>The default depends on which charsets you have instaled.
Samba tries to use charset 850 but falls back to ASCII in
- case it is not available. Run <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
+ case it is not available. Run <A
+HREF="testparm.1.html"
+TARGET="_top"
+>testparm(1)
+ </A
> to check the default on your system.
</P
></DD
@@ -7853,7 +7780,7 @@ CLASS="REFENTRYTITLE"
><A
NAME="DOSFILEMODE"
></A
->&#62;dos filemode (S)</DT
+>dos filemode (S)</DT
><DD
><P
> The default behavior in Samba is to provide
@@ -7876,19 +7803,21 @@ CLASS="COMMAND"
><A
NAME="DOSFILETIMERESOLUTION"
></A
->&#62;dos filetime resolution (S)</DT
+>dos filetime resolution (S)</DT
><DD
><P
>Under the DOS and Windows FAT filesystem, the finest
granularity on time resolution is two seconds. Setting this parameter
for a share causes Samba to round the reported time down to the
nearest two second boundary when a query call that requires one second
- resolution is made to <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ resolution is made to <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+>
+ </A
>.</P
><P
>This option is mainly used as a compatibility option for Visual
@@ -7911,7 +7840,7 @@ CLASS="COMMAND"
><A
NAME="DOSFILETIMES"
></A
->&#62;dos filetimes (S)</DT
+>dos filetimes (S)</DT
><DD
><P
>Under DOS and Windows, if a user can write to a
@@ -7925,12 +7854,10 @@ CLASS="COMMAND"
on behalf of is not the file owner. Setting this option to <TT
CLASS="CONSTANT"
> yes</TT
-> allows DOS semantics and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+> allows DOS semantics and <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> will change the file
timestamp as DOS requires.</P
><P
@@ -7943,7 +7870,7 @@ CLASS="COMMAND"
><A
NAME="ENCRYPTPASSWORDS"
></A
->&#62;encrypt passwords (G)</DT
+>encrypt passwords (G)</DT
><DD
><P
>This boolean controls whether encrypted passwords
@@ -7957,25 +7884,29 @@ CLASS="FILENAME"
> shipped with the source code.</P
><P
>In order for encrypted passwords to work correctly
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
> must either
- have access to a local <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
-> file (see the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
+ have access to a local <A
+HREF="smbpasswd.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smbpasswd(5)
+ </TT
+></A
+> file (see the <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> smbpasswd(8)</B
+></A
> program for information on how to set up
and maintain this file), or set the <A
HREF="#SECURITY"
@@ -7996,7 +7927,7 @@ CLASS="COMMAND"
><A
NAME="ENHANCEDBROWSING"
></A
->&#62;enhanced browsing (G)</DT
+>enhanced browsing (G)</DT
><DD
><P
>This option enables a couple of enhancements to
@@ -8027,7 +7958,7 @@ CLASS="COMMAND"
><A
NAME="ENUMPORTSCOMMAND"
></A
->&#62;enumports command (G)</DT
+>enumports command (G)</DT
><DD
><P
>The concept of a "port" is fairly foreign
@@ -8059,12 +7990,9 @@ CLASS="PARAMETER"
to standard output. This listing will then be used in response
to the level 1 and 2 EnumPorts() RPC.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no enumports command</I
-></SPAN
></P
><P
>Example: <B
@@ -8077,7 +8005,7 @@ CLASS="COMMAND"
><A
NAME="EXEC"
></A
->&#62;exec (S)</DT
+>exec (S)</DT
><DD
><P
>This is a synonym for <A
@@ -8094,7 +8022,7 @@ CLASS="PARAMETER"
><A
NAME="FAKEDIRECTORYCREATETIMES"
></A
->&#62;fake directory create times (S)</DT
+>fake directory create times (S)</DT
><DD
><P
>NTFS and Windows VFAT file systems keep a create
@@ -8132,7 +8060,7 @@ CLASS="COMMAND"
><A
NAME="FAKEOPLOCKS"
></A
->&#62;fake oplocks (S)</DT
+>fake oplocks (S)</DT
><DD
><P
>Oplocks are the way that SMB clients get permission
@@ -8185,18 +8113,19 @@ CLASS="COMMAND"
><A
NAME="FOLLOWSYMLINKS"
></A
->&#62;follow symlinks (S)</DT
+>follow symlinks (S)</DT
><DD
><P
>This parameter allows the Samba administrator
- to stop <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> from following symbolic
- links in a particular share. Setting this
+ to stop <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>
+ from following symbolic links in a particular share. Setting this
parameter to <TT
CLASS="CONSTANT"
>no</TT
@@ -8225,16 +8154,13 @@ CLASS="COMMAND"
><A
NAME="FORCECREATEMODE"
></A
->&#62;force create mode (S)</DT
+>force create mode (S)</DT
><DD
><P
>This parameter specifies a set of UNIX mode bit
- permissions that will <SPAN
-CLASS="emphasis"
-><I
+ permissions that will <I
CLASS="EMPHASIS"
>always</I
-></SPAN
> be set on a
file created by Samba. This is done by bitwise 'OR'ing these bits onto
the mode bits of a file that is being created or having its
@@ -8288,16 +8214,13 @@ CLASS="COMMAND"
><A
NAME="FORCEDIRECTORYMODE"
></A
->&#62;force directory mode (S)</DT
+>force directory mode (S)</DT
><DD
><P
>This parameter specifies a set of UNIX mode bit
- permissions that will <SPAN
-CLASS="emphasis"
-><I
+ permissions that will <I
CLASS="EMPHASIS"
>always</I
-></SPAN
> be set on a directory
created by Samba. This is done by bitwise 'OR'ing these bits onto the
mode bits of a directory that is being created. The default for this
@@ -8350,7 +8273,7 @@ CLASS="COMMAND"
><A
NAME="FORCEDIRECTORYSECURITYMODE"
></A
->&#62;force directory security mode (S)</DT
+>force directory security mode (S)</DT
><DD
><P
>This parameter controls what UNIX permission bits
@@ -8367,12 +8290,9 @@ NAME="FORCEDIRECTORYSECURITYMODE"
allows a user to modify all the user/group/world permissions on a
directory without restrictions.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that users who can access the
Samba server through other means can easily bypass this restriction,
so it is primarily useful for standalone "appliance" systems.
@@ -8421,7 +8341,7 @@ CLASS="COMMAND"
><A
NAME="FORCEGROUP"
></A
->&#62;force group (S)</DT
+>force group (S)</DT
><DD
><P
>This specifies a UNIX group name that will be
@@ -8482,12 +8402,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no forced group</I
-></SPAN
></P
><P
>Example: <B
@@ -8499,7 +8416,7 @@ CLASS="COMMAND"
><A
NAME="FORCESECURITYMODE"
></A
->&#62;force security mode (S)</DT
+>force security mode (S)</DT
><DD
><P
>This parameter controls what UNIX permission
@@ -8517,12 +8434,9 @@ NAME="FORCESECURITYMODE"
and allows a user to modify all the user/group/world permissions on a file,
with no restrictions.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that users who can access
the Samba server through other means can easily bypass this restriction,
so it is primarily useful for standalone "appliance" systems.
@@ -8571,7 +8485,7 @@ CLASS="COMMAND"
><A
NAME="FORCEUSER"
></A
->&#62;force user (S)</DT
+>force user (S)</DT
><DD
><P
>This specifies a UNIX user name that will be
@@ -8601,12 +8515,9 @@ CLASS="PARAMETER"
></A
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no forced user</I
-></SPAN
></P
><P
>Example: <B
@@ -8618,17 +8529,19 @@ CLASS="COMMAND"
><A
NAME="FSTYPE"
></A
->&#62;fstype (S)</DT
+>fstype (S)</DT
><DD
><P
>This parameter allows the administrator to
configure the string that specifies the type of filesystem a share
- is using that is reported by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ is using that is reported by <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)
+ </B
+></A
> when a client queries the filesystem type
for a share. The default type is <TT
CLASS="CONSTANT"
@@ -8658,7 +8571,7 @@ CLASS="COMMAND"
><A
NAME="GETWDCACHE"
></A
->&#62;getwd cache (G)</DT
+>getwd cache (G)</DT
><DD
><P
>This is a tuning option. When this is enabled a
@@ -8687,7 +8600,7 @@ CLASS="COMMAND"
><A
NAME="GROUP"
></A
->&#62;group (S)</DT
+>group (S)</DT
><DD
><P
>Synonym for <A
@@ -8705,7 +8618,7 @@ CLASS="PARAMETER"
><A
NAME="GUESTACCOUNT"
></A
->&#62;guest account (S)</DT
+>guest account (S)</DT
><DD
><P
>This is a username which will be used for access
@@ -8743,13 +8656,10 @@ CLASS="COMMAND"
many parts of the system require this value to be
constant for correct operation.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>specified at compile time, usually
"nobody"</I
-></SPAN
></P
><P
>Example: <B
@@ -8761,7 +8671,7 @@ CLASS="COMMAND"
><A
NAME="GUESTOK"
></A
->&#62;guest ok (S)</DT
+>guest ok (S)</DT
><DD
><P
>If this parameter is <TT
@@ -8779,18 +8689,6 @@ CLASS="PARAMETER"
></A
>.</P
><P
->This paramater nullifies the benifits of setting
- <A
-HREF="#RESTRICTANONYMOUS"
-><TT
-CLASS="PARAMETER"
-><I
->restrict
- anonymous</I
-></TT
-></A
-> = 2</P
-><P
>See the section below on <A
HREF="#SECURITY"
><TT
@@ -8811,7 +8709,7 @@ CLASS="COMMAND"
><A
NAME="GUESTONLY"
></A
->&#62;guest only (S)</DT
+>guest only (S)</DT
><DD
><P
>If this parameter is <TT
@@ -8849,7 +8747,7 @@ CLASS="COMMAND"
><A
NAME="HIDEDOTFILES"
></A
->&#62;hide dot files (S)</DT
+>hide dot files (S)</DT
><DD
><P
>This is a boolean parameter that controls whether
@@ -8864,7 +8762,7 @@ CLASS="COMMAND"
><A
NAME="HIDEFILES"
></A
->&#62;hide files(S)</DT
+>hide files(S)</DT
><DD
><P
>This is a list of files or directories that are not
@@ -8913,12 +8811,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no file are hidden</I
-></SPAN
></P
><P
>Example: <B
@@ -8940,7 +8835,7 @@ TARGET="_top"
><A
NAME="HIDELOCALUSERS"
></A
->&#62;hide local users(G)</DT
+>hide local users(G)</DT
><DD
><P
>This parameter toggles the hiding of local UNIX
@@ -8955,7 +8850,7 @@ CLASS="COMMAND"
><A
NAME="HIDEUNREADABLE"
></A
->&#62;hide unreadable (G)</DT
+>hide unreadable (G)</DT
><DD
><P
>This parameter prevents clients from seeing the
@@ -8970,7 +8865,7 @@ CLASS="COMMAND"
><A
NAME="HIDEUNWRITEABLEFILES"
></A
->&#62;hide unwriteable files (G)</DT
+>hide unwriteable files (G)</DT
><DD
><P
>This parameter prevents clients from seeing
@@ -8987,7 +8882,7 @@ CLASS="COMMAND"
><A
NAME="HIDESPECIALFILES"
></A
->&#62;hide special files (G)</DT
+>hide special files (G)</DT
><DD
><P
>This parameter prevents clients from seeing
@@ -9004,7 +8899,7 @@ CLASS="COMMAND"
><A
NAME="HOMEDIRMAP"
></A
->&#62;homedir map (G)</DT
+>homedir map (G)</DT
><DD
><P
>If<A
@@ -9019,12 +8914,13 @@ CLASS="PARAMETER"
> is <TT
CLASS="CONSTANT"
>yes</TT
->, and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>, and <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
> is also acting
as a Win95/98 <TT
CLASS="PARAMETER"
@@ -9046,12 +8942,9 @@ CLASS="COMMAND"
that copes with different map formats and also Amd (another
automounter) maps.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE :</I
-></SPAN
>A working NIS client is required on
the system for this option to work.</P
><P
@@ -9077,7 +8970,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->homedir map = &lt;empty string&gt;</B
+>homedir map = &#60;empty string&#62;</B
></P
><P
>Example: <B
@@ -9089,7 +8982,7 @@ CLASS="COMMAND"
><A
NAME="HOSTMSDFS"
></A
->&#62;host msdfs (G)</DT
+>host msdfs (G)</DT
><DD
><P
>This boolean parameter is only available
@@ -9129,7 +9022,7 @@ CLASS="COMMAND"
><A
NAME="HOSTNAMELOOKUPS"
></A
->&#62;hostname lookups (G)</DT
+>hostname lookups (G)</DT
><DD
><P
>Specifies whether samba should use (expensive)
@@ -9158,7 +9051,7 @@ CLASS="COMMAND"
><A
NAME="HOSTSALLOW"
></A
->&#62;hosts allow (S)</DT
+>hosts allow (S)</DT
><DD
><P
>A synonym for this parameter is <TT
@@ -9203,12 +9096,9 @@ CLASS="PARAMETER"
><P
>You can also specify hosts by network/netmask pairs and
by netgroup names if your system supports netgroups. The
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>EXCEPT</I
-></SPAN
> keyword can also be used to limit a
wildcard list. The following examples may provide some help:</P
><P
@@ -9248,22 +9138,21 @@ CLASS="COMMAND"
><P
>Note that access still requires suitable user-level passwords.</P
><P
->See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
-> for a way of testing your host access
- to see if it does what you expect.</P
+>See <A
+HREF="testparm.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>testparm(1)</B
+>
+ </A
+> for a way of testing your host access to see if it does
+ what you expect.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (i.e., all hosts permitted access)
</I
-></SPAN
></P
><P
>Example: <B
@@ -9276,7 +9165,7 @@ CLASS="COMMAND"
><A
NAME="HOSTSDENY"
></A
->&#62;hosts deny (S)</DT
+>hosts deny (S)</DT
><DD
><P
>The opposite of <TT
@@ -9285,12 +9174,9 @@ CLASS="PARAMETER"
>hosts allow</I
></TT
>
- - hosts listed here are <SPAN
-CLASS="emphasis"
-><I
+ - hosts listed here are <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> permitted access to
services unless the specific services have their own lists to override
this one. Where the lists conflict, the <TT
@@ -9301,13 +9187,10 @@ CLASS="PARAMETER"
>
list takes precedence.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (i.e., no hosts specifically excluded)
</I
-></SPAN
></P
><P
>Example: <B
@@ -9320,7 +9203,7 @@ CLASS="COMMAND"
><A
NAME="HOSTSEQUIV"
></A
->&#62;hosts equiv (G)</DT
+>hosts equiv (G)</DT
><DD
><P
>If this global parameter is a non-null string,
@@ -9345,12 +9228,9 @@ CLASS="PARAMETER"
> may be useful for NT clients which will
not supply passwords to Samba.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE :</I
-></SPAN
> The use of <TT
CLASS="PARAMETER"
><I
@@ -9367,21 +9247,15 @@ CLASS="PARAMETER"
></TT
> option be only used if you really
know what you are doing, or perhaps on a home network where you trust
- your spouse and kids. And only if you <SPAN
-CLASS="emphasis"
-><I
+ your spouse and kids. And only if you <I
CLASS="EMPHASIS"
>really</I
-></SPAN
> trust
them :-).</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no host equivalences</I
-></SPAN
></P
><P
>Example: <B
@@ -9393,7 +9267,7 @@ CLASS="COMMAND"
><A
NAME="INCLUDE"
></A
->&#62;include (G)</DT
+>include (G)</DT
><DD
><P
>This allows you to include one config file
@@ -9419,12 +9293,9 @@ CLASS="PARAMETER"
>.
</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no file included</I
-></SPAN
></P
><P
>Example: <B
@@ -9437,7 +9308,7 @@ CLASS="COMMAND"
><A
NAME="INHERITACLS"
></A
->&#62;inherit acls (S)</DT
+>inherit acls (S)</DT
><DD
><P
>This parameter can be used to ensure
@@ -9459,7 +9330,7 @@ CLASS="COMMAND"
><A
NAME="INHERITPERMISSIONS"
></A
->&#62;inherit permissions (S)</DT
+>inherit permissions (S)</DT
><DD
><P
>The permissions on new files and directories
@@ -9534,12 +9405,9 @@ CLASS="PARAMETER"
</A
> as usual.</P
><P
->Note that the setuid bit is <SPAN
-CLASS="emphasis"
-><I
+>Note that the setuid bit is <I
CLASS="EMPHASIS"
>never</I
-></SPAN
> set via
inheritance (the code explicitly prohibits this).</P
><P
@@ -9592,7 +9460,7 @@ CLASS="COMMAND"
><A
NAME="INTERFACES"
></A
->&#62;interfaces (G)</DT
+>interfaces (G)</DT
><DD
><P
>This option allows you to override the default
@@ -9659,29 +9527,23 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>all active interfaces except 127.0.0.1
that are broadcast capable</I
-></SPAN
></P
></DD
><DT
><A
NAME="INVALIDUSERS"
></A
->&#62;invalid users (S)</DT
+>invalid users (S)</DT
><DD
><P
>This is a list of users that should not be allowed
- to login to this service. This is really a <SPAN
-CLASS="emphasis"
-><I
+ to login to this service. This is really a <I
CLASS="EMPHASIS"
>paranoid</I
-></SPAN
>
check to absolutely ensure an improper setting does not breach
your security.</P
@@ -9692,20 +9554,20 @@ CLASS="EMPHASIS"
><P
>A name starting with '+' is interpreted only
by looking in the UNIX group database. A name starting with
- '&amp;' is interpreted only by looking in the NIS netgroup database
+ '&#38;' is interpreted only by looking in the NIS netgroup database
(this requires NIS to be working on your system). The characters
- '+' and '&amp;' may be used at the start of the name in either order
+ '+' and '&#38;' may be used at the start of the name in either order
so the value <TT
CLASS="PARAMETER"
><I
->+&amp;group</I
+>+&#38;group</I
></TT
> means check the
UNIX group database, followed by the NIS netgroup database, and
the value <TT
CLASS="PARAMETER"
><I
->&amp;+group</I
+>&#38;+group</I
></TT
> means check the NIS
netgroup database, followed by the UNIX group database (the
@@ -9730,12 +9592,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no invalid users</I
-></SPAN
></P
><P
>Example: <B
@@ -9748,7 +9607,7 @@ CLASS="COMMAND"
><A
NAME="KEEPALIVE"
></A
->&#62;keepalive (G)</DT
+>keepalive (G)</DT
><DD
><P
>The value of the parameter (an integer) represents
@@ -9788,7 +9647,7 @@ CLASS="COMMAND"
><A
NAME="KERNELOPLOCKS"
></A
->&#62;kernel oplocks (G)</DT
+>kernel oplocks (G)</DT
><DD
><P
>For UNIXes that support kernel based <A
@@ -9810,21 +9669,20 @@ CLASS="PARAMETER"
</I
></TT
> to be broken whenever a local UNIX process or NFS operation
- accesses a file that <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> has oplocked. This allows complete
- data consistency between SMB/CIFS, NFS and local file access (and is
- a <SPAN
-CLASS="emphasis"
-><I
+ accesses a file that <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+>
+ </A
+> has oplocked. This allows complete data consistency between
+ SMB/CIFS, NFS and local file access (and is a <I
CLASS="EMPHASIS"
>very</I
-></SPAN
-> cool feature :-).</P
+>
+ cool feature :-).</P
><P
>This parameter defaults to <TT
CLASS="CONSTANT"
@@ -9862,19 +9720,18 @@ CLASS="COMMAND"
><A
NAME="LANMANAUTH"
></A
->&#62;lanman auth (G)</DT
+>lanman auth (G)</DT
><DD
><P
->This parameter determines whether or not <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> will attempt to authenticate users
- using the LANMAN password hash. If disabled, only clients which support NT
- password hashes (e.g. Windows NT/2000 clients, smbclient, etc... but not
- Windows 95/98 or the MS DOS network client) will be able to connect to the Samba host.</P
+>This parameter determines whether or not <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
+> will
+ attempt to authenticate users using the LANMAN password hash.
+ If disabled, only clients which support NT password hashes (e.g. Windows
+ NT/2000 clients, smbclient, etc... but not Windows 95/98 or the MS DOS
+ network client) will be able to connect to the Samba host.</P
><P
>Default : <B
CLASS="COMMAND"
@@ -9885,17 +9742,15 @@ CLASS="COMMAND"
><A
NAME="LARGEREADWRITE"
></A
->&#62;large readwrite (G)</DT
+>large readwrite (G)</DT
><DD
><P
->This parameter determines whether or not <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> supports the new 64k streaming
- read and write varient SMB requests introduced
+>This parameter determines whether or not <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
+>
+ supports the new 64k streaming read and write varient SMB requests introduced
with Windows 2000. Note that due to Windows 2000 client redirector bugs
this requires Samba to be running on a 64-bit capable operating system such
as IRIX, Solaris or a Linux 2.4 kernel. Can improve performance by 10% with
@@ -9912,7 +9767,7 @@ CLASS="COMMAND"
><A
NAME="LDAPADMINDN"
></A
->&#62;ldap admin dn (G)</DT
+>ldap admin dn (G)</DT
><DD
><P
> The <TT
@@ -9933,29 +9788,27 @@ CLASS="PARAMETER"
CLASS="FILENAME"
>private/secrets.tdb</TT
> file. See the
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
-> man page for more information on how
- to accmplish this.
+ <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+></A
+> man
+ page for more information on how to accmplish this.
</P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
></DD
><DT
><A
NAME="LDAPFILTER"
></A
->&#62;ldap filter (G)</DT
+>ldap filter (G)</DT
><DD
><P
>This parameter specifies the RFC 2254 compliant LDAP search filter.
@@ -9972,14 +9825,14 @@ CLASS="CONSTANT"
><P
>Default : <B
CLASS="COMMAND"
->ldap filter = (&amp;(uid=%u)(objectclass=sambaAccount))</B
+>ldap filter = (&#38;(uid=%u)(objectclass=sambaAccount))</B
></P
></DD
><DT
><A
NAME="LDAPPORT"
></A
->&#62;ldap port (G)</DT
+>ldap port (G)</DT
><DD
><P
>This parameter is only available if Samba has been
@@ -10023,7 +9876,7 @@ CLASS="COMMAND"
><A
NAME="LDAPSERVER"
></A
->&#62;ldap server (G)</DT
+>ldap server (G)</DT
><DD
><P
>This parameter is only available if Samba has been
@@ -10047,17 +9900,14 @@ CLASS="COMMAND"
><A
NAME="LDAPSSL"
></A
->&#62;ldap ssl (G)</DT
+>ldap ssl (G)</DT
><DD
><P
>This option is used to define whether or not Samba should
use SSL when connecting to the ldap server
- This is <SPAN
-CLASS="emphasis"
-><I
+ This is <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> related to
Samba's previous SSL support which was enabled by specifying the
<B
@@ -10139,7 +9989,7 @@ CLASS="COMMAND"
><A
NAME="LDAPSUFFIX"
></A
->&#62;ldap suffix (G)</DT
+>ldap suffix (G)</DT
><DD
><P
>Specifies where user and machine accounts are added to the tree. Can be overriden by <B
@@ -10150,56 +10000,47 @@ CLASS="COMMAND"
>ldap machine suffix</B
>. It also used as the base dn for all ldap searches. </P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
></DD
><DT
><A
NAME="LDAPUSERSUFFIX"
></A
->&#62;ldap user suffix (G)</DT
+>ldap user suffix (G)</DT
><DD
><P
>It specifies where users are added to the tree.
</P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
></DD
><DT
><A
NAME="LDAPMACHINESUFFIX"
></A
->&#62;ldap machine suffix (G)</DT
+>ldap machine suffix (G)</DT
><DD
><P
>It specifies where machines should be
added to the ldap tree.
</P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
></DD
><DT
><A
NAME="LDAPPASSWDSYNC"
></A
->&#62;ldap passwd sync (G)</DT
+>ldap passwd sync (G)</DT
><DD
><P
>This option is used to define whether
@@ -10257,7 +10098,7 @@ CLASS="COMMAND"
><A
NAME="LDAPTRUSTIDS"
></A
->&#62;ldap trust ids (G)</DT
+>ldap trust ids (G)</DT
><DD
><P
>Normally, Samba validates each entry
@@ -10286,7 +10127,7 @@ CLASS="COMMAND"
><A
NAME="LEVEL2OPLOCKS"
></A
->&#62;level2 oplocks (S)</DT
+>level2 oplocks (S)</DT
><DD
><P
>This parameter controls whether Samba supports
@@ -10370,15 +10211,16 @@ CLASS="COMMAND"
><A
NAME="LMANNOUNCE"
></A
->&#62;lm announce (G)</DT
+>lm announce (G)</DT
><DD
><P
->This parameter determines if <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This parameter determines if <A
+HREF="nmbd.8.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
> will produce Lanman announce
broadcasts that are needed by OS/2 clients in order for them to see
the Samba server in their browse list. This parameter can have three
@@ -10449,7 +10291,7 @@ CLASS="COMMAND"
><A
NAME="LMINTERVAL"
></A
->&#62;lm interval (G)</DT
+>lm interval (G)</DT
><DD
><P
>If Samba is set to produce Lanman announce
@@ -10497,13 +10339,13 @@ CLASS="COMMAND"
><A
NAME="LOADPRINTERS"
></A
->&#62;load printers (G)</DT
+>load printers (G)</DT
><DD
><P
>A boolean variable that controls whether all
printers in the printcap will be loaded for browsing by default.
See the <A
-HREF="#AEN80"
+HREF="#AEN79"
>printers</A
> section for
more details.</P
@@ -10517,15 +10359,16 @@ CLASS="COMMAND"
><A
NAME="LOCALMASTER"
></A
->&#62;local master (G)</DT
+>local master (G)</DT
><DD
><P
->This option allows <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This option allows <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> nmbd(8)</B
+></A
> to try and become a local master browser
on a subnet. If set to <TT
CLASS="CONSTANT"
@@ -10542,22 +10385,16 @@ CLASS="CONSTANT"
CLASS="CONSTANT"
>yes</TT
> doesn't
- mean that Samba will <SPAN
-CLASS="emphasis"
-><I
+ mean that Samba will <I
CLASS="EMPHASIS"
>become</I
-></SPAN
> the local master
browser on a subnet, just that <B
CLASS="COMMAND"
>nmbd</B
-> will <SPAN
-CLASS="emphasis"
-><I
+> will <I
CLASS="EMPHASIS"
> participate</I
-></SPAN
> in elections for local master browser.</P
><P
>Setting this value to <TT
@@ -10567,12 +10404,9 @@ CLASS="CONSTANT"
CLASS="COMMAND"
>nmbd</B
>
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>never</I
-></SPAN
> to become a local master browser.</P
><P
>Default: <B
@@ -10584,7 +10418,7 @@ CLASS="COMMAND"
><A
NAME="LOCKDIR"
></A
->&#62;lock dir (G)</DT
+>lock dir (G)</DT
><DD
><P
>Synonym for <A
@@ -10601,7 +10435,7 @@ CLASS="PARAMETER"
><A
NAME="LOCKDIRECTORY"
></A
->&#62;lock directory (G)</DT
+>lock directory (G)</DT
><DD
><P
>This option specifies the directory where lock
@@ -10632,7 +10466,7 @@ CLASS="COMMAND"
><A
NAME="LOCKSPINCOUNT"
></A
->&#62;lock spin count (G)</DT
+>lock spin count (G)</DT
><DD
><P
>This parameter controls the number of times
@@ -10655,7 +10489,7 @@ CLASS="COMMAND"
><A
NAME="LOCKSPINTIME"
></A
->&#62;lock spin time (G)</DT
+>lock spin time (G)</DT
><DD
><P
>The time in microseconds that smbd should
@@ -10682,7 +10516,7 @@ CLASS="COMMAND"
><A
NAME="LOCKING"
></A
->&#62;locking (S)</DT
+>locking (S)</DT
><DD
><P
>This controls whether or not locking will be
@@ -10702,19 +10536,13 @@ CLASS="COMMAND"
>, real locking will be performed
by the server.</P
><P
->This option <SPAN
-CLASS="emphasis"
-><I
+>This option <I
CLASS="EMPHASIS"
>may</I
-></SPAN
> be useful for read-only
- filesystems which <SPAN
-CLASS="emphasis"
-><I
+ filesystems which <I
CLASS="EMPHASIS"
>may</I
-></SPAN
> not need locking (such as
CDROM drives), although setting this parameter of <TT
CLASS="CONSTANT"
@@ -10735,7 +10563,7 @@ CLASS="COMMAND"
><A
NAME="LOGFILE"
></A
->&#62;log file (G)</DT
+>log file (G)</DT
><DD
><P
>This option allows you to override the name
@@ -10754,7 +10582,7 @@ CLASS="COMMAND"
><A
NAME="LOGLEVEL"
></A
->&#62;log level (G)</DT
+>log level (G)</DT
><DD
><P
>The value of the parameter (a astring) allows
@@ -10780,7 +10608,7 @@ CLASS="COMMAND"
><A
NAME="LOGONDRIVE"
></A
->&#62;logon drive (G)</DT
+>logon drive (G)</DT
><DD
><P
>This parameter specifies the local path to
@@ -10812,7 +10640,7 @@ CLASS="COMMAND"
><A
NAME="LOGONHOME"
></A
->&#62;logon home (G)</DT
+>logon home (G)</DT
><DD
><P
>This parameter specifies the home directory
@@ -10893,7 +10721,7 @@ CLASS="COMMAND"
><A
NAME="LOGONPATH"
></A
->&#62;logon path (G)</DT
+>logon path (G)</DT
><DD
><P
>This parameter specifies the home directory
@@ -10939,12 +10767,9 @@ CLASS="FILENAME"
>Thereafter, the directories and any of the contents can,
if required, be made read-only. It is not advisable that the
NTuser.dat file be made read-only - rename it to NTuser.man to
- achieve the desired effect (a <SPAN
-CLASS="emphasis"
-><I
+ achieve the desired effect (a <I
CLASS="EMPHASIS"
>MAN</I
-></SPAN
>datory
profile). </P
><P
@@ -10974,7 +10799,7 @@ CLASS="COMMAND"
><A
NAME="LOGONSCRIPT"
></A
->&#62;logon script (G)</DT
+>logon script (G)</DT
><DD
><P
>This parameter specifies the batch file (.bat) or
@@ -11034,12 +10859,9 @@ CLASS="COMMAND"
>This option is only useful if Samba is set up as a logon
server.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no logon script defined</I
-></SPAN
></P
><P
>Example: <B
@@ -11051,7 +10873,7 @@ CLASS="COMMAND"
><A
NAME="LPPAUSECOMMAND"
></A
->&#62;lppause command (S)</DT
+>lppause command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -11149,7 +10971,7 @@ CLASS="COMMAND"
><A
NAME="LPQCACHETIME"
></A
->&#62;lpq cache time (G)</DT
+>lpq cache time (G)</DT
><DD
><P
>This controls how long lpq info will be cached
@@ -11214,7 +11036,7 @@ CLASS="COMMAND"
><A
NAME="LPQCOMMAND"
></A
->&#62;lpq command (S)</DT
+>lpq command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -11284,9 +11106,7 @@ CLASS="PARAMETER"
></A
> parameter.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>depends on the setting of <TT
CLASS="PARAMETER"
@@ -11294,7 +11114,6 @@ CLASS="PARAMETER"
> printing</I
></TT
></I
-></SPAN
></P
><P
>Example: <B
@@ -11306,7 +11125,7 @@ CLASS="COMMAND"
><A
NAME="LPRESUMECOMMAND"
></A
->&#62;lpresume command (S)</DT
+>lpresume command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -11403,7 +11222,7 @@ CLASS="COMMAND"
><A
NAME="LPRMCOMMAND"
></A
->&#62;lprm command (S)</DT
+>lprm command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -11446,9 +11265,7 @@ CLASS="PARAMETER"
></A
> parameter.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>depends on the setting of <TT
CLASS="PARAMETER"
@@ -11457,7 +11274,6 @@ CLASS="PARAMETER"
</I
></TT
></I
-></SPAN
></P
><P
>Example 1: <B
@@ -11476,7 +11292,7 @@ CLASS="COMMAND"
><A
NAME="MACHINEPASSWORDTIMEOUT"
></A
->&#62;machine password timeout (G)</DT
+>machine password timeout (G)</DT
><DD
><P
>If a Samba server is a member of a Windows
@@ -11497,12 +11313,14 @@ CLASS="FILENAME"
will be changed, in seconds. The default is one week (expressed in
seconds), the same as a Windows NT Domain member server.</P
><P
->See also <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
+>See also <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)
+ </B
+></A
>, and the <A
HREF="#SECURITYEQUALSDOMAIN"
> security = domain</A
@@ -11517,7 +11335,7 @@ CLASS="COMMAND"
><A
NAME="MAGICOUTPUT"
></A
->&#62;magic output (S)</DT
+>magic output (S)</DT
><DD
><P
>This parameter specifies the name of a file
@@ -11544,7 +11362,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->magic output = &lt;magic script name&gt;.out
+>magic output = &#60;magic script name&#62;.out
</B
></P
><P
@@ -11557,7 +11375,7 @@ CLASS="COMMAND"
><A
NAME="MAGICSCRIPT"
></A
->&#62;magic script (S)</DT
+>magic script (S)</DT
><DD
><P
>This parameter specifies the name of a file which,
@@ -11583,36 +11401,24 @@ CLASS="PARAMETER"
>Note that some shells are unable to interpret scripts
containing CR/LF instead of CR as
the end-of-line marker. Magic scripts must be executable
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>as is</I
-></SPAN
> on the host, which for some hosts and
some shells will require filtering at the DOS end.</P
><P
->Magic scripts are <SPAN
-CLASS="emphasis"
-><I
+>Magic scripts are <I
CLASS="EMPHASIS"
>EXPERIMENTAL</I
-></SPAN
> and
- should <SPAN
-CLASS="emphasis"
-><I
+ should <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> be relied upon.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>None. Magic scripts disabled.</I
-></SPAN
></P
><P
>Example: <B
@@ -11624,11 +11430,11 @@ CLASS="COMMAND"
><A
NAME="MANGLECASE"
></A
->&#62;mangle case (S)</DT
+>mangle case (S)</DT
><DD
><P
>See the section on <A
-HREF="#AEN206"
+HREF="#AEN205"
> NAME MANGLING</A
></P
><P
@@ -11641,7 +11447,7 @@ CLASS="COMMAND"
><A
NAME="MANGLEDMAP"
></A
->&#62;mangled map (S)</DT
+>mangled map (S)</DT
><DD
><P
>This is for those who want to directly map UNIX
@@ -11679,12 +11485,9 @@ CLASS="FILENAME"
> off the ends of filenames on some CDROMs (only visible
under some UNIXes). To do this use a map of (*;1 *;).</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no mangled map</I
-></SPAN
></P
><P
>Example: <B
@@ -11696,7 +11499,7 @@ CLASS="COMMAND"
><A
NAME="MANGLEDNAMES"
></A
->&#62;mangled names (S)</DT
+>mangled names (S)</DT
><DD
><P
>This controls whether non-DOS names under UNIX
@@ -11704,7 +11507,7 @@ NAME="MANGLEDNAMES"
or whether non-DOS names should simply be ignored.</P
><P
>See the section on <A
-HREF="#AEN206"
+HREF="#AEN205"
> NAME MANGLING</A
> for details on how to control the mangling process.</P
><P
@@ -11781,7 +11584,7 @@ CLASS="COMMAND"
><A
NAME="MANGLINGMETHOD"
></A
->&#62;mangling method (G)</DT
+>mangling method (G)</DT
><DD
><P
> controls the algorithm used for the generating
@@ -11807,7 +11610,7 @@ CLASS="COMMAND"
><A
NAME="MANGLEPREFIX"
></A
->&#62;mangle prefix (G)</DT
+>mangle prefix (G)</DT
><DD
><P
> controls the number of prefix
@@ -11830,16 +11633,14 @@ CLASS="COMMAND"
><A
NAME="MANGLEDSTACK"
></A
->&#62;mangled stack (G)</DT
+>mangled stack (G)</DT
><DD
><P
>This parameter controls the number of mangled names
- that should be cached in the Samba server <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ that should be cached in the Samba server <A
+HREF="smbd.8.html"
+TARGET="_top"
+> smbd(8)</A
>.</P
><P
>This stack is a list of recently mangled base names
@@ -11869,18 +11670,15 @@ CLASS="COMMAND"
><A
NAME="MANGLINGCHAR"
></A
->&#62;mangling char (S)</DT
+>mangling char (S)</DT
><DD
><P
>This controls what character is used as
- the <SPAN
-CLASS="emphasis"
-><I
+ the <I
CLASS="EMPHASIS"
>magic</I
-></SPAN
> character in <A
-HREF="#AEN206"
+HREF="#AEN205"
>name mangling</A
>. The default is a '~'
but this may interfere with some software. Use this option to set
@@ -11900,7 +11698,7 @@ CLASS="COMMAND"
><A
NAME="MAPARCHIVE"
></A
->&#62;map archive (S)</DT
+>map archive (S)</DT
><DD
><P
>This controls whether the DOS archive attribute
@@ -11936,7 +11734,7 @@ CLASS="COMMAND"
><A
NAME="MAPHIDDEN"
></A
->&#62;map hidden (S)</DT
+>map hidden (S)</DT
><DD
><P
>This controls whether DOS style hidden files
@@ -11968,7 +11766,7 @@ CLASS="COMMAND"
><A
NAME="MAPSYSTEM"
></A
->&#62;map system (S)</DT
+>map system (S)</DT
><DD
><P
>This controls whether DOS style system files
@@ -12000,7 +11798,7 @@ CLASS="COMMAND"
><A
NAME="MAPTOGUEST"
></A
->&#62;map to guest (G)</DT
+>map to guest (G)</DT
><DD
><P
>This parameter is only useful in <A
@@ -12025,12 +11823,10 @@ CLASS="CONSTANT"
>.</P
><P
>This parameter can take three different values, which tell
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> what to do with user
login requests that don't match a valid UNIX user in some way.</P
><P
@@ -12081,12 +11877,9 @@ HREF="#GUESTACCOUNT"
will not know the reason they cannot access files they think
they should - there will have been no message given to them
that they got their password wrong. Helpdesk services will
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>hate</I
-></SPAN
> you if you set the <TT
CLASS="PARAMETER"
><I
@@ -12105,12 +11898,9 @@ CLASS="PARAMETER"
></TT
> modes other than
share. This is because in these modes the name of the resource being
- requested is <SPAN
-CLASS="emphasis"
-><I
+ requested is <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> sent to the server until after
the server has successfully authenticated the client so the server
cannot make authentication decisions at the correct time (connection
@@ -12136,7 +11926,7 @@ CLASS="COMMAND"
><A
NAME="MAXCONNECTIONS"
></A
->&#62;max connections (S)</DT
+>max connections (S)</DT
><DD
><P
>This option allows the number of simultaneous
@@ -12176,7 +11966,7 @@ CLASS="COMMAND"
><A
NAME="MAXDISKSIZE"
></A
->&#62;max disk size (G)</DT
+>max disk size (G)</DT
><DD
><P
>This option allows you to put an upper limit
@@ -12221,7 +12011,7 @@ CLASS="COMMAND"
><A
NAME="MAXLOGSIZE"
></A
->&#62;max log size (G)</DT
+>max log size (G)</DT
><DD
><P
>This option (an integer in kilobytes) specifies
@@ -12248,7 +12038,7 @@ CLASS="COMMAND"
><A
NAME="MAXMUX"
></A
->&#62;max mux (G)</DT
+>max mux (G)</DT
><DD
><P
>This option controls the maximum number of
@@ -12264,16 +12054,14 @@ CLASS="COMMAND"
><A
NAME="MAXOPENFILES"
></A
->&#62;max open files (G)</DT
+>max open files (G)</DT
><DD
><P
>This parameter limits the maximum number of
- open files that one <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ open files that one <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> file
serving process may have open for a client at any one time. The
default for this parameter is set very high (10,000) as Samba uses
@@ -12292,17 +12080,18 @@ CLASS="COMMAND"
><A
NAME="MAXPRINTJOBS"
></A
->&#62;max print jobs (S)</DT
+>max print jobs (S)</DT
><DD
><P
>This parameter limits the maximum number of
jobs allowable in a Samba printer queue at any given moment.
- If this number is exceeded, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ If this number is exceeded, <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> smbd(8)</B
+></A
> will remote "Out of Space" to the client.
See all <A
HREF="#TOTALPRINTJOBS"
@@ -12330,7 +12119,7 @@ CLASS="COMMAND"
><A
NAME="MAXPROTOCOL"
></A
->&#62;max protocol (G)</DT
+>max protocol (G)</DT
><DD
><P
>The value of the parameter (a string) is the highest
@@ -12361,12 +12150,9 @@ CLASS="CONSTANT"
><TT
CLASS="CONSTANT"
>LANMAN1</TT
->: First <SPAN
-CLASS="emphasis"
-><I
+>: First <I
CLASS="EMPHASIS"
> modern</I
-></SPAN
> version of the protocol. Long filename
support.</P
></LI
@@ -12417,7 +12203,7 @@ CLASS="COMMAND"
><A
NAME="MAXSMBDPROCESSES"
></A
->&#62;max smbd processes (G)</DT
+>max smbd processes (G)</DT
><DD
><P
>This parameter limits the maximum number of
@@ -12433,12 +12219,10 @@ CLASS="COMMAND"
as a stopgap to prevent degrading service to clients in the event
that the server has insufficient resources to handle more than this
number of connections. Remember that under normal operating
- conditions, each user will have an <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ conditions, each user will have an <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> associated with him or her
to handle connections to all shares from a given host.
</P
@@ -12457,15 +12241,13 @@ CLASS="COMMAND"
><A
NAME="MAXTTL"
></A
->&#62;max ttl (G)</DT
+>max ttl (G)</DT
><DD
><P
->This option tells <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This option tells <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
>
what the default 'time to live' of NetBIOS names should be (in seconds)
when <B
@@ -12484,15 +12266,14 @@ CLASS="COMMAND"
><A
NAME="MAXWINSTTL"
></A
->&#62;max wins ttl (G)</DT
+>max wins ttl (G)</DT
><DD
><P
->This option tells <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This option tells <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)
+ </A
> when acting as a WINS server (<A
HREF="#WINSSUPPORT"
> <TT
@@ -12529,7 +12310,7 @@ CLASS="COMMAND"
><A
NAME="MAXXMIT"
></A
->&#62;max xmit (G)</DT
+>max xmit (G)</DT
><DD
><P
>This option controls the maximum packet size
@@ -12552,7 +12333,7 @@ CLASS="COMMAND"
><A
NAME="MESSAGECOMMAND"
></A
->&#62;message command (G)</DT
+>message command (G)</DT
><DD
><P
>This specifies what command to run when the
@@ -12566,7 +12347,7 @@ NAME="MESSAGECOMMAND"
><P
><B
CLASS="COMMAND"
->message command = csh -c 'xedit %s;rm %s' &amp;</B
+>message command = csh -c 'xedit %s;rm %s' &#38;</B
>
</P
><P
@@ -12574,15 +12355,12 @@ CLASS="COMMAND"
CLASS="COMMAND"
>xedit</B
>, then
- removes it afterwards. <SPAN
-CLASS="emphasis"
-><I
+ removes it afterwards. <I
CLASS="EMPHASIS"
>NOTE THAT IT IS VERY IMPORTANT
THAT THIS COMMAND RETURN IMMEDIATELY</I
-></SPAN
>. That's why I
- have the '&amp;' on the end. If it doesn't return immediately then
+ have the '&#38;' on the end. If it doesn't return immediately then
your PCs may freeze when sending messages (they should recover
after 30 seconds, hopefully).</P
><P
@@ -12646,7 +12424,7 @@ CLASS="PARAMETER"
><B
CLASS="COMMAND"
>message command = /bin/mail -s 'message from %f on
- %m' root &lt; %s; rm %s</B
+ %m' root &#60; %s; rm %s</B
></P
><P
>If you don't have a message command then the message
@@ -12662,25 +12440,22 @@ CLASS="COMMAND"
>message command = rm %s</B
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no message command</I
-></SPAN
></P
><P
>Example: <B
CLASS="COMMAND"
>message command = csh -c 'xedit %s;
- rm %s' &amp;</B
+ rm %s' &#38;</B
></P
></DD
><DT
><A
NAME="MINPASSWDLENGTH"
></A
->&#62;min passwd length (G)</DT
+>min passwd length (G)</DT
><DD
><P
>Synonym for <A
@@ -12697,7 +12472,7 @@ CLASS="PARAMETER"
><A
NAME="MINPASSWORDLENGTH"
></A
->&#62;min password length (G)</DT
+>min password length (G)</DT
><DD
><P
>This option sets the minimum length in characters
@@ -12744,7 +12519,7 @@ CLASS="COMMAND"
><A
NAME="MINPRINTSPACE"
></A
->&#62;min print space (S)</DT
+>min print space (S)</DT
><DD
><P
>This sets the minimum amount of free disk
@@ -12777,7 +12552,7 @@ CLASS="COMMAND"
><A
NAME="MINPROTOCOL"
></A
->&#62;min protocol (G)</DT
+>min protocol (G)</DT
><DD
><P
>The value of the parameter (a string) is the
@@ -12827,15 +12602,13 @@ CLASS="COMMAND"
><A
NAME="MINWINSTTL"
></A
->&#62;min wins ttl (G)</DT
+>min wins ttl (G)</DT
><DD
><P
->This option tells <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This option tells <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
>
when acting as a WINS server (<A
HREF="#WINSSUPPORT"
@@ -12862,7 +12635,7 @@ CLASS="COMMAND"
><A
NAME="MSDFSPROXY"
></A
->&#62;msdfs proxy (S)</DT
+>msdfs proxy (S)</DT
><DD
><P
>This parameter indicates that the share is a
@@ -12895,14 +12668,14 @@ CLASS="PARAMETER"
><P
>Example: <B
CLASS="COMMAND"
->msdfs proxy = \\\\otherserver\\someshare</B
+>msdfs proxy = \otherserver\someshare</B
></P
></DD
><DT
><A
NAME="MSDFSROOT"
></A
->&#62;msdfs root (S)</DT
+>msdfs root (S)</DT
><DD
><P
>This boolean parameter is only available if
@@ -12918,15 +12691,15 @@ CLASS="CONSTANT"
Dfs links are specified in the share directory by symbolic
links of the form <TT
CLASS="FILENAME"
->msdfs:serverA\\shareA,serverB\\shareB</TT
+>msdfs:serverA\shareA,serverB\shareB</TT
>
and so on. For more information on setting up a Dfs tree
on Samba, refer to <A
-HREF="msdfs.html"
+HREF="msdfs_setup.html"
TARGET="_top"
->"Hosting a Microsoft
- Distributed File System tree on Samba"</A
-> document.</P
+>msdfs_setup.html
+ </A
+>.</P
><P
>See also <A
HREF="#HOSTMSDFS"
@@ -12948,7 +12721,7 @@ CLASS="COMMAND"
><A
NAME="NAMECACHETIMEOUT"
></A
->&#62;name cache timeout (G)</DT
+>name cache timeout (G)</DT
><DD
><P
>Specifies the number of seconds it takes before
@@ -12970,7 +12743,7 @@ CLASS="COMMAND"
><A
NAME="NAMERESOLVEORDER"
></A
->&#62;name resolve order (G)</DT
+>name resolve order (G)</DT
><DD
><P
>This option is used by the programs in the Samba
@@ -13075,7 +12848,7 @@ CLASS="COMMAND"
><A
NAME="NETBIOSALIASES"
></A
->&#62;netbios aliases (G)</DT
+>netbios aliases (G)</DT
><DD
><P
>This is a list of NetBIOS names that <A
@@ -13101,12 +12874,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>empty string (no additional names)</I
-></SPAN
></P
><P
>Example: <B
@@ -13118,7 +12888,7 @@ CLASS="COMMAND"
><A
NAME="NETBIOSNAME"
></A
->&#62;netbios name (G)</DT
+>netbios name (G)</DT
><DD
><P
>This sets the NetBIOS name by which a Samba
@@ -13139,12 +12909,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>machine DNS name</I
-></SPAN
></P
><P
>Example: <B
@@ -13156,7 +12923,7 @@ CLASS="COMMAND"
><A
NAME="NETBIOSSCOPE"
></A
->&#62;netbios scope (G)</DT
+>netbios scope (G)</DT
><DD
><P
>This sets the NetBIOS scope that Samba will
@@ -13167,7 +12934,7 @@ NAME="NETBIOSSCOPE"
><A
NAME="NISHOMEDIR"
></A
->&#62;nis homedir (G)</DT
+>nis homedir (G)</DT
><DD
><P
>Get the home share server from a NIS map. For
@@ -13211,7 +12978,7 @@ CLASS="COMMAND"
><A
NAME="NONUNIXACCOUNTRANGE"
></A
->&#62;non unix account range (G)</DT
+>non unix account range (G)</DT
><DD
><P
>The non unix account range parameter specifies
@@ -13229,7 +12996,7 @@ NAME="NONUNIXACCOUNTRANGE"
><P
>Default: <B
CLASS="COMMAND"
->non unix account range = &lt;empty string&gt;
+>non unix account range = &#60;empty string&#62;
</B
></P
><P
@@ -13242,7 +13009,7 @@ CLASS="COMMAND"
><A
NAME="NTACLSUPPORT"
></A
->&#62;nt acl support (S)</DT
+>nt acl support (S)</DT
><DD
><P
>This boolean parameter controls whether
@@ -13264,16 +13031,14 @@ CLASS="COMMAND"
><A
NAME="NTPIPESUPPORT"
></A
->&#62;nt pipe support (G)</DT
+>nt pipe support (G)</DT
><DD
><P
>This boolean parameter controls whether
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> will allow Windows NT
clients to connect to the NT SMB specific <TT
CLASS="CONSTANT"
@@ -13291,7 +13056,7 @@ CLASS="COMMAND"
><A
NAME="NTSTATUSSUPPORT"
></A
->&#62;nt status support (G)</DT
+>nt status support (G)</DT
><DD
><P
>This boolean parameter controls whether <A
@@ -13319,18 +13084,16 @@ CLASS="COMMAND"
><A
NAME="NULLPASSWORDS"
></A
->&#62;null passwords (G)</DT
+>null passwords (G)</DT
><DD
><P
>Allow or disallow client access to accounts
that have null passwords. </P
><P
->See also <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
+>See also <A
+HREF="smbpasswd.5.html"
+TARGET="_top"
+>smbpasswd (5)</A
>.</P
><P
>Default: <B
@@ -13342,7 +13105,7 @@ CLASS="COMMAND"
><A
NAME="OBEYPAMRESTRICTIONS"
></A
->&#62;obey pam restrictions (G)</DT
+>obey pam restrictions (G)</DT
><DD
><P
>When Samba 2.2 is configured to enable PAM support
@@ -13372,7 +13135,7 @@ CLASS="COMMAND"
><A
NAME="ONLYUSER"
></A
->&#62;only user (S)</DT
+>only user (S)</DT
><DD
><P
>This is a boolean option that controls whether
@@ -13432,7 +13195,7 @@ CLASS="COMMAND"
><A
NAME="ONLYGUEST"
></A
->&#62;only guest (S)</DT
+>only guest (S)</DT
><DD
><P
>A synonym for <A
@@ -13449,7 +13212,7 @@ CLASS="PARAMETER"
><A
NAME="OPLOCKBREAKWAITTIME"
></A
->&#62;oplock break wait time (G)</DT
+>oplock break wait time (G)</DT
><DD
><P
>This is a tuning parameter added due to bugs in
@@ -13460,13 +13223,10 @@ NAME="OPLOCKBREAKWAITTIME"
is the amount of time Samba will wait before sending an oplock break
request to such (broken) clients.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ
AND UNDERSTOOD THE SAMBA OPLOCK CODE</I
-></SPAN
>.</P
><P
>Default: <B
@@ -13478,15 +13238,12 @@ CLASS="COMMAND"
><A
NAME="OPLOCKCONTENTIONLIMIT"
></A
->&#62;oplock contention limit (S)</DT
+>oplock contention limit (S)</DT
><DD
><P
->This is a <SPAN
-CLASS="emphasis"
-><I
+>This is a <I
CLASS="EMPHASIS"
>very</I
-></SPAN
> advanced
<A
HREF="smbd.8.html"
@@ -13496,27 +13253,23 @@ TARGET="_top"
improve the efficiency of the granting of oplocks under multiple
client contention for the same file.</P
><P
->In brief it specifies a number, which causes <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->not to grant an oplock even when requested
- if the approximate number of clients contending for an oplock on the same file goes over this
+>In brief it specifies a number, which causes <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
+> not to
+ grant an oplock even when requested if the approximate number of
+ clients contending for an oplock on the same file goes over this
limit. This causes <B
CLASS="COMMAND"
>smbd</B
> to behave in a similar
way to Windows NT.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ
AND UNDERSTOOD THE SAMBA OPLOCK CODE</I
-></SPAN
>.</P
><P
>Default: <B
@@ -13528,7 +13281,7 @@ CLASS="COMMAND"
><A
NAME="OPLOCKS"
></A
->&#62;oplocks (S)</DT
+>oplocks (S)</DT
><DD
><P
>This boolean option tells <B
@@ -13598,16 +13351,13 @@ CLASS="COMMAND"
><A
NAME="NTLMAUTH"
></A
->&#62;ntlm auth (G)</DT
+>ntlm auth (G)</DT
><DD
><P
->This parameter determines
- whether or not <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This parameter determines whether or not <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> will
attempt to authenticate users using the NTLM password hash.
If disabled, only the lanman password hashes will be used.
@@ -13616,8 +13366,7 @@ CLASS="REFENTRYTITLE"
>Please note that at least this option or <B
CLASS="COMMAND"
>lanman auth</B
-> should
- be enabled in order to be able to log in.
+> should be enabled in order to be able to log in.
</P
><P
>Default : <B
@@ -13629,17 +13378,15 @@ CLASS="COMMAND"
><A
NAME="OSLEVEL"
></A
->&#62;os level (G)</DT
+>os level (G)</DT
><DD
><P
>This integer value controls what level Samba
advertises itself as for browse elections. The value of this
- parameter determines whether <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+ parameter determines whether <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
>
has a chance of becoming a local master browser for the <TT
CLASS="PARAMETER"
@@ -13648,12 +13395,9 @@ CLASS="PARAMETER"
></TT
> in the local broadcast area.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note :</I
-></SPAN
>By default, Samba will win
a local master browsing election over all Microsoft operating
systems except a Windows NT 4.0/2000 Domain Controller. This
@@ -13682,15 +13426,15 @@ CLASS="COMMAND"
><A
NAME="OS2DRIVERMAP"
></A
->&#62;os2 driver map (G)</DT
+>os2 driver map (G)</DT
><DD
><P
>The parameter is used to define the absolute
path to a file containing a mapping of Windows NT printer driver
names to OS/2 printer driver names. The format is:</P
><P
->&lt;nt driver name&gt; = &lt;os2 driver
- name&gt;.&lt;device name&gt;</P
+>&#60;nt driver name&#62; = &#60;os2 driver
+ name&#62;.&#60;device name&#62;</P
><P
>For example, a valid entry using the HP LaserJet 5
printer driver would appear as <B
@@ -13701,16 +13445,21 @@ CLASS="COMMAND"
><P
>The need for the file is due to the printer driver namespace
problem described in the <A
-HREF="printing.html"
+HREF="printer_driver2.html"
TARGET="_top"
>Samba
Printing HOWTO</A
>. For more details on OS/2 clients, please
- refer to the OS2-Client-HOWTO containing in the Samba documentation.</P
+ refer to the <A
+HREF="OS2-Client-HOWTO.html"
+TARGET="_top"
+>OS2-Client-HOWTO
+ </A
+> containing in the Samba documentation.</P
><P
>Default: <B
CLASS="COMMAND"
->os2 driver map = &lt;empty string&gt;
+>os2 driver map = &#60;empty string&#62;
</B
></P
></DD
@@ -13718,7 +13467,7 @@ CLASS="COMMAND"
><A
NAME="PAMPASSWORDCHANGE"
></A
->&#62;pam password change (G)</DT
+>pam password change (G)</DT
><DD
><P
>With the addition of better PAM support in Samba 2.2,
@@ -13756,28 +13505,25 @@ CLASS="COMMAND"
><A
NAME="PANICACTION"
></A
->&#62;panic action (G)</DT
+>panic action (G)</DT
><DD
><P
>This is a Samba developer option that allows a
- system command to be called when either <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> or <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> crashes. This is usually used to
- draw attention to the fact that a problem occurred.</P
+ system command to be called when either <A
+HREF="smbd.8.html"
+TARGET="_top"
+> smbd(8)</A
+> or <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
+>
+ crashes. This is usually used to draw attention to the fact that
+ a problem occurred.</P
><P
>Default: <B
CLASS="COMMAND"
->panic action = &lt;empty string&gt;</B
+>panic action = &#60;empty string&#62;</B
></P
><P
>Example: <B
@@ -13789,19 +13535,15 @@ CLASS="COMMAND"
><A
NAME="PARANOIDSERVERSECURITY"
></A
->&#62;paranoid server security (G)</DT
+>paranoid server security (G)</DT
><DD
><P
>Some version of NT 4.x allow non-guest
users with a bad passowrd. When this option is enabled, samba will not
use a broken NT 4.x server as password server, but instead complain
- to the logs and exit.
+ to the logs and exit.
</P
><P
->Disabling this option prevents Samba from making
- this check, which involves deliberatly attempting a
- bad logon to the remote server.</P
-><P
>Default: <B
CLASS="COMMAND"
>paranoid server security = yes</B
@@ -13811,7 +13553,7 @@ CLASS="COMMAND"
><A
NAME="PASSDBBACKEND"
></A
->&#62;passdb backend (G)</DT
+>passdb backend (G)</DT
><DD
><P
>This option allows the administrator to chose which backends to retrieve and store passwords with. This allows (for example) both
@@ -14023,30 +13765,23 @@ CLASS="COMMAND"
><A
NAME="PASSWDCHAT"
></A
->&#62;passwd chat (G)</DT
+>passwd chat (G)</DT
><DD
><P
->This string controls the <SPAN
-CLASS="emphasis"
-><I
+>This string controls the <I
CLASS="EMPHASIS"
>"chat"</I
-></SPAN
>
- conversation that takes places between <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ conversation that takes places between <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> and the local password changing
program to change the user's password. The string describes a
- sequence of response-receive pairs that <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ sequence of response-receive pairs that <A
+HREF="smbd.8.html"
+TARGET="_top"
+> smbd(8)</A
> uses to determine what to send to the
<A
HREF="#PASSWDPROGRAM"
@@ -14077,12 +13812,9 @@ CLASS="PARAMETER"
CLASS="CONSTANT"
>yes</TT
>. This
- sequence is then called <SPAN
-CLASS="emphasis"
-><I
+ sequence is then called <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
> when the SMB password
in the smbpasswd file is being changed, without access to the old
password cleartext. This means that root must be able to reset the user's password
@@ -14103,16 +13835,16 @@ CLASS="PARAMETER"
for the new password. The chat sequence can also contain the standard
macros <TT
CLASS="CONSTANT"
->\\n</TT
+>\n</TT
>, <TT
CLASS="CONSTANT"
->\\r</TT
+>\r</TT
>, <TT
CLASS="CONSTANT"
-> \\t</TT
+> \t</TT
> and <TT
CLASS="CONSTANT"
->\\s</TT
+>\s</TT
> to give line-feed,
carriage-return, tab and space. The chat sequence string can also contain
a '*' which matches any sequence of characters.
@@ -14177,14 +13909,14 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->passwd chat = *new*password* %n\\n
- *new*password* %n\\n *changed*</B
+>passwd chat = *new*password* %n\n
+ *new*password* %n\n *changed*</B
></P
><P
>Example: <B
CLASS="COMMAND"
->passwd chat = "*Enter OLD password*" %o\\n
- "*Enter NEW password*" %n\\n "*Reenter NEW password*" %n\\n "*Password
+>passwd chat = "*Enter OLD password*" %o\n
+ "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password
changed*"</B
></P
></DD
@@ -14192,24 +13924,19 @@ CLASS="COMMAND"
><A
NAME="PASSWDCHATDEBUG"
></A
->&#62;passwd chat debug (G)</DT
+>passwd chat debug (G)</DT
><DD
><P
>This boolean specifies if the passwd chat script
- parameter is run in <SPAN
-CLASS="emphasis"
-><I
+ parameter is run in <I
CLASS="EMPHASIS"
>debug</I
-></SPAN
> mode. In this mode the
strings passed to and received from the passwd chat are printed
- in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ in the <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> log with a
<A
HREF="#DEBUGLEVEL"
@@ -14287,7 +14014,7 @@ CLASS="COMMAND"
><A
NAME="PASSWDPROGRAM"
></A
->&#62;passwd program (G)</DT
+>passwd program (G)</DT
><DD
><P
>The name of a program that can be used to set
@@ -14300,24 +14027,18 @@ CLASS="PARAMETER"
will be replaced with the user name. The user name is checked for
existence before calling the password changing program.</P
><P
->Also note that many passwd programs insist in <SPAN
-CLASS="emphasis"
-><I
+>Also note that many passwd programs insist in <I
CLASS="EMPHASIS"
>reasonable
</I
-></SPAN
> passwords, such as a minimum length, or the inclusion
of mixed case chars and digits. This can pose a problem as some clients
(such as Windows for Workgroups) uppercase the password before sending
it.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that if the <TT
CLASS="PARAMETER"
><I
@@ -14328,12 +14049,9 @@ CLASS="PARAMETER"
CLASS="CONSTANT"
>yes
</TT
-> then this program is called <SPAN
-CLASS="emphasis"
-><I
+> then this program is called <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
>
before the SMB password in the <A
HREF="smbpasswd.5.html"
@@ -14353,19 +14071,13 @@ CLASS="PARAMETER"
>unix password sync</I
></TT
> parameter
- is set this parameter <SPAN
-CLASS="emphasis"
-><I
+ is set this parameter <I
CLASS="EMPHASIS"
>MUST USE ABSOLUTE PATHS</I
-></SPAN
>
- for <SPAN
-CLASS="emphasis"
-><I
+ for <I
CLASS="EMPHASIS"
>ALL</I
-></SPAN
> programs called, and must be examined
for security implications. Note that by default <TT
CLASS="PARAMETER"
@@ -14404,7 +14116,7 @@ CLASS="COMMAND"
><A
NAME="PASSWORDLEVEL"
></A
->&#62;password level (G)</DT
+>password level (G)</DT
><DD
><P
>Some client/server combinations have difficulty
@@ -14464,7 +14176,7 @@ CLASS="COMMAND"
><A
NAME="PASSWORDSERVER"
></A
->&#62;password server (G)</DT
+>password server (G)</DT
><DD
><P
>By specifying the name of another SMB server (such
@@ -14504,21 +14216,15 @@ CLASS="PARAMETER"
the "LM1.2X002" or the "NT LM 0.12" protocol, and it must be in
user level security mode.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE:</I
-></SPAN
> Using a password server
means your UNIX box (running Samba) is only as secure as your
- password server. <SPAN
-CLASS="emphasis"
-><I
+ password server. <I
CLASS="EMPHASIS"
>DO NOT CHOOSE A PASSWORD SERVER THAT
YOU DON'T COMPLETELY TRUST</I
-></SPAN
>.</P
><P
>Never point a Samba server at itself for password
@@ -14575,7 +14281,7 @@ CLASS="PARAMETER"
Primary or Backup Domain controllers to authenticate against by
doing a query for the name <TT
CLASS="CONSTANT"
->WORKGROUP&lt;1C&gt;</TT
+>WORKGROUP&#60;1C&#62;</TT
>
and then contacting each server returned in the list of IP
addresses from the name resolution source. </P
@@ -14653,7 +14359,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->password server = &lt;empty string&gt;</B
+>password server = &#60;empty string&#62;</B
>
</P
><P
@@ -14672,7 +14378,7 @@ CLASS="COMMAND"
><A
NAME="PATH"
></A
->&#62;path (S)</DT
+>path (S)</DT
><DD
><P
>This parameter specifies a directory to which
@@ -14713,12 +14419,9 @@ CLASS="PARAMETER"
></A
> if one was specified.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none</I
-></SPAN
></P
><P
>Example: <B
@@ -14730,7 +14433,7 @@ CLASS="COMMAND"
><A
NAME="PIDDIRECTORY"
></A
->&#62;pid directory (G)</DT
+>pid directory (G)</DT
><DD
><P
>This option specifies the directory where pid
@@ -14751,15 +14454,16 @@ CLASS="COMMAND"
><A
NAME="POSIXLOCKING"
></A
->&#62;posix locking (S)</DT
+>posix locking (S)</DT
><DD
><P
->The <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>The <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
>
daemon maintains an database of file locks obtained by SMB clients.
The default behavior is to map this internal database to POSIX
@@ -14777,7 +14481,7 @@ CLASS="COMMAND"
><A
NAME="POSTEXEC"
></A
->&#62;postexec (S)</DT
+>postexec (S)</DT
><DD
><P
>This option specifies a command to be run
@@ -14804,26 +14508,23 @@ CLASS="PARAMETER"
</A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (no command executed)</I
-></SPAN
>
</P
><P
>Example: <B
CLASS="COMMAND"
>postexec = echo \"%u disconnected from %S
- from %m (%I)\" &gt;&gt; /tmp/log</B
+ from %m (%I)\" &#62;&#62; /tmp/log</B
></P
></DD
><DT
><A
NAME="POSTSCRIPT"
></A
->&#62;postscript (S)</DT
+>postscript (S)</DT
><DD
><P
>This parameter forces a printer to interpret
@@ -14846,7 +14547,7 @@ CLASS="COMMAND"
><A
NAME="PREEXEC"
></A
->&#62;preexec (S)</DT
+>preexec (S)</DT
><DD
><P
>This option specifies a command to be run whenever
@@ -14859,7 +14560,7 @@ NAME="PREEXEC"
><B
CLASS="COMMAND"
>preexec = csh -c 'echo \"Welcome to %S!\" |
- /usr/local/samba/bin/smbclient -M %m -I %I' &amp; </B
+ /usr/local/samba/bin/smbclient -M %m -I %I' &#38; </B
></P
><P
>Of course, this could get annoying after a while :-)</P
@@ -14884,25 +14585,22 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (no command executed)</I
-></SPAN
></P
><P
>Example: <B
CLASS="COMMAND"
>preexec = echo \"%u connected to %S from %m
- (%I)\" &gt;&gt; /tmp/log</B
+ (%I)\" &#62;&#62; /tmp/log</B
></P
></DD
><DT
><A
NAME="PREEXECCLOSE"
></A
->&#62;preexec close (S)</DT
+>preexec close (S)</DT
><DD
><P
>This boolean option controls whether a non-zero
@@ -14926,7 +14624,7 @@ CLASS="COMMAND"
><A
NAME="PREFERREDMASTER"
></A
->&#62;preferred master (G)</DT
+>preferred master (G)</DT
><DD
><P
>This boolean parameter controls if <A
@@ -14988,7 +14686,7 @@ CLASS="COMMAND"
><A
NAME="PREFEREDMASTER"
></A
->&#62;prefered master (G)</DT
+>prefered master (G)</DT
><DD
><P
>Synonym for <A
@@ -15005,7 +14703,7 @@ CLASS="PARAMETER"
><A
NAME="PRELOAD"
></A
->&#62;preload (G)</DT
+>preload (G)</DT
><DD
><P
>This is a list of services that you want to be
@@ -15024,12 +14722,9 @@ CLASS="PARAMETER"
></A
> option is easier.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no preloaded services</I
-></SPAN
></P
><P
>Example: <B
@@ -15041,7 +14736,7 @@ CLASS="COMMAND"
><A
NAME="PRESERVECASE"
></A
->&#62;preserve case (S)</DT
+>preserve case (S)</DT
><DD
><P
> This controls if new filenames are created
@@ -15063,7 +14758,7 @@ CLASS="COMMAND"
></P
><P
>See the section on <A
-HREF="#AEN206"
+HREF="#AEN205"
>NAME
MANGLING</A
> for a fuller discussion.</P
@@ -15072,7 +14767,7 @@ HREF="#AEN206"
><A
NAME="PRINTCOMMAND"
></A
->&#62;print command (S)</DT
+>print command (S)</DT
><DD
><P
>After a print job has finished spooling to
@@ -15105,12 +14800,9 @@ CLASS="COMMAND"
>%z - the size of the spooled
print job (in bytes)</P
><P
->The print command <SPAN
-CLASS="emphasis"
-><I
+>The print command <I
CLASS="EMPHASIS"
>MUST</I
-></SPAN
> contain at least
one occurrence of <TT
CLASS="PARAMETER"
@@ -15168,7 +14860,7 @@ CLASS="PARAMETER"
><P
><B
CLASS="COMMAND"
->print command = echo Printing %s &gt;&gt;
+>print command = echo Printing %s &#62;&#62;
/tmp/print.log; lpr -P %p %s; rm %s</B
></P
><P
@@ -15244,7 +14936,7 @@ CLASS="COMMAND"
><A
NAME="PRINTOK"
></A
->&#62;print ok (S)</DT
+>print ok (S)</DT
><DD
><P
>Synonym for <A
@@ -15261,7 +14953,7 @@ CLASS="PARAMETER"
><A
NAME="PRINTABLE"
></A
->&#62;printable (S)</DT
+>printable (S)</DT
><DD
><P
>If this parameter is <TT
@@ -15294,7 +14986,7 @@ CLASS="COMMAND"
><A
NAME="PRINTCAP"
></A
->&#62;printcap (G)</DT
+>printcap (G)</DT
><DD
><P
>Synonym for <A
@@ -15311,7 +15003,7 @@ CLASS="PARAMETER"
><A
NAME="PRINTCAPNAME"
></A
->&#62;printcap name (G)</DT
+>printcap name (G)</DT
><DD
><P
>This parameter may be used to override the
@@ -15319,7 +15011,7 @@ NAME="PRINTCAPNAME"
CLASS="FILENAME"
> /etc/printcap</TT
>). See the discussion of the <A
-HREF="#AEN80"
+HREF="#AEN79"
>[printers]</A
> section above for reasons
why you might want to do this.</P
@@ -15368,25 +15060,32 @@ CLASS="COMMAND"
><P
>A minimal printcap file would look something like this:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
->print1|My Printer 1
-print2|My Printer 2
-print3|My Printer 3
-print4|My Printer 4
-print5|My Printer 5</PRE
+> print1|My Printer 1
+ print2|My Printer 2
+ print3|My Printer 3
+ print4|My Printer 4
+ print5|My Printer 5
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>where the '|' separates aliases of a printer. The fact
that the second alias has a space in it gives a hint to Samba
that it's a comment.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE</I
-></SPAN
>: Under AIX the default printcap
name is <TT
CLASS="FILENAME"
@@ -15415,7 +15114,7 @@ CLASS="COMMAND"
><A
NAME="PRINTERADMIN"
></A
->&#62;printer admin (S)</DT
+>printer admin (S)</DT
><DD
><P
>This is a list of users that can do anything to
@@ -15425,7 +15124,7 @@ NAME="PRINTERADMIN"
><P
>Default: <B
CLASS="COMMAND"
->printer admin = &lt;empty string&gt;</B
+>printer admin = &#60;empty string&#62;</B
>
</P
><P
@@ -15438,20 +15137,17 @@ CLASS="COMMAND"
><A
NAME="PRINTERDRIVER"
></A
->&#62;printer driver (S)</DT
+>printer driver (S)</DT
><DD
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note :</I
-></SPAN
>This is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
the <A
-HREF="printing.html"
+HREF="printer_driver2.html"
TARGET="_top"
>Samba 2.2. Printing
HOWTO</A
@@ -15500,20 +15196,17 @@ CLASS="COMMAND"
><A
NAME="PRINTERDRIVERFILE"
></A
->&#62;printer driver file (G)</DT
+>printer driver file (G)</DT
><DD
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note :</I
-></SPAN
>This is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
the <A
-HREF="printing.html"
+HREF="printer_driver2.html"
TARGET="_top"
>Samba 2.2. Printing
HOWTO</A
@@ -15561,12 +15254,9 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>None (set in compile).</I
-></SPAN
></P
><P
>Example: <B
@@ -15579,20 +15269,17 @@ CLASS="COMMAND"
><A
NAME="PRINTERDRIVERLOCATION"
></A
->&#62;printer driver location (S)</DT
+>printer driver location (S)</DT
><DD
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note :</I
-></SPAN
>This is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
the <A
-HREF="printing.html"
+HREF="printer_driver2.html"
TARGET="_top"
>Samba 2.2. Printing
HOWTO</A
@@ -15646,7 +15333,7 @@ CLASS="COMMAND"
><A
NAME="PRINTERNAME"
></A
->&#62;printer name (S)</DT
+>printer name (S)</DT
><DD
><P
>This parameter specifies the name of the printer
@@ -15656,16 +15343,13 @@ NAME="PRINTERNAME"
name given will be used for any printable service that does
not have its own printer name specified.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>none (but may be <TT
CLASS="CONSTANT"
>lp</TT
>
on many systems)</I
-></SPAN
></P
><P
>Example: <B
@@ -15677,7 +15361,7 @@ CLASS="COMMAND"
><A
NAME="PRINTER"
></A
->&#62;printer (S)</DT
+>printer (S)</DT
><DD
><P
>Synonym for <A
@@ -15694,7 +15378,7 @@ CLASS="PARAMETER"
><A
NAME="PRINTING"
></A
->&#62;printing (S)</DT
+>printing (S)</DT
><DD
><P
>This parameters controls how printer status
@@ -15774,7 +15458,7 @@ TARGET="_top"
>This option can be set on a per printer basis</P
><P
>See also the discussion in the <A
-HREF="#AEN80"
+HREF="#AEN79"
> [printers]</A
> section.</P
></DD
@@ -15782,7 +15466,7 @@ HREF="#AEN80"
><A
NAME="PRIVATEDIR"
></A
->&#62;private dir (G)</DT
+>private dir (G)</DT
><DD
><P
>This parameters defines the directory
@@ -15805,7 +15489,7 @@ CLASS="COMMAND"
><A
NAME="PROTOCOL"
></A
->&#62;protocol (G)</DT
+>protocol (G)</DT
><DD
><P
>Synonym for <A
@@ -15822,7 +15506,7 @@ CLASS="PARAMETER"
><A
NAME="PUBLIC"
></A
->&#62;public (S)</DT
+>public (S)</DT
><DD
><P
>Synonym for <A
@@ -15840,7 +15524,7 @@ CLASS="PARAMETER"
><A
NAME="QUEUEPAUSECOMMAND"
></A
->&#62;queuepause command (S)</DT
+>queuepause command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -15867,9 +15551,7 @@ CLASS="PARAMETER"
path in the command as the PATH may not be available to the
server.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>depends on the setting of <TT
CLASS="PARAMETER"
@@ -15878,7 +15560,6 @@ CLASS="PARAMETER"
</I
></TT
></I
-></SPAN
></P
><P
>Example: <B
@@ -15890,7 +15571,7 @@ CLASS="COMMAND"
><A
NAME="QUEUERESUMECOMMAND"
></A
->&#62;queueresume command (S)</DT
+>queueresume command (S)</DT
><DD
><P
>This parameter specifies the command to be
@@ -15927,9 +15608,7 @@ CLASS="PARAMETER"
path in the command as the PATH may not be available to the
server.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>depends on the setting of <A
HREF="#PRINTING"
@@ -15940,7 +15619,6 @@ CLASS="PARAMETER"
></TT
></A
></I
-></SPAN
>
</P
><P
@@ -15954,7 +15632,7 @@ CLASS="COMMAND"
><A
NAME="READBMPX"
></A
->&#62;read bmpx (G)</DT
+>read bmpx (G)</DT
><DD
><P
>This boolean parameter controls whether <A
@@ -15978,7 +15656,7 @@ CLASS="COMMAND"
><A
NAME="READLIST"
></A
->&#62;read list (S)</DT
+>read list (S)</DT
><DD
><P
>This is a list of users that are given read-only
@@ -16024,7 +15702,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->read list = &lt;empty string&gt;</B
+>read list = &#60;empty string&#62;</B
></P
><P
>Example: <B
@@ -16036,7 +15714,7 @@ CLASS="COMMAND"
><A
NAME="READONLY"
></A
->&#62;read only (S)</DT
+>read only (S)</DT
><DD
><P
>An inverted synonym is <A
@@ -16060,12 +15738,9 @@ CLASS="CONSTANT"
CLASS="COMMAND"
>printable = yes</B
>)
- will <SPAN
-CLASS="emphasis"
-><I
+ will <I
CLASS="EMPHASIS"
>ALWAYS</I
-></SPAN
> allow writing to the directory
(user privileges permitting), but only via spooling operations.</P
><P
@@ -16078,7 +15753,7 @@ CLASS="COMMAND"
><A
NAME="READRAW"
></A
->&#62;read raw (G)</DT
+>read raw (G)</DT
><DD
><P
>This parameter controls whether or not the server
@@ -16113,7 +15788,7 @@ CLASS="COMMAND"
><A
NAME="READSIZE"
></A
->&#62;read size (G)</DT
+>read size (G)</DT
><DD
><P
>The option <TT
@@ -16154,7 +15829,7 @@ CLASS="COMMAND"
><A
NAME="REALM"
></A
->&#62;realm (G)</DT
+>realm (G)</DT
><DD
><P
> This option specifies the kerberos realm to use. The realm is
@@ -16179,7 +15854,7 @@ CLASS="COMMAND"
><A
NAME="REMOTEANNOUNCE"
></A
->&#62;remote announce (G)</DT
+>remote announce (G)</DT
><DD
><P
>This option allows you to setup <A
@@ -16223,10 +15898,9 @@ CLASS="PARAMETER"
addresses of the remote networks, but can also be the IP addresses
of known browse masters if your network config is that stable.</P
><P
->See the documentation file <A
-HREF="improved-browsing.html"
-TARGET="_top"
->BROWSING</A
+>See the documentation file <TT
+CLASS="FILENAME"
+>BROWSING.txt</TT
>
in the <TT
CLASS="FILENAME"
@@ -16235,7 +15909,7 @@ CLASS="FILENAME"
><P
>Default: <B
CLASS="COMMAND"
->remote announce = &lt;empty string&gt;
+>remote announce = &#60;empty string&#62;
</B
></P
></DD
@@ -16243,7 +15917,7 @@ CLASS="COMMAND"
><A
NAME="REMOTEBROWSESYNC"
></A
->&#62;remote browse sync (G)</DT
+>remote browse sync (G)</DT
><DD
><P
>This option allows you to setup <A
@@ -16285,7 +15959,7 @@ CLASS="COMMAND"
><P
>Default: <B
CLASS="COMMAND"
->remote browse sync = &lt;empty string&gt;
+>remote browse sync = &#60;empty string&#62;
</B
></P
></DD
@@ -16293,7 +15967,7 @@ CLASS="COMMAND"
><A
NAME="RESTRICTANONYMOUS"
></A
->&#62;restrict anonymous (G)</DT
+>restrict anonymous (G)</DT
><DD
><P
>This is a integer parameter, and
@@ -16313,7 +15987,7 @@ CLASS="COMMAND"
><A
NAME="ROOT"
></A
->&#62;root (G)</DT
+>root (G)</DT
><DD
><P
>Synonym for <A
@@ -16330,7 +16004,7 @@ CLASS="PARAMETER"
><A
NAME="ROOTDIR"
></A
->&#62;root dir (G)</DT
+>root dir (G)</DT
><DD
><P
>Synonym for <A
@@ -16347,7 +16021,7 @@ CLASS="PARAMETER"
><A
NAME="ROOTDIRECTORY"
></A
->&#62;root directory (G)</DT
+>root directory (G)</DT
><DD
><P
>The server will <B
@@ -16384,12 +16058,9 @@ CLASS="PARAMETER"
>root directory</I
></TT
>
- option, <SPAN
-CLASS="emphasis"
-><I
+ option, <I
CLASS="EMPHASIS"
>including</I
-></SPAN
> some files needed for
complete operation of the server. To maintain full operability
of the server you will need to mirror some system files
@@ -16421,7 +16092,7 @@ CLASS="COMMAND"
><A
NAME="ROOTPOSTEXEC"
></A
->&#62;root postexec (S)</DT
+>root postexec (S)</DT
><DD
><P
>This is the same as the <TT
@@ -16446,7 +16117,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->root postexec = &lt;empty string&gt;
+>root postexec = &#60;empty string&#62;
</B
></P
></DD
@@ -16454,7 +16125,7 @@ CLASS="COMMAND"
><A
NAME="ROOTPREEXEC"
></A
->&#62;root preexec (S)</DT
+>root preexec (S)</DT
><DD
><P
>This is the same as the <TT
@@ -16487,7 +16158,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->root preexec = &lt;empty string&gt;
+>root preexec = &#60;empty string&#62;
</B
></P
></DD
@@ -16495,7 +16166,7 @@ CLASS="COMMAND"
><A
NAME="ROOTPREEXECCLOSE"
></A
->&#62;root preexec close (S)</DT
+>root preexec close (S)</DT
><DD
><P
>This is the same as the <TT
@@ -16533,7 +16204,7 @@ CLASS="COMMAND"
><A
NAME="SECURITY"
></A
->&#62;security (G)</DT
+>security (G)</DT
><DD
><P
>This option affects how clients respond to
@@ -16543,12 +16214,11 @@ CLASS="FILENAME"
> file.</P
><P
>The option sets the "security mode bit" in replies to
- protocol negotiations with <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ protocol negotiations with <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)
+ </A
> to turn share level security on or off. Clients decide
based on this bit whether (and how) to transfer user and password
information to the server.</P
@@ -16623,12 +16293,9 @@ CLASS="PARAMETER"
>It is possible to use <B
CLASS="COMMAND"
>smbd</B
-> in a <SPAN
-CLASS="emphasis"
-><I
+> in a <I
CLASS="EMPHASIS"
> hybrid mode</I
-></SPAN
> where it is offers both user and share
level security under different <A
HREF="#NETBIOSALIASES"
@@ -16645,13 +16312,10 @@ CLASS="PARAMETER"
><A
NAME="SECURITYEQUALSSHARE"
></A
->&#62;<SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>SECURITY = SHARE
</I
-></SPAN
></P
><P
>When clients connect to a share level security server they
@@ -16669,12 +16333,9 @@ CLASS="COMMAND"
>Note that <B
CLASS="COMMAND"
>smbd</B
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>ALWAYS</I
-></SPAN
>
uses a valid UNIX user to act on behalf of the client, even in
<B
@@ -16734,13 +16395,10 @@ CLASS="PARAMETER"
></LI
><LI
><P
->If the client did a previous <SPAN
-CLASS="emphasis"
-><I
+>If the client did a previous <I
CLASS="EMPHASIS"
>logon
</I
-></SPAN
> request (the SessionSetup SMB call) then the
username sent in this SMB will be added as a potential username.
</P
@@ -16795,34 +16453,28 @@ CLASS="PARAMETER"
>, then this
guest user will be used, otherwise access is denied.</P
><P
->Note that it can be <SPAN
-CLASS="emphasis"
-><I
+>Note that it can be <I
CLASS="EMPHASIS"
>very</I
-></SPAN
> confusing
in share-level security as to which UNIX username will eventually
be used in granting access.</P
><P
>See also the section <A
-HREF="#AEN239"
+HREF="#AEN238"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
><A
NAME="SECURITYEQUALSUSER"
></A
->&#62;<SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>SECURITY = USER
</I
-></SPAN
></P
><P
->This is the default security setting in Samba 3.0.
+>This is the default security setting in Samba 2.2.
With user-level security a client must first "log-on" with a
valid username and password (which can be mapped using the <A
HREF="#USERNAMEMAP"
@@ -16862,19 +16514,13 @@ CLASS="PARAMETER"
may change the UNIX user to use on this connection, but only after
the user has been successfully authenticated.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that the name of the resource being
- requested is <SPAN
-CLASS="emphasis"
-><I
+ requested is <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> sent to the server until after
the server has successfully authenticated the client. This is why
guest shares don't work in user level security without allowing
@@ -16899,87 +16545,62 @@ CLASS="PARAMETER"
> parameter for details on doing this.</P
><P
>See also the section <A
-HREF="#AEN239"
+HREF="#AEN238"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
><A
-NAME="SECURITYEQUALSDOMAIN"
+NAME="SECURITYEQUALSSERVER"
></A
->&#62;<SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
->SECURITY = DOMAIN
-
+>SECURITY = SERVER
</I
-></SPAN
></P
><P
->This mode will only work correctly if <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->net</SPAN
->(8)</SPAN
-> has been used to add this
- machine into a Windows NT Domain. It expects the <A
-HREF="#ENCRYPTPASSWORDS"
-><TT
-CLASS="PARAMETER"
-><I
->encrypted passwords</I
-></TT
->
- </A
-> parameter to be set to <TT
-CLASS="CONSTANT"
->yes</TT
->. In this
- mode Samba will try to validate the username/password by passing
- it to a Windows NT Primary or Backup Domain Controller, in exactly
- the same way that a Windows NT Server would do.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note</I
-></SPAN
-> that a valid UNIX user must still
- exist as well as the account on the Domain Controller to allow
- Samba to have a valid UNIX account to map file access to.</P
+>In this mode Samba will try to validate the username/password
+ by passing it to another SMB server, such as an NT box. If this
+ fails it will revert to <B
+CLASS="COMMAND"
+>security = user</B
+>, but note
+ that if encrypted passwords have been negotiated then Samba cannot
+ revert back to checking the UNIX password file, it must have a valid
+ <TT
+CLASS="FILENAME"
+>smbpasswd</TT
+> file to check users against. See the
+ documentation file in the <TT
+CLASS="FILENAME"
+>docs/</TT
+> directory
+ <TT
+CLASS="FILENAME"
+>ENCRYPTION.txt</TT
+> for details on how to set this
+ up.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
-> that from the client's point
- of view <B
+> that from the client's point of
+ view <B
CLASS="COMMAND"
->security = domain</B
+>security = server</B
> is the same as <B
CLASS="COMMAND"
->security = user
- </B
->. It only affects how the server deals with the authentication,
- it does not in any way affect what the client sees.</P
+> security = user</B
+>. It only affects how the server deals
+ with the authentication, it does not in any way affect what the
+ client sees.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that the name of the resource being
- requested is <SPAN
-CLASS="emphasis"
-><I
+ requested is <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> sent to the server until after
the server has successfully authenticated the client. This is why
guest shares don't work in user level security without allowing
@@ -17004,7 +16625,7 @@ CLASS="PARAMETER"
> parameter for details on doing this.</P
><P
>See also the section <A
-HREF="#AEN239"
+HREF="#AEN238"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -17029,24 +16650,20 @@ CLASS="PARAMETER"
> parameter.</P
><P
><A
-NAME="SECURITYEQUALSSERVER"
+NAME="SECURITYEQUALSDOMAIN"
></A
->&#62;<SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
->SECURITY = SERVER
+>SECURITY = DOMAIN
</I
-></SPAN
></P
><P
->In this mode Samba will try to validate the username/password
- by passing it to another SMB server, such as an NT box. If this
- fails it will revert to <B
-CLASS="COMMAND"
->security =
- user</B
->. It expects the <A
+>This mode will only work correctly if <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+>smbpasswd(8)</A
+> has been used to add this
+ machine into a Windows NT Domain. It expects the <A
HREF="#ENCRYPTPASSWORDS"
><TT
CLASS="PARAMETER"
@@ -17055,76 +16672,42 @@ CLASS="PARAMETER"
></TT
>
</A
-> parameter to be set to
- <TT
+> parameter to be set to <TT
CLASS="CONSTANT"
>yes</TT
->, unless the remote server
- does not support them. However note
- that if encrypted passwords have been negotiated then Samba cannot
- revert back to checking the UNIX password file, it must have a valid
- <TT
-CLASS="FILENAME"
->smbpasswd</TT
-> file to check users against. See the
- documentation file in the <TT
-CLASS="FILENAME"
->docs/</TT
-> directory
- <TT
-CLASS="FILENAME"
->ENCRYPTION.txt</TT
-> for details on how to set this
- up.</P
+>. In this
+ mode Samba will try to validate the username/password by passing
+ it to a Windows NT Primary or Backup Domain Controller, in exactly
+ the same way that a Windows NT Server would do.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
-> this mode of operation
- has significant pitfalls, due to the fact that is
- activly initiates a man-in-the-middle attack on the
- remote SMB server. In particular, this mode of
- operation can cause significant resource consuption on
- the PDC, as it must maintain an active connection for
- the duration of the user's session. Furthermore, if
- this connection is lost, there is no way to
- reestablish it, and futher authenticaions to the Samba
- server may fail. (From a single client, till it
- disconnects). </P
-><P
-><SPAN
-CLASS="emphasis"
+> that a valid UNIX user must still
+ exist as well as the account on the Domain Controller to allow
+ Samba to have a valid UNIX account to map file access to.</P
+><P
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
-> that from the client's point of
- view <B
+> that from the client's point
+ of view <B
CLASS="COMMAND"
->security = server</B
+>security = domain</B
> is the same as <B
CLASS="COMMAND"
-> security = user</B
->. It only affects how the server deals
- with the authentication, it does not in any way affect what the
- client sees.</P
+>security = user
+ </B
+>. It only affects how the server deals with the authentication,
+ it does not in any way affect what the client sees.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that the name of the resource being
- requested is <SPAN
-CLASS="emphasis"
-><I
+ requested is <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> sent to the server until after
the server has successfully authenticated the client. This is why
guest shares don't work in user level security without allowing
@@ -17148,8 +16731,22 @@ CLASS="PARAMETER"
</A
> parameter for details on doing this.</P
><P
+><I
+CLASS="EMPHASIS"
+>BUG:</I
+> There is currently a bug in the
+ implementation of <B
+CLASS="COMMAND"
+>security = domain</B
+> with respect
+ to multi-byte character set usernames. The communication with a
+ Domain Controller must be done in UNICODE and Samba currently
+ does not widen multi-byte user names to UNICODE correctly, thus
+ a multi-byte username will not be recognized correctly at the
+ Domain Controller. This issue will be addressed in a future release.</P
+><P
>See also the section <A
-HREF="#AEN239"
+HREF="#AEN238"
> NOTE ABOUT USERNAME/PASSWORD VALIDATION</A
>.</P
><P
@@ -17187,7 +16784,7 @@ CLASS="COMMAND"
><A
NAME="SECURITYMASK"
></A
->&#62;security mask (S)</DT
+>security mask (S)</DT
><DD
><P
>This parameter controls what UNIX permission
@@ -17205,12 +16802,9 @@ NAME="SECURITYMASK"
a user to modify all the user/group/world permissions on a file.
</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that users who can access the
Samba server through other means can easily bypass this
restriction, so it is primarily useful for standalone
@@ -17262,7 +16856,7 @@ CLASS="COMMAND"
><A
NAME="SERVERSTRING"
></A
->&#62;server string (G)</DT
+>server string (G)</DT
><DD
><P
>This controls what string will show up in the
@@ -17307,7 +16901,7 @@ CLASS="COMMAND"
><A
NAME="SETDIRECTORY"
></A
->&#62;set directory (S)</DT
+>set directory (S)</DT
><DD
><P
>If <B
@@ -17333,7 +16927,7 @@ CLASS="COMMAND"
><A
NAME="SHAREMODES"
></A
->&#62;share modes (S)</DT
+>share modes (S)</DT
><DD
><P
>This enables or disables the honoring of
@@ -17377,12 +16971,9 @@ CLASS="CONSTANT"
>This option gives full share compatibility and enabled
by default.</P
><P
->You should <SPAN
-CLASS="emphasis"
-><I
+>You should <I
CLASS="EMPHASIS"
>NEVER</I
-></SPAN
> turn this parameter
off as many Windows applications will break if you do so.</P
><P
@@ -17395,7 +16986,7 @@ CLASS="COMMAND"
><A
NAME="SHORTPRESERVECASE"
></A
->&#62;short preserve case (S)</DT
+>short preserve case (S)</DT
><DD
><P
>This boolean parameter controls if new files
@@ -17421,7 +17012,7 @@ CLASS="COMMAND"
names are lowered. </P
><P
>See the section on <A
-HREF="#AEN206"
+HREF="#AEN205"
> NAME MANGLING</A
>.</P
><P
@@ -17434,7 +17025,7 @@ CLASS="COMMAND"
><A
NAME="SHOWADDPRINTERWIZARD"
></A
->&#62;show add printer wizard (G)</DT
+>show add printer wizard (G)</DT
><DD
><P
>With the introduction of MS-RPC based printing support
@@ -17465,12 +17056,9 @@ CLASS="PARAMETER"
></TT
>
parameter will always cause the OpenPrinterEx() on the server
- to fail. Thus the APW icon will never be displayed. <SPAN
-CLASS="emphasis"
-><I
+ to fail. Thus the APW icon will never be displayed. <I
CLASS="EMPHASIS"
> Note :</I
-></SPAN
>This does not prevent the same user from having
administrative privilege on an individual printer.</P
><P
@@ -17510,15 +17098,12 @@ CLASS="COMMAND"
><A
NAME="SHUTDOWNSCRIPT"
></A
->&#62;shutdown script (G)</DT
+>shutdown script (G)</DT
><DD
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>This parameter only exists in the HEAD cvs branch</I
-></SPAN
>
This a full path name to a script called by
<A
@@ -17559,12 +17144,9 @@ CLASS="PARAMETER"
>%r</I
></TT
> will be substituted with the
- switch <SPAN
-CLASS="emphasis"
-><I
+ switch <I
CLASS="EMPHASIS"
>-r</I
-></SPAN
>. It means reboot after shutdown
for NT.
</P
@@ -17575,21 +17157,15 @@ CLASS="PARAMETER"
>%f</I
></TT
> will be substituted with the
- switch <SPAN
-CLASS="emphasis"
-><I
+ switch <I
CLASS="EMPHASIS"
>-f</I
-></SPAN
>. It means force the shutdown
even if applications do not respond for NT.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>None</I
-></SPAN
>.</P
><P
>Example: <B
@@ -17598,15 +17174,25 @@ CLASS="COMMAND"
></P
><P
>Shutdown script example:
-<PRE
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
->#!/bin/bash
+> #!/bin/bash
-$time=0
-let "time/60"
-let "time++"
+ $time=0
+ let "time/60"
+ let "time++"
-/sbin/shutdown $3 $4 +$time $1 &amp;</PRE
+ /sbin/shutdown $3 $4 +$time $1 &#38;
+ </PRE
+></TD
+></TR
+></TABLE
>
Shutdown does not return so we need to launch it in background.
</P
@@ -17625,7 +17211,7 @@ CLASS="PARAMETER"
><A
NAME="SMBPASSWDFILE"
></A
->&#62;smb passwd file (G)</DT
+>smb passwd file (G)</DT
><DD
><P
>This option sets the path to the encrypted
@@ -17648,7 +17234,7 @@ CLASS="COMMAND"
><A
NAME="SMBPORTS"
></A
->&#62;smb ports (G)</DT
+>smb ports (G)</DT
><DD
><P
>Specifies which ports the server should listen on
@@ -17664,7 +17250,7 @@ CLASS="COMMAND"
><A
NAME="SOCKETADDRESS"
></A
->&#62;socket address (G)</DT
+>socket address (G)</DT
><DD
><P
>This option allows you to control what
@@ -17685,7 +17271,7 @@ CLASS="COMMAND"
><A
NAME="SOCKETOPTIONS"
></A
->&#62;socket options (G)</DT
+>socket options (G)</DT
><DD
><P
>This option allows you to set socket options
@@ -17766,12 +17352,9 @@ TARGET="_top"
></LI
></UL
><P
->Those marked with a <SPAN
-CLASS="emphasis"
-><I
+>Those marked with a <I
CLASS="EMPHASIS"
>'*'</I
-></SPAN
> take an integer
argument. The others can optionally take a 1 or 0 argument to enable
or disable the option, by default they will be enabled if you
@@ -17819,7 +17402,7 @@ CLASS="COMMAND"
><A
NAME="SOURCEENVIRONMENT"
></A
->&#62;source environment (G)</DT
+>source environment (G)</DT
><DD
><P
>This parameter causes Samba to set environment
@@ -17843,12 +17426,9 @@ CLASS="COMMAND"
>SAMBA_NETBIOS_NAME = myhostname</B
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>No default value</I
-></SPAN
></P
><P
>Examples: <B
@@ -17867,37 +17447,27 @@ CLASS="COMMAND"
><A
NAME="SPNEGO"
></A
->&#62;use spnego (G)</DT
+>use spnego (G)</DT
><DD
><P
-> This variable controls controls whether samba will try
- to use Simple and Protected NEGOciation (as specified by rfc2478) with
- WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism.
- Unless further issues are discovered with our SPNEGO
- implementation, there is no reason this should ever be
- disabled.</P
+> This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism. As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller. It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>use spnego = yes</I
-></SPAN
></P
></DD
><DT
><A
NAME="STATCACHE"
></A
->&#62;stat cache (G)</DT
+>stat cache (G)</DT
><DD
><P
->This parameter determines if <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>This parameter determines if <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
> will use a cache in order to
speed up case insensitive name mappings. You should never need
to change this parameter.</P
@@ -17911,7 +17481,7 @@ CLASS="COMMAND"
><A
NAME="STATCACHESIZE"
></A
->&#62;stat cache size (G)</DT
+>stat cache size (G)</DT
><DD
><P
>This parameter determines the number of
@@ -17932,7 +17502,7 @@ CLASS="COMMAND"
><A
NAME="STRICTALLOCATE"
></A
->&#62;strict allocate (S)</DT
+>strict allocate (S)</DT
><DD
><P
>This is a boolean that controls the handling of
@@ -17969,7 +17539,7 @@ CLASS="COMMAND"
><A
NAME="STRICTLOCKING"
></A
->&#62;strict locking (S)</DT
+>strict locking (S)</DT
><DD
><P
>This is a boolean that controls the handling of
@@ -18002,7 +17572,7 @@ CLASS="COMMAND"
><A
NAME="STRICTSYNC"
></A
->&#62;strict sync (S)</DT
+>strict sync (S)</DT
><DD
><P
>Many Windows applications (including the Windows
@@ -18015,12 +17585,10 @@ NAME="STRICTSYNC"
CLASS="CONSTANT"
>no</TT
> (the
- default) means that <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ default) means that <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> ignores the Windows applications requests for
a sync call. There is only a possibility of losing data if the
operating system itself that Samba is running on crashes, so there is
@@ -18048,7 +17616,7 @@ CLASS="COMMAND"
><A
NAME="STRIPDOT"
></A
->&#62;strip dot (G)</DT
+>strip dot (G)</DT
><DD
><P
>This is a boolean that controls whether to
@@ -18064,7 +17632,7 @@ CLASS="COMMAND"
><A
NAME="SYNCALWAYS"
></A
->&#62;sync always (S)</DT
+>sync always (S)</DT
><DD
><P
>This is a boolean parameter that controls
@@ -18115,7 +17683,7 @@ CLASS="COMMAND"
><A
NAME="SYSLOG"
></A
->&#62;syslog (G)</DT
+>syslog (G)</DT
><DD
><P
>This parameter maps how Samba debug messages
@@ -18150,7 +17718,7 @@ CLASS="COMMAND"
><A
NAME="SYSLOGONLY"
></A
->&#62;syslog only (G)</DT
+>syslog only (G)</DT
><DD
><P
>If this parameter is set then Samba debug
@@ -18166,7 +17734,7 @@ CLASS="COMMAND"
><A
NAME="TEMPLATEHOMEDIR"
></A
->&#62;template homedir (G)</DT
+>template homedir (G)</DT
><DD
><P
>When filling out the user information for a Windows NT
@@ -18200,16 +17768,14 @@ CLASS="COMMAND"
><A
NAME="TEMPLATESHELL"
></A
->&#62;template shell (G)</DT
+>template shell (G)</DT
><DD
><P
>When filling out the user information for a Windows NT
- user, the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ user, the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+>winbindd(8)</A
> daemon
uses this parameter to fill in the login shell for that user.</P
><P
@@ -18222,7 +17788,7 @@ CLASS="COMMAND"
><A
NAME="TIMEOFFSET"
></A
->&#62;time offset (G)</DT
+>time offset (G)</DT
><DD
><P
>This parameter is a setting in minutes to add
@@ -18244,15 +17810,14 @@ CLASS="COMMAND"
><A
NAME="TIMESERVER"
></A
->&#62;time server (G)</DT
+>time server (G)</DT
><DD
><P
->This parameter determines if <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This parameter determines if <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>
+ nmbd(8)</A
> advertises itself as a time server to Windows
clients.</P
><P
@@ -18265,7 +17830,7 @@ CLASS="COMMAND"
><A
NAME="TIMESTAMPLOGS"
></A
->&#62;timestamp logs (G)</DT
+>timestamp logs (G)</DT
><DD
><P
>Synonym for <A
@@ -18282,18 +17847,16 @@ CLASS="PARAMETER"
><A
NAME="TOTALPRINTJOBS"
></A
->&#62;total print jobs (G)</DT
+>total print jobs (G)</DT
><DD
><P
>This parameter accepts an integer value which defines
a limit on the maximum number of print jobs that will be accepted
system wide at any given time. If a print job is submitted
- by a client which will exceed this number, then <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ by a client which will exceed this number, then <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd</A
> will return an
error indicating that no space is available on the server. The
default value of 0 means that no such limit exists. This parameter
@@ -18324,7 +17887,7 @@ CLASS="COMMAND"
><A
NAME="UNICODE"
></A
->&#62;unicode (G)</DT
+>unicode (G)</DT
><DD
><P
>Specifies whether Samba should try
@@ -18341,7 +17904,7 @@ CLASS="COMMAND"
><A
NAME="UNIXCHARSET"
></A
->&#62;unix charset (G)</DT
+>unix charset (G)</DT
><DD
><P
>Specifies the charset the unix machine
@@ -18351,19 +17914,19 @@ NAME="UNIXCHARSET"
><P
>Default: <B
CLASS="COMMAND"
->unix charset = UTF8</B
+>unix charset = ASCII</B
></P
><P
>Example: <B
CLASS="COMMAND"
->unix charset = ASCII</B
+>unix charset = UTF8</B
></P
></DD
><DT
><A
NAME="UNIXEXTENSIONS"
></A
->&#62;unix extensions(G)</DT
+>unix extensions(G)</DT
><DD
><P
>This boolean parameter controls whether Samba
@@ -18382,7 +17945,7 @@ CLASS="COMMAND"
><A
NAME="UNIXPASSWORDSYNC"
></A
->&#62;unix password sync (G)</DT
+>unix password sync (G)</DT
><DD
><P
>This boolean parameter controls whether Samba
@@ -18397,12 +17960,9 @@ CLASS="PARAMETER"
>passwd
program</I
></TT
->parameter is called <SPAN
-CLASS="emphasis"
-><I
+>parameter is called <I
CLASS="EMPHASIS"
>AS ROOT</I
-></SPAN
> -
to allow the new UNIX password to be set without access to the
old UNIX password (as the SMB password change code has no
@@ -18436,7 +17996,7 @@ CLASS="COMMAND"
><A
NAME="UPDATEENCRYPTED"
></A
->&#62;update encrypted (G)</DT
+>update encrypted (G)</DT
><DD
><P
>This boolean parameter allows a user logging
@@ -18491,7 +18051,7 @@ CLASS="COMMAND"
><A
NAME="USECLIENTDRIVER"
></A
->&#62;use client driver (S)</DT
+>use client driver (S)</DT
><DD
><P
>This parameter applies only to Windows NT/2000
@@ -18520,14 +18080,11 @@ CLASS="COMMAND"
>If this parameter is enabled for a printer, then any attempt
to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped
to PRINTER_ACCESS_USE instead. Thus allowing the OpenPrinterEx()
- call to succeed. <SPAN
-CLASS="emphasis"
-><I
+ call to succeed. <I
CLASS="EMPHASIS"
>This parameter MUST not be able enabled
on a print share which has valid print driver installed on the Samba
server.</I
-></SPAN
></P
><P
>See also <A
@@ -18545,7 +18102,7 @@ CLASS="COMMAND"
><A
NAME="USEMMAP"
></A
->&#62;use mmap (G)</DT
+>use mmap (G)</DT
><DD
><P
>This global parameter determines if the tdb internals of Samba can
@@ -18569,7 +18126,7 @@ CLASS="COMMAND"
><A
NAME="USERHOSTS"
></A
->&#62;use rhosts (G)</DT
+>use rhosts (G)</DT
><DD
><P
>If this global parameter is <TT
@@ -18583,12 +18140,9 @@ CLASS="FILENAME"
will be read to find the names of hosts and users who will be allowed
access without specifying a password.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE:</I
-></SPAN
> The use of <TT
CLASS="PARAMETER"
><I
@@ -18614,7 +18168,7 @@ CLASS="COMMAND"
><A
NAME="USER"
></A
->&#62;user (S)</DT
+>user (S)</DT
><DD
><P
>Synonym for <A
@@ -18631,7 +18185,7 @@ CLASS="PARAMETER"
><A
NAME="USERS"
></A
->&#62;users (S)</DT
+>users (S)</DT
><DD
><P
>Synonym for <A
@@ -18648,7 +18202,7 @@ CLASS="PARAMETER"
><A
NAME="USERNAME"
></A
->&#62;username (S)</DT
+>username (S)</DT
><DD
><P
>Multiple users may be specified in a comma-delimited
@@ -18714,7 +18268,7 @@ CLASS="PARAMETER"
will be looked up only in the UNIX groups database and will
expand to a list of all users in the group of that name.</P
><P
->If any of the usernames begin with a '&amp;' then the name
+>If any of the usernames begin with a '&#38;'then the name
will be looked up only in the NIS netgroups database (if Samba
is compiled with netgroup support) and will expand to a list
of all users in the netgroup group of that name.</P
@@ -18724,7 +18278,7 @@ CLASS="PARAMETER"
search.</P
><P
>See the section <A
-HREF="#AEN239"
+HREF="#AEN238"
>NOTE ABOUT
USERNAME/PASSWORD VALIDATION</A
> for more information on how
@@ -18733,7 +18287,7 @@ HREF="#AEN239"
>Default: <B
CLASS="COMMAND"
>The guest account if a guest service,
- else &lt;empty string&gt;.</B
+ else &#60;empty string&#62;.</B
></P
><P
>Examples:<B
@@ -18746,7 +18300,7 @@ CLASS="COMMAND"
><A
NAME="USERNAMELEVEL"
></A
->&#62;username level (G)</DT
+>username level (G)</DT
><DD
><P
>This option helps Samba to try and 'guess' at
@@ -18780,7 +18334,7 @@ CLASS="COMMAND"
><A
NAME="USERNAMEMAP"
></A
->&#62;username map (G)</DT
+>username map (G)</DT
><DD
><P
>This option allows you to specify a file containing
@@ -18870,10 +18424,20 @@ CLASS="COMMAND"
'!' to tell Samba to stop processing if it gets a match on
that line.</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
->!sys = mary fred
-guest = *</PRE
+> !sys = mary fred
+ guest = *
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>Note that the remapping is applied to all occurrences
@@ -18910,12 +18474,9 @@ CLASS="PARAMETER"
trouble deleting print jobs as PrintManager under WfWg will think
they don't own the print job.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no username map</I
-></SPAN
></P
><P
>Example: <B
@@ -18928,7 +18489,7 @@ CLASS="COMMAND"
><A
NAME="USESENDFILE"
></A
->&#62;use sendfile (S)</DT
+>use sendfile (S)</DT
><DD
><P
>If this parameter is <TT
@@ -18952,7 +18513,7 @@ CLASS="COMMAND"
><A
NAME="UTMP"
></A
->&#62;utmp (G)</DT
+>utmp (G)</DT
><DD
><P
>This boolean parameter is only available if
@@ -18992,7 +18553,7 @@ CLASS="COMMAND"
><A
NAME="UTMPDIRECTORY"
></A
->&#62;utmp directory(G)</DT
+>utmp directory(G)</DT
><DD
><P
>This parameter is only available if Samba has
@@ -19017,12 +18578,9 @@ CLASS="FILENAME"
>/var/run/utmp</TT
> on Linux).</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no utmp directory</I
-></SPAN
></P
><P
>Example: <B
@@ -19034,7 +18592,7 @@ CLASS="COMMAND"
><A
NAME="WTMPDIRECTORY"
></A
->&#62;wtmp directory(G)</DT
+>wtmp directory(G)</DT
><DD
><P
>This parameter is only available if Samba has
@@ -19063,12 +18621,9 @@ CLASS="FILENAME"
>/var/run/wtmp</TT
> on Linux).</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>no wtmp directory</I
-></SPAN
></P
><P
>Example: <B
@@ -19080,11 +18635,11 @@ CLASS="COMMAND"
><A
NAME="VALIDUSERS"
></A
->&#62;valid users (S)</DT
+>valid users (S)</DT
><DD
><P
>This is a list of users that should be allowed
- to login to this service. Names starting with '@', '+' and '&amp;'
+ to login to this service. Names starting with '@', '+' and '&#38;'
are interpreted using the same rules as described in the
<TT
CLASS="PARAMETER"
@@ -19121,13 +18676,10 @@ CLASS="PARAMETER"
></A
></P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>No valid users list (anyone can login)
</I
-></SPAN
></P
><P
>Example: <B
@@ -19139,7 +18691,7 @@ CLASS="COMMAND"
><A
NAME="VETOFILES"
></A
->&#62;veto files(S)</DT
+>veto files(S)</DT
><DD
><P
>This is a list of files and directories that
@@ -19149,12 +18701,9 @@ NAME="VETOFILES"
or directories as in DOS wildcards.</P
><P
>Each entry must be a unix path, not a DOS path and
- must <SPAN
-CLASS="emphasis"
-><I
+ must <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> include the unix directory
separator '/'.</P
><P
@@ -19170,12 +18719,9 @@ CLASS="PARAMETER"
is important to be aware of is Samba's behaviour when
trying to delete a directory. If a directory that is
to be deleted contains nothing but veto files this
- deletion will <SPAN
-CLASS="emphasis"
-><I
+ deletion will <I
CLASS="EMPHASIS"
>fail</I
-></SPAN
> unless you also set
the <TT
CLASS="PARAMETER"
@@ -19213,16 +18759,19 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>No files or directories are vetoed.
</I
-></SPAN
></P
><P
->Examples:<PRE
+>Examples:<TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>; Veto any files containing the word Security,
; any ending in .tmp, and any directory containing the
@@ -19232,13 +18781,16 @@ veto files = /*Security*/*.tmp/*root*/
; Veto the Apple specific files that a NetAtalk server
; creates.
veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/</PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
><A
NAME="VETOOPLOCKFILES"
></A
->&#62;veto oplock files (S)</DT
+>veto oplock files (S)</DT
><DD
><P
>This parameter is only valid when the <A
@@ -19264,13 +18816,10 @@ CLASS="PARAMETER"
>
parameter.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>No files are vetoed for oplock
grants</I
-></SPAN
></P
><P
>You might want to do this on files that you know will
@@ -19294,7 +18843,7 @@ CLASS="COMMAND"
><A
NAME="VFSPATH"
></A
->&#62;vfs path (S)</DT
+>vfs path (S)</DT
><DD
><P
>This parameter specifies the directory
@@ -19319,7 +18868,7 @@ CLASS="COMMAND"
><A
NAME="VFSOBJECT"
></A
->&#62;vfs object (S)</DT
+>vfs object (S)</DT
><DD
><P
>This parameter specifies a shared object files that
@@ -19327,19 +18876,16 @@ NAME="VFSOBJECT"
disk I/O operations are used but these can be overloaded
with one or more VFS objects. </P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>no value</I
-></SPAN
></P
></DD
><DT
><A
NAME="VFSOPTIONS"
></A
->&#62;vfs options (S)</DT
+>vfs options (S)</DT
><DD
><P
>This parameter allows parameters to be passed
@@ -19354,38 +18900,32 @@ CLASS="PARAMETER"
></A
>.</P
><P
->Default : <SPAN
-CLASS="emphasis"
-><I
+>Default : <I
CLASS="EMPHASIS"
>no value</I
-></SPAN
></P
></DD
><DT
><A
NAME="VOLUME"
></A
->&#62;volume (S)</DT
+>volume (S)</DT
><DD
><P
> This allows you to override the volume label
returned for a share. Useful for CDROMs with installation programs
that insist on a particular volume label.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>the name of the share</I
-></SPAN
></P
></DD
><DT
><A
NAME="WIDELINKS"
></A
->&#62;wide links (S)</DT
+>wide links (S)</DT
><DD
><P
>This parameter controls whether or not links
@@ -19407,16 +18947,14 @@ CLASS="COMMAND"
><A
NAME="WINBINDCACHETIME"
></A
->&#62;winbind cache time (G)</DT
+>winbind cache time (G)</DT
><DD
><P
->This parameter specifies the number of
- seconds the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+>This parameter specifies the number of seconds the
+ <A
+HREF="winbindd.8.html"
+TARGET="_top"
+>winbindd(8)</A
> daemon will cache
user and group information before querying a Windows NT server
again.</P
@@ -19430,19 +18968,19 @@ CLASS="COMMAND"
><A
NAME="WINBINDENUMUSERS"
></A
->&#62;winbind enum users (G)</DT
+>winbind enum users (G)</DT
><DD
><P
->On large installations using <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+>On large installations using
+ <A
+HREF="winbindd.8.html"
+TARGET="_top"
+>winbindd(8)</A
> it may be
- necessary to suppress the enumeration of users through the <B
+ necessary to suppress the enumeration of users through the
+ <B
CLASS="COMMAND"
->setpwent()</B
+> setpwent()</B
>,
<B
CLASS="COMMAND"
@@ -19467,12 +19005,9 @@ CLASS="COMMAND"
> system call
will not return any data. </P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Warning:</I
-></SPAN
> Turning off user
enumeration may cause some programs to behave oddly. For
example, the finger program relies on having access to the
@@ -19488,19 +19023,19 @@ CLASS="COMMAND"
><A
NAME="WINBINDENUMGROUPS"
></A
->&#62;winbind enum groups (G)</DT
+>winbind enum groups (G)</DT
><DD
><P
->On large installations using <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
-> it may be necessary to suppress
- the enumeration of groups through the <B
+>On large installations using
+ <A
+HREF="winbindd.8.html"
+TARGET="_top"
+>winbindd(8)</A
+> it may be
+ necessary to suppress the enumeration of groups through the
+ <B
CLASS="COMMAND"
->setgrent()</B
+> setgrent()</B
>,
<B
CLASS="COMMAND"
@@ -19525,12 +19060,9 @@ CLASS="COMMAND"
> system
call will not return any data. </P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Warning:</I
-></SPAN
> Turning off group
enumeration may cause some programs to behave oddly.
</P
@@ -19545,23 +19077,21 @@ CLASS="COMMAND"
><A
NAME="WINBINDGID"
></A
->&#62;winbind gid (G)</DT
+>winbind gid (G)</DT
><DD
><P
>The winbind gid parameter specifies the range of group
- ids that are allocated by the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ ids that are allocated by the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+> winbindd(8)</A
> daemon. This range of group ids should have no
existing local or NIS groups within it as strange conflicts can
occur otherwise.</P
><P
>Default: <B
CLASS="COMMAND"
->winbind gid = &lt;empty string&gt;
+>winbind gid = &#60;empty string&#62;
</B
></P
><P
@@ -19574,7 +19104,7 @@ CLASS="COMMAND"
><A
NAME="WINBINDSEPARATOR"
></A
->&#62;winbind separator (G)</DT
+>winbind separator (G)</DT
><DD
><P
>This parameter allows an admin to define the character
@@ -19618,23 +19148,21 @@ CLASS="COMMAND"
><A
NAME="WINBINDUID"
></A
->&#62;winbind uid (G)</DT
+>winbind uid (G)</DT
><DD
><P
>The winbind gid parameter specifies the range of group
- ids that are allocated by the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ ids that are allocated by the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+> winbindd(8)</A
> daemon. This range of ids should have no
existing local or NIS users within it as strange conflicts can
occur otherwise.</P
><P
>Default: <B
CLASS="COMMAND"
->winbind uid = &lt;empty string&gt;
+>winbind uid = &#60;empty string&#62;
</B
></P
><P
@@ -19644,27 +19172,25 @@ CLASS="COMMAND"
></P
></DD
><DT
-><A
+>winbind use default domain, <A
NAME="WINBINDUSEDEFAULTDOMAIN"
></A
->&#62;winbind use default domain (G)</DT
+>winbind use default domain (G)</DT
><DD
><P
->This parameter specifies whether the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
-> daemon should operate on users
- without domain component in their username.
+>This parameter specifies whether the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+> winbindd(8)</A
+>
+ daemon should operate on users without domain component in their username.
Users without a domain component are treated as is part of the winbindd server's
own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
function in a way much closer to the way they would in a native unix system.</P
><P
>Default: <B
CLASS="COMMAND"
->winbind use default domain = &lt;no&gt;
+>winbind use default domain = &#60;no&#62;
</B
></P
><P
@@ -19677,7 +19203,7 @@ CLASS="COMMAND"
><A
NAME="WINSHOOK"
></A
->&#62;wins hook (G)</DT
+>wins hook (G)</DT
><DD
><P
>When Samba is running as a WINS server this
@@ -19742,7 +19268,7 @@ CLASS="COMMAND"
><A
NAME="WINSPROXY"
></A
->&#62;wins proxy (G)</DT
+>wins proxy (G)</DT
><DD
><P
>This is a boolean that controls if <A
@@ -19765,45 +19291,36 @@ CLASS="COMMAND"
><A
NAME="WINSSERVER"
></A
->&#62;wins server (G)</DT
+>wins server (G)</DT
><DD
><P
>This specifies the IP address (or DNS name: IP
- address for preference) of the WINS server that <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+ address for preference) of the WINS server that <A
+HREF="nmbd.8.html"
+TARGET="_top"
+> nmbd(8)</A
> should register with. If you have a WINS server on
your network then you should set this to the WINS server's IP.</P
><P
>You should point this at your WINS server if you have a
multi-subnetted network.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>NOTE</I
-></SPAN
>. You need to set up Samba to point
to a WINS server if you have multiple subnets and wish cross-subnet
browsing to work correctly.</P
><P
->See the documentation file <A
-HREF="improved-browsing.html"
-TARGET="_top"
->BROWSING</A
+>See the documentation file <TT
+CLASS="FILENAME"
+>BROWSING.txt</TT
>
in the docs/ directory of your Samba source distribution.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>not enabled</I
-></SPAN
></P
><P
>Example: <B
@@ -19815,15 +19332,14 @@ CLASS="COMMAND"
><A
NAME="WINSSUPPORT"
></A
->&#62;wins support (G)</DT
+>wins support (G)</DT
><DD
><P
->This boolean controls if the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+>This boolean controls if the <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>
+ nmbd(8)</A
> process in Samba will act as a WINS server. You should
not set this to <TT
CLASS="CONSTANT"
@@ -19833,12 +19349,9 @@ CLASS="CONSTANT"
CLASS="COMMAND"
>nmbd</B
> to be your WINS server.
- Note that you should <SPAN
-CLASS="emphasis"
-><I
+ Note that you should <I
CLASS="EMPHASIS"
>NEVER</I
-></SPAN
> set this to <TT
CLASS="CONSTANT"
>yes</TT
@@ -19854,7 +19367,7 @@ CLASS="COMMAND"
><A
NAME="WORKGROUP"
></A
->&#62;workgroup (G)</DT
+>workgroup (G)</DT
><DD
><P
>This controls what workgroup your server will
@@ -19868,12 +19381,9 @@ CLASS="COMMAND"
>
setting.</P
><P
->Default: <SPAN
-CLASS="emphasis"
-><I
+>Default: <I
CLASS="EMPHASIS"
>set at compile time to WORKGROUP</I
-></SPAN
></P
><P
>Example: <B
@@ -19885,7 +19395,7 @@ CLASS="COMMAND"
><A
NAME="WRITABLE"
></A
->&#62;writable (S)</DT
+>writable (S)</DT
><DD
><P
>Synonym for <A
@@ -19902,17 +19412,14 @@ CLASS="PARAMETER"
><A
NAME="WRITECACHESIZE"
></A
->&#62;write cache size (S)</DT
+>write cache size (S)</DT
><DD
><P
>If this integer parameter is set to non-zero value,
Samba will create an in-memory cache for each oplocked file
- (it does <SPAN
-CLASS="emphasis"
-><I
+ (it does <I
CLASS="EMPHASIS"
>not</I
-></SPAN
> do this for
non-oplocked files). All writes that the client does not request
to be flushed directly to disk will be stored in this cache if possible.
@@ -19946,7 +19453,7 @@ CLASS="COMMAND"
><A
NAME="WRITELIST"
></A
->&#62;write list (S)</DT
+>write list (S)</DT
><DD
><P
>This is a list of users that are given read-write
@@ -19979,7 +19486,7 @@ CLASS="PARAMETER"
><P
>Default: <B
CLASS="COMMAND"
->write list = &lt;empty string&gt;
+>write list = &#60;empty string&#62;
</B
></P
><P
@@ -19993,7 +19500,7 @@ CLASS="COMMAND"
><A
NAME="WINSPARTNERS"
></A
->&#62;wins partners (G)</DT
+>wins partners (G)</DT
><DD
><P
>A space separated list of partners' IP addresses for
@@ -20017,7 +19524,7 @@ CLASS="COMMAND"
><A
NAME="WRITEOK"
></A
->&#62;write ok (S)</DT
+>write ok (S)</DT
><DD
><P
>Inverted synonym for <A
@@ -20034,7 +19541,7 @@ CLASS="PARAMETER"
><A
NAME="WRITERAW"
></A
->&#62;write raw (G)</DT
+>write raw (G)</DT
><DD
><P
>This parameter controls whether or not the server
@@ -20050,7 +19557,7 @@ CLASS="COMMAND"
><A
NAME="WRITEABLE"
></A
->&#62;writeable (S)</DT
+>writeable (S)</DT
><DD
><P
>Inverted synonym for <A
@@ -20069,7 +19576,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6323"
+NAME="AEN6195"
></A
><H2
>WARNINGS</H2
@@ -20080,12 +19587,11 @@ NAME="AEN6323"
problem - but be aware of the possibility.</P
><P
>On a similar note, many clients - especially DOS clients -
- limit service names to eight characters. <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ limit service names to eight characters. <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)
+ </A
> has no such limitation, but attempts to connect from such
clients will fail if they truncate the service names. For this reason
you should probably keep your service names down to eight characters
@@ -20100,81 +19606,97 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6331"
+NAME="AEN6201"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 3.0 of the Samba suite.</P
+>This man page is correct for version 3.0 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6334"
+NAME="AEN6204"
></A
><H2
>SEE ALSO</H2
><P
-> <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->samba</SPAN
->(7)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->swat</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testprns</SPAN
->(1)</SPAN
->.</P
+><A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>,
+ <A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+></A
+>,
+ <A
+HREF="swat.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>swat(8)</B
+></A
+>,
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
+>,
+ <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)</B
+></A
+>,
+ <A
+HREF="nmblookup.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmblookup(1)</B
+></A
+>,
+ <A
+HREF="testparm.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>testparm(1)</B
+></A
+>,
+ <A
+HREF="testprns.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>testprns(1)</B
+></A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6364"
+NAME="AEN6224"
></A
><H2
>AUTHOR</H2
@@ -20186,14 +19708,14 @@ NAME="AEN6364"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbcacls.1.html b/docs/htmldocs/smbcacls.1.html
index 66dbf8d2f9..e0425d481d 100644
--- a/docs/htmldocs/smbcacls.1.html
+++ b/docs/htmldocs/smbcacls.1.html
@@ -5,7 +5,7 @@
>smbcacls</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBCACLS.1"
+NAME="SMBCACLS"
></A
>smbcacls</H1
><DIV
@@ -47,12 +47,10 @@ NAME="AEN22"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>The <B
@@ -64,7 +62,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN30"
+NAME="AEN28"
></A
><H2
>OPTIONS</H2
@@ -119,12 +117,9 @@ CLASS="VARIABLELIST"
>Specifies a username used to connect to the
specified service. The username may be of the form "username" in
which case the user is prompted to enter in a password and the
- workgroup specified in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ workgroup specified in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file is
used, or "username%password" or "DOMAIN\username%password" and the
password and workgroup names are used as provided. </P
@@ -187,7 +182,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN79"
+NAME="AEN75"
></A
><H2
>ACL FORMAT</H2
@@ -201,7 +196,8 @@ CLASS="PROGRAMLISTING"
REVISION:&lt;revision number&gt;
OWNER:&lt;sid or name&gt;
GROUP:&lt;sid or name&gt;
-ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;</PRE
+ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;
+ </PRE
></P
><P
>The revision of the ACL specifies the internal Windows
@@ -215,45 +211,34 @@ ACL:&lt;sid or name&gt;:&lt;type&gt;/&lt;flags&gt;/&lt;mask&gt;</PRE
the file or directory resides. </P
><P
>ACLs specify permissions granted to the SID. This SID again
- can be specified in CWS-1-x-y-z format or as a name in which case
- it is resolved against the server on which the file or directory
- resides. The type, flags and mask values determine the type of
- access granted to the SID. </P
+ can be specified in CWS-1-x-y-z format or as a name in which case
+ it is resolved against the server on which the file or directory
+ resides. The type, flags and mask values determine the type of
+ access granted to the SID. </P
><P
>The type can be either 0 or 1 corresponding to ALLOWED or
- DENIED access to the SID. The flags values are generally
- zero for file ACLs and either 9 or 2 for directory ACLs. Some
- common flags are: </P
+ DENIED access to the SID. The flags values are generally
+ zero for file ACLs and either 9 or 2 for directory ACLs. Some
+ common flags are: </P
><P
></P
><UL
><LI
><P
-><TT
-CLASS="CONSTANT"
->#define SEC_ACE_FLAG_OBJECT_INHERIT 0x1</TT
-></P
+>#define SEC_ACE_FLAG_OBJECT_INHERIT 0x1</P
></LI
><LI
><P
-><TT
-CLASS="CONSTANT"
->#define SEC_ACE_FLAG_CONTAINER_INHERIT 0x2</TT
-></P
+>#define SEC_ACE_FLAG_CONTAINER_INHERIT 0x2</P
></LI
><LI
><P
-><TT
-CLASS="CONSTANT"
->#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4</TT
-></P
+>#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4
+ </P
></LI
><LI
><P
-><TT
-CLASS="CONSTANT"
->#define SEC_ACE_FLAG_INHERIT_ONLY 0x8</TT
-></P
+>#define SEC_ACE_FLAG_INHERIT_ONLY 0x8</P
></LI
></UL
><P
@@ -371,7 +356,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN133"
+NAME="AEN125"
></A
><H2
>EXIT STATUS</H2
@@ -395,17 +380,18 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN139"
+NAME="AEN131"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 2.2 of the Samba suite.</P
+>This man page is correct for version 2.2 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN142"
+NAME="AEN134"
></A
><H2
>AUTHOR</H2
@@ -422,8 +408,7 @@ CLASS="COMMAND"
and Tim Potter.</P
><P
>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was done
- by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbclient.1.html b/docs/htmldocs/smbclient.1.html
index 8ae4f84fe3..ca8cafd312 100644
--- a/docs/htmldocs/smbclient.1.html
+++ b/docs/htmldocs/smbclient.1.html
@@ -5,7 +5,7 @@
>smbclient</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBCLIENT.1"
+NAME="SMBCLIENT"
></A
>smbclient</H1
><DIV
@@ -38,22 +38,20 @@ NAME="AEN8"
><B
CLASS="COMMAND"
>smbclient</B
-> {servicename} [password] [-b &lt;buffer size&gt;] [-d debuglevel] [-D Directory] [-U username] [-W workgroup] [-M &lt;netbios name&gt;] [-m maxprotocol] [-A authfile] [-N] [-l logfile] [-L &lt;netbios name&gt;] [-I destinationIP] [-E] [-c &lt;command string&gt;] [-i scope] [-O &lt;socket options&gt;] [-p port] [-R &lt;name resolve order&gt;] [-s &lt;smb config file&gt;] [-T&lt;c|x&gt;IXFqgbNan] [-k]</P
+> {servicename} [password] [-b &lt;buffer size&gt;] [-d debuglevel] [-D Directory] [-U username] [-W workgroup] [-M &lt;netbios name&gt;] [-m maxprotocol] [-A authfile] [-N] [-l logfile] [-L &lt;netbios name&gt;] [-I destinationIP] [-E] [-c &lt;command string&gt;] [-i scope] [-O &lt;socket options&gt;] [-p port] [-R &lt;name resolve order&gt;] [-s &lt;smb config file&gt;] [-T&lt;c|x&gt;IXFqgbNan]</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN34"
+NAME="AEN33"
></A
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -61,12 +59,9 @@ CLASS="COMMAND"
>smbclient</B
> is a client that can
'talk' to an SMB/CIFS server. It offers an interface
- similar to that of the ftp program (see <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->ftp</SPAN
->(1)</SPAN
+ similar to that of the ftp program (see <B
+CLASS="COMMAND"
+>ftp(1)</B
>).
Operations include things like getting files from the server
to the local machine, putting files from the local machine to
@@ -76,7 +71,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN45"
+NAME="AEN40"
></A
><H2
>OPTIONS</H2
@@ -131,13 +126,9 @@ CLASS="PARAMETER"
CLASS="COMMAND"
>smbclient</B
> or
- using the name resolve order parameter in
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ using the name resolve order parameter in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file,
allowing an administrator to change the order and methods
by which server names are looked up. </P
@@ -187,13 +178,10 @@ CLASS="PARAMETER"
>-s smb.conf</DT
><DD
><P
->Specifies the location of the all
- important <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>Specifies the location of the all important
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file. </P
></DD
><DT
@@ -201,14 +189,10 @@ CLASS="REFENTRYTITLE"
><DD
><P
>TCP socket options to set on the client
- socket. See the socket options parameter in
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> manual page for the list of valid
+ socket. See the socket options parameter in the <TT
+CLASS="FILENAME"
+> smb.conf (5)</TT
+> manpage for the list of valid
options. </P
></DD
><DT
@@ -221,7 +205,7 @@ CLASS="REFENTRYTITLE"
string of different name resolution options.</P
><P
>The options are :"lmhosts", "host", "wins" and "bcast". They
- cause names to be resolved as follows:</P
+ cause names to be resolved as follows :</P
><P
></P
><UL
@@ -230,15 +214,12 @@ CLASS="REFENTRYTITLE"
><TT
CLASS="CONSTANT"
>lmhosts</TT
->: Lookup an IP
+> : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
- no name type attached to the NetBIOS name (see
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->lmhosts</SPAN
->(5)</SPAN
+ no name type attached to the NetBIOS name (see the <A
+HREF="lmhosts.5.html"
+TARGET="_top"
+>lmhosts(5)</A
> for details) then
any name type matches for lookup.</P
></LI
@@ -247,7 +228,7 @@ CLASS="REFENTRYTITLE"
><TT
CLASS="CONSTANT"
>host</TT
->: Do a standard host
+> : Do a standard host
name to IP address resolution, using the system <TT
CLASS="FILENAME"
>/etc/hosts
@@ -267,7 +248,7 @@ CLASS="FILENAME"
><TT
CLASS="CONSTANT"
>wins</TT
->: Query a name with
+> : Query a name with
the IP address listed in the <TT
CLASS="PARAMETER"
><I
@@ -282,7 +263,7 @@ CLASS="PARAMETER"
><TT
CLASS="CONSTANT"
>bcast</TT
->: Do a broadcast on
+> : Do a broadcast on
each of the known local interfaces listed in the
<TT
CLASS="PARAMETER"
@@ -297,12 +278,9 @@ CLASS="PARAMETER"
></UL
><P
>If this parameter is not set then the name resolve order
- defined in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ defined in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file parameter
(name resolve order) will be used. </P
><P
@@ -313,12 +291,9 @@ CLASS="PARAMETER"
>name resolve order
</I
></TT
-> parameter of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+> parameter of the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file the name resolution
methods will be attempted in this order. </P
></DD
@@ -368,17 +343,9 @@ CLASS="PARAMETER"
> options useful, as they allow you to
control the FROM and TO parts of the message. </P
><P
->See the <TT
-CLASS="PARAMETER"
-><I
->message command</I
-></TT
-> parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>See the message command parameter in the <TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
> for a description of how to handle incoming
WinPopup messages in Samba. </P
><P
@@ -647,7 +614,8 @@ CLASS="COMMAND"
CLASS="PROGRAMLISTING"
>username = &lt;value&gt;
password = &lt;value&gt;
-domain = &lt;value&gt;</PRE
+domain = &lt;value&gt;
+ </PRE
></P
><P
>If the domain parameter is missing the current workgroup name
@@ -722,14 +690,12 @@ CLASS="COMMAND"
><DD
><P
>Override the default workgroup (domain) specified
- in the workgroup parameter of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> file for this connection. This may be
- needed to connect to some servers. </P
+ in the workgroup parameter of the <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>
+ file for this connection. This may be needed to connect to some
+ servers. </P
></DD
><DT
>-T tar options</DT
@@ -939,7 +905,7 @@ CLASS="EMPHASIS"
></SPAN
></P
><P
->All file names can be given as DOS path names (with '\\'
+>All file names can be given as DOS path names (with '\'
as the component separator) or as UNIX path names (with '/' as
the component separator). </P
><P
@@ -1034,21 +1000,13 @@ CLASS="COMMAND"
>-c 'print -'</B
>. </P
></DD
-><DT
->-k</DT
-><DD
-><P
-> Try to authenticate with kerberos. Only useful in
- an Active Directory environment.
- </P
-></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN336"
+NAME="AEN310"
></A
><H2
>OPERATIONS</H2
@@ -1061,7 +1019,7 @@ CLASS="PROMPT"
>smb:\&gt; </TT
></P
><P
->The backslash ("\\") indicates the current working directory
+>The backslash ("\") indicates the current working directory
on the server, and will change if the current working directory
is changed. </P
><P
@@ -1538,7 +1496,7 @@ CLASS="REPLACEABLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN527"
+NAME="AEN501"
></A
><H2
>NOTES</H2
@@ -1559,7 +1517,7 @@ NAME="AEN527"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN532"
+NAME="AEN506"
></A
><H2
>ENVIRONMENT VARIABLES</H2
@@ -1592,7 +1550,7 @@ CLASS="ENVAR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN540"
+NAME="AEN514"
></A
><H2
>INSTALLATION</H2
@@ -1623,12 +1581,10 @@ CLASS="EMPHASIS"
and writeable only by the user. </P
><P
>To test the client, you will need to know the name of a
- running SMB/CIFS server. It is possible to run <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ running SMB/CIFS server. It is possible to run <B
+CLASS="COMMAND"
+>smbd(8)
+ </B
> as an ordinary user - running that server as a daemon
on a user-accessible port (typically any port number over 1024)
would provide a suitable test server. </P
@@ -1636,7 +1592,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN552"
+NAME="AEN524"
></A
><H2
>DIAGNOSTICS</H2
@@ -1652,17 +1608,18 @@ NAME="AEN552"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN556"
+NAME="AEN528"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 2.2 of the Samba suite.</P
+>This man page is correct for version 2.2 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN559"
+NAME="AEN531"
></A
><H2
>AUTHOR</H2
@@ -1674,14 +1631,14 @@ NAME="AEN559"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbcontrol.1.html b/docs/htmldocs/smbcontrol.1.html
index 25c8e33e08..12662dcc04 100644
--- a/docs/htmldocs/smbcontrol.1.html
+++ b/docs/htmldocs/smbcontrol.1.html
@@ -5,7 +5,7 @@
>smbcontrol</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBCONTROL.1"
+NAME="SMBCONTROL"
></A
>smbcontrol</H1
><DIV
@@ -52,42 +52,37 @@ NAME="AEN17"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
CLASS="COMMAND"
>smbcontrol</B
> is a very small program, which
- sends messages to a <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, a <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
->, or a <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
-> daemon running on the system.</P
+ sends messages to an <A
+HREF="smbd.8.html"
+TARGET="_top"
+>smbd(8)</A
+>,
+ an <A
+HREF="nmbd.8.html"
+TARGET="_top"
+>nmbd(8)</A
+>
+ or a <A
+HREF="winbindd.8.html"
+TARGET="_top"
+>winbindd(8)</A
+>
+ daemon running on the system.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN34"
+NAME="AEN26"
></A
><H2
>OPTIONS</H2
@@ -114,7 +109,8 @@ CLASS="PARAMETER"
><I
>nmbd</I
></TT
->, <TT
+>
+ <TT
CLASS="PARAMETER"
><I
>smbd</I
@@ -326,7 +322,7 @@ CLASS="CONSTANT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN110"
+NAME="AEN102"
></A
><H2
>VERSION</H2
@@ -337,29 +333,33 @@ NAME="AEN110"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN113"
+NAME="AEN105"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
-> and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->.</P
+><A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
+>,
+ and <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>.
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN122"
+NAME="AEN112"
></A
><H2
>AUTHOR</H2
@@ -371,14 +371,14 @@ NAME="AEN122"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbd.8.html b/docs/htmldocs/smbd.8.html
index 47788cdb36..65f5f95b8d 100644
--- a/docs/htmldocs/smbd.8.html
+++ b/docs/htmldocs/smbd.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>smbd</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBD.8"
-></A
->smbd</H1
+NAME="SMBD">smbd</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -29,15 +28,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>smbd</B
-> [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d &lt;debug level&gt;] [-l &lt;log directory&gt;] [-p &lt;port number&gt;] [-O &lt;socket option&gt;] [-s &lt;configuration file&gt;]</P
+> [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d &#60;debug level&#62;] [-l &#60;log directory&#62;] [-p &#60;port number&#62;] [-O &#60;socket option&#62;] [-s &#60;configuration file&#62;]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -47,13 +44,7 @@ NAME="AEN23"
><H2
>DESCRIPTION</H2
><P
->This program is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
-> suite.</P
+>This program is part of the Samba suite.</P
><P
><B
CLASS="COMMAND"
@@ -70,24 +61,28 @@ CLASS="COMMAND"
>An extensive description of the services that the
server can provide is given in the man page for the
configuration file controlling the attributes of those
- services (see <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ services (see <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)
+ </TT
+></A
>. This man page will not describe the
services, but will concentrate on the administrative aspects
of running the server.</P
><P
>Please note that there are significant security
- implications to running this server, and the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> manual page should be regarded as mandatory reading before
+ implications to running this server, and the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+></A
+>
+ manpage should be regarded as mandatory reading before
proceeding with installation.</P
><P
>A session is created whenever a client requests one.
@@ -109,7 +104,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN42"
+NAME="AEN37"
></A
><H2
>OPTIONS</H2
@@ -227,7 +222,7 @@ CLASS="COMMAND"
Samba was built.</P
></DD
><DT
->-d &lt;debug level&gt;</DT
+>-d &#60;debug level&#62;</DT
><DD
><P
><TT
@@ -256,23 +251,19 @@ CLASS="REPLACEABLE"
override the <A
HREF="smb.conf.5.html#loglevel"
TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
>log
- level</I
-></TT
+ level</A
+> parameter in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+> <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
></A
-> parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
> file.</P
></DD
><DT
->-l &lt;log directory&gt;</DT
+>-l &#60;log directory&#62;</DT
><DD
><P
>If specified,
@@ -289,25 +280,18 @@ CLASS="REPLACEABLE"
its size may be controlled by the <A
HREF="smb.conf.5.html#maxlogsize"
TARGET="_top"
+>max log size</A
+>
+ option in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
><TT
-CLASS="PARAMETER"
-><I
->max log size</I
-></TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
></A
->
- option in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> file. <SPAN
-CLASS="emphasis"
-><I
+> file. <I
CLASS="EMPHASIS"
>Beware:</I
-></SPAN
>
If the directory specified does not exist, <B
CLASS="COMMAND"
@@ -320,29 +304,26 @@ CLASS="COMMAND"
compile time.</P
></DD
><DT
->-O &lt;socket options&gt;</DT
+>-O &#60;socket options&#62;</DT
><DD
><P
>See the <A
HREF="smb.conf.5.html#socketoptions"
TARGET="_top"
+>socket options</A
+>
+ parameter in the <A
+HREF="smb.conf.5.html"
+TARGET="_top"
><TT
-CLASS="PARAMETER"
-><I
->socket options</I
-></TT
+CLASS="FILENAME"
+>smb.conf(5)
+ </TT
></A
->
- parameter in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
> file for details.</P
></DD
><DT
->-p &lt;port number&gt;</DT
+>-p &#60;port number&#62;</DT
><DD
><P
><TT
@@ -373,7 +354,7 @@ CLASS="REPLACEABLE"
in the above situation.</P
></DD
><DT
->-s &lt;configuration file&gt;</DT
+>-s &#60;configuration file&#62;</DT
><DD
><P
>The file specified contains the
@@ -381,12 +362,13 @@ CLASS="REPLACEABLE"
information in this file includes server-specific
information such as what printcap file to use, as well
as descriptions of all the services that the server is
- to provide. See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ to provide. See <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
+></A
> for more information.
The default configuration file name is determined at
compile time.</P
@@ -397,7 +379,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN135"
+NAME="AEN123"
></A
><H2
>FILES</H2
@@ -420,9 +402,9 @@ CLASS="COMMAND"
> meta-daemon, this file
must contain suitable startup information for the
meta-daemon. See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->"How to Install and Test SAMBA"</A
+>UNIX_INSTALL.html</A
>
document for details.
</P
@@ -440,9 +422,9 @@ CLASS="FILENAME"
>If running the server as a daemon at startup,
this file will need to contain an appropriate startup
sequence for the server. See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->"How to Install and Test SAMBA"</A
+>UNIX_INSTALL.html</A
>
document for details.</P
></DD
@@ -461,9 +443,9 @@ CLASS="COMMAND"
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
See the <A
-HREF="install.html"
+HREF="UNIX_INSTALL.html"
TARGET="_top"
->"How to Install and Test SAMBA"</A
+>UNIX_INSTALL.html</A
>
document for details.</P
></DD
@@ -474,30 +456,34 @@ CLASS="FILENAME"
></DT
><DD
><P
->This is the default location of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> server configuration file. Other common places that systems
+>This is the default location of the
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf</TT
+></A
+>
+ server configuration file. Other common places that systems
install this file are <TT
CLASS="FILENAME"
>/usr/samba/lib/smb.conf</TT
>
and <TT
CLASS="FILENAME"
->/etc/samba/smb.conf</TT
+>/etc/smb.conf</TT
>.</P
><P
>This file describes all the services the server
- is to make available to clients. See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> for more information.</P
+ is to make available to clients. See <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+> <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+></A
+> for more information.</P
></DD
></DL
></DIV
@@ -505,7 +491,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN173"
+NAME="AEN159"
></A
><H2
>LIMITATIONS</H2
@@ -524,7 +510,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN177"
+NAME="AEN163"
></A
><H2
>ENVIRONMENT VARIABLES</H2
@@ -555,7 +541,7 @@ CLASS="CONSTANT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN186"
+NAME="AEN172"
></A
><H2
>PAM INTERACTION</H2
@@ -563,35 +549,22 @@ NAME="AEN186"
>Samba uses PAM for authentication (when presented with a plaintext
password), for account checking (is this account disabled?) and for
session management. The degree too which samba supports PAM is restricted
- by the limitations of the SMB protocol and the <A
+ by the limitations of the SMB protocol and the
+ <A
HREF="smb.conf.5.html#OBEYPAMRESRICTIONS"
TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->obey
- pam restricions</I
-></TT
-></A
-> <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> paramater. When this is set, the following restrictions apply:
+>obey pam restricions</A
+>
+ smb.conf paramater. When this is set, the following restrictions apply:
</P
><P
></P
><UL
><LI
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Account Validation</I
-></SPAN
>: All accesses to a
samba server are checked
against PAM to see if the account is vaild, not disabled and is permitted to
@@ -600,12 +573,9 @@ CLASS="EMPHASIS"
></LI
><LI
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Session Management</I
-></SPAN
>: When not using share
level secuirty, users must pass PAM's session checks before access
is granted. Note however, that this is bypassed in share level secuirty.
@@ -618,7 +588,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN201"
+NAME="AEN183"
></A
><H2
>VERSION</H2
@@ -629,7 +599,7 @@ NAME="AEN201"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN204"
+NAME="AEN186"
></A
><H2
>DIAGNOSTICS</H2
@@ -652,7 +622,7 @@ NAME="AEN204"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN209"
+NAME="AEN191"
></A
><H2
>SIGNALS</H2
@@ -674,12 +644,9 @@ CLASS="COMMAND"
that <B
CLASS="COMMAND"
>SIGKILL (-9)</B
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
>
be used, except as a last resort, as this may leave the shared
memory area in an inconsistent state. The safe way to terminate
@@ -693,14 +660,16 @@ CLASS="COMMAND"
CLASS="COMMAND"
>smbd</B
> may be raised
- or lowered using <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbcontrol</SPAN
->(1)</SPAN
-> program (SIGUSR[1|2] signals are no longer
- used since Samba 2.2). This is to allow transient problems to be diagnosed,
+ or lowered using <A
+HREF="smbcontrol.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbcontrol(1)
+ </B
+></A
+> program (SIGUSR[1|2] signals are no longer used in
+ Samba 2.2). This is to allow transient problems to be diagnosed,
whilst still running at a normally low log level.</P
><P
>Note that as the signal handlers send a debug write,
@@ -719,55 +688,55 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN227"
+NAME="AEN208"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->hosts_access</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->inetd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testparm</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->testprns</SPAN
->(1)</SPAN
->, and the
- Internet RFC's <TT
+>hosts_access(5), <B
+CLASS="COMMAND"
+>inetd(8)</B
+>,
+ <A
+HREF="nmbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>nmbd(8)</B
+></A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+>
+ </A
+>, <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)
+ </B
+></A
+>, <A
+HREF="testparm.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> testparm(1)</B
+></A
+>, <A
+HREF="testprns.1.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>testprns(1)</B
+></A
+>, and the Internet RFC's
+ <TT
CLASS="FILENAME"
>rfc1001.txt</TT
>, <TT
@@ -785,7 +754,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN254"
+NAME="AEN225"
></A
><H2
>AUTHOR</H2
@@ -797,14 +766,14 @@ NAME="AEN254"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbgroupedit.8.html b/docs/htmldocs/smbgroupedit.8.html
index 856c778cb4..e20b34883c 100644
--- a/docs/htmldocs/smbgroupedit.8.html
+++ b/docs/htmldocs/smbgroupedit.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>smbgroupedit</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBGROUPEDIT.8"
-></A
->smbgroupedit</H1
+NAME="SMBGROUPEDIT">smbgroupedit</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -29,15 +28,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>smbroupedit</B
-> [-v [l|s]] [-a UNIX-groupname [-d NT-groupname|-p privilege|]]</P
+> [-v [l|s]] [-a UNIX-groupname [-d NT-groupname|-p privilege|]]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -47,13 +44,12 @@ NAME="AEN13"
><H2
>DESCRIPTION</H2
><P
->This program is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
-> suite.</P
+>This program is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+>Samba</A
+>
+suite.</P
><P
>The smbgroupedit command allows for mapping unix groups
to NT Builtin, Domain, or Local groups. Also
@@ -63,7 +59,7 @@ etc.</P
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN20"
+NAME="AEN18"
></A
><H2
>OPTIONS</H2
@@ -90,6 +86,12 @@ CLASS="VARIABLELIST"
><P
>give a long listing, of the format:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
>"NT Group Name"
@@ -98,10 +100,20 @@ CLASS="PROGRAMLISTING"
Group type :
Comment :
Privilege :</PRE
+></TD
+></TR
+></TABLE
></P
><P
->For example:
-<PRE
+>For examples,</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>Users
SID : S-1-5-32-545
@@ -109,6 +121,9 @@ CLASS="PROGRAMLISTING"
Group type: Local group
Comment :
Privilege : No privilege</PRE
+></TD
+></TR
+></TABLE
></P
></DD
><DT
@@ -117,15 +132,34 @@ CLASS="PROGRAMLISTING"
><P
>display a short listing of the format:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
>NTGroupName(SID) -&#62; UnixGroupName</PRE
+></TD
+></TR
+></TABLE
></P
><P
->For example:
-<PRE
+>For example,</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>Users (S-1-5-32-545) -&#62; -1</PRE
+></TD
+></TR
+></TABLE
></P
></DD
></DL
@@ -199,15 +233,23 @@ CLASS="FILENAME"
></LI
><LI
><P
->map this domadm group to the 'domain admins' group:</P
+>map this domadm group to the 'domain admins' group:
+ </P
><P
></P
><OL
TYPE="a"
><LI
><P
->Get the SID for the Windows NT "Domain Admins" group:</P
+>Get the SID for the Windows NT "Domain Admins"
+ group:</P
><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
><PRE
CLASS="PROGRAMLISTING"
><TT
@@ -218,13 +260,24 @@ CLASS="COMMAND"
>smbgroupedit -vs | grep "Domain Admins"</B
>
Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -&#62; -1</PRE
+></TD
+></TR
+></TABLE
></P
></LI
><LI
><P
>map the unix domadm group to the Windows NT
"Domain Admins" group, by running the command:
-<PRE
+ </P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
><TT
CLASS="PROMPT"
@@ -235,14 +288,14 @@ CLASS="COMMAND"
-c S-1-5-21-1108995562-3116817432-1375597819-512 \
-u domadm -td</B
></PRE
+></TD
+></TR
+></TABLE
></P
><P
-><SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>warning:</I
-></SPAN
> don't copy and paste this sample, the
Domain Admins SID (the S-1-5-21-...-512) is different for every PDC.
</P
@@ -251,8 +304,15 @@ CLASS="EMPHASIS"
></LI
></OL
><P
->To verify that your mapping has taken effect:
-<PRE
+>To verify that your mapping has taken effect:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
><TT
CLASS="PROMPT"
@@ -262,12 +322,22 @@ CLASS="COMMAND"
>smbgroupedit -vs|grep "Domain Admins"</B
>
Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -&#62; domadm</PRE
+></TD
+></TR
+></TABLE
></P
><P
>To give access to a certain directory on a domain member machine (an
NT/W2K or a samba server running winbind) to some users who are member
-of a group on your samba PDC, flag that group as a domain group:
-<PRE
+of a group on your samba PDC, flag that group as a domain group:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
><TT
CLASS="PROMPT"
@@ -276,12 +346,15 @@ CLASS="PROMPT"
CLASS="COMMAND"
>smbgroupedit -a unixgroup -td</B
></PRE
+></TD
+></TR
+></TABLE
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN87"
+NAME="AEN90"
></A
><H2
>VERSION</H2
@@ -292,23 +365,21 @@ the Samba suite.</P
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN90"
+NAME="AEN93"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+><A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN96"
+NAME="AEN97"
></A
><H2
>AUTHOR</H2
@@ -323,8 +394,7 @@ CLASS="COMMAND"
>smbgroupedit</B
> was written by Jean Francois Micouleau.
The current set of manpages and documentation is maintained
-by the Samba Team in the same fashion as the Samba source code. The conversion
-to DocBook XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.</P
+by the Samba Team in the same fashion as the Samba source code.</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbmnt.8.html b/docs/htmldocs/smbmnt.8.html
index de3af0b0a4..06b9fb1fd3 100644
--- a/docs/htmldocs/smbmnt.8.html
+++ b/docs/htmldocs/smbmnt.8.html
@@ -5,7 +5,7 @@
>smbmnt</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBMNT.8"
+NAME="SMBMNT"
></A
>smbmnt</H1
><DIV
@@ -65,12 +65,14 @@ CLASS="COMMAND"
CLASS="COMMAND"
>smbmnt</B
> program is normally invoked
- by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbmount</SPAN
->(8)</SPAN
+ by <A
+HREF="smbmount.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbmount(8)</B
+>
+ </A
>. It should not be invoked directly by users. </P
><P
>smbmount searches the normal PATH for smbmnt. You must ensure
@@ -79,7 +81,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN31"
+NAME="AEN30"
></A
><H2
>OPTIONS</H2
@@ -137,7 +139,7 @@ CLASS="VARIABLELIST"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN58"
+NAME="AEN57"
></A
><H2
>AUTHOR</H2
@@ -170,8 +172,7 @@ TARGET="_top"
</P
><P
>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbmount.8.html b/docs/htmldocs/smbmount.8.html
index bc9fcf72e2..81a3ac04b2 100644
--- a/docs/htmldocs/smbmount.8.html
+++ b/docs/htmldocs/smbmount.8.html
@@ -5,7 +5,7 @@
>smbmount</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBMOUNT.8"
+NAME="SMBMOUNT"
></A
>smbmount</H1
><DIV
@@ -55,12 +55,9 @@ CLASS="COMMAND"
CLASS="COMMAND"
>mount.smbfs</B
> by
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->mount</SPAN
->(8)</SPAN
+ the <B
+CLASS="COMMAND"
+>mount(8)</B
> command when using the
"-t smbfs" option. This command only works in Linux, and the kernel must
support the smbfs filesystem. </P
@@ -83,9 +80,10 @@ CLASS="COMMAND"
typically this output will end up in <TT
CLASS="FILENAME"
>log.smbmount</TT
->. The <B
+>. The
+ <B
CLASS="COMMAND"
-> smbmount</B
+>smbmount</B
> process may also be called mount.smbfs.</P
><P
><SPAN
@@ -98,12 +96,9 @@ CLASS="EMPHASIS"
CLASS="COMMAND"
>smbmount</B
>
- calls <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbmnt</SPAN
->(8)</SPAN
+ calls <B
+CLASS="COMMAND"
+>smbmnt(8)</B
> to do the actual mount. You
must make sure that <B
CLASS="COMMAND"
@@ -114,7 +109,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN35"
+NAME="AEN31"
></A
><H2
>OPTIONS</H2
@@ -164,13 +159,16 @@ CLASS="COMMAND"
>credentials=&lt;filename&gt;</DT
><DD
><P
->specifies a file that contains a username and/or password.
-The format of the file is:
-<PRE
+>specifies a file that contains a username
+ and/or password. The format of the file is:</P
+><P
+> <PRE
CLASS="PROGRAMLISTING"
->username = &lt;value&gt;
-password = &lt;value&gt;</PRE
-></P
+> username = &lt;value&gt;
+ password = &lt;value&gt;
+ </PRE
+>
+ </P
><P
>This is preferred over having passwords in plaintext in a
shared file, such as <TT
@@ -257,12 +255,10 @@ CLASS="FILENAME"
>sets the TCP socket options. See the <A
HREF="smb.conf.5.html#SOCKETOPTIONS"
TARGET="_top"
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+><TT
+CLASS="FILENAME"
+>smb.conf
+ </TT
></A
> <TT
CLASS="PARAMETER"
@@ -336,7 +332,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN130"
+NAME="AEN125"
></A
><H2
>ENVIRONMENT VARIABLES</H2
@@ -368,7 +364,7 @@ CLASS="ENVAR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN138"
+NAME="AEN133"
></A
><H2
>BUGS</H2
@@ -403,7 +399,7 @@ NAME="AEN138"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN147"
+NAME="AEN142"
></A
><H2
>SEE ALSO</H2
@@ -413,19 +409,22 @@ NAME="AEN147"
><P
>FreeBSD also has a smbfs, but it is not related to smbmount</P
><P
->For Solaris, HP-UX and others you may want to look at <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbsh</SPAN
->(1)</SPAN
-> or at other solutions, such as
- Sharity or perhaps replacing the SMB server with a NFS server.</P
+>For Solaris, HP-UX and others you may want to look at
+ <A
+HREF="smbsh.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbsh(1)</B
+></A
+> or at other
+ solutions, such as sharity or perhaps replacing the SMB server with
+ a NFS server.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN155"
+NAME="AEN149"
></A
><H2
>AUTHOR</H2
@@ -458,8 +457,7 @@ TARGET="_top"
</P
><P
>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbpasswd.5.html b/docs/htmldocs/smbpasswd.5.html
index a07be03b41..ac3ab94691 100644
--- a/docs/htmldocs/smbpasswd.5.html
+++ b/docs/htmldocs/smbpasswd.5.html
@@ -5,7 +5,7 @@
>smbpasswd</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBPASSWD.5"
+NAME="SMBPASSWD"
></A
>smbpasswd</H1
><DIV
@@ -47,12 +47,10 @@ NAME="AEN11"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>smbpasswd is the Samba encrypted password file. It contains
@@ -64,7 +62,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN18"
+NAME="AEN16"
></A
><H2
>FILE FORMAT</H2
@@ -206,7 +204,7 @@ CLASS="EMPHASIS"
the attributes of the users account. In the Samba 2.2 release
this field is bracketed by '[' and ']' characters and is always
13 characters in length (including the '[' and ']' characters).
- The contents of this field may be any of the following characters:
+ The contents of this field may be any of the characters.
</P
><P
></P
@@ -243,12 +241,10 @@ CLASS="PARAMETER"
> parameter is set in the <A
HREF="smb.conf.5.html#NULLPASSWORDS"
TARGET="_top"
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+><TT
+CLASS="FILENAME"
+>smb.conf(5)
+ </TT
></A
> config file. </P
></LI
@@ -261,7 +257,8 @@ CLASS="EMPHASIS"
>D</I
></SPAN
> - This means the account
- is disabled and no SMB/CIFS logins will be allowed for this user. </P
+ is disabled and no SMB/CIFS logins will be allowed for
+ this user. </P
></LI
><LI
><P
@@ -299,7 +296,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN77"
+NAME="AEN73"
></A
><H2
>VERSION</H2
@@ -310,23 +307,23 @@ NAME="AEN77"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN80"
+NAME="AEN76"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+><A
+HREF="smbpasswd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbpasswd(8)</B
+></A
+>,
+ <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
>, and
the Internet RFC1321 for details on the MD4 algorithm.
</P
@@ -334,7 +331,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN89"
+NAME="AEN82"
></A
><H2
>AUTHOR</H2
@@ -346,14 +343,14 @@ NAME="AEN89"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbpasswd.8.html b/docs/htmldocs/smbpasswd.8.html
index 223cd02521..da3cb9f601 100644
--- a/docs/htmldocs/smbpasswd.8.html
+++ b/docs/htmldocs/smbpasswd.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>smbpasswd</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBPASSWD.8"
-></A
->smbpasswd</H1
+NAME="SMBPASSWD">smbpasswd</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -29,15 +28,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>smbpasswd</B
-> [-a] [-x] [-d] [-e] [-D debuglevel] [-n] [-r &lt;remote machine&gt;] [-R &lt;name resolve order&gt;] [-m] [-U username[%password]] [-h] [-s] [-w pass] [-i] [-L] [username]</P
+> [-a] [-x] [-d] [-e] [-D debuglevel] [-n] [-r &#60;remote machine&#62;] [-R &#60;name resolve order&#62;] [-m] [-U username[%password]] [-h] [-s] [-w pass] [-i] [-L] [username]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -47,23 +44,18 @@ NAME="AEN27"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>The smbpasswd program has several different
- functions, depending on whether it is run by the <SPAN
-CLASS="emphasis"
-><I
+ functions, depending on whether it is run by the <I
CLASS="EMPHASIS"
>root</I
-></SPAN
-> user
- or not. When run as a normal user it allows the user to change
+>
+ user or not. When run as a normal user it allows the user to change
the password used for their SMB sessions on any machines that store
SMB passwords. </P
><P
@@ -72,33 +64,25 @@ CLASS="EMPHASIS"
similar to the way the <B
CLASS="COMMAND"
>passwd(1)</B
-> program works. <B
+> program works.
+ <B
CLASS="COMMAND"
-> smbpasswd</B
+>smbpasswd</B
> differs from how the passwd program works
- however in that it is not <SPAN
-CLASS="emphasis"
-><I
+ however in that it is not <I
CLASS="EMPHASIS"
>setuid root</I
-></SPAN
> but works in
- a client-server mode and communicates with a
- locally running <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ a client-server mode and communicates with a locally running
+ <B
+CLASS="COMMAND"
+>smbd(8)</B
>. As a consequence in order for this to
succeed the smbd daemon must be running on the local machine. On a
UNIX machine the encrypted SMB passwords are usually stored in
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
+ the <TT
+CLASS="FILENAME"
+>smbpasswd(5)</TT
> file. </P
><P
>When run by an ordinary user with no options, smbpasswd
@@ -107,28 +91,18 @@ CLASS="REFENTRYTITLE"
was typed correctly. No passwords will be echoed on the screen
whilst being typed. If you have a blank SMB password (specified by
the string "NO PASSWORD" in the smbpasswd file) then just press
- the &lt;Enter&gt; key when asked for your old password. </P
+ the &#60;Enter&#62; key when asked for your old password. </P
><P
>smbpasswd can also be used by a normal user to change their
SMB password on remote machines, such as Windows NT Primary Domain
- Controllers. See the (<TT
-CLASS="PARAMETER"
-><I
->-r</I
-></TT
->) and <TT
-CLASS="PARAMETER"
-><I
->-U</I
-></TT
-> options
- below. </P
+ Controllers. See the (-r) and -U options below. </P
><P
>When run by root, smbpasswd allows new users to be added
and deleted in the smbpasswd file, as well as allows changes to
- the attributes of the user in this file to be made. When run by root, <B
+ the attributes of the user in this file to be made. When run by root,
+ <B
CLASS="COMMAND"
-> smbpasswd</B
+>smbpasswd</B
> accesses the local smbpasswd file
directly, thus enabling changes to be made even if smbd is not
running. </P
@@ -136,7 +110,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN51"
+NAME="AEN43"
></A
><H2
>OPTIONS</H2
@@ -151,7 +125,7 @@ CLASS="VARIABLELIST"
><P
>This option specifies that the username
following should be added to the local smbpasswd file, with the
- new password typed (type &lt;Enter&gt; for the old password). This
+ new password typed (type &#60;Enter&#62; for the old password). This
option is ignored if the username following already exists in
the smbpasswd file and it is treated like a regular change
password command. Note that the default passdb backends require
@@ -195,12 +169,10 @@ CLASS="CONSTANT"
><P
>If the smbpasswd file is in the 'old' format (pre-Samba 2.0
format) there is no space in the user's password entry to write
- this information and the command will FAIL. See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
+ this information and the command will FAIL. See <B
+CLASS="COMMAND"
+>smbpasswd(5)
+ </B
> for details on the 'old' and new password file formats.
</P
><P
@@ -224,12 +196,9 @@ CLASS="CONSTANT"
CLASS="COMMAND"
> smbpasswd</B
> will FAIL to enable the account.
- See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
+ See <B
+CLASS="COMMAND"
+>smbpasswd (5)</B
> for
details on the 'old' and new password file formats. </P
><P
@@ -325,12 +294,9 @@ CLASS="PARAMETER"
copy of the user account database and will not allow the password
change).</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note</I
-></SPAN
> that Windows 95/98 do not have
a real password database so it is not possible to change passwords
specifying a Win95/98 machine as remote machine target. </P
@@ -344,7 +310,7 @@ CLASS="EMPHASIS"
name of the host being connected to. </P
><P
>The options are :"lmhosts", "host", "wins" and "bcast". They
- cause names to be resolved as follows: </P
+ cause names to be resolved as follows : </P
><P
></P
><UL
@@ -353,14 +319,12 @@ CLASS="EMPHASIS"
><TT
CLASS="CONSTANT"
>lmhosts</TT
->: Lookup an IP
+> : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
- no name type attached to the NetBIOS name (see the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->lmhosts</SPAN
->(5)</SPAN
+ no name type attached to the NetBIOS name (see the <A
+HREF="lmhosts.5.html"
+TARGET="_top"
+>lmhosts(5)</A
> for details) then
any name type matches for lookup.</P
></LI
@@ -369,7 +333,7 @@ CLASS="REFENTRYTITLE"
><TT
CLASS="CONSTANT"
>host</TT
->: Do a standard host
+> : Do a standard host
name to IP address resolution, using the system <TT
CLASS="FILENAME"
>/etc/hosts
@@ -389,7 +353,7 @@ CLASS="FILENAME"
><TT
CLASS="CONSTANT"
>wins</TT
->: Query a name with
+> : Query a name with
the IP address listed in the <TT
CLASS="PARAMETER"
><I
@@ -404,7 +368,7 @@ CLASS="PARAMETER"
><TT
CLASS="CONSTANT"
>bcast</TT
->: Do a broadcast on
+> : Do a broadcast on
each of the known local interfaces listed in the
<TT
CLASS="PARAMETER"
@@ -421,12 +385,10 @@ CLASS="PARAMETER"
CLASS="COMMAND"
>lmhosts, host, wins, bcast</B
>
- and without this parameter or any entry in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ and without this parameter or any entry in the
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file the name resolution methods will
be attempted in this order. </P
></DD
@@ -512,7 +474,7 @@ CLASS="PARAMETER"
>. Note that the password is stored in
the <TT
CLASS="FILENAME"
->secrets.tdb</TT
+>private/secrets.tdb</TT
> and is keyed off
of the admin's DN. This means that if the value of <TT
CLASS="PARAMETER"
@@ -547,12 +509,9 @@ CLASS="PARAMETER"
><DD
><P
>This specifies the username for all of the
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>root only</I
-></SPAN
> options to operate on. Only root
can specify this parameter as only root has the permission needed
to modify attributes directly in the local smbpasswd file.
@@ -564,7 +523,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN189"
+NAME="AEN173"
></A
><H2
>NOTES</H2
@@ -578,71 +537,70 @@ CLASS="COMMAND"
is to add a restriction to the hosts that may access the <B
CLASS="COMMAND"
> smbd</B
-> running on the local machine by specifying either <TT
+> running on the local machine by specifying a
+ <TT
CLASS="PARAMETER"
><I
->allow
- hosts</I
+>allow hosts</I
></TT
> or <TT
CLASS="PARAMETER"
><I
>deny hosts</I
></TT
-> entry in
- the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>
+ entry in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file and neglecting to
allow "localhost" access to the smbd. </P
><P
>In addition, the smbpasswd command is only useful if Samba
- has been set up to use encrypted passwords. See the document <A
-HREF="pwencrypt.html"
-TARGET="_top"
-> "LanMan and NT Password Encryption in Samba"</A
+ has been set up to use encrypted passwords. See the file
+ <TT
+CLASS="FILENAME"
+>ENCRYPTION.txt</TT
> in the docs directory for details
on how to do this. </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN201"
+NAME="AEN183"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 3.0 of the Samba suite.</P
+>This man page is correct for version 3.0 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN204"
+NAME="AEN186"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbpasswd</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
->.</P
+><A
+HREF="smbpasswd.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smbpasswd(5)</TT
+></A
+>,
+ <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN213"
+NAME="AEN192"
></A
><H2
>AUTHOR</H2
@@ -654,14 +612,14 @@ NAME="AEN213"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbsh.1.html b/docs/htmldocs/smbsh.1.html
index c8c61fb6fe..bab2b45cdd 100644
--- a/docs/htmldocs/smbsh.1.html
+++ b/docs/htmldocs/smbsh.1.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>smbsh</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBSH.1"
-></A
->smbsh</H1
+NAME="SMBSH">smbsh</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -30,15 +29,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>smbsh</B
-> [-W workgroup] [-U username] [-P prefix] [-R &lt;name resolve order&gt;] [-d &lt;debug level&gt;] [-l logfile] [-L libdir]</P
+> [-W workgroup] [-U username] [-P prefix] [-R &#60;name resolve order&#62;] [-d &#60;debug level&#62;] [-l logfile] [-L libdir]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -48,12 +45,10 @@ NAME="AEN18"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -79,7 +74,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN30"
+NAME="AEN28"
></A
><H2
>OPTIONS</H2
@@ -93,12 +88,9 @@ CLASS="VARIABLELIST"
><DD
><P
>Override the default workgroup specified in the
- workgroup parameter of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ workgroup parameter of the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file
for this session. This may be needed to connect to some
servers. </P
@@ -120,17 +112,14 @@ CLASS="REFENTRYTITLE"
>This option allows
the user to set the directory prefix for SMB access. The
default value if this option is not specified is
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>smb</I
-></SPAN
>.
</P
></DD
><DT
->-R &lt;name resolve order&gt;</DT
+>-R &#60;name resolve order&#62;</DT
><DD
><P
>This option is used to determine what naming
@@ -138,7 +127,7 @@ CLASS="EMPHASIS"
host names to IP addresses. The option takes a space-separated
string of different name resolution options.</P
><P
->The options are: "lmhosts", "host", "wins" and "bcast".
+>The options are :"lmhosts", "host", "wins" and "bcast".
They cause names to be resolved as follows :</P
><P
></P
@@ -148,18 +137,16 @@ CLASS="EMPHASIS"
><TT
CLASS="CONSTANT"
>lmhosts</TT
->:
+> :
Lookup an IP address in the Samba lmhosts file. If the
line in lmhosts has no name type attached to the
NetBIOS name
- (see the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->lmhosts</SPAN
->(5)</SPAN
-> for details)
- then any name type matches for lookup.
+ (see the <A
+HREF="lmhosts.5.html"
+TARGET="_top"
+>lmhosts(5)</A
+>
+ for details) then any name type matches for lookup.
</P
></LI
><LI
@@ -167,7 +154,7 @@ CLASS="REFENTRYTITLE"
><TT
CLASS="CONSTANT"
>host</TT
->:
+> :
Do a standard host name to IP address resolution, using
the system <TT
CLASS="FILENAME"
@@ -189,7 +176,7 @@ CLASS="FILENAME"
><TT
CLASS="CONSTANT"
>wins</TT
->:
+> :
Query a name with the IP address listed in the
<TT
CLASS="PARAMETER"
@@ -206,7 +193,7 @@ CLASS="PARAMETER"
><TT
CLASS="CONSTANT"
>bcast</TT
->:
+> :
Do a broadcast on each of the known local interfaces
listed in the <TT
CLASS="PARAMETER"
@@ -222,19 +209,11 @@ CLASS="PARAMETER"
></UL
><P
>If this parameter is not set then the name resolve order
- defined in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ defined in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file parameter
- (<TT
-CLASS="PARAMETER"
-><I
->name resolve order</I
-></TT
->) will be used. </P
+ (name resolve order) will be used. </P
><P
>The default order is lmhosts, host, wins, bcast. Without
this parameter or any entry in the <TT
@@ -243,17 +222,15 @@ CLASS="PARAMETER"
>name resolve order
</I
></TT
-> parameter of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> file, the name resolution methods
- will be attempted in this order. </P
+> parameter of the <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>
+ file, the name resolution methods will be attempted in this
+ order. </P
></DD
><DT
->-d &lt;debug level&gt;</DT
+>-d &#60;debug level&#62;</DT
><DD
><P
>debug level is an integer from 0 to 10.</P
@@ -262,12 +239,9 @@ CLASS="REFENTRYTITLE"
is zero.</P
><P
>The higher this value, the more detail will be logged
- about the activities of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmblookup</SPAN
->(1)</SPAN
+ about the activities of <B
+CLASS="COMMAND"
+>nmblookup</B
>. At level
0, only critical errors and serious warnings will be logged.
</P
@@ -310,7 +284,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN104"
+NAME="AEN91"
></A
><H2
>EXAMPLES</H2
@@ -323,10 +297,17 @@ CLASS="COMMAND"
> smbsh</B
> from the prompt and enter the username and password
that authenticates you to the machine running the Windows NT
- operating system.
-<PRE
+ operating system.</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
-><TT
+> <TT
CLASS="PROMPT"
>system% </TT
><TT
@@ -335,7 +316,7 @@ CLASS="USERINPUT"
>smbsh</B
></TT
>
-<TT
+ <TT
CLASS="PROMPT"
>Username: </TT
><TT
@@ -344,7 +325,7 @@ CLASS="USERINPUT"
>user</B
></TT
>
-<TT
+ <TT
CLASS="PROMPT"
>Password: </TT
><TT
@@ -352,7 +333,11 @@ CLASS="USERINPUT"
><B
>XXXXXXX</B
></TT
-></PRE
+>
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>Any dynamically linked command you execute from
@@ -372,7 +357,7 @@ CLASS="COMMAND"
the workgroup MYGROUP. The command
<B
CLASS="COMMAND"
->ls /smb/MYGROUP/&lt;machine-name&gt;</B
+>ls /smb/MYGROUP/&#60;machine-name&#62;</B
> will show the share
names for that machine. You could then, for example, use the <B
CLASS="COMMAND"
@@ -389,17 +374,18 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN124"
+NAME="AEN112"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 3.0 of the Samba suite.</P
+>This man page is correct for version 3.0 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN127"
+NAME="AEN115"
></A
><H2
>BUGS</H2
@@ -432,29 +418,30 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN136"
+NAME="AEN124"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-></P
+><A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN145"
+NAME="AEN130"
></A
><H2
>AUTHOR</H2
@@ -466,14 +453,14 @@ NAME="AEN145"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbspool.8.html b/docs/htmldocs/smbspool.8.html
index b66d08381d..8dc2fbbd63 100644
--- a/docs/htmldocs/smbspool.8.html
+++ b/docs/htmldocs/smbspool.8.html
@@ -5,7 +5,7 @@
>smbspool</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBSPOOL.8"
+NAME="SMBSPOOL"
></A
>smbspool</H1
><DIV
@@ -47,12 +47,10 @@ NAME="AEN17"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>smbspool is a very small print spooling program that
@@ -89,7 +87,8 @@ CLASS="EMPHASIS"
></LI
><LI
><P
->smb://username:password@workgroup/server/printer</P
+>smb://username:password@workgroup/server/printer
+ </P
></LI
></UL
><P
@@ -113,7 +112,7 @@ CLASS="ENVAR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN41"
+NAME="AEN39"
></A
><H2
>OPTIONS</H2
@@ -162,39 +161,41 @@ NAME="AEN41"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN56"
+NAME="AEN54"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 2.2 of the Samba suite.</P
+>This man page is correct for version 2.2 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN59"
+NAME="AEN57"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
->.</P
+><A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ and <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>.
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN68"
+NAME="AEN63"
></A
><H2
>AUTHOR</H2
@@ -212,14 +213,14 @@ CLASS="COMMAND"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbstatus.1.html b/docs/htmldocs/smbstatus.1.html
index 47b7ef112f..fb7e14fadd 100644
--- a/docs/htmldocs/smbstatus.1.html
+++ b/docs/htmldocs/smbstatus.1.html
@@ -5,7 +5,7 @@
>smbstatus</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBSTATUS.1"
+NAME="SMBSTATUS"
></A
>smbstatus</H1
><DIV
@@ -47,12 +47,10 @@ NAME="AEN21"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -64,7 +62,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN29"
+NAME="AEN27"
></A
><H2
>OPTIONS</H2
@@ -116,12 +114,13 @@ CLASS="VARIABLELIST"
>-p|--processes</DT
><DD
><P
->print a list of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+>print a list of <A
+HREF="smbd.8.html"
+TARGET="_top"
+> <B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
> processes and exit.
Useful for scripting.</P
></DD
@@ -137,12 +136,14 @@ CLASS="REFENTRYTITLE"
><P
>The default configuration file name is
determined at compile time. The file specified contains the
- configuration details required by the server. See <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ configuration details required by the server. See <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+>
+ </A
> for more information.</P
></DD
><DT
@@ -163,7 +164,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN79"
+NAME="AEN75"
></A
><H2
>VERSION</H2
@@ -174,29 +175,29 @@ NAME="AEN79"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN82"
+NAME="AEN78"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> and <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+><A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+> and
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
>.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN91"
+NAME="AEN84"
></A
><H2
>AUTHOR</H2
@@ -208,14 +209,14 @@ NAME="AEN91"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbtar.1.html b/docs/htmldocs/smbtar.1.html
index 1eb0017417..d3215c6901 100644
--- a/docs/htmldocs/smbtar.1.html
+++ b/docs/htmldocs/smbtar.1.html
@@ -5,7 +5,7 @@
>smbtar</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBTAR.1"
+NAME="SMBTAR"
></A
>smbtar</H1
><DIV
@@ -48,30 +48,30 @@ NAME="AEN26"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
CLASS="COMMAND"
>smbtar</B
> is a very small shell script on top
- of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
-> which dumps SMB shares directly to tape.</P
+ of <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)</B
+></A
+>
+ which dumps SMB shares directly to tape. </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN37"
+NAME="AEN34"
></A
><H2
>OPTIONS</H2
@@ -193,13 +193,11 @@ CLASS="PARAMETER"
><I
>-d</I
></TT
-> flag of <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->.</P
+> flag of <B
+CLASS="COMMAND"
+>smbclient(1)
+ </B
+>. </P
></DD
></DL
></DIV
@@ -207,7 +205,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN100"
+NAME="AEN95"
></A
><H2
>ENVIRONMENT VARIABLES</H2
@@ -224,7 +222,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN104"
+NAME="AEN99"
></A
><H2
>BUGS</H2
@@ -238,7 +236,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN108"
+NAME="AEN103"
></A
><H2
>CAVEATS</H2
@@ -251,7 +249,7 @@ NAME="AEN108"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN111"
+NAME="AEN106"
></A
><H2
>DIAGNOSTICS</H2
@@ -262,18 +260,21 @@ CLASS="emphasis"
CLASS="EMPHASIS"
>DIAGNOSTICS</I
></SPAN
-> section for the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
+> section for the
+ <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)</B
+>
+ </A
> command.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN118"
+NAME="AEN112"
></A
><H2
>VERSION</H2
@@ -284,35 +285,38 @@ NAME="AEN118"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN121"
+NAME="AEN115"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->.</P
+><A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)</B
+></A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
+>,
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN133"
+NAME="AEN123"
></A
><H2
>AUTHOR</H2
@@ -338,14 +342,14 @@ TARGET="_top"
>. Many
thanks to everyone who suggested extensions, improvements, bug
fixes, etc. The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter.</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/smbumount.8.html b/docs/htmldocs/smbumount.8.html
index 83041b796c..993436f0c6 100644
--- a/docs/htmldocs/smbumount.8.html
+++ b/docs/htmldocs/smbumount.8.html
@@ -5,7 +5,7 @@
>smbumount</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SMBUMOUNT.8"
+NAME="SMBUMOUNT"
></A
>smbumount</H1
><DIV
@@ -88,18 +88,20 @@ NAME="AEN23"
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbmount</SPAN
->(8)</SPAN
+><A
+HREF="smbmount.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbmount(8)</B
+>
+ </A
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN29"
+NAME="AEN28"
></A
><H2
>AUTHOR</H2
@@ -132,8 +134,7 @@ TARGET="_top"
</P
><P
>The conversion of this manpage for Samba 2.2 was performed
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
- was done by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/speed.html b/docs/htmldocs/speed.html
index c99a49142c..1a05706f92 100644
--- a/docs/htmldocs/speed.html
+++ b/docs/htmldocs/speed.html
@@ -5,7 +5,8 @@
>Samba performance issues</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,8 +17,8 @@ REL="PREVIOUS"
TITLE="Group mapping HOWTO"
HREF="groupmapping.html"><LINK
REL="NEXT"
-TITLE="Creating Group Profiles"
-HREF="groupprofiles.html"></HEAD
+TITLE="Appendixes"
+HREF="appendixes.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="groupprofiles.html"
+HREF="appendixes.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="SPEED"
-></A
->Chapter 19. Samba performance issues</H1
+NAME="SPEED">Chapter 22. Samba performance issues</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3033"
-></A
->19.1. Comparisons</H1
+NAME="AEN3055">22.1. Comparisons</H1
><P
>The Samba server uses TCP to talk to the client. Thus if you are
trying to see if it performs well you should really compare it to
@@ -111,9 +108,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3039"
-></A
->19.2. Socket options</H1
+NAME="AEN3061">22.2. Socket options</H1
><P
>There are a number of socket options that can greatly affect the
performance of a TCP based server like Samba.</P
@@ -139,9 +134,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3046"
-></A
->19.3. Read size</H1
+NAME="AEN3068">22.3. Read size</H1
><P
>The option "read size" affects the overlap of disk reads/writes with
network reads/writes. If the amount of data being transferred in
@@ -165,9 +158,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3051"
-></A
->19.4. Max xmit</H1
+NAME="AEN3073">22.4. Max xmit</H1
><P
>At startup the client and server negotiate a "maximum transmit" size,
which limits the size of nearly all SMB commands. You can set the
@@ -188,9 +179,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3056"
-></A
->19.5. Log level</H1
+NAME="AEN3078">22.5. Log level</H1
><P
>If you set the log level (also known as "debug level") higher than 2
then you may suffer a large drop in performance. This is because the
@@ -202,9 +191,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3059"
-></A
->19.6. Read raw</H1
+NAME="AEN3081">22.6. Read raw</H1
><P
>The "read raw" operation is designed to be an optimised, low-latency
file read operation. A server may choose to not support it,
@@ -224,9 +211,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3064"
-></A
->19.7. Write raw</H1
+NAME="AEN3086">22.7. Write raw</H1
><P
>The "write raw" operation is designed to be an optimised, low-latency
file write operation. A server may choose to not support it,
@@ -241,9 +226,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3068"
-></A
->19.8. Slow Clients</H1
+NAME="AEN3090">22.8. Slow Clients</H1
><P
>One person has reported that setting the protocol to COREPLUS rather
than LANMAN2 gave a dramatic speed improvement (from 10k/s to 150k/s).</P
@@ -258,9 +241,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3072"
-></A
->19.9. Slow Logins</H1
+NAME="AEN3094">22.9. Slow Logins</H1
><P
>Slow logins are almost always due to the password checking time. Using
the lowest practical "password level" will improve things a lot. You
@@ -271,9 +252,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN3075"
-></A
->19.10. Client tuning</H1
+NAME="AEN3097">22.10. Client tuning</H1
><P
>Often a speed problem can be traced to the client. The client (for
example Windows for Workgroups) can often be tuned for better TCP
@@ -407,7 +386,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="groupprofiles.html"
+HREF="appendixes.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -431,7 +410,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Creating Group Profiles</TD
+>Appendixes</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/swat.8.html b/docs/htmldocs/swat.8.html
index 0c65e7b1d6..f101a7bc26 100644
--- a/docs/htmldocs/swat.8.html
+++ b/docs/htmldocs/swat.8.html
@@ -5,7 +5,7 @@
>swat</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="SWAT.8"
+NAME="SWAT"
></A
>swat</H1
><DIV
@@ -47,24 +47,23 @@ NAME="AEN13"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
CLASS="COMMAND"
>swat</B
> allows a Samba administrator to
- configure the complex <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ configure the complex <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+> smb.conf(5)</TT
+></A
> file via a Web browser. In addition,
a <B
CLASS="COMMAND"
@@ -87,7 +86,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN29"
+NAME="AEN26"
></A
><H2
>OPTIONS</H2
@@ -102,14 +101,11 @@ CLASS="VARIABLELIST"
><P
>The default configuration file path is
determined at compile time. The file specified contains
- the configuration details required by the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-> server. This is the file
- that <B
+ the configuration details required by the <B
+CLASS="COMMAND"
+>smbd
+ </B
+> server. This is the file that <B
CLASS="COMMAND"
>swat</B
> will modify.
@@ -151,7 +147,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN49"
+NAME="AEN44"
></A
><H2
>INSTALLATION</H2
@@ -185,7 +181,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN61"
+NAME="AEN56"
></A
><H3
>Inetd Installation</H3
@@ -258,7 +254,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN83"
+NAME="AEN78"
></A
><H3
>Launching</H3
@@ -275,7 +271,7 @@ NAME="AEN83"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN87"
+NAME="AEN82"
></A
><H2
>FILES</H2
@@ -312,12 +308,10 @@ CLASS="FILENAME"
></DT
><DD
><P
->This is the default location of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>This is the default location of the <TT
+CLASS="FILENAME"
+>smb.conf(5)
+ </TT
> server configuration file that swat edits. Other
common places that systems install this file are <TT
CLASS="FILENAME"
@@ -335,7 +329,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN110"
+NAME="AEN103"
></A
><H2
>WARNINGS</H2
@@ -343,12 +337,10 @@ NAME="AEN110"
><B
CLASS="COMMAND"
>swat</B
-> will rewrite your <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+> will rewrite your <TT
+CLASS="FILENAME"
+>smb.conf
+ </TT
> file. It will rearrange the entries and delete all
comments, <TT
CLASS="PARAMETER"
@@ -369,17 +361,18 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN120"
+NAME="AEN111"
></A
><H2
>VERSION</H2
><P
->This man page is correct for version 2.2 of the Samba suite.</P
+>This man page is correct for version 2.2 of
+ the Samba suite.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN123"
+NAME="AEN114"
></A
><H2
>SEE ALSO</H2
@@ -387,24 +380,26 @@ NAME="AEN123"
><B
CLASS="COMMAND"
>inetd(5)</B
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-></P
+>,
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN133"
+NAME="AEN121"
></A
><H2
>AUTHOR</H2
@@ -416,14 +411,14 @@ NAME="AEN133"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/testparm.1.html b/docs/htmldocs/testparm.1.html
index 52413a1c27..baf11bacac 100644
--- a/docs/htmldocs/testparm.1.html
+++ b/docs/htmldocs/testparm.1.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>testparm</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="TESTPARM.1"
-></A
->testparm</H1
+NAME="TESTPARM">testparm</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -30,15 +29,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>testparm</B
-> [-s] [-h] [-v] [-L &lt;servername&gt;] [-t &lt;encoding&gt;] {config filename} [hostname hostIP]</P
+> [-s] [-h] [-v] [-L &#60;servername&#62;] [-t &#60;encoding&#62;] {config filename} [hostname hostIP]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -48,24 +45,19 @@ NAME="AEN18"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
CLASS="COMMAND"
>testparm</B
> is a very simple test program
- to check an <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ to check an <B
+CLASS="COMMAND"
+>smbd</B
> configuration file for
internal correctness. If this program reports no problems, you
can use the configuration file with confidence that <B
@@ -74,12 +66,9 @@ CLASS="COMMAND"
</B
> will successfully load the configuration file.</P
><P
->Note that this is <SPAN
-CLASS="emphasis"
-><I
+>Note that this is <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> a guarantee that
the services specified in the configuration file will be
available or will operate as expected. </P
@@ -105,7 +94,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN37"
+NAME="AEN33"
></A
><H2
>OPTIONS</H2
@@ -149,13 +138,12 @@ CLASS="REPLACEABLE"
><DD
><P
>If this option is specified, testparm
- will also output all options that were not used in <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> and are thus set to their defaults.</P
+ will also output all options that were not used in
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
+> and are thus set to
+ their defaults.</P
></DD
><DT
>-t encoding</DT
@@ -170,12 +158,9 @@ CLASS="REFENTRYTITLE"
><P
>This is the name of the configuration file
to check. If this parameter is not present then the
- default <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ default <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file will be checked.
</P
></DD
@@ -199,12 +184,9 @@ CLASS="PARAMETER"
>hosts deny</I
></TT
>
- parameters in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ parameters in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file to
determine if the hostname with this IP address would be
allowed access to the <B
@@ -228,7 +210,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN87"
+NAME="AEN77"
></A
><H2
>FILES</H2
@@ -238,22 +220,16 @@ NAME="AEN87"
CLASS="VARIABLELIST"
><DL
><DT
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+><TT
+CLASS="FILENAME"
+>smb.conf</TT
></DT
><DD
><P
>This is usually the name of the configuration
- file used by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+ file used by <B
+CLASS="COMMAND"
+>smbd</B
>.
</P
></DD
@@ -263,7 +239,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN100"
+NAME="AEN86"
></A
><H2
>DIAGNOSTICS</H2
@@ -277,7 +253,7 @@ NAME="AEN100"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN103"
+NAME="AEN89"
></A
><H2
>VERSION</H2
@@ -288,29 +264,33 @@ NAME="AEN103"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN106"
+NAME="AEN92"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
-></P
+><A
+HREF="smb.conf.5.html"
+TARGET="_top"
+><TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+></A
+>,
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN115"
+NAME="AEN99"
></A
><H2
>AUTHOR</H2
@@ -322,14 +302,14 @@ NAME="AEN115"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/testprns.1.html b/docs/htmldocs/testprns.1.html
index 07513566af..0225aad9d5 100644
--- a/docs/htmldocs/testprns.1.html
+++ b/docs/htmldocs/testprns.1.html
@@ -5,7 +5,7 @@
>testprns</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="TESTPRNS.1"
+NAME="TESTPRNS"
></A
>testprns</H1
><DIV
@@ -47,12 +47,10 @@ NAME="AEN13"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -60,13 +58,14 @@ CLASS="COMMAND"
>testprns</B
> is a very simple test program
to determine whether a given printer name is valid for use in
- a service to be provided by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->.</P
+ a service to be provided by <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> smbd(8)</B
+></A
+>. </P
><P
>"Valid" in this context means "can be found in the
printcap specified". This program is very stupid - so stupid in
@@ -76,7 +75,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN25"
+NAME="AEN22"
></A
><H2
>OPTIONS</H2
@@ -104,12 +103,10 @@ CLASS="COMMAND"
<B
CLASS="COMMAND"
>testprns</B
-> finds the printer then <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
+> finds the printer then
+ <B
+CLASS="COMMAND"
+>smbd</B
> should do so as well. </P
></DD
><DT
@@ -132,7 +129,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN44"
+NAME="AEN39"
></A
><H2
>FILES</H2
@@ -161,7 +158,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN53"
+NAME="AEN48"
></A
><H2
>DIAGNOSTICS</H2
@@ -189,7 +186,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN60"
+NAME="AEN55"
></A
><H2
>VERSION</H2
@@ -200,7 +197,7 @@ NAME="AEN60"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN63"
+NAME="AEN58"
></A
><H2
>SEE ALSO</H2
@@ -209,24 +206,28 @@ NAME="AEN63"
CLASS="FILENAME"
>printcap(5)</TT
>,
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbd</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smbclient</SPAN
->(1)</SPAN
-></P
+ <A
+HREF="smbd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbd(8)</B
+></A
+>,
+ <A
+HREF="smbclient.1.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>smbclient(1)</B
+></A
+>
+ </P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN73"
+NAME="AEN66"
></A
><H2
>AUTHOR</H2
@@ -238,14 +239,14 @@ NAME="AEN73"
><P
>The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
- excellent piece of Open Source software, available at <A
+ excellent piece of Open Source software, available at
+ <A
HREF="ftp://ftp.icce.rug.nl/pub/unix/"
TARGET="_top"
> ftp://ftp.icce.rug.nl/pub/unix/</A
>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
- Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
- for Samba 3.0 was done by Alexander Bokovoy.</P
+ Samba 2.2 was done by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/type.html b/docs/htmldocs/type.html
index be7e722b2e..e3f09acc18 100644
--- a/docs/htmldocs/type.html
+++ b/docs/htmldocs/type.html
@@ -5,13 +5,14 @@
>Type of installation</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
REL="PREVIOUS"
-TITLE="User information database"
-HREF="passdb.html"><LINK
+TITLE="LanMan and NT Password Encryption in Samba"
+HREF="pwencrypt.html"><LINK
REL="NEXT"
TITLE="User and Share security level (for servers not in a domain)"
HREF="securitylevels.html"></HEAD
@@ -42,7 +43,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="passdb.html"
+HREF="pwencrypt.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -68,9 +69,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
-NAME="TYPE"
-></A
-><DIV
+NAME="TYPE"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
@@ -78,9 +77,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
-NAME="AEN678"
-></A
-><H1
+NAME="AEN531"><H1
>Introduction</H1
><P
>Samba can operate in various SMB networks. This part contains information on configuring samba
@@ -94,238 +91,233 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
->4. <A
+>5. <A
HREF="securitylevels.html"
>User and Share security level (for servers not in a domain)</A
></DT
><DT
->5. <A
+>6. <A
HREF="samba-pdc.html"
->Samba as a NT4 or Win2k Primary Domain Controller</A
+>How to Configure Samba as a NT4 Primary Domain Controller</A
></DT
><DD
><DL
><DT
->5.1. <A
-HREF="samba-pdc.html#AEN722"
+>6.1. <A
+HREF="samba-pdc.html#AEN575"
>Prerequisite Reading</A
></DT
><DT
->5.2. <A
-HREF="samba-pdc.html#AEN728"
+>6.2. <A
+HREF="samba-pdc.html#AEN581"
>Background</A
></DT
><DT
->5.3. <A
-HREF="samba-pdc.html#AEN767"
+>6.3. <A
+HREF="samba-pdc.html#AEN620"
>Configuring the Samba Domain Controller</A
></DT
><DT
->5.4. <A
-HREF="samba-pdc.html#AEN810"
+>6.4. <A
+HREF="samba-pdc.html#AEN663"
>Creating Machine Trust Accounts and Joining Clients to the
Domain</A
></DT
><DD
><DL
><DT
->5.4.1. <A
-HREF="samba-pdc.html#AEN829"
+>6.4.1. <A
+HREF="samba-pdc.html#AEN682"
>Manual Creation of Machine Trust Accounts</A
></DT
><DT
->5.4.2. <A
-HREF="samba-pdc.html#AEN870"
+>6.4.2. <A
+HREF="samba-pdc.html#AEN723"
>"On-the-Fly" Creation of Machine Trust Accounts</A
></DT
><DT
->5.4.3. <A
-HREF="samba-pdc.html#AEN879"
+>6.4.3. <A
+HREF="samba-pdc.html#AEN732"
>Joining the Client to the Domain</A
></DT
></DL
></DD
><DT
->5.5. <A
-HREF="samba-pdc.html#AEN894"
+>6.5. <A
+HREF="samba-pdc.html#AEN747"
>Common Problems and Errors</A
></DT
><DT
->5.6. <A
-HREF="samba-pdc.html#AEN942"
+>6.6. <A
+HREF="samba-pdc.html#AEN795"
>System Policies and Profiles</A
></DT
><DT
->5.7. <A
-HREF="samba-pdc.html#AEN986"
+>6.7. <A
+HREF="samba-pdc.html#AEN839"
>What other help can I get?</A
></DT
><DT
->5.8. <A
-HREF="samba-pdc.html#AEN1100"
+>6.8. <A
+HREF="samba-pdc.html#AEN953"
>Domain Control for Windows 9x/ME</A
></DT
><DD
><DL
><DT
->5.8.1. <A
-HREF="samba-pdc.html#AEN1126"
+>6.8.1. <A
+HREF="samba-pdc.html#AEN979"
>Configuration Instructions: Network Logons</A
></DT
><DT
->5.8.2. <A
-HREF="samba-pdc.html#AEN1145"
+>6.8.2. <A
+HREF="samba-pdc.html#AEN998"
>Configuration Instructions: Setting up Roaming User Profiles</A
></DT
></DL
></DD
><DT
->5.9. <A
-HREF="samba-pdc.html#AEN1238"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &amp; Samba</A
+>6.9. <A
+HREF="samba-pdc.html#AEN1091"
+>DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
></DT
></DL
></DD
><DT
->6. <A
+>7. <A
HREF="samba-bdc.html"
>How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
></DT
><DD
><DL
><DT
->6.1. <A
-HREF="samba-bdc.html#AEN1274"
+>7.1. <A
+HREF="samba-bdc.html#AEN1127"
>Prerequisite Reading</A
></DT
><DT
->6.2. <A
-HREF="samba-bdc.html#AEN1278"
+>7.2. <A
+HREF="samba-bdc.html#AEN1131"
>Background</A
></DT
><DT
->6.3. <A
-HREF="samba-bdc.html#AEN1286"
+>7.3. <A
+HREF="samba-bdc.html#AEN1139"
>What qualifies a Domain Controller on the network?</A
></DT
><DD
><DL
><DT
->6.3.1. <A
-HREF="samba-bdc.html#AEN1289"
+>7.3.1. <A
+HREF="samba-bdc.html#AEN1142"
>How does a Workstation find its domain controller?</A
></DT
><DT
->6.3.2. <A
-HREF="samba-bdc.html#AEN1292"
+>7.3.2. <A
+HREF="samba-bdc.html#AEN1145"
>When is the PDC needed?</A
></DT
></DL
></DD
><DT
->6.4. <A
-HREF="samba-bdc.html#AEN1295"
->Can Samba be a Backup Domain Controller to an NT PDC?</A
+>7.4. <A
+HREF="samba-bdc.html#AEN1148"
+>Can Samba be a Backup Domain Controller?</A
></DT
><DT
->6.5. <A
-HREF="samba-bdc.html#AEN1300"
+>7.5. <A
+HREF="samba-bdc.html#AEN1152"
>How do I set up a Samba BDC?</A
></DT
><DD
><DL
><DT
->6.5.1. <A
-HREF="samba-bdc.html#AEN1317"
+>7.5.1. <A
+HREF="samba-bdc.html#AEN1169"
>How do I replicate the smbpasswd file?</A
></DT
-><DT
->6.5.2. <A
-HREF="samba-bdc.html#AEN1321"
->Can I do this all with LDAP?</A
-></DT
></DL
></DD
></DL
></DD
><DT
->7. <A
+>8. <A
HREF="ads.html"
>Samba as a ADS domain member</A
></DT
><DD
><DL
><DT
->7.1. <A
-HREF="ads.html#AEN1339"
+>8.1. <A
+HREF="ads.html#AEN1187"
>Installing the required packages for Debian</A
></DT
><DT
->7.2. <A
-HREF="ads.html#AEN1346"
+>8.2. <A
+HREF="ads.html#AEN1193"
>Installing the required packages for RedHat</A
></DT
><DT
->7.3. <A
-HREF="ads.html#AEN1356"
+>8.3. <A
+HREF="ads.html#AEN1202"
>Compile Samba</A
></DT
><DT
->7.4. <A
-HREF="ads.html#AEN1371"
+>8.4. <A
+HREF="ads.html#AEN1217"
>Setup your /etc/krb5.conf</A
></DT
><DT
->7.5. <A
-HREF="ads.html#AEN1381"
+>8.5. <A
+HREF="ads.html#AEN1227"
>Create the computer account</A
></DT
><DD
><DL
><DT
->7.5.1. <A
-HREF="ads.html#AEN1385"
+>8.5.1. <A
+HREF="ads.html#AEN1231"
>Possible errors</A
></DT
></DL
></DD
><DT
->7.6. <A
-HREF="ads.html#AEN1393"
+>8.6. <A
+HREF="ads.html#AEN1243"
>Test your server setup</A
></DT
><DT
->7.7. <A
-HREF="ads.html#AEN1398"
+>8.7. <A
+HREF="ads.html#AEN1248"
>Testing with smbclient</A
></DT
><DT
->7.8. <A
-HREF="ads.html#AEN1401"
+>8.8. <A
+HREF="ads.html#AEN1251"
>Notes</A
></DT
></DL
></DD
><DT
->8. <A
+>9. <A
HREF="domain-security.html"
->Samba as a NT4 or Win2k domain member</A
+>Samba as a NT4 domain member</A
></DT
><DD
><DL
><DT
->8.1. <A
-HREF="domain-security.html#AEN1423"
->Joining an NT Domain with Samba 3.0</A
+>9.1. <A
+HREF="domain-security.html#AEN1273"
+>Joining an NT Domain with Samba 2.2</A
></DT
><DT
->8.2. <A
-HREF="domain-security.html#AEN1478"
+>9.2. <A
+HREF="domain-security.html#AEN1337"
>Samba and Windows 2000 Domains</A
></DT
><DT
->8.3. <A
-HREF="domain-security.html#AEN1481"
+>9.3. <A
+HREF="domain-security.html#AEN1342"
>Why is this better than security = server?</A
></DT
></DL
@@ -350,7 +342,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="passdb.html"
+HREF="pwencrypt.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -378,7 +370,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->User information database</TD
+>LanMan and NT Password Encryption in Samba</TD
><TD
WIDTH="34%"
ALIGN="center"
diff --git a/docs/htmldocs/unix-permissions.html b/docs/htmldocs/unix-permissions.html
index 71198ecaa6..f29d450e6d 100644
--- a/docs/htmldocs/unix-permissions.html
+++ b/docs/htmldocs/unix-permissions.html
@@ -5,7 +5,8 @@
>UNIX Permission Bits and Windows NT Access Control Lists</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -73,17 +74,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="UNIX-PERMISSIONS"
-></A
->Chapter 10. UNIX Permission Bits and Windows NT Access Control Lists</H1
+NAME="UNIX-PERMISSIONS">Chapter 11. UNIX Permission Bits and Windows NT Access Control Lists</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1744"
-></A
->10.1. Viewing and changing UNIX permissions using the NT
+NAME="AEN1605">11.1. Viewing and changing UNIX permissions using the NT
security dialogs</H1
><P
>New in the Samba 2.0.4 release is the ability for Windows
@@ -94,15 +91,33 @@ NAME="AEN1744"
the security of the UNIX host Samba is running on, and
still obeys all the file permission rules that a Samba
administrator can set.</P
+><P
+>In Samba 2.0.4 and above the default value of the
+ parameter <A
+HREF="smb.conf.5.html#NTACLSUPPORT"
+TARGET="_top"
+><TT
+CLASS="PARAMETER"
+><I
+> nt acl support</I
+></TT
+></A
+> has been changed from
+ <TT
+CLASS="CONSTANT"
+>false</TT
+> to <TT
+CLASS="CONSTANT"
+>true</TT
+>, so
+ manipulation of permissions is turned on by default.</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1748"
-></A
->10.2. How to view file security on a Samba share</H1
+NAME="AEN1614">11.2. How to view file security on a Samba share</H1
><P
>From an NT 4.0 client, single-click with the right
mouse button on any file or directory in a Samba mounted
@@ -170,9 +185,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1759"
-></A
->10.3. Viewing file ownership</H1
+NAME="AEN1625">11.3. Viewing file ownership</H1
><P
>Clicking on the <B
CLASS="COMMAND"
@@ -264,9 +277,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1779"
-></A
->10.4. Viewing file or directory permissions</H1
+NAME="AEN1645">11.4. Viewing file or directory permissions</H1
><P
>The third button is the <B
CLASS="COMMAND"
@@ -326,9 +337,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1794"
-></A
->10.4.1. File Permissions</H2
+NAME="AEN1660">11.4.1. File Permissions</H2
><P
>The standard UNIX user/group/world triple and
the corresponding "read", "write", "execute" permissions
@@ -388,9 +397,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN1808"
-></A
->10.4.2. Directory Permissions</H2
+NAME="AEN1674">11.4.2. Directory Permissions</H2
><P
>Directories on an NT NTFS file system have two
different sets of permissions. The first set of permissions
@@ -420,9 +427,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1815"
-></A
->10.5. Modifying file or directory permissions</H1
+NAME="AEN1681">11.5. Modifying file or directory permissions</H1
><P
>Modifying file and directory permissions is as simple
as changing the displayed permissions in the dialog box, and
@@ -518,9 +523,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1837"
-></A
->10.6. Interaction with the standard Samba create mask
+NAME="AEN1703">11.6. Interaction with the standard Samba create mask
parameters</H1
><P
>Note that with Samba 2.0.5 there are four new parameters
@@ -795,9 +798,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN1901"
-></A
->10.7. Interaction with the standard Samba file attribute
+NAME="AEN1767">11.7. Interaction with the standard Samba file attribute
mapping</H1
><P
>Samba maps some of the DOS attribute bits (such as "read
diff --git a/docs/htmldocs/vfs.html b/docs/htmldocs/vfs.html
index 0e39297ebb..11934ae47c 100644
--- a/docs/htmldocs/vfs.html
+++ b/docs/htmldocs/vfs.html
@@ -5,7 +5,8 @@
>Stackable VFS modules</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -13,11 +14,11 @@ REL="UP"
TITLE="Optional configuration"
HREF="optional.html"><LINK
REL="PREVIOUS"
-TITLE="Improved browsing in samba"
-HREF="improved-browsing.html"><LINK
+TITLE="Passdb XML plugin"
+HREF="pdb-xml.html"><LINK
REL="NEXT"
-TITLE="Access Samba source code via CVS"
-HREF="cvs-access.html"></HEAD
+TITLE="Storing Samba's User/Machine Account information in an LDAP Directory"
+HREF="samba-ldap-howto.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -45,7 +46,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
-HREF="improved-browsing.html"
+HREF="pdb-xml.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="cvs-access.html"
+HREF="samba-ldap-howto.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="VFS"
-></A
->Chapter 16. Stackable VFS modules</H1
+NAME="VFS">Chapter 18. Stackable VFS modules</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2855"
-></A
->16.1. Introduction and configuration</H1
+NAME="AEN2640">18.1. Introduction and configuration</H1
><P
>Since samba 3.0, samba supports stackable VFS(Virtual File System) modules.
Samba passes each request to access the unix file system thru the loaded VFS modules.
@@ -121,17 +118,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2864"
-></A
->16.2. Included modules</H1
+NAME="AEN2649">18.2. Included modules</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2866"
-></A
->16.2.1. audit</H2
+NAME="AEN2651">18.2.1. audit</H2
><P
>A simple module to audit file access to the syslog
facility. The following operations are logged:
@@ -167,9 +160,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2874"
-></A
->16.2.2. recycle</H2
+NAME="AEN2659">18.2.2. recycle</H2
><P
>A recycle-bin like modules. When used any unlink call
will be intercepted and files moved to the recycle
@@ -238,9 +229,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2911"
-></A
->16.2.3. netatalk</H2
+NAME="AEN2696">18.2.3. netatalk</H2
><P
>A netatalk module, that will ease co-existence of samba and
netatalk file sharing services.</P
@@ -271,9 +260,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2918"
-></A
->16.3. VFS modules available elsewhere</H1
+NAME="AEN2703">18.3. VFS modules available elsewhere</H1
><P
>This section contains a listing of various other VFS modules that
have been posted but don't currently reside in the Samba CVS
@@ -287,9 +274,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2922"
-></A
->16.3.1. DatabaseFS</H2
+NAME="AEN2707">18.3.1. DatabaseFS</H2
><P
>URL: <A
HREF="http://www.css.tayloru.edu/~elorimer/databasefs/index.php"
@@ -321,9 +306,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2930"
-></A
->16.3.2. vscan</H2
+NAME="AEN2715">18.3.2. vscan</H2
><P
>URL: <A
HREF="http://www.openantivirus.org/"
@@ -355,7 +338,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
-HREF="improved-browsing.html"
+HREF="pdb-xml.html"
ACCESSKEY="P"
>Prev</A
></TD
@@ -373,7 +356,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="cvs-access.html"
+HREF="samba-ldap-howto.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -383,7 +366,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Improved browsing in samba</TD
+>Passdb XML plugin</TD
><TD
WIDTH="34%"
ALIGN="center"
@@ -397,7 +380,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Access Samba source code via CVS</TD
+>Storing Samba's User/Machine Account information in an LDAP Directory</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/vfstest.1.html b/docs/htmldocs/vfstest.1.html
index 56c409288a..1fd7880805 100644
--- a/docs/htmldocs/vfstest.1.html
+++ b/docs/htmldocs/vfstest.1.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>vfstest</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="VFSTEST.1"
-></A
->vfstest</H1
+NAME="VFSTEST">vfstest</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -29,15 +28,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>vfstest</B
-> [-d debuglevel] [-c command] [-l logfile] [-h]</P
+> [-d debuglevel] [-c command] [-l logfile] [-h]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -47,12 +44,10 @@ NAME="AEN15"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -67,7 +62,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN23"
+NAME="AEN21"
></A
><H2
>OPTIONS</H2
@@ -149,17 +144,14 @@ CLASS="CONSTANT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN50"
+NAME="AEN48"
></A
><H2
>COMMANDS</H2
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>VFS COMMANDS</I
-></SPAN
></P
><P
></P
@@ -168,14 +160,14 @@ CLASS="EMPHASIS"
><P
><B
CLASS="COMMAND"
->load &lt;module.so&gt;</B
+>load &#60;module.so&#62;</B
> - Load specified VFS module </P
></LI
><LI
><P
><B
CLASS="COMMAND"
->populate &lt;char&gt; &lt;size&gt;</B
+>populate &#60;char&#62; &#60;size&#62;</B
> - Populate a data buffer with the specified data
</P
></LI
@@ -183,7 +175,7 @@ CLASS="COMMAND"
><P
><B
CLASS="COMMAND"
->showdata [&lt;offset&gt; &lt;len&gt;]</B
+>showdata [&#60;offset&#62; &#60;len&#62;]</B
> - Show data currently in data buffer
</P
></LI
@@ -420,12 +412,9 @@ CLASS="COMMAND"
></LI
></UL
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>GENERAL COMMANDS</I
-></SPAN
></P
><P
></P
@@ -434,21 +423,21 @@ CLASS="EMPHASIS"
><P
><B
CLASS="COMMAND"
->conf &lt;smb.conf&gt;</B
+>conf &#60;smb.conf&#62;</B
> - Load a different configuration file</P
></LI
><LI
><P
><B
CLASS="COMMAND"
->help [&lt;command&gt;]</B
+>help [&#60;command&#62;]</B
> - Get list of commands or info about specified command</P
></LI
><LI
><P
><B
CLASS="COMMAND"
->debuglevel &lt;level&gt;</B
+>debuglevel &#60;level&#62;</B
> - Set debug level</P
></LI
><LI
@@ -470,7 +459,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN181"
+NAME="AEN179"
></A
><H2
>VERSION</H2
@@ -481,7 +470,7 @@ NAME="AEN181"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN184"
+NAME="AEN182"
></A
><H2
>AUTHOR</H2
diff --git a/docs/htmldocs/wbinfo.1.html b/docs/htmldocs/wbinfo.1.html
index cf46eca0ef..a8aa065eed 100644
--- a/docs/htmldocs/wbinfo.1.html
+++ b/docs/htmldocs/wbinfo.1.html
@@ -5,7 +5,7 @@
>wbinfo</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,7 +15,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="WBINFO.1"
+NAME="WBINFO"
></A
>wbinfo</H1
><DIV
@@ -47,32 +47,28 @@ NAME="AEN27"
><H2
>DESCRIPTION</H2
><P
->This tool is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This tool is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
>The <B
CLASS="COMMAND"
>wbinfo</B
> program queries and returns information
- created and used by the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ created and used by the <A
+HREF="winbindd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+> winbindd(8)</B
+></A
> daemon. </P
><P
->The <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+>The <B
+CLASS="COMMAND"
+>winbindd(8)</B
> daemon must be configured
and running for the <B
CLASS="COMMAND"
@@ -83,7 +79,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN43"
+NAME="AEN38"
></A
><H2
>OPTIONS</H2
@@ -97,43 +93,33 @@ CLASS="VARIABLELIST"
><DD
><P
>This option will list all users available
- in the Windows NT domain for which the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ in the Windows NT domain for which the <B
+CLASS="COMMAND"
+>winbindd(8)
+ </B
> daemon is operating in. Users in all trusted domains
will also be listed. Note that this operation does not assign
- user ids to any users that have not already been seen by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
->
- .</P
+ user ids to any users that have not already been seen by
+ <B
+CLASS="COMMAND"
+>winbindd(8)</B
+>.</P
></DD
><DT
>-g</DT
><DD
><P
>This option will list all groups available
- in the Windows NT domain for which the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+ in the Windows NT domain for which the <B
+CLASS="COMMAND"
+>winbindd(8)
+ </B
> daemon is operating in. Groups in all trusted domains
will also be listed. Note that this operation does not assign
- group ids to any groups that have not already been
- seen by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ group ids to any groups that have not already been seen by
+ <B
+CLASS="COMMAND"
+>winbindd(8)</B
>. </P
></DD
><DT
@@ -146,12 +132,9 @@ CLASS="PARAMETER"
>-N</I
></TT
> option
- queries <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ queries <B
+CLASS="COMMAND"
+>winbindd(8)</B
> to query the WINS
server for the IP address associated with the NetBIOS name
specified by the <TT
@@ -172,12 +155,9 @@ CLASS="PARAMETER"
>-I</I
></TT
> option
- queries <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ queries <B
+CLASS="COMMAND"
+>winbindd(8)</B
> to send a node status
request to get the NetBIOS name associated with the IP address
specified by the <TT
@@ -198,28 +178,22 @@ CLASS="PARAMETER"
>-n</I
></TT
> option
- queries <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ queries <B
+CLASS="COMMAND"
+>winbindd(8)</B
> for the SID
associated with the name specified. Domain names can be specified
before the user name by using the winbind separator character.
For example CWDOM1/Administrator refers to the Administrator
user in the domain CWDOM1. If no domain is specified then the
- domain used is the one specified in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> <TT
+ domain used is the one specified in the <TT
+CLASS="FILENAME"
+>smb.conf</TT
+>
+ <TT
CLASS="PARAMETER"
><I
->workgroup
- </I
+>workgroup</I
></TT
> parameter. </P
></DD
@@ -264,12 +238,9 @@ CLASS="PARAMETER"
><DD
><P
>Convert a SID to a UNIX user id. If the SID
- does not correspond to a UNIX user mapped by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ does not correspond to a UNIX user mapped by <B
+CLASS="COMMAND"
+> winbindd(8)</B
> then the operation will fail. </P
></DD
><DT
@@ -277,14 +248,10 @@ CLASS="REFENTRYTITLE"
><DD
><P
>Convert a SID to a UNIX group id. If the SID
- does not correspond to a UNIX group mapped by <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
-> then
- the operation will fail. </P
+ does not correspond to a UNIX group mapped by <B
+CLASS="COMMAND"
+> winbindd(8)</B
+> then the operation will fail. </P
></DD
><DT
>-t</DT
@@ -299,12 +266,9 @@ CLASS="REFENTRYTITLE"
><DD
><P
>Produce a list of domains trusted by the
- Windows NT server <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ Windows NT server <B
+CLASS="COMMAND"
+>winbindd(8)</B
> contacts
when resolving names. This list does not include the Windows
NT domain the server is a Primary Domain Controller for.
@@ -344,18 +308,16 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN147"
+NAME="AEN120"
></A
><H2
>EXIT STATUS</H2
><P
>The wbinfo program returns 0 if the operation
- succeeded, or 1 if the operation failed. If the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+ succeeded, or 1 if the operation failed. If the <B
+CLASS="COMMAND"
+>winbindd(8)
+ </B
> daemon is not working <B
CLASS="COMMAND"
>wbinfo</B
@@ -365,7 +327,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN154"
+NAME="AEN125"
></A
><H2
>VERSION</H2
@@ -376,23 +338,25 @@ NAME="AEN154"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN157"
+NAME="AEN128"
></A
><H2
>SEE ALSO</H2
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->winbindd</SPAN
->(8)</SPAN
+><A
+HREF="winbindd.8.html"
+TARGET="_top"
+><B
+CLASS="COMMAND"
+>winbindd(8)</B
+>
+ </A
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN163"
+NAME="AEN133"
></A
><H2
>AUTHOR</H2
@@ -412,8 +376,7 @@ CLASS="COMMAND"
were written by Tim Potter.</P
><P
>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for Samba
- 3.0 was done by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/htmldocs/winbind.html b/docs/htmldocs/winbind.html
index d587696817..1558512a61 100644
--- a/docs/htmldocs/winbind.html
+++ b/docs/htmldocs/winbind.html
@@ -5,7 +5,8 @@
>Unified Logons between Windows NT and UNIX using Winbind</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="samba-howto-collection.html"><LINK
@@ -16,8 +17,8 @@ REL="PREVIOUS"
TITLE="Printing Support"
HREF="printing.html"><LINK
REL="NEXT"
-TITLE="Improved browsing in samba"
-HREF="improved-browsing.html"></HEAD
+TITLE="Passdb MySQL plugin"
+HREF="pdb-mysql.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@@ -59,7 +60,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
-HREF="improved-browsing.html"
+HREF="pdb-mysql.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -72,17 +73,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="WINBIND"
-></A
->Chapter 14. Unified Logons between Windows NT and UNIX using Winbind</H1
+NAME="WINBIND">Chapter 15. Unified Logons between Windows NT and UNIX using Winbind</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2360"
-></A
->14.1. Abstract</H1
+NAME="AEN2225">15.1. Abstract</H1
><P
>Integration of UNIX and Microsoft Windows NT through
a unified logon has been considered a "holy grail" in heterogeneous
@@ -107,9 +104,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2364"
-></A
->14.2. Introduction</H1
+NAME="AEN2229">15.2. Introduction</H1
><P
>It is well known that UNIX and Microsoft Windows NT have
different models for representing user and group information and
@@ -161,9 +156,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2377"
-></A
->14.3. What Winbind Provides</H1
+NAME="AEN2242">15.3. What Winbind Provides</H1
><P
>Winbind unifies UNIX and Windows NT account management by
allowing a UNIX box to become a full member of a NT domain. Once
@@ -203,9 +196,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2384"
-></A
->14.3.1. Target Uses</H2
+NAME="AEN2249">15.3.1. Target Uses</H2
><P
>Winbind is targeted at organizations that have an
existing NT based domain infrastructure into which they wish
@@ -227,9 +218,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2388"
-></A
->14.4. How Winbind Works</H1
+NAME="AEN2253">15.4. How Winbind Works</H1
><P
>The winbind system is designed around a client/server
architecture. A long running <B
@@ -247,11 +236,9 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2393"
-></A
->14.4.1. Microsoft Remote Procedure Calls</H2
+NAME="AEN2258">15.4.1. Microsoft Remote Procedure Calls</H2
><P
->Over the last few years, efforts have been underway
+>Over the last two years, efforts have been underway
by various Samba Team members to decode various aspects of
the Microsoft Remote Procedure Call (MSRPC) system. This
system is used for most network related operations between
@@ -273,28 +260,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2397"
-></A
->14.4.2. Microsoft Active Directory Services</H2
-><P
-> Since late 2001, Samba has gained the ability to
- interact with Microsoft Windows 2000 using its 'Native
- Mode' protocols, rather than the NT4 RPC services.
- Using LDAP and Kerberos, a domain member running
- winbind can enumerate users and groups in exactly the
- same way as a Win2k client would, and in so doing
- provide a much more efficient and
- effective winbind implementation.
- </P
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN2400"
-></A
->14.4.3. Name Service Switch</H2
+NAME="AEN2262">15.4.2. Name Service Switch</H2
><P
>The Name Service Switch, or NSS, is a feature that is
present in many UNIX operating systems. It allows system
@@ -372,9 +338,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2416"
-></A
->14.4.4. Pluggable Authentication Modules</H2
+NAME="AEN2278">15.4.3. Pluggable Authentication Modules</H2
><P
>Pluggable Authentication Modules, also known as PAM,
is a system for abstracting authentication and authorization
@@ -421,9 +385,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2424"
-></A
->14.4.5. User and Group ID Allocation</H2
+NAME="AEN2286">15.4.4. User and Group ID Allocation</H2
><P
>When a user or group is created under Windows NT
is it allocated a numerical relative identifier (RID). This is
@@ -447,9 +409,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2428"
-></A
->14.4.6. Result Caching</H2
+NAME="AEN2290">15.4.5. Result Caching</H2
><P
>An active system can generate a lot of user and group
name lookups. To reduce the network cost of these lookups winbind
@@ -470,9 +430,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2431"
-></A
->14.5. Installation and Configuration</H1
+NAME="AEN2293">15.5. Installation and Configuration</H1
><P
>Many thanks to John Trostel <A
HREF="mailto:jtrostel@snapserver.com"
@@ -497,9 +455,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2438"
-></A
->14.5.1. Introduction</H2
+NAME="AEN2300">15.5.1. Introduction</H2
><P
>This HOWTO describes the procedures used to get winbind up and
running on my RedHat 7.1 system. Winbind is capable of providing access
@@ -556,9 +512,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2451"
-></A
->14.5.2. Requirements</H2
+NAME="AEN2313">15.5.2. Requirements</H2
><P
>If you have a samba configuration file that you are currently
using... <SPAN
@@ -626,9 +580,7 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="AEN2465"
-></A
->14.5.3. Testing Things Out</H2
+NAME="AEN2327">15.5.3. Testing Things Out</H2
><P
>Before starting, it is probably best to kill off all the SAMBA
related daemons running on your server. Kill off all <B
@@ -671,9 +623,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2476"
-></A
->14.5.3.1. Configure and compile SAMBA</H3
+NAME="AEN2338">15.5.3.1. Configure and compile SAMBA</H3
><P
>The configuration and compilation of SAMBA is pretty straightforward.
The first three steps may not be necessary depending upon
@@ -707,7 +657,7 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->./configure</B
+>./configure --with-winbind</B
>
<TT
CLASS="PROMPT"
@@ -737,9 +687,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2495"
-></A
->14.5.3.2. Configure <TT
+NAME="AEN2357">15.5.3.2. Configure <TT
CLASS="FILENAME"
>nsswitch.conf</TT
> and the
@@ -842,9 +790,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2528"
-></A
->14.5.3.3. Configure smb.conf</H3
+NAME="AEN2390">15.5.3.3. Configure smb.conf</H3
><P
>Several parameters are needed in the smb.conf file to control
the behavior of <B
@@ -869,7 +815,7 @@ include the following entries in the [global] section:</P
><PRE
CLASS="PROGRAMLISTING"
>[global]
- &lt;...&gt;
+ &#60;...&#62;
# separate domain and username with '+', like DOMAIN+username
<A
HREF="winbindd.8.html#WINBINDSEPARATOR"
@@ -917,9 +863,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2544"
-></A
->14.5.3.4. Join the SAMBA server to the PDC domain</H3
+NAME="AEN2406">15.5.3.4. Join the SAMBA server to the PDC domain</H3
><P
>Enter the following command to make the SAMBA server join the
PDC domain, where <TT
@@ -941,7 +885,7 @@ CLASS="PROMPT"
>root#</TT
> <B
CLASS="COMMAND"
->/usr/local/samba/bin/net join -S PDC -U Administrator</B
+>/usr/local/samba/bin/net rpc join -S PDC -U Administrator</B
></P
><P
>The proper response to the command should be: "Joined the domain
@@ -963,9 +907,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2555"
-></A
->14.5.3.5. Start up the winbindd daemon and test it!</H3
+NAME="AEN2417">15.5.3.5. Start up the winbindd daemon and test it!</H3
><P
>Eventually, you will want to modify your smb startup script to
automatically invoke the winbindd daemon when the other parts of
@@ -1086,17 +1028,13 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2591"
-></A
->14.5.3.6. Fix the init.d startup scripts</H3
+NAME="AEN2453">15.5.3.6. Fix the init.d startup scripts</H3
><DIV
CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN2593"
-></A
->14.5.3.6.1. Linux</H4
+NAME="AEN2455">15.5.3.6.1. Linux</H4
><P
>The <B
CLASS="COMMAND"
@@ -1153,7 +1091,7 @@ CLASS="PROGRAMLISTING"
daemon /usr/local/samba/bin/winbindd
RETVAL3=$?
echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; touch /var/lock/subsys/smb || \
+ [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; touch /var/lock/subsys/smb || \
RETVAL=1
return $RETVAL
}</PRE
@@ -1179,7 +1117,7 @@ CLASS="PROGRAMLISTING"
echo -n $"Shutting down $KIND services: "
killproc winbindd
RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/smb
+ [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; rm -f /var/lock/subsys/smb
echo ""
return $RETVAL
}</PRE
@@ -1190,9 +1128,7 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN2610"
-></A
->14.5.3.6.2. Solaris</H4
+NAME="AEN2472">15.5.3.6.2. Solaris</H4
><P
>On solaris, you need to modify the
<TT
@@ -1221,7 +1157,7 @@ killproc() { # kill the named process(es)
pid=`/usr/bin/ps -e |
/usr/bin/grep -w $1 |
/usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
- [ "$pid" != "" ] &amp;&amp; kill $pid
+ [ "$pid" != "" ] &#38;&#38; kill $pid
}
# Start/stop processes required for samba server
@@ -1261,9 +1197,7 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN2617"
-></A
->14.5.3.6.3. Restarting</H4
+NAME="AEN2479">15.5.3.6.3. Restarting</H4
><P
>If you restart the <B
CLASS="COMMAND"
@@ -1285,9 +1219,7 @@ CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="AEN2623"
-></A
->14.5.3.7. Configure Winbind and PAM</H3
+NAME="AEN2485">15.5.3.7. Configure Winbind and PAM</H3
><P
>If you have made it this far, you know that winbindd and samba are working
together. If you want to use winbind to provide authentication for other
@@ -1343,9 +1275,7 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN2640"
-></A
->14.5.3.7.1. Linux/FreeBSD-specific PAM configuration</H4
+NAME="AEN2502">15.5.3.7.1. Linux/FreeBSD-specific PAM configuration</H4
><P
>The <TT
CLASS="FILENAME"
@@ -1472,9 +1402,7 @@ CLASS="SECT4"
><H4
CLASS="SECT4"
><A
-NAME="AEN2673"
-></A
->14.5.3.7.2. Solaris-specific configuration</H4
+NAME="AEN2535">15.5.3.7.2. Solaris-specific configuration</H4
><P
>The /etc/pam.conf needs to be changed. I changed this file so that my Domain
users can logon both locally as well as telnet.The following are the changes
@@ -1548,7 +1476,7 @@ dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
>I also added a try_first_pass line after the winbind.so line to get rid of
annoying double prompts for passwords.</P
><P
->Now restart your Samba and try connecting through your application that you
+>Now restart your Samba &#38; try connecting through your application that you
configured in the pam.conf.</P
></DIV
></DIV
@@ -1559,9 +1487,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2680"
-></A
->14.6. Limitations</H1
+NAME="AEN2542">15.6. Limitations</H1
><P
>Winbind has a number of limitations in its current
released version that we hope to overcome in future
@@ -1572,7 +1498,7 @@ NAME="AEN2680"
><LI
><P
>Winbind is currently only available for
- the Linux, Solaris and IRIX operating systems, although ports to other operating
+ the Linux operating system, although ports to other operating
systems are certainly possible. For such ports to be feasible,
we require the C library of the target operating system to
support the Name Service Switch and Pluggable Authentication
@@ -1591,8 +1517,7 @@ NAME="AEN2680"
><P
>Currently the winbind PAM module does not take
into account possible workstation and logon time restrictions
- that may be been set for Windows NT users, this is
- instead up to the PDC to enforce.</P
+ that may be been set for Windows NT users.</P
></LI
></UL
></DIV
@@ -1601,9 +1526,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN2690"
-></A
->14.7. Conclusion</H1
+NAME="AEN2552">15.7. Conclusion</H1
><P
>The winbind system, through the use of the Name Service
Switch, Pluggable Authentication Modules, and appropriate
@@ -1647,7 +1570,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
-HREF="improved-browsing.html"
+HREF="pdb-mysql.html"
ACCESSKEY="N"
>Next</A
></TD
@@ -1671,7 +1594,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
->Improved browsing in samba</TD
+>Passdb MySQL plugin</TD
></TR
></TABLE
></DIV
diff --git a/docs/htmldocs/winbindd.8.html b/docs/htmldocs/winbindd.8.html
index dba9988e30..fb8c9c0458 100644
--- a/docs/htmldocs/winbindd.8.html
+++ b/docs/htmldocs/winbindd.8.html
@@ -1,11 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>winbindd</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -15,9 +16,7 @@ VLINK="#840084"
ALINK="#0000FF"
><H1
><A
-NAME="WINBINDD.8"
-></A
->winbindd</H1
+NAME="WINBINDD">winbindd</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -30,15 +29,13 @@ NAME="AEN5"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8"
-></A
-><H2
+NAME="AEN8"><H2
>Synopsis</H2
><P
><B
CLASS="COMMAND"
>winbindd</B
-> [-F] [-S] [-i] [-B] [-d &lt;debug level&gt;] [-s &lt;smb config file&gt;] [-n]</P
+> [-F] [-S] [-i] [-B] [-d &#60;debug level&#62;] [-s &#60;smb config file&#62;] [-n]</P
></DIV
><DIV
CLASS="REFSECT1"
@@ -48,12 +45,10 @@ NAME="AEN18"
><H2
>DESCRIPTION</H2
><P
->This program is part of the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
+>This program is part of the <A
+HREF="samba.7.html"
+TARGET="_top"
+> Samba</A
> suite.</P
><P
><B
@@ -171,11 +166,22 @@ CLASS="FILENAME"
CLASS="FILENAME"
>/etc/group</TT
> and then from the
- Windows NT server.
-<PRE
+ Windows NT server. </P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>passwd: files winbind
-group: files winbind</PRE
+group: files winbind
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>The following simple configuration in the
@@ -192,7 +198,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN62"
+NAME="AEN61"
></A
><H2
>OPTIONS</H2
@@ -304,12 +310,9 @@ CLASS="COMMAND"
><DD
><P
>Specifies the location of the all-important
- <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ <TT
+CLASS="FILENAME"
+>smb.conf</TT
> file. </P
></DD
></DL
@@ -318,7 +321,7 @@ CLASS="REFENTRYTITLE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN106"
+NAME="AEN103"
></A
><H2
>NAME AND ID RESOLUTION</H2
@@ -349,7 +352,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN112"
+NAME="AEN109"
></A
><H2
>CONFIGURATION</H2
@@ -358,12 +361,10 @@ NAME="AEN112"
CLASS="COMMAND"
>winbindd</B
> daemon
- is done through configuration parameters in the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+ is done through configuration parameters in the <TT
+CLASS="FILENAME"
+>smb.conf(5)
+ </TT
> file. All parameters should be specified in the
[global] section of smb.conf. </P
><P
@@ -491,7 +492,7 @@ CLASS="PARAMETER"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN156"
+NAME="AEN151"
></A
><H2
>EXAMPLE SETUP</H2
@@ -504,37 +505,60 @@ NAME="AEN156"
CLASS="FILENAME"
>/etc/nsswitch.conf</TT
> put the
- following:
-<PRE
+ following:</P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>passwd: files winbind
-group: files winbind</PRE
+group: files winbind
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>In <TT
CLASS="FILENAME"
>/etc/pam.d/*</TT
-> replace the <TT
+> replace the
+ <TT
CLASS="PARAMETER"
><I
-> auth</I
+>auth</I
></TT
-> lines with something like this:
-<PRE
+> lines with something like this: </P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
-auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok</PRE
+auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>Note in particular the use of the <TT
CLASS="PARAMETER"
><I
->sufficient
- </I
+>sufficient</I
></TT
-> keyword and the <TT
+>
+ keyword and the <TT
CLASS="PARAMETER"
><I
>use_first_pass</I
@@ -557,7 +581,8 @@ CLASS="COMMAND"
><P
><B
CLASS="COMMAND"
->net join -S PDC -U Administrator</B
+>smbpasswd -j DOMAIN -r PDC -U
+ Administrator</B
></P
><P
>The username after the <TT
@@ -567,7 +592,8 @@ CLASS="PARAMETER"
></TT
> can be any
Domain user that has administrator privileges on the machine.
- Substitute the name or IP of your PDC for "PDC".</P
+ Substitute your domain name for "DOMAIN" and the name of your PDC
+ for "PDC".</P
><P
>Next copy <TT
CLASS="FILENAME"
@@ -578,9 +604,9 @@ CLASS="FILENAME"
>/lib</TT
> and <TT
CLASS="FILENAME"
->pam_winbind.so
- </TT
-> to <TT
+>pam_winbind.so</TT
+>
+ to <TT
CLASS="FILENAME"
>/lib/security</TT
>. A symbolic link needs to be
@@ -598,15 +624,19 @@ CLASS="FILENAME"
>/lib/libnss_winbind.so.1</TT
>.</P
><P
->Finally, setup a <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>Finally, setup a <TT
+CLASS="FILENAME"
+>smb.conf</TT
> containing directives like the
- following:
-<PRE
+ following: </P
+><P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
CLASS="PROGRAMLISTING"
>[global]
winbind separator = +
@@ -617,7 +647,11 @@ CLASS="PROGRAMLISTING"
winbind gid = 10000-20000
workgroup = DOMAIN
security = domain
- password server = *</PRE
+ password server = *
+ </PRE
+></TD
+></TR
+></TABLE
></P
><P
>Now start winbindd and you should find that your user and
@@ -636,7 +670,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN194"
+NAME="AEN190"
></A
><H2
>NOTES</H2
@@ -647,12 +681,9 @@ CLASS="COMMAND"
>winbindd</B
>: </P
><P
-><SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->nmbd</SPAN
->(8)</SPAN
+><B
+CLASS="COMMAND"
+>nmbd</B
> must be running on the local machine
for <B
CLASS="COMMAND"
@@ -660,8 +691,8 @@ CLASS="COMMAND"
> to work. <B
CLASS="COMMAND"
>winbindd</B
-> queries
- the list of trusted domains for the Windows NT server
+>
+ queries the list of trusted domains for the Windows NT server
on startup and when a SIGHUP is received. Thus, for a running <B
CLASS="COMMAND"
> winbindd</B
@@ -697,7 +728,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN212"
+NAME="AEN206"
></A
><H2
>SIGNALS</H2
@@ -716,14 +747,11 @@ CLASS="VARIABLELIST"
>SIGHUP</DT
><DD
><P
->Reload the <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
-> file and
- apply any parameter changes to the running
+>Reload the <TT
+CLASS="FILENAME"
+>smb.conf(5)</TT
+>
+ file and apply any parameter changes to the running
version of winbindd. This signal also clears any cached
user and group information. The list of other domains trusted
by winbindd is also reloaded. </P
@@ -751,7 +779,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN231"
+NAME="AEN223"
></A
><H2
>FILES</H2
@@ -827,7 +855,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN260"
+NAME="AEN252"
></A
><H2
>VERSION</H2
@@ -838,7 +866,7 @@ NAME="AEN260"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN263"
+NAME="AEN255"
></A
><H2
>SEE ALSO</H2
@@ -846,30 +874,27 @@ NAME="AEN263"
><TT
CLASS="FILENAME"
>nsswitch.conf(5)</TT
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->Samba</SPAN
->(7)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->wbinfo</SPAN
->(8)</SPAN
->, <SPAN
-CLASS="CITEREFENTRY"
-><SPAN
-CLASS="REFENTRYTITLE"
->smb.conf</SPAN
->(5)</SPAN
+>,
+ <A
+HREF="samba.7.html"
+TARGET="_top"
+>samba(7)</A
+>,
+ <A
+HREF="wbinfo.1.html"
+TARGET="_top"
+>wbinfo(1)</A
+>,
+ <A
+HREF="smb.conf.5.html"
+TARGET="_top"
+>smb.conf(5)</A
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN276"
+NAME="AEN262"
></A
><H2
>AUTHOR</H2
@@ -885,12 +910,11 @@ CLASS="COMMAND"
> and <B
CLASS="COMMAND"
>winbindd</B
-> were
- written by Tim Potter.</P
+>
+ were written by Tim Potter.</P
><P
>The conversion to DocBook for Samba 2.2 was done
- by Gerald Carter. The conversion to DocBook XML 4.2 for
- Samba 3.0 was done by Alexander Bokovoy.</P
+ by Gerald Carter</P
></DIV
></BODY
></HTML
diff --git a/docs/manpages/findsmb.1 b/docs/manpages/findsmb.1
index 8a079b2ee4..22362f8b6d 100644
--- a/docs/manpages/findsmb.1
+++ b/docs/manpages/findsmb.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "FINDSMB" "1" "28 January 2003" "" ""
-
+.TH "FINDSMB" "1" "04 March 2003" "" ""
.SH NAME
findsmb \- list info about machines that respond to SMB name queries on a subnet
.SH SYNOPSIS
@@ -13,15 +12,12 @@ findsmb \- list info about machines that respond to SMB name queries on a subne
.SH "DESCRIPTION"
.PP
-This perl script is part of the \fBSamba\fR(7)
-suite.
+This perl script is part of the Samba suite.
.PP
\fBfindsmb\fR is a perl script that
prints out several pieces of information about machines
on a subnet that respond to SMB name query requests.
-It uses \fBnmblookup\fR(1)
-and \fBsmbclient\fR(1)
-to obtain this information.
+It uses \fB nmblookup(1)\fR to obtain this information.
.SH "OPTIONS"
.TP
\fB-r\fR
@@ -29,16 +25,15 @@ Controls whether \fBfindsmb\fR takes
bugs in Windows95 into account when trying to find a Netbios name
registered of the remote machine. This option is disabled by default
because it is specific to Windows 95 and Windows 95 machines only.
-If set, \fBnmblookup\fR(1)
+If set, \fBnmblookup\fR
will be called with -B option.
.TP
\fBsubnet broadcast address\fR
Without this option, \fBfindsmb
\fR will probe the subnet of the machine where
-\fBfindsmb\fR(1)
-is run. This value is passed to
-\fBnmblookup\fR(1)
-as part of the -B option.
+\fBfindsmb\fR is run. This value is passed
+to \fBnmblookup\fR as part of the
+-B option.
.SH "EXAMPLES"
.PP
The output of \fBfindsmb\fR lists the following
@@ -55,15 +50,15 @@ not show any information about the operating system or server
version.
.PP
The command with -r option
-must be run on a system without \fBnmbd\fR(8) running.
+must be run on a system without \fBnmbd\fR running.
If \fBnmbd\fR is running on the system, you will
only get the IP address and the DNS name of the machine. To
get proper responses from Windows 95 and Windows 98 machines,
the command must be run as root and with -r
option on a machine without \fBnmbd\fR running.
.PP
-For example, running \fBfindsmb\fR
-without -r option set would yield output similar
+For example, running \fBfindsmb\fR without
+-r option set would yield output similar
to the following
.nf
@@ -79,6 +74,7 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
192.168.35.88 SCNT2 +[MVENGR] [Windows NT 4.0] [NT LAN Manager 4.0]
192.168.35.93 FROGSTAR-PC [MVENGR] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.35.97 HERBNT1 *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]
+
.fi
.SH "VERSION"
.PP
@@ -86,8 +82,9 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBnmbd\fR(8),
-\fBsmbclient\fR(1), and \fBnmblookup\fR(1)
+\fBnmbd(8)\fR
+\fBsmbclient(1)
+\fR and \fBnmblookup(1)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -97,7 +94,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>)
-and updated for the Samba 2.0 release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook
-XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+release by Jeremy Allison. The conversion to DocBook for
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/lmhosts.5 b/docs/manpages/lmhosts.5
index 72509fa78c..82660f26bd 100644
--- a/docs/manpages/lmhosts.5
+++ b/docs/manpages/lmhosts.5
@@ -3,16 +3,15 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "LMHOSTS" "5" "28 January 2003" "" ""
-
+.TH "LMHOSTS" "5" "04 March 2003" "" ""
.SH NAME
lmhosts \- The Samba NetBIOS hosts file
.SH SYNOPSIS
.PP
-\fIlmhosts\fR is the \fBSamba\fR(7) NetBIOS name to IP address mapping file.
+\fIlmhosts\fR is the Samba NetBIOS name to IP address mapping file.
.SH "DESCRIPTION"
.PP
-This file is part of the \fBSamba\fR(7) suite.
+This file is part of the Samba suite.
.PP
\fIlmhosts\fR is the \fBSamba
\fR NetBIOS name to IP address mapping file. It
@@ -24,7 +23,7 @@ to the NetBIOS naming format.
It is an ASCII file containing one line for NetBIOS name.
The two fields on each line are separated from each other by
white space. Any entry beginning with '#' is ignored. Each line
-in the lmhosts file contains the following information:
+in the lmhosts file contains the following information :
.TP 0.2i
\(bu
IP Address - in dotted decimal format.
@@ -39,7 +38,8 @@ If the trailing '#' is omitted then the given IP
address will be returned for all names that match the given
name, whatever the NetBIOS name type in the lookup.
.PP
-An example follows:
+An example follows :
+.PP
.nf
#
@@ -61,13 +61,16 @@ type for a name "NTSERVER" is queried. Any other name type will not
be resolved.
.PP
The default location of the \fIlmhosts\fR file
-is in the same directory as the \fBsmb.conf\fR(5) file.
+is in the same directory as the
+smb.conf(5)> file.
.SH "VERSION"
.PP
-This man page is correct for version 3.0 of the Samba suite.
+This man page is correct for version 2.2 of
+the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbclient\fR(1), \fBsmb.conf\fR(5), and \fBsmbpasswd\fR(8)
+\fBsmbclient(1)
+\fR and \fB smbpasswd(8)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -80,5 +83,4 @@ The man page sources were converted to YODL format (another
excellent piece of Open Source software, available at
ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook
-XML 4.2 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/net.8 b/docs/manpages/net.8
index d65a9663f1..9b25d30c4f 100644
--- a/docs/manpages/net.8
+++ b/docs/manpages/net.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "NET" "8" "28 January 2003" "" ""
-
+.TH "NET" "8" "04 March 2003" "" ""
.SH NAME
net \- Tool for administration of Samba and remote CIFS servers.
.SH SYNOPSIS
@@ -13,7 +12,7 @@ net \- Tool for administration of Samba and remote CIFS servers.
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
The samba net utility is meant to work just like the net utility
available for windows and DOS.
@@ -23,8 +22,7 @@ available for windows and DOS.
Display summary of all available options.
.TP
\fB-w target-workgroup\fR
-Sets target workgroup or domain. You have to specify
-either this option or the IP address or the name of a server.
+Sets target workgroup or domain. You have to specify either this option or the IP address or the name of a server.
.TP
\fB-W workgroup\fR
Sets client workgroup or domain
@@ -33,8 +31,7 @@ Sets client workgroup or domain
User name to use
.TP
\fB-I ip-address\fR
-IP address of target server to use. You have to
-specify either this option or a target workgroup or a target server.
+IP address of target server to use. You have to specify either this option or a target workgroup or a target server.
.TP
\fB-p port\fR
Port on the target server to connect to.
@@ -46,8 +43,7 @@ Sets name of the client.
Specify alternative configuration file that should be loaded.
.TP
\fB-S server\fR
-Name of target server. You should specify either
-this option or a target workgroup or a target IP address.
+Name of target server. You should specify either this option or a target workgroup or a target IP address.
.TP
\fB-C comment\fR
FIXME
@@ -91,11 +87,11 @@ Without any options, the \fBNET TIME\fR command
displays the time on the remote server.
.TP
\fBSYSTEM\fR
-Displays the time on the remote server in a format ready for \fB/bin/date\fR
+Displays the time on the remote server in a format ready for /bin/date
.TP
\fBSET\fR
Tries to set the date and time of the local server to that on
-the remote server using \fB/bin/date\fR.
+the remote server using /bin/date.
.TP
\fBZONE\fR
Displays the timezone in hours from GMT on the remote computer.
@@ -120,7 +116,7 @@ delete specified user
\fBUSER INFO <name> [misc options]\fR
list the domain groups of the specified user
.TP
-\fBUSER ADD <name> [password] [-F user flags] [misc. options]\fR
+\fBUSER ADD <name> [password] [-F user flags] [misc. options\fR
Add specified user
.TP
\fBGROUP [misc options] [targets]\fR
diff --git a/docs/manpages/nmbd.8 b/docs/manpages/nmbd.8
index d8bff8bd46..44a39c1730 100644
--- a/docs/manpages/nmbd.8
+++ b/docs/manpages/nmbd.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "NMBD" "8" "28 January 2003" "" ""
-
+.TH "NMBD" "8" "04 March 2003" "" ""
.SH NAME
nmbd \- NetBIOS name server to provide NetBIOS over IP naming services to clients
.SH SYNOPSIS
@@ -13,7 +12,7 @@ nmbd \- NetBIOS name server to provide NetBIOS over IP naming services to clien
.SH "DESCRIPTION"
.PP
-This program is part of the \fBSamba\fR(7) suite.
+This program is part of the Samba suite.
.PP
\fBnmbd\fR is a server that understands
and can reply to NetBIOS over IP name service requests, like
@@ -35,7 +34,7 @@ but this can be overridden with the \fB-n\fR
option (see OPTIONS below). Thus \fBnmbd\fR will
reply to broadcast queries for its own name(s). Additional
names for \fBnmbd\fR to respond on can be set
-via parameters in the \fBsmb.conf\fR(5) configuration file.
+via parameters in the \fI smb.conf(5)\fR configuration file.
.PP
\fBnmbd\fR can also be used as a WINS
(Windows Internet Name Server) server. What this basically means
@@ -86,7 +85,7 @@ server to run "interactively", not as a daemon, even if the
server is executed on the command line of a shell. Setting this
parameter negates the implicit daemon mode when run from the
command line. \fBnmbd\fR also logs to standard
-output, as if the -S parameter had been
+output, as if the \fB-S\fR parameter had been
given.
.TP
\fB-o\fR
@@ -103,9 +102,8 @@ for \fBnmbd\fR.
NetBIOS lmhosts file. The lmhosts
file is a list of NetBIOS names to IP addresses that
is loaded by the nmbd server and used via the name
-resolution mechanism \fIname resolve
-order\fR described in \fBsmb.conf\fR(5) to resolve any
-NetBIOS name queries needed by the server. Note
+resolution mechanism name resolve order described in \fIsmb.conf(5)\fR
+to resolve any NetBIOS name queries needed by the server. Note
that the contents of this file are \fBNOT\fR
used by \fBnmbd\fR to answer any name queries.
Adding a line to this file affects name NetBIOS resolution
@@ -115,7 +113,9 @@ The default path to this file is compiled into
Samba as part of the build process. Common defaults
are \fI/usr/local/samba/lib/lmhosts\fR,
\fI/usr/samba/lib/lmhosts\fR or
-\fI/etc/samba/lmhosts\fR. See the \fBlmhosts\fR(5) man page for details on the contents of this file.
+\fI/etc/lmhosts\fR. See the
+\fIlmhosts(5)\fR
+man page for details on the contents of this file.
.TP
\fB-V\fR
Prints the version number for
@@ -140,8 +140,8 @@ and generate HUGE amounts of log data, most of which is extremely
cryptic.
Note that specifying this parameter here will override
-the \fIlog level\fR
-parameter in the \fBsmb.conf\fR(5) file.
+the log level
+parameter in the \fI smb.conf(5)\fR file.
.TP
\fB-l <log directory>\fR
The -l parameter specifies a directory
@@ -156,10 +156,10 @@ will log to the default debug log location defined at compile time.
\fB-n <primary NetBIOS name>\fR
This option allows you to override
the NetBIOS name that Samba uses for itself. This is identical
-to setting the \fINetBIOS
-name\fR parameter in the \fBsmb.conf\fR(5) file. However, a command
+to setting the NetBIOS name parameter in the
+\fIsmb.conf\fR file. However, a command
line setting will take precedence over settings in
-\fBsmb.conf\fR(5).
+\fIsmb.conf\fR.
.TP
\fB-p <UDP port number>\fR
UDP port number is a positive integer value.
@@ -174,14 +174,14 @@ is set at build time, typically as \fI /usr/local/samba/lib/smb.conf\fR, but
this may be changed when Samba is autoconfigured.
The file specified contains the configuration details
-required by the server. See \fBsmb.conf\fR(5) for more information.
+required by the server. See \fIsmb.conf(5)\fR for more information.
.SH "FILES"
.TP
\fB\fI/etc/inetd.conf\fB\fR
If the server is to be run by the
\fBinetd\fR meta-daemon, this file
must contain suitable startup information for the
-meta-daemon. See the install document
+meta-daemon. See the UNIX_INSTALL.html document
for details.
.TP
\fB\fI/etc/rc\fB\fR
@@ -190,7 +190,7 @@ system uses).
If running the server as a daemon at startup,
this file will need to contain an appropriate startup
-sequence for the server. See the "How to Install and Test SAMBA" document
+sequence for the server. See the UNIX_INSTALL.html document
for details.
.TP
\fB\fI/etc/services\fB\fR
@@ -198,26 +198,27 @@ If running the server via the
meta-daemon \fBinetd\fR, this file
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
-See the "How to Install and Test SAMBA"
+See the UNIX_INSTALL.html
document for details.
.TP
\fB\fI/usr/local/samba/lib/smb.conf\fB\fR
-This is the default location of
-the \fBsmb.conf\fR(5) server
-configuration file. Other common places that systems
+This is the default location of the
+\fIsmb.conf\fR
+server configuration file. Other common places that systems
install this file are \fI/usr/samba/lib/smb.conf\fR
-and \fI/etc/samba/smb.conf\fR.
+and \fI/etc/smb.conf\fR.
When run as a WINS server (see the
wins support
-parameter in the \fBsmb.conf\fR(5) man page),
+parameter in the \fIsmb.conf(5)\fR man page),
\fBnmbd\fR
will store the WINS database in the file \fIwins.dat\fR
in the \fIvar/locks\fR directory configured under
wherever Samba was configured to install itself.
If \fBnmbd\fR is acting as a \fB browse master\fR (see the local master
-parameter in the \fBsmb.conf\fR(5) man page, \fBnmbd\fR
+parameter in the \fIsmb.conf(5)\fR man page,
+\fBnmbd\fR
will store the browsing database in the file \fIbrowse.dat
\fR in the \fIvar/locks\fR directory
configured under wherever Samba was configured to install itself.
@@ -237,10 +238,10 @@ under wherever Samba was configured to install itself). This will also
cause \fBnmbd\fR to dump out its server database in
the \fIlog.nmb\fR file.
.PP
-The debug log level of nmbd may be raised or lowered
-using \fBsmbcontrol\fR(1) (SIGUSR[1|2] signals
-are no longer used since Samba 2.2). This is to allow
-transient problems to be diagnosed, whilst still running
+The debug log level of nmbd may be raised or lowered using
+\fBsmbcontrol(1)\fR
+ (SIGUSR[1|2] signals are no longer used in Samba 2.2). This is
+to allow transient problems to be diagnosed, whilst still running
at a normally low log level.
.SH "VERSION"
.PP
@@ -248,8 +249,11 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBinetd\fR(8), \fBsmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1), and the Internet
-RFC's \fIrfc1001.txt\fR, \fIrfc1002.txt\fR.
+\fBinetd(8)\fR, \fBsmbd(8)\fR
+\fIsmb.conf(5)\fR
+ \fBsmbclient(1)
+\fR and the Internet RFC's
+\fIrfc1001.txt\fR, \fIrfc1002.txt\fR.
In addition the CIFS (formerly SMB) specification is available
as a link from the Web page
http://samba.org/cifs/ <URL:http://samba.org/cifs/>.
@@ -262,7 +266,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook
-XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/nmblookup.1 b/docs/manpages/nmblookup.1
index 7abd080bf8..06e608a62e 100644
--- a/docs/manpages/nmblookup.1
+++ b/docs/manpages/nmblookup.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "NMBLOOKUP" "1" "28 January 2003" "" ""
-
+.TH "NMBLOOKUP" "1" "04 March 2003" "" ""
.SH NAME
nmblookup \- NetBIOS over TCP/IP client used to lookup NetBIOS names
.SH SYNOPSIS
@@ -13,7 +12,7 @@ nmblookup \- NetBIOS over TCP/IP client used to lookup NetBIOS names
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBnmblookup\fR is used to query NetBIOS names
and map them to IP addresses in a network using NetBIOS over TCP/IP
@@ -34,7 +33,7 @@ to do a recursive lookup. This is used when sending a name
query to a machine running a WINS server and the user wishes
to query the names in the WINS server. If this bit is unset
the normal (broadcast responding) NetBIOS processing code
-on a machine is used instead. See RFC1001, RFC1002 for details.
+on a machine is used instead. See rfc1001, rfc1002 for details.
.TP
\fB-S\fR
Once the name query has returned an IP
@@ -47,7 +46,8 @@ datagrams. The reason for this option is a bug in Windows 95
where it ignores the source port of the requesting packet
and only replies to UDP port 137. Unfortunately, on most UNIX
systems root privilege is needed to bind to this port, and
-in addition, if the \fBnmbd\fR(8) daemon is running on this machine it also binds to this port.
+in addition, if the nmbd(8)
+daemon is running on this machine it also binds to this port.
.TP
\fB-A\fR
Interpret \fIname\fR as
@@ -61,7 +61,7 @@ Send the query to the given broadcast address. Without
this option the default behavior of nmblookup is to send the
query to the broadcast address of the network interfaces as
either auto-detected or defined in the \fIinterfaces\fR
- parameter of the \fBsmb.conf\fR(5) file.
+ parameter of the \fIsmb.conf (5)\fR file.
.TP
\fB-U <unicast address>\fR
Do a unicast query to the specified address or
@@ -126,8 +126,8 @@ area.
.PP
\fBnmblookup\fR can be used to query
a WINS server (in the same way \fBnslookup\fR is
-used to query DNS servers). To query a WINS server, \fBnmblookup\fR
-must be called like this:
+used to query DNS servers). To query a WINS server,
+\fBnmblookup\fR must be called like this:
.PP
\fBnmblookup -U server -R 'name'\fR
.PP
@@ -143,7 +143,8 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBnmbd\fR(8), \fBsamba\fR(7), and \fBsmb.conf\fR(5).
+\fBnmbd(8)\fR
+samba(7) and smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -153,7 +154,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook
-XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/pdbedit.8 b/docs/manpages/pdbedit.8
index bd225a1805..4259bbbc4f 100644
--- a/docs/manpages/pdbedit.8
+++ b/docs/manpages/pdbedit.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "PDBEDIT" "8" "28 January 2003" "" ""
-
+.TH "PDBEDIT" "8" "04 March 2003" "" ""
.SH NAME
pdbedit \- manage the SAM database
.SH SYNOPSIS
@@ -13,7 +12,7 @@ pdbedit \- manage the SAM database
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
The pdbedit program is used to manage the users accounts
stored in the sam database and can only be run by root.
@@ -38,8 +37,9 @@ Example: \fBpdbedit -l\fR
.nf
-sorce:500:Simo Sorce
-samba:45:Test User
+ sorce:500:Simo Sorce
+ samba:45:Test User
+
.fi
.TP
\fB-v\fR
@@ -51,38 +51,40 @@ Example: \fBpdbedit -l -v\fR
.nf
----------------
-username: sorce
-user ID/Group: 500/500
-user RID/GRID: 2000/2001
-Full Name: Simo Sorce
-Home Directory: \\\\BERSERKER\\sorce
-HomeDir Drive: H:
-Logon Script: \\\\BERSERKER\\netlogon\\sorce.bat
-Profile Path: \\\\BERSERKER\\profile
----------------
-username: samba
-user ID/Group: 45/45
-user RID/GRID: 1090/1091
-Full Name: Test User
-Home Directory: \\\\BERSERKER\\samba
-HomeDir Drive:
-Logon Script:
-Profile Path: \\\\BERSERKER\\profile
+ ---------------
+ username: sorce
+ user ID/Group: 500/500
+ user RID/GRID: 2000/2001
+ Full Name: Simo Sorce
+ Home Directory: \\\\BERSERKER\\sorce
+ HomeDir Drive: H:
+ Logon Script: \\\\BERSERKER\\netlogon\\sorce.bat
+ Profile Path: \\\\BERSERKER\\profile
+ ---------------
+ username: samba
+ user ID/Group: 45/45
+ user RID/GRID: 1090/1091
+ Full Name: Test User
+ Home Directory: \\\\BERSERKER\\samba
+ HomeDir Drive:
+ Logon Script:
+ Profile Path: \\\\BERSERKER\\profile
+
.fi
.TP
\fB-w\fR
This option sets the "smbpasswd" listing format.
It will make pdbedit list the users in the database, printing
out the account fields in a format compatible with the
-\fIsmbpasswd\fR file format. (see the
-\fBsmbpasswd\fR(5) for details)
+\fIsmbpasswd\fR file format. (see the \fIsmbpasswd(5)\fR for details)
Example: \fBpdbedit -l -w\fR
+
.nf
-sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
-samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:
+ sorce:500:508818B733CE64BEAAD3B435B51404EE:D2A2418EFC466A8A0F6B1DBB5C3DB80C:[UX ]:LCT-00000000:
+ samba:45:0F2B255F7B67A7A9AAD3B435B51404EE:BC281CE3F53B6A5146629CD4751D3490:[UX ]:LCT-3BFA1E8D:
+
.fi
.TP
\fB-u username\fR
@@ -137,7 +139,7 @@ Example: \fBpdbedit -a -u sorce\fR
.nf
new password:
-retype new password
+ retype new password
.fi
.TP
\fB-m\fR
@@ -191,7 +193,8 @@ Example: \fBpdbedit -P "bad lockout attempt"\fR
.nf
-account policy value for bad lockout attempt is 0
+ account policy value for bad lockout attempt is 0
+
.fi
.TP
\fB-V account-policy-value\fR
@@ -203,8 +206,9 @@ Example: \fBpdbedit -P "bad lockout attempt" -V 3\fR
.nf
-account policy value for bad lockout attempt was 0
-account policy value for bad lockout attempt is now 3
+ account policy value for bad lockout attempt was 0
+ account policy value for bad lockout attempt is now 3
+
.fi
.TP
\fB-d|--debug=debuglevel\fR
@@ -250,7 +254,8 @@ This man page is correct for version 2.2 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbpasswd\fR(5), \fBsamba\fR(7)
+smbpasswd(8)
+samba(7)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -260,7 +265,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook
-XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/rpcclient.1 b/docs/manpages/rpcclient.1
index d62080f596..dcba30100b 100644
--- a/docs/manpages/rpcclient.1
+++ b/docs/manpages/rpcclient.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "RPCCLIENT" "1" "28 January 2003" "" ""
-
+.TH "RPCCLIENT" "1" "04 March 2003" "" ""
.SH NAME
rpcclient \- tool for executing client side MS-RPC functions
.SH SYNOPSIS
@@ -13,7 +12,7 @@ rpcclient \- tool for executing client side MS-RPC functions
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBrpcclient\fR is a utility initially developed
to test MS-RPC functionality in Samba itself. It has undergone
@@ -25,7 +24,8 @@ their UNIX workstation.
\fBserver\fR
NetBIOS name of Server to which to connect.
The server can be any SMB/CIFS server. The name is
-resolved using the \fIname resolve order\fR line from \fBsmb.conf\fR(5).
+resolved using the \fIname resolve order\fR line from
+\fIsmb.conf(5)\fR.
.TP
\fB-A|--authfile=filename\fR
This option allows
@@ -34,9 +34,10 @@ password used in the connection. The format of the file is
.nf
-username = <value>
-password = <value>
-domain = <value>
+ username = <value>
+ password = <value>
+ domain = <value>
+
.fi
Make certain that the permissions on the file restrict
@@ -46,9 +47,6 @@ access from unwanted users.
execute semicolon separated commands (listed
below))
.TP
-\fB-h|--help\fR
-Print a summary of command line options.
-.TP
\fB-d|--debug=debuglevel\fR
\fIdebuglevel\fR is an integer
from 0 to 10. The default value if this parameter is
@@ -71,6 +69,9 @@ Note that specifying this parameter here will
override the log
level file.
.TP
+\fB-h|--help\fR
+Print a summary of command line options.
+.TP
\fB-I IP-address\fR
\fIIP address\fR is the address of the server to connect to.
It should be specified in standard "a.b.c.d" notation.
@@ -192,14 +193,15 @@ follows:
.nf
-Long Printer Name:\\
-Driver File Name:\\
-Data File Name:\\
-Config File Name:\\
-Help File Name:\\
-Language Monitor Name:\\
-Default Data Type:\\
-Comma Separated list of Files
+ Long Printer Name:\\
+ Driver File Name:\\
+ Data File Name:\\
+ Config File Name:\\
+ Help File Name:\\
+ Language Monitor Name:\\
+ Default Data Type:\\
+ Comma Separated list of Files
+
.fi
Any empty fields should be enter as the string "NULL".
@@ -325,7 +327,7 @@ parameters where passed to the interpreter.
.PP
From Luke Leighton's original rpcclient man page:
.PP
-\fBWARNING!\fR The MSRPC over SMB code has
+\fB"WARNING!\fR The MSRPC over SMB code has
been developed from examining Network traces. No documentation is
available from the original creators (Microsoft) on how MSRPC over
SMB works, or how the individual MSRPC services work. Microsoft's
@@ -333,11 +335,12 @@ implementation of these services has been demonstrated (and reported)
to be... a bit flaky in places.
.PP
The development of Samba's implementation is also a bit rough,
-and as more of the services are understood, it can even result in
-versions of \fBsmbd\fR(8) and \fBrpcclient\fR(1) that are incompatible for some commands or services. Additionally,
+and as more of the services are understood, it can even result in
+versions of \fBsmbd(8)\fR and \fBrpcclient(1)\fR
+that are incompatible for some commands or services. Additionally,
the developers are sending reports to Microsoft, and problems found
or reported to Microsoft are fixed in Service Packs, which may
-result in incompatibilities.
+result in incompatibilities."
.SH "VERSION"
.PP
This man page is correct for version 3.0 of the Samba
@@ -352,5 +355,4 @@ to the way the Linux kernel is developed.
The original rpcclient man page was written by Matthew
Geddes, Luke Kenneth Casson Leighton, and rewritten by Gerald Carter.
The conversion to DocBook for Samba 2.2 was done by Gerald
-Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was
-done by Alexander Bokovoy.
+Carter.
diff --git a/docs/manpages/samba.7 b/docs/manpages/samba.7
index 0a25cbfe88..0a64a78718 100644
--- a/docs/manpages/samba.7
+++ b/docs/manpages/samba.7
@@ -3,10 +3,9 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SAMBA" "7" "28 January 2003" "" ""
-
+.TH "SAMBA" "7" "04 March 2003" "" ""
.SH NAME
-Samba \- A Windows SMB/CIFS fileserver for UNIX
+SAMBA \- A Windows SMB/CIFS fileserver for UNIX
.SH SYNOPSIS
\fBSamba\fR
@@ -20,19 +19,20 @@ also referred to as the Common Internet File System (CIFS). For a
more thorough description, see http://www.ubiqx.org/cifs/ <URL:http://www.ubiqx.org/cifs/>. Samba also implements the NetBIOS
protocol in nmbd.
.TP
-\fBsmbd(8)\fR
-The \fBsmbd\fR daemon provides the file and print services to
+\fBsmbd\fR
+The \fBsmbd \fR
+daemon provides the file and print services to
SMB clients, such as Windows 95/98, Windows NT, Windows
for Workgroups or LanManager. The configuration file
-for this daemon is described in \fBsmb.conf\fR(5)
+for this daemon is described in \fIsmb.conf\fR
.TP
-\fBnmbd(8)\fR
+\fBnmbd\fR
The \fBnmbd\fR
daemon provides NetBIOS nameservice and browsing
support. The configuration file for this daemon
-is described in \fBsmb.conf\fR(5)
+is described in \fIsmb.conf\fR
.TP
-\fBsmbclient(1)\fR
+\fBsmbclient\fR
The \fBsmbclient\fR
program implements a simple ftp-like client. This
is useful for accessing SMB shares on other compatible
@@ -40,33 +40,33 @@ servers (such as Windows NT), and can also be used
to allow a UNIX box to print to a printer attached to
any SMB server (such as a PC running Windows NT).
.TP
-\fBtestparm(1)\fR
+\fBtestparm\fR
The \fBtestparm\fR
-utility is a simple syntax checker for Samba's \fBsmb.conf\fR(5) configuration file.
+utility is a simple syntax checker for Samba's
+\fIsmb.conf\fRconfiguration file.
.TP
-\fBtestprns(1)\fR
+\fBtestprns\fR
The \fBtestprns\fR
utility supports testing printer names defined
in your \fIprintcap\fR file used
by Samba.
.TP
-\fBsmbstatus(1)\fR
+\fBsmbstatus\fR
The \fBsmbstatus\fR
tool provides access to information about the
current connections to \fBsmbd\fR.
.TP
-\fBnmblookup(1)\fR
+\fBnmblookup\fR
The \fBnmblookup\fR
tools allows NetBIOS name queries to be made
from a UNIX host.
.TP
-\fBsmbgroupedit(8)\fR
-The \fBsmbgroupedit\fR
-tool allows for mapping unix groups to NT Builtin,
-Domain, or Local groups. Also it allows setting
-priviledges for that group, such as saAddUser, etc.
+\fBmake_smbcodepage\fR
+The \fBmake_smbcodepage\fR
+utility provides a means of creating SMB code page
+definition files for your \fBsmbd\fR server.
.TP
-\fBsmbpasswd(8)\fR
+\fBsmbpasswd\fR
The \fBsmbpasswd\fR
command is a tool for changing LanMan and Windows NT
password hashes on Samba and Windows NT servers.
@@ -101,13 +101,13 @@ on the newsgroup comp.protocol.smb <URL:news:comp.protocols.smb> and the Samba
list. Details on how to join the mailing list are given in
the README file that comes with Samba.
.PP
-If you have access to a WWW viewer (such as Mozilla
-or Konqueror) then you will also find lots of useful information,
+If you have access to a WWW viewer (such as Netscape
+or Mosaic) then you will also find lots of useful information,
including back issues of the Samba mailing list, at
http://lists.samba.org <URL:http://lists.samba.org/>.
.SH "VERSION"
.PP
-This man page is correct for version 3.0 of the
+This man page is correct for version 2.2 of the
Samba suite.
.SH "CONTRIBUTIONS"
.PP
@@ -117,8 +117,8 @@ http://lists.samba.org <URL:http://lists.samba.org/>.
.PP
If you have patches to submit, visit
http://devel.samba.org/ <URL:http://devel.samba.org/>
-for information on how to do it properly. We prefer patches
-in \fBdiff -u\fR format.
+for information on how to do it properly. We prefer patches in
+\fBdiff -u\fR format.
.SH "CONTRIBUTORS"
.PP
Contributors to the project are now too numerous
@@ -141,7 +141,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML
-4.2 for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smb.conf.5 b/docs/manpages/smb.conf.5
index fee4cf8989..c6dc6c3a11 100644
--- a/docs/manpages/smb.conf.5
+++ b/docs/manpages/smb.conf.5
@@ -3,18 +3,18 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMB.CONF" "5" "18 February 2003" "" ""
-
+.TH "SMB.CONF" "5" "04 March 2003" "" ""
.SH NAME
smb.conf \- The configuration file for the Samba suite
.SH "SYNOPSIS"
.PP
-The \fIsmb.conf\fR file is a configuration
-file for the Samba suite. \fIsmb.conf\fR contains
-runtime configuration information for the Samba programs. The \fIsmb.conf\fR file
-is designed to be configured and administered by the \fBswat\fR(8) program. The complete
-description of the file format and possible parameters held within
-are here for reference purposes.
+The \fIsmb.conf\fR file is a configuration
+file for the Samba suite. \fIsmb.conf\fR contains
+runtime configuration information for the Samba programs. The
+\fIsmb.conf\fR file is designed to be configured and
+administered by the \fBswat(8)\fR
+ program. The complete description of the file format and
+possible parameters held within are here for reference purposes.
.SH "FILE FORMAT"
.PP
The file consists of sections and parameters. A section
@@ -93,9 +93,11 @@ The user has write access to the path \fI/home/bar\fR.
The share is accessed via the share name "foo":
.nf
-[foo]
- path = /home/bar
- read only = no
+ [foo]
+ path = /home/bar
+ read only = no
+
+
.fi
.PP
The following sample section defines a printable share.
@@ -106,11 +108,13 @@ access will be permitted as the default guest user (specified
elsewhere):
.nf
-[aprinter]
- path = /usr/spool/public
- read only = yes
- printable = yes
- guest ok = yes
+ [aprinter]
+ path = /usr/spool/public
+ read only = yes
+ printable = yes
+ guest ok = yes
+
+
.fi
.SH "SPECIAL SECTIONS"
.SS "THE [GLOBAL] SECTION"
@@ -168,8 +172,10 @@ than others. The following is a typical and suitable [homes]
section:
.nf
-[homes]
- read only = no
+ [homes]
+ read only = no
+
+
.fi
.PP
An important point is that if guest access is specified
@@ -229,10 +235,11 @@ it. A typical [printers] entry would look like
this:
.nf
-[printers]
- path = /usr/spool/public
- guest ok = yes
- printable = yes
+ [printers]
+ path = /usr/spool/public
+ guest ok = yes
+ printable = yes
+
.fi
.PP
All aliases given for a printer in the printcap file
@@ -242,7 +249,9 @@ to set up a pseudo-printcap. This is a file consisting of one or
more lines like this:
.nf
-alias|alias|alias|alias...
+ alias|alias|alias|alias...
+
+
.fi
.PP
Each alias should be an acceptable printer name for
@@ -1436,9 +1445,10 @@ each parameter for details. Note that some are synonyms.
\fIwriteable\fR
.SH "EXPLANATION OF EACH PARAMETER"
.TP
-\fB>abort shutdown script (G)\fR
+\fBabort shutdown script (G)\fR
\fBThis parameter only exists in the HEAD cvs branch\fR
-This a full path name to a script called by \fBsmbd\fR(8) that
+This a full path name to a script called by
+\fBsmbd(8)\fR that
should stop a shutdown procedure issued by the \fIshutdown script\fR.
This command will be run as user.
@@ -1447,7 +1457,7 @@ Default: \fBNone\fR.
Example: \fBabort shutdown script = /sbin/shutdown -c\fR
.TP
-\fB>addprinter command (G)\fR
+\fBaddprinter command (G)\fR
With the introduction of MS-RPC based printing
support for Windows NT/2000 clients in Samba 2.2, The MS Add
Printer Wizard (APW) icon is now also available in the
@@ -1461,11 +1471,12 @@ printer command\fR defines a script to be run which
will perform the necessary operations for adding the printer
to the print system and to add the appropriate service definition
to the \fIsmb.conf\fR file in order that it can be
-shared by \fBsmbd\fR(8).
+shared by \fBsmbd(8)\fR
+
The \fIaddprinter command\fR is
automatically invoked with the following parameter (in
-order):
+order:
.RS
.TP 0.2i
\(bu
@@ -1507,7 +1518,7 @@ Default: \fBnone\fR
Example: \fBaddprinter command = /usr/bin/addprinter
\fR
.TP
-\fB>add share command (G)\fR
+\fBadd share command (G)\fR
Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
\fIadd share command\fR is used to define an
@@ -1550,9 +1561,9 @@ Default: \fBnone\fR
Example: \fBadd share command = /usr/local/bin/addshare\fR
.TP
-\fB>add machine script (G)\fR
+\fBadd machine script (G)\fR
This is the full pathname to a script that will
-be run by \fBsmbd\fR(8) when a machine is added
+be run by smbd(8) when a machine is added
to it's domain using the administrator username and password method.
This option is only required when using sam back-ends tied to the
@@ -1565,7 +1576,7 @@ Default: \fBadd machine script = <empty string>
Example: \fBadd machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
\fR
.TP
-\fB>ads server (G)\fR
+\fBads server (G)\fR
If this option is specified, samba does
not try to figure out what ads server to use itself, but
uses the specified ads server. Either one DNS name or IP
@@ -1575,9 +1586,10 @@ Default: \fBads server = \fR
Example: \fBads server = 192.168.1.2\fR
.TP
-\fB>add user script (G)\fR
+\fBadd user script (G)\fR
This is the full pathname to a script that will
-be run \fBAS ROOT\fR by \fBsmbd\fR(8) under special circumstances described below.
+be run \fBAS ROOT\fR by smbd(8)
+ under special circumstances described below.
Normally, a Samba server requires that UNIX users are
created for all users accessing files on this server. For sites
@@ -1586,14 +1598,15 @@ creating these users and keeping the user list in sync with the
Windows NT PDC is an onerous task. This option allows smbd to create the required UNIX users
\fBON DEMAND\fR when a user accesses the Samba server.
-In order to use this option, \fBsmbd\fR(8) must \fBNOT\fR be set to \fIsecurity = share\fR
+In order to use this option, smbd
+must \fBNOT\fR be set to \fIsecurity = share\fR
and \fIadd user script\fR
must be set to a full pathname for a script that will create a UNIX
user given one argument of \fI%u\fR, which expands into
the UNIX user name to create.
When the Windows user attempts to access the Samba server,
-at login (session setup in the SMB protocol) time, \fBsmbd\fR(8) contacts the \fIpassword server\fR and
+at login (session setup in the SMB protocol) time, smbd contacts the \fIpassword server\fR and
attempts to authenticate the given user with the given password. If the
authentication succeeds then \fBsmbd\fR
attempts to find a UNIX user in the UNIX password database to map the
@@ -1617,9 +1630,9 @@ Default: \fBadd user script = <empty string>
Example: \fBadd user script = /usr/local/samba/bin/add_user
%u\fR
.TP
-\fB>add group script (G)\fR
+\fBadd group script (G)\fR
This is the full pathname to a script that will
-be run \fBAS ROOT\fR by \fBsmbd\fR(8) when a new group is
+be run \fBAS ROOT\fR by smbd(8) when a new group is
requested. It will expand any
\fI%g\fR to the group name passed.
This script is only useful for installations using the
@@ -1629,7 +1642,7 @@ circumvent unix group name restrictions. In that case
the script must print the numeric gid of the created
group on stdout.
.TP
-\fB>admin users (S)\fR
+\fBadmin users (S)\fR
This is a list of users who will be granted
administrative privileges on the share. This means that they
will do all file operations as the super-user (root).
@@ -1642,21 +1655,22 @@ Default: \fBno admin users\fR
Example: \fBadmin users = jason\fR
.TP
-\fB>add user to group script (G)\fR
+\fBadd user to group script (G)\fR
Full path to the script that will be called when
a user is added to a group using the Windows NT domain administration
-tools. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR.
-Any \fI%g\fR will be replaced with the group name and
-any \fI%u\fR will be replaced with the user name.
+tools. It will be run by smbd(8)
+\fBAS ROOT\fR. Any \fI%g\fR will be
+replaced with the group name and any \fI%u\fR will
+be replaced with the user name.
Default: \fBadd user to group script = \fR
Example: \fBadd user to group script = /usr/sbin/adduser %u %g\fR
.TP
-\fB>allow hosts (S)\fR
+\fBallow hosts (S)\fR
Synonym for \fIhosts allow\fR.
.TP
-\fB>algorithmic rid base (G)\fR
+\fBalgorithmic rid base (G)\fR
This determines how Samba will use its
algorithmic mapping from uids/gid to the RIDs needed to construct
NT Security Identifiers.
@@ -1675,7 +1689,7 @@ Default: \fBalgorithmic rid base = 1000\fR
Example: \fBalgorithmic rid base = 100000\fR
.TP
-\fB>allow trusted domains (G)\fR
+\fBallow trusted domains (G)\fR
This option only takes effect when the \fIsecurity\fR option is set to
server or domain.
If it is set to no, then attempts to connect to a resource from
@@ -1694,8 +1708,10 @@ can make implementing a security boundary difficult.
Default: \fBallow trusted domains = yes\fR
.TP
-\fB>announce as (G)\fR
-This specifies what type of server \fBnmbd\fR(8) will announce itself as, to a network neighborhood browse
+\fBannounce as (G)\fR
+This specifies what type of server
+\fBnmbd\fR
+will announce itself as, to a network neighborhood browse
list. By default this is set to Windows NT. The valid options
are : "NT Server" (which can also be written as "NT"),
"NT Workstation", "Win95" or "WfW" meaning Windows NT Server,
@@ -1709,7 +1725,7 @@ Default: \fBannounce as = NT Server\fR
Example: \fBannounce as = Win95\fR
.TP
-\fB>announce version (G)\fR
+\fBannounce version (G)\fR
This specifies the major and minor version numbers
that nmbd will use when announcing itself as a server. The default
is 4.9. Do not change this parameter unless you have a specific
@@ -1719,10 +1735,10 @@ Default: \fBannounce version = 4.9\fR
Example: \fBannounce version = 2.0\fR
.TP
-\fB>auto services (G)\fR
+\fBauto services (G)\fR
This is a synonym for the \fIpreload\fR.
.TP
-\fB>auth methods (G)\fR
+\fBauth methods (G)\fR
This option allows the administrator to chose what
authentication methods \fBsmbd\fR will use when authenticating
a user. This option defaults to sensible values based on \fI security\fR.
@@ -1734,7 +1750,7 @@ Default: \fBauth methods = <empty string>\fR
Example: \fBauth methods = guest sam ntdomain\fR
.TP
-\fB>available (S)\fR
+\fBavailable (S)\fR
This parameter lets you "turn off" a service. If
\fIavailable = no\fR, then \fBALL\fR
attempts to connect to the service will fail. Such failures are
@@ -1742,10 +1758,12 @@ logged.
Default: \fBavailable = yes\fR
.TP
-\fB>bind interfaces only (G)\fR
+\fBbind interfaces only (G)\fR
This global parameter allows the Samba admin
to limit what interfaces on a machine will serve SMB requests. It
-affects file service \fBsmbd\fR(8) and name service \fBnmbd\fR(8) in a slightly different ways.
+affects file service smbd(8) and
+name service nmbd(8) in slightly
+different ways.
For name service it causes \fBnmbd\fR to bind
to ports 137 and 138 on the interfaces listed in the interfaces parameter. \fBnmbd
@@ -1764,8 +1782,8 @@ send packets that arrive through any interfaces not listed in the
does defeat this simple check, however, so it must not be used
seriously as a security feature for \fBnmbd\fR.
-For file service it causes \fBsmbd\fR(8) to bind only to the interface list
-given in the interfaces parameter. This restricts the networks that
+For file service it causes smbd(8)
+to bind only to the interface list given in the interfaces parameter. This restricts the networks that
\fBsmbd\fR will serve to packets coming in those
interfaces. Note that you should not use this parameter for machines
that are serving PPP or other intermittent or non-broadcast network
@@ -1773,7 +1791,9 @@ interfaces as it will not cope with non-permanent interfaces.
If \fIbind interfaces only\fR is set then
unless the network address \fB127.0.0.1\fR is added
-to the \fIinterfaces\fR parameter list \fBsmbpasswd\fR(8) and \fBswat\fR(8) may not work as expected due to the reasons covered below.
+to the \fIinterfaces\fR parameter list \fBsmbpasswd(8)\fR
+and \fBswat(8)\fR may
+not work as expected due to the reasons covered below.
To change a users SMB password, the \fBsmbpasswd\fR
by default connects to the \fBlocalhost - 127.0.0.1\fR
@@ -1782,8 +1802,8 @@ address as an SMB client to issue the password change request. If
network address \fB127.0.0.1\fR is added to the
\fIinterfaces\fR parameter list then \fB smbpasswd\fR will fail to connect in it's default mode.
\fBsmbpasswd\fR can be forced to use the primary IP interface
-of the local host by using its \fBsmbpasswd\fR(8) \fI-r remote machine\fR
-parameter, with \fIremote machine\fR set
+of the local host by using its \fI-r remote machine\fR
+ parameter, with \fIremote machine\fR set
to the IP name of the primary interface of the local host.
The \fBswat\fR status page tries to connect with
@@ -1795,9 +1815,8 @@ and \fBnmbd\fR.
Default: \fBbind interfaces only = no\fR
.TP
-\fB>blocking locks (S)\fR
-This parameter controls the behavior
-of \fBsmbd\fR(8) when given a request by a client
+\fBblocking locks (S)\fR
+This parameter controls the behavior of smbd(8) when given a request by a client
to obtain a byte range lock on a region of an open file, and the
request has a time limit associated with it.
@@ -1813,8 +1832,9 @@ cannot be obtained.
Default: \fBblocking locks = yes\fR
.TP
-\fB>block size (S)\fR
-This parameter controls the behavior of \fBsmbd\fR(8) when reporting disk free
+\fBblock size (S)\fR
+This parameter controls the behavior of
+smbd(8) when reporting disk free
sizes. By default, this reports a disk block size of 1024 bytes.
Changing this parameter may have some effect on the
@@ -1826,38 +1846,42 @@ is an experimental option it may be removed in a future release.
Changing this option does not change the disk free reporting
size, just the block size unit reported to the client.
+
+Default: \fBblock size = 1024\fR
+
+Example: \fBblock size = 65536\fR
.TP
-\fB>browsable (S)\fR
+\fBbrowsable (S)\fR
See the \fI browseable\fR.
.TP
-\fB>browse list (G)\fR
-This controls whether \fBsmbd\fR(8) will serve a browse list to
+\fBbrowse list (G)\fR
+This controls whether \fBsmbd(8)\fR will serve a browse list to
a client doing a \fBNetServerEnum\fR call. Normally
set to yes. You should never need to change
this.
Default: \fBbrowse list = yes\fR
.TP
-\fB>browseable (S)\fR
+\fBbrowseable (S)\fR
This controls whether this share is seen in
the list of available shares in a net view and in the browse list.
Default: \fBbrowseable = yes\fR
.TP
-\fB>case sensitive (S)\fR
+\fBcase sensitive (S)\fR
See the discussion in the section NAME MANGLING.
Default: \fBcase sensitive = no\fR
.TP
-\fB>casesignames (S)\fR
+\fBcasesignames (S)\fR
Synonym for case
sensitive.
.TP
-\fB>change notify timeout (G)\fR
+\fBchange notify timeout (G)\fR
This SMB allows a client to tell a server to
"watch" a particular directory for any changes and only reply to
the SMB request when a change has occurred. Such constant scanning of
-a directory is expensive under UNIX, hence an \fBsmbd\fR(8) daemon only performs such a scan
+a directory is expensive under UNIX, hence an \fBsmbd(8)\fR daemon only performs such a scan
on each requested directory once every \fIchange notify
timeout\fR seconds.
@@ -1867,7 +1891,7 @@ Example: \fBchange notify timeout = 300\fR
Would change the scan time to every 5 minutes.
.TP
-\fB>change share command (G)\fR
+\fBchange share command (G)\fR
Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
\fIchange share command\fR is used to define an
@@ -1909,7 +1933,7 @@ Default: \fBnone\fR
Example: \fBchange share command = /usr/local/bin/addshare\fR
.TP
-\fB>comment (S)\fR
+\fBcomment (S)\fR
This is a text field that is seen next to a share
when a client does a queries the server, either via the network
neighborhood or via \fBnet view\fR to list what shares
@@ -1922,7 +1946,7 @@ Default: \fBNo comment string\fR
Example: \fBcomment = Fred's Files\fR
.TP
-\fB>config file (G)\fR
+\fBconfig file (G)\fR
This allows you to override the config file
to use, instead of the default (usually \fIsmb.conf\fR).
There is a chicken and egg problem here as this option is set
@@ -1942,7 +1966,7 @@ clients).
Example: \fBconfig file = /usr/local/samba/lib/smb.conf.%m
\fR
.TP
-\fB>copy (S)\fR
+\fBcopy (S)\fR
This parameter allows you to "clone" service
entries. The specified service is simply duplicated under the
current service's name. Any parameters specified in the current
@@ -1957,7 +1981,7 @@ Default: \fBno value\fR
Example: \fBcopy = otherservice\fR
.TP
-\fB>create mask (S)\fR
+\fBcreate mask (S)\fR
A synonym for this parameter is
\fIcreate mode\fR
\&.
@@ -1994,10 +2018,10 @@ Default: \fBcreate mask = 0744\fR
Example: \fBcreate mask = 0775\fR
.TP
-\fB>create mode (S)\fR
+\fBcreate mode (S)\fR
This is a synonym for \fI create mask\fR.
.TP
-\fB>csc policy (S)\fR
+\fBcsc policy (S)\fR
This stands for \fBclient-side caching
policy\fR, and specifies how clients capable of offline
caching will cache the files in the share. The valid values
@@ -2014,7 +2038,7 @@ Default: \fBcsc policy = manual\fR
Example: \fBcsc policy = programs\fR
.TP
-\fB>deadtime (G)\fR
+\fBdeadtime (G)\fR
The value of the parameter (a decimal integer)
represents the number of minutes of inactivity before a connection
is considered dead, and it is disconnected. The deadtime only takes
@@ -2037,7 +2061,7 @@ Default: \fBdeadtime = 0\fR
Example: \fBdeadtime = 15\fR
.TP
-\fB>debug hires timestamp (G)\fR
+\fBdebug hires timestamp (G)\fR
Sometimes the timestamps in the log messages
are needed with a resolution of higher that seconds, this
boolean parameter adds microsecond resolution to the timestamp
@@ -2048,7 +2072,7 @@ effect.
Default: \fBdebug hires timestamp = no\fR
.TP
-\fB>debug pid (G)\fR
+\fBdebug pid (G)\fR
When using only one log file for more then one
forked smbdprocess there may be hard to follow which process
outputs which message. This boolean parameter is adds the process-id
@@ -2059,7 +2083,7 @@ effect.
Default: \fBdebug pid = no\fR
.TP
-\fB>debug timestamp (G)\fR
+\fBdebug timestamp (G)\fR
Samba debug log messages are timestamped
by default. If you are running at a high \fIdebug level\fR these timestamps
can be distracting. This boolean parameter allows timestamping
@@ -2067,7 +2091,7 @@ to be turned off.
Default: \fBdebug timestamp = yes\fR
.TP
-\fB>debug uid (G)\fR
+\fBdebug uid (G)\fR
Samba is sometimes run as root and sometime
run as the connected user, this boolean parameter inserts the
current euid, egid, uid and gid to the timestamp message headers
@@ -2078,18 +2102,18 @@ effect.
Default: \fBdebug uid = no\fR
.TP
-\fB>debuglevel (G)\fR
+\fBdebuglevel (G)\fR
Synonym for \fI log level\fR.
.TP
-\fB>default (G)\fR
+\fBdefault (G)\fR
A synonym for \fI default service\fR.
.TP
-\fB>default case (S)\fR
+\fBdefault case (S)\fR
See the section on NAME MANGLING. Also note the \fIshort preserve case\fR parameter.
Default: \fBdefault case = lower\fR
.TP
-\fB>default devmode (S)\fR
+\fBdefault devmode (S)\fR
This parameter is only applicable to printable services. When smbd is serving
Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba
server has a Device Mode which defines things such as paper size and
@@ -2117,7 +2141,7 @@ see the MSDN documentation <URL:http://msdn.microsoft.com/>.
Default: \fBdefault devmode = no\fR
.TP
-\fB>default service (G)\fR
+\fBdefault service (G)\fR
This parameter specifies the name of a service
which will be connected to if the service actually requested cannot
be found. Note that the square brackets are \fBNOT\fR
@@ -2147,15 +2171,14 @@ Example:
[pub]
path = /%S
+
.fi
.TP
-\fB>delete group script (G)\fR
+\fBdelete group script (G)\fR
This is the full pathname to a script that will
-be run \fBAS ROOT\fR \fBsmbd\fR(8) when a group is requested to be deleted.
-It will expand any \fI%g\fR to the group name passed.
-This script is only useful for installations using the Windows NT domain administration tools.
+be run \fBAS ROOT\fR by smbd(8) when a group is requested to be deleted. It will expand any \fI%g\fR to the group name passed. This script is only useful for installations using the Windows NT domain administration tools.
.TP
-\fB>deleteprinter command (G)\fR
+\fBdeleteprinter command (G)\fR
With the introduction of MS-RPC based printer
support for Windows NT/2000 clients in Samba 2.2, it is now
possible to delete printer at run time by issuing the
@@ -2183,7 +2206,7 @@ Default: \fBnone\fR
Example: \fBdeleteprinter command = /usr/bin/removeprinter
\fR
.TP
-\fB>delete readonly (S)\fR
+\fBdelete readonly (S)\fR
This parameter allows readonly files to be deleted.
This is not normal DOS semantics, but is allowed by UNIX.
@@ -2193,7 +2216,7 @@ permissions, and DOS semantics prevent deletion of a read only file.
Default: \fBdelete readonly = no\fR
.TP
-\fB>delete share command (G)\fR
+\fBdelete share command (G)\fR
Samba 2.2.0 introduced the ability to dynamically
add and delete shares via the Windows NT 4.0 Server Manager. The
\fIdelete share command\fR is used to define an
@@ -2228,10 +2251,10 @@ Default: \fBnone\fR
Example: \fBdelete share command = /usr/local/bin/delshare\fR
.TP
-\fB>delete user script (G)\fR
+\fBdelete user script (G)\fR
This is the full pathname to a script that will
-be run by \fBsmbd\fR(8) when managing users
-with remote RPC (NT) tools.
+be run by \fBsmbd(8)\fR
+when managing user's with remote RPC (NT) tools.
This script is called when a remote client removes a user
from the server, normally using 'User Manager for Domains' or
@@ -2245,18 +2268,19 @@ Default: \fBdelete user script = <empty string>
Example: \fBdelete user script = /usr/local/samba/bin/del_user
%u\fR
.TP
-\fB>delete user from group script (G)\fR
+\fBdelete user from group script (G)\fR
Full path to the script that will be called when
a user is removed from a group using the Windows NT domain administration
-tools. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR.
-Any \fI%g\fR will be replaced with the group name and
-any \fI%u\fR will be replaced with the user name.
+tools. It will be run by smbd(8)
+\fBAS ROOT\fR. Any \fI%g\fR will be
+replaced with the group name and any \fI%u\fR will
+be replaced with the user name.
Default: \fBdelete user from group script = \fR
Example: \fBdelete user from group script = /usr/sbin/deluser %u %g\fR
.TP
-\fB>delete veto files (S)\fR
+\fBdelete veto files (S)\fR
This option is used when Samba is attempting to
delete a directory that contains one or more vetoed directories
(see the \fIveto files\fR
@@ -2280,11 +2304,11 @@ files\fR parameter.
Default: \fBdelete veto files = no\fR
.TP
-\fB>deny hosts (S)\fR
+\fBdeny hosts (S)\fR
Synonym for \fIhosts
deny\fR.
.TP
-\fB>dfree command (G)\fR
+\fBdfree command (G)\fR
The \fIdfree command\fR setting should
only be used on systems where a problem occurs with the internal
disk space calculations. This has been known to happen with Ultrix,
@@ -2320,8 +2344,9 @@ Where the script dfree (which must be made executable) could be:
.nf
-#!/bin/sh
-df $1 | tail -1 | awk '{print $2" "$4}'
+ #!/bin/sh
+ df $1 | tail -1 | awk '{print $2" "$4}'
+
.fi
or perhaps (on Sys V based systems):
@@ -2329,18 +2354,19 @@ or perhaps (on Sys V based systems):
.nf
-#!/bin/sh
-/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+ #!/bin/sh
+ /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+
.fi
Note that you may have to replace the command names
with full path names on some systems.
.TP
-\fB>directory (S)\fR
+\fBdirectory (S)\fR
Synonym for \fIpath
\fR.
.TP
-\fB>directory mask (S)\fR
+\fBdirectory mask (S)\fR
This parameter is the octal modes which are
used when converting DOS modes to UNIX modes when creating UNIX
directories.
@@ -2381,10 +2407,10 @@ Default: \fBdirectory mask = 0755\fR
Example: \fBdirectory mask = 0775\fR
.TP
-\fB>directory mode (S)\fR
+\fBdirectory mode (S)\fR
Synonym for \fI directory mask\fR
.TP
-\fB>directory security mask (S)\fR
+\fBdirectory security mask (S)\fR
This parameter controls what UNIX permission bits
can be modified when a Windows NT client is manipulating the UNIX
permission on a directory using the native NT security dialog
@@ -2414,7 +2440,7 @@ Default: \fBdirectory security mask = 0777\fR
Example: \fBdirectory security mask = 0700\fR
.TP
-\fB>disable netbios (G)\fR
+\fBdisable netbios (G)\fR
Enabling this parameter will disable netbios support
in Samba. Netbios is the only available form of browsing in
all windows versions except for 2000 and XP.
@@ -2426,7 +2452,7 @@ Default: \fBdisable netbios = no\fR
Example: \fBdisable netbios = yes\fR
.TP
-\fB>disable spoolss (G)\fR
+\fBdisable spoolss (G)\fR
Enabling this parameter will disable Samba's support
for the SPOOLSS set of MS-RPC's and will yield identical behavior
as Samba 2.0.x. Windows NT/2000 clients will downgrade to using
@@ -2442,7 +2468,7 @@ See also use client driver
Default : \fBdisable spoolss = no\fR
.TP
-\fB>display charset (G)\fR
+\fBdisplay charset (G)\fR
Specifies the charset that samba will use
to print messages to stdout and stderr and SWAT will use.
Should generally be the same as the \fBunix charset\fR.
@@ -2451,11 +2477,12 @@ Default: \fBdisplay charset = ASCII\fR
Example: \fBdisplay charset = UTF8\fR
.TP
-\fB>dns proxy (G)\fR
-Specifies that \fBnmbd\fR(8) when acting as a WINS server and
-finding that a NetBIOS name has not been registered, should treat the
-NetBIOS name word-for-word as a DNS name and do a lookup with the DNS server
-for that name on behalf of the name-querying client.
+\fBdns proxy (G)\fR
+Specifies that nmbd(8)
+when acting as a WINS server and finding that a NetBIOS name has not
+been registered, should treat the NetBIOS name word-for-word as a DNS
+name and do a lookup with the DNS server for that name on behalf of
+the name-querying client.
Note that the maximum length for a NetBIOS name is 15
characters, so the DNS name (or DNS alias) can likewise only be
@@ -2469,7 +2496,7 @@ See also the parameter \fI wins support\fR.
Default: \fBdns proxy = yes\fR
.TP
-\fB>domain logons (G)\fR
+\fBdomain logons (G)\fR
If set to yes, the Samba server will serve
Windows 95/98 Domain logons for the \fIworkgroup\fR it is in. Samba 2.2
has limited capability to act as a domain controller for Windows
@@ -2479,17 +2506,18 @@ directory shipped with the source code.
Default: \fBdomain logons = no\fR
.TP
-\fB>domain master (G)\fR
-Tell \fBsmbd\fR(8) to enable WAN-wide browse list
+\fBdomain master (G)\fR
+Tell \fB nmbd(8)\fR to enable WAN-wide browse list
collation. Setting this option causes \fBnmbd\fR to
claim a special domain specific NetBIOS name that identifies
it as a domain master browser for its given \fIworkgroup\fR. Local master browsers
in the same \fIworkgroup\fR on broadcast-isolated
subnets will give this \fBnmbd\fR their local browse lists,
-and then ask \fBsmbd\fR(8) for a complete copy of the browse
-list for the whole wide area network. Browser clients will then contact
-their local master browser, and will receive the domain-wide browse list,
-instead of just the list for their broadcast-isolated subnet.
+and then ask \fBsmbd(8)\fR
+for a complete copy of the browse list for the whole wide area
+network. Browser clients will then contact their local master browser,
+and will receive the domain-wide browse list, instead of just the list
+for their broadcast-isolated subnet.
Note that Windows NT Primary Domain Controllers expect to be
able to claim this \fIworkgroup\fR specific special
@@ -2509,7 +2537,7 @@ master\fR be enabled by default.
Default: \fBdomain master = auto\fR
.TP
-\fB>dont descend (S)\fR
+\fBdont descend (S)\fR
There are certain directories on some systems
(e.g., the \fI/proc\fR tree under Linux) that are either not
of interest to clients or are infinitely deep (recursive). This
@@ -2525,16 +2553,17 @@ to descend)\fR
Example: \fBdont descend = /proc,/dev\fR
.TP
-\fB>dos charset (G)\fR
+\fBdos charset (G)\fR
DOS SMB clients assume the server has
the same charset as they do. This option specifies which
charset Samba should talk to DOS clients.
The default depends on which charsets you have instaled.
Samba tries to use charset 850 but falls back to ASCII in
-case it is not available. Run \fBtestparm\fR(1) to check the default on your system.
+case it is not available. Run testparm(1)
+ to check the default on your system.
.TP
-\fB>dos filemode (S)\fR
+\fBdos filemode (S)\fR
The default behavior in Samba is to provide
UNIX-like behavior where only the owner of a file/directory is
able to change the permissions on it. However, this behavior
@@ -2548,12 +2577,13 @@ are modified.
Default: \fBdos filemode = no\fR
.TP
-\fB>dos filetime resolution (S)\fR
+\fBdos filetime resolution (S)\fR
Under the DOS and Windows FAT filesystem, the finest
granularity on time resolution is two seconds. Setting this parameter
for a share causes Samba to round the reported time down to the
nearest two second boundary when a query call that requires one second
-resolution is made to \fBsmbd\fR(8).
+resolution is made to \fBsmbd(8)\fR
+
This option is mainly used as a compatibility option for Visual
C++ when used against Samba shares. If oplocks are enabled on a
@@ -2568,18 +2598,18 @@ happy.
Default: \fBdos filetime resolution = no\fR
.TP
-\fB>dos filetimes (S)\fR
+\fBdos filetimes (S)\fR
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
timestamp on a file if the user \fBsmbd\fR is acting
-on behalf of is not the file owner. Setting this option to yes allows DOS semantics and \fBsmbd\fR(8) will change the file
+on behalf of is not the file owner. Setting this option to yes allows DOS semantics and smbd will change the file
timestamp as DOS requires.
Default: \fBdos filetimes = no\fR
.TP
-\fB>encrypt passwords (G)\fR
+\fBencrypt passwords (G)\fR
This boolean controls whether encrypted passwords
will be negotiated with the client. Note that Windows NT 4.0 SP3 and
above and also Windows 98 will by default expect encrypted passwords
@@ -2588,15 +2618,16 @@ Samba see the file ENCRYPTION.txt in the Samba documentation
directory \fIdocs/\fR shipped with the source code.
In order for encrypted passwords to work correctly
-\fBsmbd\fR(8) must either
-have access to a local \fBsmbpasswd\fR(5) file (see the \fBsmbpasswd\fR(8) program for information on how to set up
+\fBsmbd(8)\fR must either
+have access to a local \fIsmbpasswd(5)
+\fR program for information on how to set up
and maintain this file), or set the security = [server|domain|ads] parameter which
causes \fBsmbd\fR to authenticate against another
server.
Default: \fBencrypt passwords = yes\fR
.TP
-\fB>enhanced browsing (G)\fR
+\fBenhanced browsing (G)\fR
This option enables a couple of enhancements to
cross-subnet browse propagation that have been added in Samba
but which are not standard in Microsoft implementations.
@@ -2617,7 +2648,7 @@ cross-subnet browse propagation much more reliable.
Default: \fBenhanced browsing = yes\fR
.TP
-\fB>enumports command (G)\fR
+\fBenumports command (G)\fR
The concept of a "port" is fairly foreign
to UNIX hosts. Under Windows NT/2000 print servers, a port
is associated with a port monitor and generally takes the form of
@@ -2638,10 +2669,10 @@ Default: \fBno enumports command\fR
Example: \fBenumports command = /usr/bin/listports
\fR
.TP
-\fB>exec (S)\fR
+\fBexec (S)\fR
This is a synonym for \fIpreexec\fR.
.TP
-\fB>fake directory create times (S)\fR
+\fBfake directory create times (S)\fR
NTFS and Windows VFAT file systems keep a create
time for all files and directories. This is not the same as the
ctime - status change time - that Unix keeps, so Samba by default
@@ -2670,7 +2701,7 @@ will proceed as expected.
Default: \fBfake directory create times = no\fR
.TP
-\fB>fake oplocks (S)\fR
+\fBfake oplocks (S)\fR
Oplocks are the way that SMB clients get permission
from a server to locally cache file operations. If a server grants
an oplock (opportunistic lock) then the client is free to assume
@@ -2695,10 +2726,10 @@ this option carefully!
Default: \fBfake oplocks = no\fR
.TP
-\fB>follow symlinks (S)\fR
+\fBfollow symlinks (S)\fR
This parameter allows the Samba administrator
-to stop \fBsmbd\fR(8) from following symbolic
-links in a particular share. Setting this
+to stop \fBsmbd(8)\fR
+from following symbolic links in a particular share. Setting this
parameter to no prevents any file or directory
that is a symbolic link from being followed (the user will get an
error). This option is very useful to stop users from adding a
@@ -2711,7 +2742,7 @@ follow symbolic links) by default.
Default: \fBfollow symlinks = yes\fR
.TP
-\fB>force create mode (S)\fR
+\fBforce create mode (S)\fR
This parameter specifies a set of UNIX mode bit
permissions that will \fBalways\fR be set on a
file created by Samba. This is done by bitwise 'OR'ing these bits onto
@@ -2735,7 +2766,7 @@ would force all created files to have read and execute
permissions set for 'group' and 'other' as well as the
read/write/execute bits set for the 'user'.
.TP
-\fB>force directory mode (S)\fR
+\fBforce directory mode (S)\fR
This parameter specifies a set of UNIX mode bit
permissions that will \fBalways\fR be set on a directory
created by Samba. This is done by bitwise 'OR'ing these bits onto the
@@ -2758,7 +2789,7 @@ would force all created directories to have read and execute
permissions set for 'group' and 'other' as well as the
read/write/execute bits set for the 'user'.
.TP
-\fB>force directory security mode (S)\fR
+\fBforce directory security mode (S)\fR
This parameter controls what UNIX permission bits
can be modified when a Windows NT client is manipulating the UNIX
permission on a directory using the native NT security dialog box.
@@ -2787,7 +2818,7 @@ Default: \fBforce directory security mode = 0\fR
Example: \fBforce directory security mode = 700\fR
.TP
-\fB>force group (S)\fR
+\fBforce group (S)\fR
This specifies a UNIX group name that will be
assigned as the default primary group for all users connecting
to this service. This is useful for sharing files by ensuring
@@ -2821,7 +2852,7 @@ Default: \fBno forced group\fR
Example: \fBforce group = agroup\fR
.TP
-\fB>force security mode (S)\fR
+\fBforce security mode (S)\fR
This parameter controls what UNIX permission
bits can be modified when a Windows NT client is manipulating
the UNIX permission on a file using the native NT security dialog
@@ -2851,7 +2882,7 @@ Default: \fBforce security mode = 0\fR
Example: \fBforce security mode = 700\fR
.TP
-\fB>force user (S)\fR
+\fBforce user (S)\fR
This specifies a UNIX user name that will be
assigned as the default user for all users connecting to this service.
This is useful for sharing files. You should also use it carefully
@@ -2875,10 +2906,11 @@ Default: \fBno forced user\fR
Example: \fBforce user = auser\fR
.TP
-\fB>fstype (S)\fR
+\fBfstype (S)\fR
This parameter allows the administrator to
configure the string that specifies the type of filesystem a share
-is using that is reported by \fBsmbd\fR(8) when a client queries the filesystem type
+is using that is reported by \fBsmbd(8)
+\fR when a client queries the filesystem type
for a share. The default type is NTFS for
compatibility with Windows NT but this can be changed to other
strings such as Samba or FAT
@@ -2888,7 +2920,7 @@ Default: \fBfstype = NTFS\fR
Example: \fBfstype = Samba\fR
.TP
-\fB>getwd cache (G)\fR
+\fBgetwd cache (G)\fR
This is a tuning option. When this is enabled a
caching algorithm will be used to reduce the time taken for getwd()
calls. This can have a significant impact on performance, especially
@@ -2897,11 +2929,11 @@ parameter is set to no.
Default: \fBgetwd cache = yes\fR
.TP
-\fB>group (S)\fR
+\fBgroup (S)\fR
Synonym for \fIforce
group\fR.
.TP
-\fB>guest account (S)\fR
+\fBguest account (S)\fR
This is a username which will be used for access
to services which are specified as \fI guest ok\fR (see below). Whatever privileges this
user has will be available to any client connecting to the guest service.
@@ -2925,20 +2957,16 @@ Default: \fBspecified at compile time, usually
Example: \fBguest account = ftp\fR
.TP
-\fB>guest ok (S)\fR
+\fBguest ok (S)\fR
If this parameter is yes for
a service, then no password is required to connect to the service.
Privileges will be those of the \fI guest account\fR.
-This paramater nullifies the benifits of setting
-\fIrestrict
-anonymous\fR = 2
-
See the section below on \fI security\fR for more information about this option.
Default: \fBguest ok = no\fR
.TP
-\fB>guest only (S)\fR
+\fBguest only (S)\fR
If this parameter is yes for
a service, then only guest connections to the service are permitted.
This parameter will have no effect if \fIguest ok\fR is not set for the service.
@@ -2947,13 +2975,13 @@ See the section below on \fI security\fR for more information about this option
Default: \fBguest only = no\fR
.TP
-\fB>hide dot files (S)\fR
+\fBhide dot files (S)\fR
This is a boolean parameter that controls whether
files starting with a dot appear as hidden files.
Default: \fBhide dot files = yes\fR
.TP
-\fB>hide files(S)\fR
+\fBhide files(S)\fR
This is a list of files or directories that are not
visible but are accessible. The DOS 'hidden' attribute is applied
to any files or directories that match.
@@ -2986,35 +3014,35 @@ SMB client (DAVE) available from
Thursby <URL:http://www.thursby.com> creates for internal use, and also still hides
all files beginning with a dot.
.TP
-\fB>hide local users(G)\fR
+\fBhide local users(G)\fR
This parameter toggles the hiding of local UNIX
users (root, wheel, floppy, etc) from remote clients.
Default: \fBhide local users = no\fR
.TP
-\fB>hide unreadable (G)\fR
+\fBhide unreadable (G)\fR
This parameter prevents clients from seeing the
existance of files that cannot be read. Defaults to off.
Default: \fBhide unreadable = no\fR
.TP
-\fB>hide unwriteable files (G)\fR
+\fBhide unwriteable files (G)\fR
This parameter prevents clients from seeing
the existance of files that cannot be written to. Defaults to off.
Note that unwriteable directories are shown as usual.
Default: \fBhide unwriteable = no\fR
.TP
-\fB>hide special files (G)\fR
+\fBhide special files (G)\fR
This parameter prevents clients from seeing
special files such as sockets, devices and fifo's in directory
listings.
Default: \fBhide special files = no\fR
.TP
-\fB>homedir map (G)\fR
+\fBhomedir map (G)\fR
If\fInis homedir
-\fR is yes, and \fBsmbd\fR(8) is also acting
+\fR is yes, and \fBsmbd(8)\fR is also acting
as a Win95/98 \fIlogon server\fR then this parameter
specifies the NIS (or YP) map from which the server for the user's
home directory should be extracted. At present, only the Sun
@@ -3038,7 +3066,7 @@ Default: \fBhomedir map = <empty string>\fR
Example: \fBhomedir map = amd.homedir\fR
.TP
-\fB>host msdfs (G)\fR
+\fBhost msdfs (G)\fR
This boolean parameter is only available
if Samba has been configured and compiled with the \fB --with-msdfs\fR option. If set to yes,
Samba will act as a Dfs server, and allow Dfs-aware clients
@@ -3050,7 +3078,7 @@ refer to msdfs_setup.html
Default: \fBhost msdfs = no\fR
.TP
-\fB>hostname lookups (G)\fR
+\fBhostname lookups (G)\fR
Specifies whether samba should use (expensive)
hostname lookups or use the ip addresses instead. An example place
where hostname lookups are currently used is when checking
@@ -3060,7 +3088,7 @@ Default: \fBhostname lookups = yes\fR
Example: \fBhostname lookups = no\fR
.TP
-\fB>hosts allow (S)\fR
+\fBhosts allow (S)\fR
A synonym for this parameter is \fIallow
hosts\fR.
@@ -3108,8 +3136,9 @@ deny access from one particular host
Note that access still requires suitable user-level passwords.
-See \fBtestparm\fR(1) for a way of testing your host access
-to see if it does what you expect.
+See \fBtestparm(1)\fR
+ for a way of testing your host access to see if it does
+what you expect.
Default: \fBnone (i.e., all hosts permitted access)
\fR
@@ -3117,7 +3146,7 @@ Default: \fBnone (i.e., all hosts permitted access)
Example: \fBallow hosts = 150.203.5. myhost.mynet.edu.au
\fR
.TP
-\fB>hosts deny (S)\fR
+\fBhosts deny (S)\fR
The opposite of \fIhosts allow\fR
- hosts listed here are \fBNOT\fR permitted access to
services unless the specific services have their own lists to override
@@ -3130,7 +3159,7 @@ Default: \fBnone (i.e., no hosts specifically excluded)
Example: \fBhosts deny = 150.203.4. badhost.mynet.edu.au
\fR
.TP
-\fB>hosts equiv (G)\fR
+\fBhosts equiv (G)\fR
If this global parameter is a non-null string,
it specifies the name of a file to read for the names of hosts
and users who will be allowed access without specifying a password.
@@ -3152,7 +3181,7 @@ Default: \fBno host equivalences\fR
Example: \fBhosts equiv = /etc/hosts.equiv\fR
.TP
-\fB>include (G)\fR
+\fBinclude (G)\fR
This allows you to include one config file
inside another. The file is included literally, as though typed
in place.
@@ -3165,7 +3194,7 @@ Default: \fBno file included\fR
Example: \fBinclude = /usr/local/samba/lib/admin_smb.conf
\fR
.TP
-\fB>inherit acls (S)\fR
+\fBinherit acls (S)\fR
This parameter can be used to ensure
that if default acls exist on parent directories,
they are always honored when creating a subdirectory.
@@ -3176,7 +3205,7 @@ default directory acls are propagated.
Default: \fBinherit acls = no\fR
.TP
-\fB>inherit permissions (S)\fR
+\fBinherit permissions (S)\fR
The permissions on new files and directories
are normally governed by \fI create mask\fR, \fIdirectory mask\fR, \fIforce create mode\fR
and \fIforce
@@ -3206,7 +3235,7 @@ See also \fIcreate mask
Default: \fBinherit permissions = no\fR
.TP
-\fB>interfaces (G)\fR
+\fBinterfaces (G)\fR
This option allows you to override the default
network interfaces list that Samba will use for browsing, name
registration and other NBT traffic. By default Samba will query
@@ -3257,7 +3286,7 @@ interfaces only\fR.
Default: \fBall active interfaces except 127.0.0.1
that are broadcast capable\fR
.TP
-\fB>invalid users (S)\fR
+\fBinvalid users (S)\fR
This is a list of users that should not be allowed
to login to this service. This is really a \fBparanoid\fR
check to absolutely ensure an improper setting does not breach
@@ -3289,7 +3318,7 @@ Default: \fBno invalid users\fR
Example: \fBinvalid users = root fred admin @wheel
\fR
.TP
-\fB>keepalive (G)\fR
+\fBkeepalive (G)\fR
The value of the parameter (an integer) represents
the number of seconds between \fIkeepalive\fR
packets. If this parameter is zero, no keepalive packets will be
@@ -3304,16 +3333,17 @@ Default: \fBkeepalive = 300\fR
Example: \fBkeepalive = 600\fR
.TP
-\fB>kernel oplocks (G)\fR
+\fBkernel oplocks (G)\fR
For UNIXes that support kernel based \fIoplocks\fR
(currently only IRIX and the Linux 2.4 kernel), this parameter
allows the use of them to be turned on or off.
Kernel oplocks support allows Samba \fIoplocks
\fR to be broken whenever a local UNIX process or NFS operation
-accesses a file that \fBsmbd\fR(8) has oplocked. This allows complete
-data consistency between SMB/CIFS, NFS and local file access (and is
-a \fBvery\fR cool feature :-).
+accesses a file that \fBsmbd(8)\fR
+ has oplocked. This allows complete data consistency between
+SMB/CIFS, NFS and local file access (and is a \fBvery\fR
+cool feature :-).
This parameter defaults to on, but is translated
to a no-op on systems that no not have the necessary kernel support.
@@ -3325,17 +3355,18 @@ and \fIlevel2 oplocks
Default: \fBkernel oplocks = yes\fR
.TP
-\fB>lanman auth (G)\fR
-This parameter determines whether or not \fBsmbd\fR(8) will attempt to authenticate users
-using the LANMAN password hash. If disabled, only clients which support NT
-password hashes (e.g. Windows NT/2000 clients, smbclient, etc... but not
-Windows 95/98 or the MS DOS network client) will be able to connect to the Samba host.
+\fBlanman auth (G)\fR
+This parameter determines whether or not smbd will
+attempt to authenticate users using the LANMAN password hash.
+If disabled, only clients which support NT password hashes (e.g. Windows
+NT/2000 clients, smbclient, etc... but not Windows 95/98 or the MS DOS
+network client) will be able to connect to the Samba host.
Default : \fBlanman auth = yes\fR
.TP
-\fB>large readwrite (G)\fR
-This parameter determines whether or not \fBsmbd\fR(8) supports the new 64k streaming
-read and write varient SMB requests introduced
+\fBlarge readwrite (G)\fR
+This parameter determines whether or not smbd
+supports the new 64k streaming read and write varient SMB requests introduced
with Windows 2000. Note that due to Windows 2000 client redirector bugs
this requires Samba to be running on a 64-bit capable operating system such
as IRIX, Solaris or a Linux 2.4 kernel. Can improve performance by 10% with
@@ -3344,18 +3375,18 @@ code paths.
Default : \fBlarge readwrite = yes\fR
.TP
-\fB>ldap admin dn (G)\fR
+\fBldap admin dn (G)\fR
The \fIldap admin dn\fR defines the Distinguished
Name (DN) name used by Samba to contact the ldap server when retreiving
user account information. The \fIldap
admin dn\fR is used in conjunction with the admin dn password
stored in the \fIprivate/secrets.tdb\fR file. See the
-\fBsmbpasswd\fR(8) man page for more information on how
-to accmplish this.
+\fBsmbpasswd(8)\fR man
+page for more information on how to accmplish this.
Default : \fBnone\fR
.TP
-\fB>ldap filter (G)\fR
+\fBldap filter (G)\fR
This parameter specifies the RFC 2254 compliant LDAP search filter.
The default is to match the login name with the uid
attribute for all entries matching the sambaAccount
@@ -3363,7 +3394,7 @@ objectclass. Note that this filter should only return one entry.
Default : \fBldap filter = (&(uid=%u)(objectclass=sambaAccount))\fR
.TP
-\fB>ldap port (G)\fR
+\fBldap port (G)\fR
This parameter is only available if Samba has been
configure to include the \fB--with-ldapsam\fR option
at compile time.
@@ -3378,7 +3409,7 @@ Default : \fBldap port = 636 ; if ldap ssl = on\fR
Default : \fBldap port = 389 ; if ldap ssl = off\fR
.TP
-\fB>ldap server (G)\fR
+\fBldap server (G)\fR
This parameter is only available if Samba has been
configure to include the \fB--with-ldapsam\fR option
at compile time.
@@ -3388,7 +3419,7 @@ server which should be queried to locate user account information.
Default : \fBldap server = localhost\fR
.TP
-\fB>ldap ssl (G)\fR
+\fBldap ssl (G)\fR
This option is used to define whether or not Samba should
use SSL when connecting to the ldap server
This is \fBNOT\fR related to
@@ -3416,23 +3447,23 @@ to configure. See \fIpassdb backend\fR
Default : \fBldap ssl = start_tls\fR
.TP
-\fB>ldap suffix (G)\fR
+\fBldap suffix (G)\fR
Specifies where user and machine accounts are added to the tree. Can be overriden by \fBldap user suffix\fR and \fBldap machine suffix\fR. It also used as the base dn for all ldap searches.
Default : \fBnone\fR
.TP
-\fB>ldap user suffix (G)\fR
+\fBldap user suffix (G)\fR
It specifies where users are added to the tree.
Default : \fBnone\fR
.TP
-\fB>ldap machine suffix (G)\fR
+\fBldap machine suffix (G)\fR
It specifies where machines should be
added to the ldap tree.
Default : \fBnone\fR
.TP
-\fB>ldap passwd sync (G)\fR
+\fBldap passwd sync (G)\fR
This option is used to define whether
or not Samba should sync the LDAP password with the NT
and LM hashes for normal accounts (NOT for
@@ -3454,7 +3485,7 @@ The \fIldap passwd sync\fR can be set to one of three values:
Default : \fBldap passwd sync = no\fR
.TP
-\fB>ldap trust ids (G)\fR
+\fBldap trust ids (G)\fR
Normally, Samba validates each entry
in the LDAP server against getpwnam(). This allows
LDAP to be used for Samba with the unix system using
@@ -3471,7 +3502,7 @@ same LDAP server.
Default: \fBldap trust ids = No\fR
.TP
-\fB>level2 oplocks (S)\fR
+\fBlevel2 oplocks (S)\fR
This parameter controls whether Samba supports
level2 (read-only) oplocks on a share.
@@ -3508,8 +3539,8 @@ parameters.
Default: \fBlevel2 oplocks = yes\fR
.TP
-\fB>lm announce (G)\fR
-This parameter determines if \fBnmbd\fR(8) will produce Lanman announce
+\fBlm announce (G)\fR
+This parameter determines if \fBnmbd(8)\fR will produce Lanman announce
broadcasts that are needed by OS/2 clients in order for them to see
the Samba server in their browse list. This parameter can have three
values, yes, no, or
@@ -3530,7 +3561,7 @@ Default: \fBlm announce = auto\fR
Example: \fBlm announce = yes\fR
.TP
-\fB>lm interval (G)\fR
+\fBlm interval (G)\fR
If Samba is set to produce Lanman announce
broadcasts needed by OS/2 clients (see the \fIlm announce\fR parameter) then this
parameter defines the frequency in seconds with which they will be
@@ -3545,7 +3576,7 @@ Default: \fBlm interval = 60\fR
Example: \fBlm interval = 120\fR
.TP
-\fB>load printers (G)\fR
+\fBload printers (G)\fR
A boolean variable that controls whether all
printers in the printcap will be loaded for browsing by default.
See the printers section for
@@ -3553,8 +3584,8 @@ more details.
Default: \fBload printers = yes\fR
.TP
-\fB>local master (G)\fR
-This option allows \fBnmbd\fR(8) to try and become a local master browser
+\fBlocal master (G)\fR
+This option allows \fB nmbd(8)\fR to try and become a local master browser
on a subnet. If set to no then \fB nmbd\fR will not attempt to become a local master browser
on a subnet and will also lose in all browsing elections. By
default this value is set to yes. Setting this value to yes doesn't
@@ -3566,10 +3597,10 @@ Setting this value to no will cause \fBnmbd\fR
Default: \fBlocal master = yes\fR
.TP
-\fB>lock dir (G)\fR
+\fBlock dir (G)\fR
Synonym for \fI lock directory\fR.
.TP
-\fB>lock directory (G)\fR
+\fBlock directory (G)\fR
This option specifies the directory where lock
files will be placed. The lock files are used to implement the
\fImax connections\fR
@@ -3579,7 +3610,7 @@ Default: \fBlock directory = ${prefix}/var/locks\fR
Example: \fBlock directory = /var/run/samba/locks\fR
.TP
-\fB>lock spin count (G)\fR
+\fBlock spin count (G)\fR
This parameter controls the number of times
that smbd should attempt to gain a byte range lock on the
behalf of a client request. Experiments have shown that
@@ -3591,7 +3622,7 @@ and FoxPro.
Default: \fBlock spin count = 2\fR
.TP
-\fB>lock spin time (G)\fR
+\fBlock spin time (G)\fR
The time in microseconds that smbd should
pause before attempting to gain a failed lock. See
\fIlock spin
@@ -3599,7 +3630,7 @@ count\fR for more details.
Default: \fBlock spin time = 10\fR
.TP
-\fB>locking (S)\fR
+\fBlocking (S)\fR
This controls whether or not locking will be
performed by the server in response to lock requests from the
client.
@@ -3622,7 +3653,7 @@ You should never need to set this parameter.
Default: \fBlocking = yes\fR
.TP
-\fB>log file (G)\fR
+\fBlog file (G)\fR
This option allows you to override the name
of the Samba log file (also known as the debug file).
@@ -3632,7 +3663,7 @@ you to have separate log files for each user or machine.
Example: \fBlog file = /usr/local/samba/var/log.%m
\fR
.TP
-\fB>log level (G)\fR
+\fBlog level (G)\fR
The value of the parameter (a astring) allows
the debug level (logging level) to be specified in the
\fIsmb.conf\fR file. This parameter has been
@@ -3646,7 +3677,7 @@ the command line or level zero if none was specified.
Example: \fBlog level = 3 passdb:5 auth:10 winbind:2
\fR
.TP
-\fB>logon drive (G)\fR
+\fBlogon drive (G)\fR
This parameter specifies the local path to
which the home directory will be connected (see \fIlogon home\fR)
and is only used by NT Workstations.
@@ -3658,7 +3689,7 @@ Default: \fBlogon drive = z:\fR
Example: \fBlogon drive = h:\fR
.TP
-\fB>logon home (G)\fR
+\fBlogon home (G)\fR
This parameter specifies the home directory
location when a Win95/98 or NT Workstation logs into a Samba PDC.
It allows you to do
@@ -3695,7 +3726,7 @@ Default: \fBlogon home = "\\\\%N\\%U"\fR
Example: \fBlogon home = "\\\\remote_smb_server\\%U"\fR
.TP
-\fB>logon path (G)\fR
+\fBlogon path (G)\fR
This parameter specifies the home directory
where roaming profiles (NTuser.dat etc files for Windows NT) are
stored. Contrary to previous versions of these manual pages, it has
@@ -3738,7 +3769,7 @@ Default: \fBlogon path = \\\\%N\\%U\\profile\fR
Example: \fBlogon path = \\\\PROFILESERVER\\PROFILE\\%U\fR
.TP
-\fB>logon script (G)\fR
+\fBlogon script (G)\fR
This parameter specifies the batch file (.bat) or
NT command file (.cmd) to be downloaded and run on a machine when
a user successfully logs in. The file must contain the DOS
@@ -3774,7 +3805,7 @@ Default: \fBno logon script defined\fR
Example: \fBlogon script = scripts\\%U.bat\fR
.TP
-\fB>lppause command (S)\fR
+\fBlppause command (S)\fR
This parameter specifies the command to be
executed on the server host in order to stop printing or spooling
a specific print job.
@@ -3813,7 +3844,7 @@ is SOFTQ, then the default is:
Example for HPUX: \fBlppause command = /usr/bin/lpalt
%p-%j -p0\fR
.TP
-\fB>lpq cache time (G)\fR
+\fBlpq cache time (G)\fR
This controls how long lpq info will be cached
for to prevent the \fBlpq\fR command being called too
often. A separate cache is kept for each variation of the \fB lpq\fR command used by the system, so if you use different
@@ -3837,7 +3868,7 @@ Default: \fBlpq cache time = 10\fR
Example: \fBlpq cache time = 30\fR
.TP
-\fB>lpq command (S)\fR
+\fBlpq command (S)\fR
This parameter specifies the command to be
executed on the server host in order to obtain \fBlpq
\fR-style printer status information.
@@ -3875,7 +3906,7 @@ Default: \fBdepends on the setting of \fI printing\fB\fR
Example: \fBlpq command = /usr/bin/lpq -P%p\fR
.TP
-\fB>lpresume command (S)\fR
+\fBlpresume command (S)\fR
This parameter specifies the command to be
executed on the server host in order to restart or continue
printing or spooling a specific print job.
@@ -3910,7 +3941,7 @@ is SOFTQ, then the default is:
Example for HPUX: \fBlpresume command = /usr/bin/lpalt
%p-%j -p2\fR
.TP
-\fB>lprm command (S)\fR
+\fBlprm command (S)\fR
This parameter specifies the command to be
executed on the server host in order to delete a print job.
@@ -3937,7 +3968,7 @@ Example 1: \fBlprm command = /usr/bin/lprm -P%p %j
Example 2: \fBlprm command = /usr/bin/cancel %p-%j
\fR
.TP
-\fB>machine password timeout (G)\fR
+\fBmachine password timeout (G)\fR
If a Samba server is a member of a Windows
NT Domain (see the security = domain)
parameter) then periodically a running smbd(8) process will try and change the MACHINE ACCOUNT
@@ -3946,11 +3977,12 @@ PASSWORD stored in the TDB called \fIprivate/secrets.tdb
will be changed, in seconds. The default is one week (expressed in
seconds), the same as a Windows NT Domain member server.
-See also \fBsmbpasswd\fR(8), and the security = domain) parameter.
+See also \fBsmbpasswd(8)
+\fR and the security = domain) parameter.
Default: \fBmachine password timeout = 604800\fR
.TP
-\fB>magic output (S)\fR
+\fBmagic output (S)\fR
This parameter specifies the name of a file
which will contain output created by a magic script (see the
\fImagic script\fR
@@ -3965,7 +3997,7 @@ Default: \fBmagic output = <magic script name>.out
Example: \fBmagic output = myfile.txt\fR
.TP
-\fB>magic script (S)\fR
+\fBmagic script (S)\fR
This parameter specifies the name of a file which,
if opened, will be executed by the server when the file is closed.
This allows a UNIX script to be sent to the Samba host and
@@ -3991,12 +4023,12 @@ Default: \fBNone. Magic scripts disabled.\fR
Example: \fBmagic script = user.csh\fR
.TP
-\fB>mangle case (S)\fR
+\fBmangle case (S)\fR
See the section on NAME MANGLING
Default: \fBmangle case = no\fR
.TP
-\fB>mangled map (S)\fR
+\fBmangled map (S)\fR
This is for those who want to directly map UNIX
file names which cannot be represented on Windows/DOS. The mangling
of names is not always what is needed. In particular you may have
@@ -4018,7 +4050,7 @@ Default: \fBno mangled map\fR
Example: \fBmangled map = (*;1 *;)\fR
.TP
-\fB>mangled names (S)\fR
+\fBmangled names (S)\fR
This controls whether non-DOS names under UNIX
should be mapped to DOS-compatible names ("mangled") and made visible,
or whether non-DOS names should simply be ignored.
@@ -4077,7 +4109,7 @@ do not change between sessions.
Default: \fBmangled names = yes\fR
.TP
-\fB>mangling method (G)\fR
+\fBmangling method (G)\fR
controls the algorithm used for the generating
the mangled names. Can take two different values, "hash" and
"hash2". "hash" is the default and is the algorithm that has been
@@ -4091,7 +4123,7 @@ Default: \fBmangling method = hash2\fR
Example: \fBmangling method = hash\fR
.TP
-\fB>mangle prefix (G)\fR
+\fBmangle prefix (G)\fR
controls the number of prefix
characters from the original name used when generating
the mangled names. A larger value will give a weaker
@@ -4102,9 +4134,9 @@ Default: \fBmangle prefix = 1\fR
Example: \fBmangle prefix = 4\fR
.TP
-\fB>mangled stack (G)\fR
+\fBmangled stack (G)\fR
This parameter controls the number of mangled names
-that should be cached in the Samba server \fBsmbd\fR(8).
+that should be cached in the Samba server smbd(8)
This stack is a list of recently mangled base names
(extensions are only maintained if they are longer than 3 characters
@@ -4122,7 +4154,7 @@ Default: \fBmangled stack = 50\fR
Example: \fBmangled stack = 100\fR
.TP
-\fB>mangling char (S)\fR
+\fBmangling char (S)\fR
This controls what character is used as
the \fBmagic\fR character in name mangling. The default is a '~'
but this may interfere with some software. Use this option to set
@@ -4132,7 +4164,7 @@ Default: \fBmangling char = ~\fR
Example: \fBmangling char = ^\fR
.TP
-\fB>map archive (S)\fR
+\fBmap archive (S)\fR
This controls whether the DOS archive attribute
should be mapped to the UNIX owner execute bit. The DOS archive bit
is set when a file has been modified since its last backup. One
@@ -4146,7 +4178,7 @@ parameter to be set such that owner execute bit is not masked out
Default: \fBmap archive = yes\fR
.TP
-\fB>map hidden (S)\fR
+\fBmap hidden (S)\fR
This controls whether DOS style hidden files
should be mapped to the UNIX world execute bit.
@@ -4156,7 +4188,7 @@ it must include 001). See the parameter \fIcreate mask\fR for details.
Default: \fBmap hidden = no\fR
.TP
-\fB>map system (S)\fR
+\fBmap system (S)\fR
This controls whether DOS style system files
should be mapped to the UNIX group execute bit.
@@ -4166,13 +4198,13 @@ it must include 010). See the parameter \fIcreate mask\fR for details.
Default: \fBmap system = no\fR
.TP
-\fB>map to guest (G)\fR
+\fBmap to guest (G)\fR
This parameter is only useful in security modes other than \fIsecurity = share\fR
- i.e. user, server,
and domain.
This parameter can take three different values, which tell
-\fBsmbd\fR(8) what to do with user
+smbd(8) what to do with user
login requests that don't match a valid UNIX user in some way.
The three settings are :
@@ -4217,7 +4249,7 @@ Default: \fBmap to guest = Never\fR
Example: \fBmap to guest = Bad User\fR
.TP
-\fB>max connections (S)\fR
+\fBmax connections (S)\fR
This option allows the number of simultaneous
connections to a service to be limited. If \fImax connections
\fR is greater than 0 then connections will be refused if
@@ -4232,7 +4264,7 @@ Default: \fBmax connections = 0\fR
Example: \fBmax connections = 10\fR
.TP
-\fB>max disk size (G)\fR
+\fBmax disk size (G)\fR
This option allows you to put an upper limit
on the apparent size of disks. If you set this option to 100
then all shares will appear to be not larger than 100 MB in
@@ -4255,7 +4287,7 @@ Default: \fBmax disk size = 0\fR
Example: \fBmax disk size = 1000\fR
.TP
-\fB>max log size (G)\fR
+\fBmax log size (G)\fR
This option (an integer in kilobytes) specifies
the max size the log file should grow to. Samba periodically checks
the size and if it is exceeded it will rename the file, adding
@@ -4267,16 +4299,16 @@ Default: \fBmax log size = 5000\fR
Example: \fBmax log size = 1000\fR
.TP
-\fB>max mux (G)\fR
+\fBmax mux (G)\fR
This option controls the maximum number of
outstanding simultaneous SMB operations that Samba tells the client
it will allow. You should never need to set this parameter.
Default: \fBmax mux = 50\fR
.TP
-\fB>max open files (G)\fR
+\fBmax open files (G)\fR
This parameter limits the maximum number of
-open files that one \fBsmbd\fR(8) file
+open files that one smbd(8) file
serving process may have open for a client at any one time. The
default for this parameter is set very high (10,000) as Samba uses
only one bit per unopened file.
@@ -4287,10 +4319,10 @@ this parameter so you should never need to touch this parameter.
Default: \fBmax open files = 10000\fR
.TP
-\fB>max print jobs (S)\fR
+\fBmax print jobs (S)\fR
This parameter limits the maximum number of
jobs allowable in a Samba printer queue at any given moment.
-If this number is exceeded, \fBsmbd\fR(8) will remote "Out of Space" to the client.
+If this number is exceeded, \fB smbd(8)\fR will remote "Out of Space" to the client.
See all \fItotal
print jobs\fR.
@@ -4298,7 +4330,7 @@ Default: \fBmax print jobs = 1000\fR
Example: \fBmax print jobs = 5000\fR
.TP
-\fB>max protocol (G)\fR
+\fBmax protocol (G)\fR
The value of the parameter (a string) is the highest
protocol level that will be supported by the server.
@@ -4336,22 +4368,22 @@ Default: \fBmax protocol = NT1\fR
Example: \fBmax protocol = LANMAN1\fR
.TP
-\fB>max smbd processes (G)\fR
+\fBmax smbd processes (G)\fR
This parameter limits the maximum number of
\fBsmbd(8)\fR
processes concurrently running on a system and is intended
as a stopgap to prevent degrading service to clients in the event
that the server has insufficient resources to handle more than this
number of connections. Remember that under normal operating
-conditions, each user will have an \fBsmbd\fR(8) associated with him or her
+conditions, each user will have an smbd associated with him or her
to handle connections to all shares from a given host.
Default: \fBmax smbd processes = 0\fR ## no limit
Example: \fBmax smbd processes = 1000\fR
.TP
-\fB>max ttl (G)\fR
-This option tells \fBnmbd\fR(8)
+\fBmax ttl (G)\fR
+This option tells nmbd(8)
what the default 'time to live' of NetBIOS names should be (in seconds)
when \fBnmbd\fR is requesting a name using either a
broadcast packet or from a WINS server. You should never need to
@@ -4359,8 +4391,9 @@ change this parameter. The default is 3 days.
Default: \fBmax ttl = 259200\fR
.TP
-\fB>max wins ttl (G)\fR
-This option tells \fBsmbd\fR(8) when acting as a WINS server ( \fIwins support = yes\fR) what the maximum
+\fBmax wins ttl (G)\fR
+This option tells nmbd(8)
+ when acting as a WINS server ( \fIwins support = yes\fR) what the maximum
\&'time to live' of NetBIOS names that \fBnmbd\fR
will grant will be (in seconds). You should never need to change this
parameter. The default is 6 days (518400 seconds).
@@ -4370,7 +4403,7 @@ wins ttl\fR parameter.
Default: \fBmax wins ttl = 518400\fR
.TP
-\fB>max xmit (G)\fR
+\fBmax xmit (G)\fR
This option controls the maximum packet size
that will be negotiated by Samba. The default is 65535, which
is the maximum. In some cases you may find you get better performance
@@ -4380,7 +4413,7 @@ Default: \fBmax xmit = 65535\fR
Example: \fBmax xmit = 8192\fR
.TP
-\fB>message command (G)\fR
+\fBmessage command (G)\fR
This specifies what command to run when the
server receives a WinPopup style message.
@@ -4443,10 +4476,10 @@ Default: \fBno message command\fR
Example: \fBmessage command = csh -c 'xedit %s;
rm %s' &\fR
.TP
-\fB>min passwd length (G)\fR
+\fBmin passwd length (G)\fR
Synonym for \fImin password length\fR.
.TP
-\fB>min password length (G)\fR
+\fBmin password length (G)\fR
This option sets the minimum length in characters
of a plaintext password that \fBsmbd\fR will accept when performing
UNIX password changing.
@@ -4457,7 +4490,7 @@ password sync\fR, \fIpasswd program\fR and \fIpasswd chat debug\fR
Default: \fBmin password length = 5\fR
.TP
-\fB>min print space (S)\fR
+\fBmin print space (S)\fR
This sets the minimum amount of free disk
space that must be available before a user will be able to spool
a print job. It is specified in kilobytes. The default is 0, which
@@ -4470,7 +4503,7 @@ Default: \fBmin print space = 0\fR
Example: \fBmin print space = 2000\fR
.TP
-\fB>min protocol (G)\fR
+\fBmin protocol (G)\fR
The value of the parameter (a string) is the
lowest SMB protocol dialect than Samba will support. Please refer
to the \fImax protocol\fR
@@ -4489,8 +4522,8 @@ Default : \fBmin protocol = CORE\fR
Example : \fBmin protocol = NT1\fR # disable DOS
clients
.TP
-\fB>min wins ttl (G)\fR
-This option tells \fBnmbd\fR(8)
+\fBmin wins ttl (G)\fR
+This option tells nmbd(8)
when acting as a WINS server (\fI wins support = yes\fR) what the minimum 'time to live'
of NetBIOS names that \fBnmbd\fR will grant will be (in
seconds). You should never need to change this parameter. The default
@@ -4498,7 +4531,7 @@ is 6 hours (21600 seconds).
Default: \fBmin wins ttl = 21600\fR
.TP
-\fB>msdfs proxy (S)\fR
+\fBmsdfs proxy (S)\fR
This parameter indicates that the share is a
stand-in for another CIFS share whose location is specified by
the value of the parameter. When clients attempt to connect to
@@ -4511,25 +4544,25 @@ and
\fIhost msdfs\fR
options to find out how to set up a Dfs root share.
-Example: \fBmsdfs proxy = \\\\\\\\otherserver\\\\someshare\fR
+Example: \fBmsdfs proxy = \\otherserver\\someshare\fR
.TP
-\fB>msdfs root (S)\fR
+\fBmsdfs root (S)\fR
This boolean parameter is only available if
Samba is configured and compiled with the \fB --with-msdfs\fR option. If set to yes,
Samba treats the share as a Dfs root and allows clients to browse
the distributed file system tree rooted at the share directory.
Dfs links are specified in the share directory by symbolic
-links of the form \fImsdfs:serverA\\\\shareA,serverB\\\\shareB\fR
+links of the form \fImsdfs:serverA\\shareA,serverB\\shareB\fR
and so on. For more information on setting up a Dfs tree
-on Samba, refer to "Hosting a Microsoft
-Distributed File System tree on Samba" document.
+on Samba, refer to msdfs_setup.html
+
See also \fIhost msdfs
\fR
Default: \fBmsdfs root = no\fR
.TP
-\fB>name cache timeout (G)\fR
+\fBname cache timeout (G)\fR
Specifies the number of seconds it takes before
entries in samba's hostname resolve cache time out. If
the timeout is set to 0. the caching is disabled.
@@ -4538,7 +4571,7 @@ Default: \fBname cache timeout = 660\fR
Example: \fBname cache timeout = 0\fR
.TP
-\fB>name resolve order (G)\fR
+\fBname resolve order (G)\fR
This option is used by the programs in the Samba
suite to determine what naming services to use and in what order
to resolve host names to IP addresses. The option takes a space
@@ -4587,7 +4620,7 @@ This will cause the local lmhosts file to be examined
first, followed by a broadcast attempt, followed by a normal
system hostname lookup.
.TP
-\fB>netbios aliases (G)\fR
+\fBnetbios aliases (G)\fR
This is a list of NetBIOS names that nmbd(8) will advertise as additional
names by which the Samba server is known. This allows one machine
to appear in browse lists under multiple names. If a machine is
@@ -4603,7 +4636,7 @@ Default: \fBempty string (no additional names)\fR
Example: \fBnetbios aliases = TEST TEST1 TEST2\fR
.TP
-\fB>netbios name (G)\fR
+\fBnetbios name (G)\fR
This sets the NetBIOS name by which a Samba
server is known. By default it is the same as the first component
of the host's DNS name. If a machine is a browse server or
@@ -4618,12 +4651,12 @@ Default: \fBmachine DNS name\fR
Example: \fBnetbios name = MYNAME\fR
.TP
-\fB>netbios scope (G)\fR
+\fBnetbios scope (G)\fR
This sets the NetBIOS scope that Samba will
operate under. This should not be set unless every machine
on your LAN also sets this value.
.TP
-\fB>nis homedir (G)\fR
+\fBnis homedir (G)\fR
Get the home share server from a NIS map. For
UNIX systems that use an automounter, the user's home directory
will often be mounted on a workstation on demand from a remote
@@ -4650,7 +4683,7 @@ be a logon server.
Default: \fBnis homedir = no\fR
.TP
-\fB>non unix account range (G)\fR
+\fBnon unix account range (G)\fR
The non unix account range parameter specifies
the range of 'user ids' that are allocated by the various 'non unix
account' passdb backends. These backends allow
@@ -4668,7 +4701,7 @@ Default: \fBnon unix account range = <empty string>
Example: \fBnon unix account range = 10000-20000\fR
.TP
-\fB>nt acl support (S)\fR
+\fBnt acl support (S)\fR
This boolean parameter controls whether
smbd(8) will attempt to map
UNIX permissions into Windows NT access control lists.
@@ -4677,16 +4710,16 @@ prior to 2.2.2.
Default: \fBnt acl support = yes\fR
.TP
-\fB>nt pipe support (G)\fR
+\fBnt pipe support (G)\fR
This boolean parameter controls whether
-\fBsmbd\fR(8) will allow Windows NT
+smbd(8) will allow Windows NT
clients to connect to the NT SMB specific IPC$
pipes. This is a developer debugging option and can be left
alone.
Default: \fBnt pipe support = yes\fR
.TP
-\fB>nt status support (G)\fR
+\fBnt status support (G)\fR
This boolean parameter controls whether smbd(8) will negotiate NT specific status
support with Windows NT/2k/XP clients. This is a developer
debugging option and should be left alone.
@@ -4698,15 +4731,15 @@ You should not need to ever disable this parameter.
Default: \fBnt status support = yes\fR
.TP
-\fB>null passwords (G)\fR
+\fBnull passwords (G)\fR
Allow or disallow client access to accounts
that have null passwords.
-See also \fBsmbpasswd\fR(5).
+See also smbpasswd (5)
Default: \fBnull passwords = no\fR
.TP
-\fB>obey pam restrictions (G)\fR
+\fBobey pam restrictions (G)\fR
When Samba 2.2 is configured to enable PAM support
(i.e. --with-pam), this parameter will control whether or not Samba
should obey PAM's account and session management directives. The
@@ -4718,7 +4751,7 @@ authentication mechanism needed in the presence of SMB password encryption.
Default: \fBobey pam restrictions = no\fR
.TP
-\fB>only user (S)\fR
+\fBonly user (S)\fR
This is a boolean option that controls whether
connections with usernames not in the \fIuser\fR
list will be allowed. By default this option is disabled so that a
@@ -4740,10 +4773,10 @@ parameter.
Default: \fBonly user = no\fR
.TP
-\fB>only guest (S)\fR
+\fBonly guest (S)\fR
A synonym for \fI guest only\fR.
.TP
-\fB>oplock break wait time (G)\fR
+\fBoplock break wait time (G)\fR
This is a tuning parameter added due to bugs in
both Windows 9x and WinNT. If Samba responds to a client too
quickly when that client issues an SMB that can cause an oplock
@@ -4757,14 +4790,15 @@ AND UNDERSTOOD THE SAMBA OPLOCK CODE\fR.
Default: \fBoplock break wait time = 0\fR
.TP
-\fB>oplock contention limit (S)\fR
+\fBoplock contention limit (S)\fR
This is a \fBvery\fR advanced
smbd(8) tuning option to
improve the efficiency of the granting of oplocks under multiple
client contention for the same file.
-In brief it specifies a number, which causes \fBsmbd\fR(8)not to grant an oplock even when requested
-if the approximate number of clients contending for an oplock on the same file goes over this
+In brief it specifies a number, which causes smbd not to
+grant an oplock even when requested if the approximate number of
+clients contending for an oplock on the same file goes over this
limit. This causes \fBsmbd\fR to behave in a similar
way to Windows NT.
@@ -4773,7 +4807,7 @@ AND UNDERSTOOD THE SAMBA OPLOCK CODE\fR.
Default: \fBoplock contention limit = 2\fR
.TP
-\fB>oplocks (S)\fR
+\fBoplocks (S)\fR
This boolean option tells \fBsmbd\fR whether to
issue oplocks (opportunistic locks) to file open requests on this
share. The oplock code can dramatically (approx. 30% or more) improve
@@ -4796,21 +4830,19 @@ oplocks\fR and \fI level2 oplocks\fR parameters.
Default: \fBoplocks = yes\fR
.TP
-\fB>ntlm auth (G)\fR
-This parameter determines
-whether or not \fBsmbd\fR(8) will
+\fBntlm auth (G)\fR
+This parameter determines whether or not smbd will
attempt to authenticate users using the NTLM password hash.
If disabled, only the lanman password hashes will be used.
-Please note that at least this option or \fBlanman auth\fR should
-be enabled in order to be able to log in.
+Please note that at least this option or \fBlanman auth\fR should be enabled in order to be able to log in.
Default : \fBntlm auth = yes\fR
.TP
-\fB>os level (G)\fR
+\fBos level (G)\fR
This integer value controls what level Samba
advertises itself as for browse elections. The value of this
-parameter determines whether \fBnmbd\fR(8)
+parameter determines whether nmbd(8)
has a chance of becoming a local master browser for the \fI WORKGROUP\fR in the local broadcast area.
\fBNote :\fRBy default, Samba will win
@@ -4825,7 +4857,7 @@ Default: \fBos level = 20\fR
Example: \fBos level = 65 \fR
.TP
-\fB>os2 driver map (G)\fR
+\fBos2 driver map (G)\fR
The parameter is used to define the absolute
path to a file containing a mapping of Windows NT printer driver
names to OS/2 printer driver names. The format is:
@@ -4840,12 +4872,13 @@ LaserJet 5L\fR.
The need for the file is due to the printer driver namespace
problem described in the Samba
Printing HOWTO For more details on OS/2 clients, please
-refer to the OS2-Client-HOWTO containing in the Samba documentation.
+refer to the OS2-Client-HOWTO
+ containing in the Samba documentation.
Default: \fBos2 driver map = <empty string>
\fR
.TP
-\fB>pam password change (G)\fR
+\fBpam password change (G)\fR
With the addition of better PAM support in Samba 2.2,
this parameter, it is possible to use PAM's password change control
flag for Samba. If enabled, then PAM will be used for password
@@ -4857,28 +4890,25 @@ parameter for most setups.
Default: \fBpam password change = no\fR
.TP
-\fB>panic action (G)\fR
+\fBpanic action (G)\fR
This is a Samba developer option that allows a
-system command to be called when either \fBsmbd\fR(8) or \fBsmbd\fR(8) crashes. This is usually used to
-draw attention to the fact that a problem occurred.
+system command to be called when either smbd(8)
+crashes. This is usually used to draw attention to the fact that
+a problem occurred.
Default: \fBpanic action = <empty string>\fR
Example: \fBpanic action = "/bin/sleep 90000"\fR
.TP
-\fB>paranoid server security (G)\fR
+\fBparanoid server security (G)\fR
Some version of NT 4.x allow non-guest
users with a bad passowrd. When this option is enabled, samba will not
use a broken NT 4.x server as password server, but instead complain
-to the logs and exit.
-
-Disabling this option prevents Samba from making
-this check, which involves deliberatly attempting a
-bad logon to the remote server.
+to the logs and exit.
Default: \fBparanoid server security = yes\fR
.TP
-\fB>passdb backend (G)\fR
+\fBpassdb backend (G)\fR
This option allows the administrator to chose which backends to retrieve and store passwords with. This allows (for example) both
smbpasswd and tdbsam to be used without a recompile.
Multiple backends can be specified, separated by spaces. The backends will be searched in the order they are specified. New users are always added to the first backend specified.
@@ -4969,11 +4999,11 @@ Example: \fBpassdb backend = ldapsam_nua:ldaps://ldap.example.com unixsam\fR
Example: \fBpassdb backend = plugin:/usr/local/samba/lib/my_passdb.so:my_plugin_args tdbsam:/etc/samba/private/passdb.tdb\fR
.TP
-\fB>passwd chat (G)\fR
+\fBpasswd chat (G)\fR
This string controls the \fB"chat"\fR
-conversation that takes places between \fBsmbd\fR(8) and the local password changing
+conversation that takes places between smbd and the local password changing
program to change the user's password. The string describes a
-sequence of response-receive pairs that \fBsmbd\fR(8) uses to determine what to send to the
+sequence of response-receive pairs that smbd(8) uses to determine what to send to the
\fIpasswd program\fR
and what to expect back. If the expected output is not
received then the password is not changed.
@@ -4993,7 +5023,7 @@ executed on the NIS master.
The string can contain the macro \fI%n\fR which is substituted
for the new password. The chat sequence can also contain the standard
-macros \\\\n, \\\\r, \\\\t and \\\\s to give line-feed,
+macros \\n, \\r, \\t and \\s to give line-feed,
carriage-return, tab and space. The chat sequence string can also contain
a '*' which matches any sequence of characters.
Double quotes can be used to collect strings with spaces
@@ -5011,18 +5041,18 @@ not any particular output. The \\n macro is ignored for PAM conversions.
See also \fIunix password
sync\fR, \fI passwd program\fR , \fIpasswd chat debug\fR and \fIpam password change\fR.
-Default: \fBpasswd chat = *new*password* %n\\\\n
-*new*password* %n\\\\n *changed*\fR
+Default: \fBpasswd chat = *new*password* %n\\n
+*new*password* %n\\n *changed*\fR
-Example: \fBpasswd chat = "*Enter OLD password*" %o\\\\n
-"*Enter NEW password*" %n\\\\n "*Reenter NEW password*" %n\\\\n "*Password
+Example: \fBpasswd chat = "*Enter OLD password*" %o\\n
+"*Enter NEW password*" %n\\n "*Reenter NEW password*" %n\\n "*Password
changed*"\fR
.TP
-\fB>passwd chat debug (G)\fR
+\fBpasswd chat debug (G)\fR
This boolean specifies if the passwd chat script
parameter is run in \fBdebug\fR mode. In this mode the
strings passed to and received from the passwd chat are printed
-in the \fBsmbd\fR(8) log with a
+in the smbd(8) log with a
\fIdebug level\fR
of 100. This is a dangerous option as it will allow plaintext passwords
to be seen in the \fBsmbd\fR log. It is available to help
@@ -5039,7 +5069,7 @@ See also \fIpasswd chat\fR
Default: \fBpasswd chat debug = no\fR
.TP
-\fB>passwd program (G)\fR
+\fBpasswd program (G)\fR
The name of a program that can be used to set
UNIX user passwords. Any occurrences of \fI%u\fR
will be replaced with the user name. The user name is checked for
@@ -5072,7 +5102,7 @@ Default: \fBpasswd program = /bin/passwd\fR
Example: \fBpasswd program = /sbin/npasswd %u\fR
.TP
-\fB>password level (G)\fR
+\fBpassword level (G)\fR
Some client/server combinations have difficulty
with mixed-case passwords. One offending client is Windows for
Workgroups, which for some reason forces passwords to upper
@@ -5110,7 +5140,7 @@ Default: \fBpassword level = 0\fR
Example: \fBpassword level = 4\fR
.TP
-\fB>password server (G)\fR
+\fBpassword server (G)\fR
By specifying the name of another SMB server (such
as a WinNT box) with this option, and using \fBsecurity = domain
\fR or \fBsecurity = server\fR you can get Samba
@@ -5201,7 +5231,7 @@ Example: \fBpassword server = NT-PDC, NT-BDC1, NT-BDC2, *
Example: \fBpassword server = *\fR
.TP
-\fB>path (S)\fR
+\fBpath (S)\fR
This parameter specifies a directory to which
the user of the service is to be given access. In the case of
printable services, this is where print data will spool prior to
@@ -5226,7 +5256,7 @@ Default: \fBnone\fR
Example: \fBpath = /home/fred\fR
.TP
-\fB>pid directory (G)\fR
+\fBpid directory (G)\fR
This option specifies the directory where pid
files will be placed.
@@ -5234,8 +5264,8 @@ Default: \fBpid directory = ${prefix}/var/locks\fR
Example: \fBpid directory = /var/run/\fR
.TP
-\fB>posix locking (S)\fR
-The \fBsmbd\fR(8)
+\fBposix locking (S)\fR
+The \fBsmbd(8)\fR
daemon maintains an database of file locks obtained by SMB clients.
The default behavior is to map this internal database to POSIX
locks. This means that file locks obtained by SMB clients are
@@ -5245,7 +5275,7 @@ You should never need to disable this parameter.
Default: \fBposix locking = yes\fR
.TP
-\fB>postexec (S)\fR
+\fBpostexec (S)\fR
This option specifies a command to be run
whenever the service is disconnected. It takes the usual
substitutions. The command may be run as the root on some
@@ -5264,7 +5294,7 @@ Default: \fBnone (no command executed)\fR
Example: \fBpostexec = echo \\"%u disconnected from %S
from %m (%I)\\" >> /tmp/log\fR
.TP
-\fB>postscript (S)\fR
+\fBpostscript (S)\fR
This parameter forces a printer to interpret
the print files as PostScript. This is done by adding a %!
to the start of print output.
@@ -5275,7 +5305,7 @@ confuses your printer.
Default: \fBpostscript = no\fR
.TP
-\fB>preexec (S)\fR
+\fBpreexec (S)\fR
This option specifies a command to be run whenever
the service is connected to. It takes the usual substitutions.
@@ -5297,14 +5327,14 @@ Default: \fBnone (no command executed)\fR
Example: \fBpreexec = echo \\"%u connected to %S from %m
(%I)\\" >> /tmp/log\fR
.TP
-\fB>preexec close (S)\fR
+\fBpreexec close (S)\fR
This boolean option controls whether a non-zero
return code from \fIpreexec
\fR should close the service being connected to.
Default: \fBpreexec close = no\fR
.TP
-\fB>preferred master (G)\fR
+\fBpreferred master (G)\fR
This boolean parameter controls if nmbd(8) is a preferred master browser
for its workgroup.
@@ -5325,10 +5355,10 @@ See also \fIos level\fR
Default: \fBpreferred master = auto\fR
.TP
-\fB>prefered master (G)\fR
+\fBprefered master (G)\fR
Synonym for \fI preferred master\fR for people who cannot spell :-).
.TP
-\fB>preload (G)\fR
+\fBpreload (G)\fR
This is a list of services that you want to be
automatically added to the browse lists. This is most useful
for homes and printers services that would otherwise not be
@@ -5341,7 +5371,7 @@ Default: \fBno preloaded services\fR
Example: \fBpreload = fred lp colorlp\fR
.TP
-\fB>preserve case (S)\fR
+\fBpreserve case (S)\fR
This controls if new filenames are created
with the case that the client passes, or if they are forced to
be the \fIdefault case
@@ -5352,7 +5382,7 @@ Default: \fBpreserve case = yes\fR
See the section on NAME
MANGLING for a fuller discussion.
.TP
-\fB>print command (S)\fR
+\fBprint command (S)\fR
After a print job has finished spooling to
a service, this command will be used via a \fBsystem()\fR
call to process the spool file. Typically the command specified will
@@ -5437,10 +5467,10 @@ set print command will be ignored.
Example: \fBprint command = /usr/local/samba/bin/myprintscript
%p %s\fR
.TP
-\fB>print ok (S)\fR
+\fBprint ok (S)\fR
Synonym for \fIprintable\fR.
.TP
-\fB>printable (S)\fR
+\fBprintable (S)\fR
If this parameter is yes, then
clients may open, write to and submit spool files on the directory
specified for the service.
@@ -5453,10 +5483,10 @@ the resource.
Default: \fBprintable = no\fR
.TP
-\fB>printcap (G)\fR
+\fBprintcap (G)\fR
Synonym for \fI printcap name\fR.
.TP
-\fB>printcap name (G)\fR
+\fBprintcap name (G)\fR
This parameter may be used to override the
compiled-in default printcap name used by the server (usually \fI /etc/printcap\fR). See the discussion of the [printers] section above for reasons
why you might want to do this.
@@ -5480,11 +5510,12 @@ A minimal printcap file would look something like this:
.nf
-print1|My Printer 1
-print2|My Printer 2
-print3|My Printer 3
-print4|My Printer 4
-print5|My Printer 5
+ print1|My Printer 1
+ print2|My Printer 2
+ print3|My Printer 3
+ print4|My Printer 4
+ print5|My Printer 5
+
.fi
where the '|' separates aliases of a printer. The fact
@@ -5500,7 +5531,7 @@ Default: \fBprintcap name = /etc/printcap\fR
Example: \fBprintcap name = /etc/myprintcap\fR
.TP
-\fB>printer admin (S)\fR
+\fBprinter admin (S)\fR
This is a list of users that can do anything to
printers via the remote administration interfaces offered by MS-RPC
(usually using a NT workstation). Note that the root user always
@@ -5510,7 +5541,7 @@ Default: \fBprinter admin = <empty string>\fR
Example: \fBprinter admin = admin, @staff\fR
.TP
-\fB>printer driver (S)\fR
+\fBprinter driver (S)\fR
\fBNote :\fRThis is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
@@ -5536,7 +5567,7 @@ driver file\fR.
Example: \fBprinter driver = HP LaserJet 4L\fR
.TP
-\fB>printer driver file (G)\fR
+\fBprinter driver file (G)\fR
\fBNote :\fRThis is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
@@ -5564,7 +5595,7 @@ Default: \fBNone (set in compile).\fR
Example: \fBprinter driver file =
/usr/local/samba/printers/drivers.def\fR
.TP
-\fB>printer driver location (S)\fR
+\fBprinter driver location (S)\fR
\fBNote :\fRThis is a deprecated
parameter and will be removed in the next major release
following version 2.2. Please see the instructions in
@@ -5591,7 +5622,7 @@ Default: \fBnone\fR
Example: \fBprinter driver location = \\\\MACHINE\\PRINTER$
\fR
.TP
-\fB>printer name (S)\fR
+\fBprinter name (S)\fR
This parameter specifies the name of the printer
to which print jobs spooled through a printable service will be sent.
@@ -5604,10 +5635,10 @@ on many systems)\fR
Example: \fBprinter name = laserwriter\fR
.TP
-\fB>printer (S)\fR
+\fBprinter (S)\fR
Synonym for \fI printer name\fR.
.TP
-\fB>printing (S)\fR
+\fBprinting (S)\fR
This parameters controls how printer status
information is interpreted on your system. It also affects the
default values for the \fIprint command\fR,
@@ -5630,21 +5661,21 @@ This option can be set on a per printer basis
See also the discussion in the [printers] section.
.TP
-\fB>private dir (G)\fR
+\fBprivate dir (G)\fR
This parameters defines the directory
smbd will use for storing such files as \fIsmbpasswd\fR
and \fIsecrets.tdb\fR.
Default :\fBprivate dir = ${prefix}/private\fR
.TP
-\fB>protocol (G)\fR
+\fBprotocol (G)\fR
Synonym for \fImax protocol\fR.
.TP
-\fB>public (S)\fR
+\fBpublic (S)\fR
Synonym for \fIguest
ok\fR.
.TP
-\fB>queuepause command (S)\fR
+\fBqueuepause command (S)\fR
This parameter specifies the command to be
executed on the server host in order to pause the printer queue.
@@ -5668,7 +5699,7 @@ Default: \fBdepends on the setting of \fIprinting
Example: \fBqueuepause command = disable %p\fR
.TP
-\fB>queueresume command (S)\fR
+\fBqueueresume command (S)\fR
This parameter specifies the command to be
executed on the server host in order to resume the printer queue. It
is the command to undo the behavior that is caused by the
@@ -5695,7 +5726,7 @@ Default: \fBdepends on the setting of \fIprinting\fB\fR
Example: \fBqueuepause command = enable %p
\fR
.TP
-\fB>read bmpx (G)\fR
+\fBread bmpx (G)\fR
This boolean parameter controls whether smbd(8) will support the "Read
Block Multiplex" SMB. This is now rarely used and defaults to
no. You should never need to set this
@@ -5703,7 +5734,7 @@ parameter.
Default: \fBread bmpx = no\fR
.TP
-\fB>read list (S)\fR
+\fBread list (S)\fR
This is a list of users that are given read-only
access to a service. If the connecting user is in this list then
they will not be given write access, no matter what the \fIread only\fR
@@ -5717,7 +5748,7 @@ Default: \fBread list = <empty string>\fR
Example: \fBread list = mary, @students\fR
.TP
-\fB>read only (S)\fR
+\fBread only (S)\fR
An inverted synonym is \fIwriteable\fR.
If this parameter is yes, then users
@@ -5730,7 +5761,7 @@ will \fBALWAYS\fR allow writing to the directory
Default: \fBread only = yes\fR
.TP
-\fB>read raw (G)\fR
+\fBread raw (G)\fR
This parameter controls whether or not the server
will support the raw read SMB requests when transferring data
to clients.
@@ -5747,7 +5778,7 @@ tool and left severely alone. See also \fIwrite raw\fR.
Default: \fBread raw = yes\fR
.TP
-\fB>read size (G)\fR
+\fBread size (G)\fR
The option \fIread size\fR
affects the overlap of disk reads/writes with network reads/writes.
If the amount of data being transferred in several of the SMB
@@ -5771,7 +5802,7 @@ Default: \fBread size = 16384\fR
Example: \fBread size = 8192\fR
.TP
-\fB>realm (G)\fR
+\fBrealm (G)\fR
This option specifies the kerberos realm to use. The realm is
used as the ADS equivalent of the NT4\fBdomain\fR. It
is usually set to the DNS name of the kerberos server.
@@ -5780,7 +5811,7 @@ Default: \fBrealm = \fR
Example: \fBrealm = mysambabox.mycompany.com\fR
.TP
-\fB>remote announce (G)\fR
+\fBremote announce (G)\fR
This option allows you to setup nmbd(8) to periodically announce itself
to arbitrary IP addresses with an arbitrary workgroup name.
@@ -5804,13 +5835,13 @@ The IP addresses you choose would normally be the broadcast
addresses of the remote networks, but can also be the IP addresses
of known browse masters if your network config is that stable.
-See the documentation file BROWSING
+See the documentation file \fIBROWSING.txt\fR
in the \fIdocs/\fR directory.
Default: \fBremote announce = <empty string>
\fR
.TP
-\fB>remote browse sync (G)\fR
+\fBremote browse sync (G)\fR
This option allows you to setup nmbd(8) to periodically request
synchronization of browse lists with the master browser of a Samba
server that is on a remote segment. This option will allow you to
@@ -5841,7 +5872,7 @@ is in fact the browse master on its segment.
Default: \fBremote browse sync = <empty string>
\fR
.TP
-\fB>restrict anonymous (G)\fR
+\fBrestrict anonymous (G)\fR
This is a integer parameter, and
mirrors as much as possible the functinality the
RestrictAnonymous
@@ -5849,13 +5880,13 @@ registry key does on NT/Win2k.
Default: \fBrestrict anonymous = 0\fR
.TP
-\fB>root (G)\fR
+\fBroot (G)\fR
Synonym for \fIroot directory"\fR.
.TP
-\fB>root dir (G)\fR
+\fBroot dir (G)\fR
Synonym for \fIroot directory"\fR.
.TP
-\fB>root directory (G)\fR
+\fBroot directory (G)\fR
The server will \fBchroot()\fR (i.e.
Change its root directory) to this directory on startup. This is
not strictly necessary for secure operation. Even without it the
@@ -5882,7 +5913,7 @@ Default: \fBroot directory = /\fR
Example: \fBroot directory = /homes/smb\fR
.TP
-\fB>root postexec (S)\fR
+\fBroot postexec (S)\fR
This is the same as the \fIpostexec\fR
parameter except that the command is run as root. This
is useful for unmounting filesystems
@@ -5893,7 +5924,7 @@ See also \fI postexec\fR.
Default: \fBroot postexec = <empty string>
\fR
.TP
-\fB>root preexec (S)\fR
+\fBroot preexec (S)\fR
This is the same as the \fIpreexec\fR
parameter except that the command is run as root. This
is useful for mounting filesystems (such as CDROMs) when a
@@ -5904,7 +5935,7 @@ See also \fI preexec\fR and \fIpreexec close\fR.
Default: \fBroot preexec = <empty string>
\fR
.TP
-\fB>root preexec close (S)\fR
+\fBroot preexec close (S)\fR
This is the same as the \fIpreexec close
\fR parameter except that the command is run as root.
@@ -5912,12 +5943,13 @@ See also \fI preexec\fR and \fIpreexec close\fR.
Default: \fBroot preexec close = no\fR
.TP
-\fB>security (G)\fR
+\fBsecurity (G)\fR
This option affects how clients respond to
Samba and is one of the most important settings in the \fI smb.conf\fR file.
The option sets the "security mode bit" in replies to
-protocol negotiations with \fBsmbd\fR(8) to turn share level security on or off. Clients decide
+protocol negotiations with smbd(8)
+ to turn share level security on or off. Clients decide
based on this bit whether (and how) to transfer user and password
information to the server.
@@ -5958,7 +5990,7 @@ level security under different \fINetBIOS aliases\fR.
The different settings will now be explained.
->\fBSECURITY = SHARE
+\fBSECURITY = SHARE
\fR
When clients connect to a share level security server they
@@ -6026,10 +6058,10 @@ be used in granting access.
See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION.
->\fBSECURITY = USER
+\fBSECURITY = USER
\fR
-This is the default security setting in Samba 3.0.
+This is the default security setting in Samba 2.2.
With user-level security a client must first "log-on" with a
valid username and password (which can be mapped using the \fIusername map\fR
parameter). Encrypted passwords (see the \fIencrypted passwords\fR parameter) can also
@@ -6047,24 +6079,23 @@ parameter for details on doing this.
See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION.
->\fBSECURITY = DOMAIN
+\fBSECURITY = SERVER
\fR
-This mode will only work correctly if \fBnet\fR(8) has been used to add this
-machine into a Windows NT Domain. It expects the \fIencrypted passwords\fR
-parameter to be set to yes. In this
-mode Samba will try to validate the username/password by passing
-it to a Windows NT Primary or Backup Domain Controller, in exactly
-the same way that a Windows NT Server would do.
-
-\fBNote\fR that a valid UNIX user must still
-exist as well as the account on the Domain Controller to allow
-Samba to have a valid UNIX account to map file access to.
+In this mode Samba will try to validate the username/password
+by passing it to another SMB server, such as an NT box. If this
+fails it will revert to \fBsecurity = user\fR, but note
+that if encrypted passwords have been negotiated then Samba cannot
+revert back to checking the UNIX password file, it must have a valid
+\fIsmbpasswd\fR file to check users against. See the
+documentation file in the \fIdocs/\fR directory
+\fIENCRYPTION.txt\fR for details on how to set this
+up.
-\fBNote\fR that from the client's point
-of view \fBsecurity = domain\fR is the same as \fBsecurity = user
-\fR. It only affects how the server deals with the authentication,
-it does not in any way affect what the client sees.
+\fBNote\fR that from the client's point of
+view \fBsecurity = server\fR is the same as \fB security = user\fR. It only affects how the server deals
+with the authentication, it does not in any way affect what the
+client sees.
\fBNote\fR that the name of the resource being
requested is \fBnot\fR sent to the server until after
@@ -6080,39 +6111,24 @@ See also the \fIpassword
server\fR parameter and the \fIencrypted passwords\fR
parameter.
->\fBSECURITY = SERVER
+\fBSECURITY = DOMAIN
\fR
-In this mode Samba will try to validate the username/password
-by passing it to another SMB server, such as an NT box. If this
-fails it will revert to \fBsecurity =
-user\fR. It expects the \fIencrypted passwords\fR
-parameter to be set to
-yes, unless the remote server
-does not support them. However note
-that if encrypted passwords have been negotiated then Samba cannot
-revert back to checking the UNIX password file, it must have a valid
-\fIsmbpasswd\fR file to check users against. See the
-documentation file in the \fIdocs/\fR directory
-\fIENCRYPTION.txt\fR for details on how to set this
-up.
+This mode will only work correctly if smbpasswd(8) has been used to add this
+machine into a Windows NT Domain. It expects the \fIencrypted passwords\fR
+parameter to be set to yes. In this
+mode Samba will try to validate the username/password by passing
+it to a Windows NT Primary or Backup Domain Controller, in exactly
+the same way that a Windows NT Server would do.
-\fBNote\fR this mode of operation
-has significant pitfalls, due to the fact that is
-activly initiates a man-in-the-middle attack on the
-remote SMB server. In particular, this mode of
-operation can cause significant resource consuption on
-the PDC, as it must maintain an active connection for
-the duration of the user's session. Furthermore, if
-this connection is lost, there is no way to
-reestablish it, and futher authenticaions to the Samba
-server may fail. (From a single client, till it
-disconnects).
+\fBNote\fR that a valid UNIX user must still
+exist as well as the account on the Domain Controller to allow
+Samba to have a valid UNIX account to map file access to.
-\fBNote\fR that from the client's point of
-view \fBsecurity = server\fR is the same as \fB security = user\fR. It only affects how the server deals
-with the authentication, it does not in any way affect what the
-client sees.
+\fBNote\fR that from the client's point
+of view \fBsecurity = domain\fR is the same as \fBsecurity = user
+\fR. It only affects how the server deals with the authentication,
+it does not in any way affect what the client sees.
\fBNote\fR that the name of the resource being
requested is \fBnot\fR sent to the server until after
@@ -6122,6 +6138,14 @@ the server to automatically map unknown users into the \fIguest account\fR.
See the \fImap to guest\fR
parameter for details on doing this.
+\fBBUG:\fR There is currently a bug in the
+implementation of \fBsecurity = domain\fR with respect
+to multi-byte character set usernames. The communication with a
+Domain Controller must be done in UNICODE and Samba currently
+does not widen multi-byte user names to UNICODE correctly, thus
+a multi-byte username will not be recognized correctly at the
+Domain Controller. This issue will be addressed in a future release.
+
See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION.
See also the \fIpassword
@@ -6132,7 +6156,7 @@ Default: \fBsecurity = USER\fR
Example: \fBsecurity = DOMAIN\fR
.TP
-\fB>security mask (S)\fR
+\fBsecurity mask (S)\fR
This parameter controls what UNIX permission
bits can be modified when a Windows NT client is manipulating
the UNIX permission on a file using the native NT security
@@ -6161,7 +6185,7 @@ Default: \fBsecurity mask = 0777\fR
Example: \fBsecurity mask = 0770\fR
.TP
-\fB>server string (G)\fR
+\fBserver string (G)\fR
This controls what string will show up in the
printer comment box in print manager and next to the IPC connection
in \fBnet view\fR. It can be any string that you wish
@@ -6181,7 +6205,7 @@ Default: \fBserver string = Samba %v\fR
Example: \fBserver string = University of GNUs Samba
Server\fR
.TP
-\fB>set directory (S)\fR
+\fBset directory (S)\fR
If \fBset directory = no\fR, then
users of the service may not use the setdir command to change
directory.
@@ -6192,7 +6216,7 @@ for details.
Default: \fBset directory = no\fR
.TP
-\fB>share modes (S)\fR
+\fBshare modes (S)\fR
This enables or disables the honoring of
the \fIshare modes\fR during a file open. These
modes are used by clients to gain exclusive read or write access
@@ -6215,7 +6239,7 @@ off as many Windows applications will break if you do so.
Default: \fBshare modes = yes\fR
.TP
-\fB>short preserve case (S)\fR
+\fBshort preserve case (S)\fR
This boolean parameter controls if new files
which conform to 8.3 syntax, that is all in upper case and of
suitable length, are created upper case, or if they are forced
@@ -6228,7 +6252,7 @@ See the section on NAME MANGLING.
Default: \fBshort preserve case = yes\fR
.TP
-\fB>show add printer wizard (G)\fR
+\fBshow add printer wizard (G)\fR
With the introduction of MS-RPC based printing support
for Windows NT/2000 client in Samba 2.2, a "Printers..." folder will
appear on Samba hosts in the share listing. Normally this folder will
@@ -6255,7 +6279,7 @@ command\fR, \fIdeleteprinter command\fR, \fIprinter admin\fR
Default :\fBshow add printer wizard = yes\fR
.TP
-\fB>shutdown script (G)\fR
+\fBshutdown script (G)\fR
\fBThis parameter only exists in the HEAD cvs branch\fR
This a full path name to a script called by
\fBsmbd(8)\fR that
@@ -6288,19 +6312,20 @@ Example: \fBabort shutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f\f
Shutdown script example:
.nf
-#!/bin/bash
+ #!/bin/bash
-$time=0
-let "time/60"
-let "time++"
+ $time=0
+ let "time/60"
+ let "time++"
-/sbin/shutdown $3 $4 +$time $1 &
+ /sbin/shutdown $3 $4 +$time $1 &
+
.fi
Shutdown does not return so we need to launch it in background.
See also \fIabort shutdown script\fR.
.TP
-\fB>smb passwd file (G)\fR
+\fBsmb passwd file (G)\fR
This option sets the path to the encrypted
smbpasswd file. By default the path to the smbpasswd file
is compiled into Samba.
@@ -6311,13 +6336,13 @@ Default: \fBsmb passwd file = ${prefix}/private/smbpasswd
Example: \fBsmb passwd file = /etc/samba/smbpasswd
\fR
.TP
-\fB>smb ports (G)\fR
+\fBsmb ports (G)\fR
Specifies which ports the server should listen on
for SMB traffic.
Default: \fBsmb ports = 445 139\fR
.TP
-\fB>socket address (G)\fR
+\fBsocket address (G)\fR
This option allows you to control what
address Samba will listen for connections on. This is used to
support multiple virtual interfaces on the one server, each
@@ -6328,7 +6353,7 @@ address.
Example: \fBsocket address = 192.168.2.20\fR
.TP
-\fB>socket options (G)\fR
+\fBsocket options (G)\fR
This option allows you to set socket options
to be used when talking with the client.
@@ -6416,7 +6441,7 @@ Default: \fBsocket options = TCP_NODELAY\fR
Example: \fBsocket options = IPTOS_LOWDELAY\fR
.TP
-\fB>source environment (G)\fR
+\fBsource environment (G)\fR
This parameter causes Samba to set environment
variables as per the content of the file named.
@@ -6440,31 +6465,26 @@ Examples: \fBsource environment = |/etc/smb.conf.sh
Example: \fBsource environment =
/usr/local/smb_env_vars\fR
.TP
-\fB>use spnego (G)\fR
-This variable controls controls whether samba will try
-to use Simple and Protected NEGOciation (as specified by rfc2478) with
-WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism.
-Unless further issues are discovered with our SPNEGO
-implementation, there is no reason this should ever be
-disabled.
+\fBuse spnego (G)\fR
+This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000sp2 clients to agree upon an authentication mechanism. As of samba 3.0alpha it must be set to "no" for these clients to join a samba domain controller. It can be set to "yes" to allow samba to participate in an AD domain controlled by a Windows2000 domain controller.
Default: \fBuse spnego = yes\fR
.TP
-\fB>stat cache (G)\fR
-This parameter determines if \fBsmbd\fR(8) will use a cache in order to
+\fBstat cache (G)\fR
+This parameter determines if smbd(8) will use a cache in order to
speed up case insensitive name mappings. You should never need
to change this parameter.
Default: \fBstat cache = yes\fR
.TP
-\fB>stat cache size (G)\fR
+\fBstat cache size (G)\fR
This parameter determines the number of
entries in the \fIstat cache\fR. You should
never need to change this parameter.
Default: \fBstat cache size = 50\fR
.TP
-\fB>strict allocate (S)\fR
+\fBstrict allocate (S)\fR
This is a boolean that controls the handling of
disk space allocation in the server. When this is set to yes
the server will change from UNIX behaviour of not committing real
@@ -6483,7 +6503,7 @@ of users.
Default: \fBstrict allocate = no\fR
.TP
-\fB>strict locking (S)\fR
+\fBstrict locking (S)\fR
This is a boolean that controls the handling of
file locking in the server. When this is set to yes
the server will check every read and write access for file locks, and
@@ -6498,7 +6518,7 @@ locking = no\fR is preferable.
Default: \fBstrict locking = no\fR
.TP
-\fB>strict sync (S)\fR
+\fBstrict sync (S)\fR
Many Windows applications (including the Windows
98 explorer shell) seem to confuse flushing buffer contents to
disk with doing a sync to disk. Under UNIX, a sync call forces
@@ -6506,7 +6526,7 @@ the process to be suspended until the kernel has ensured that
all outstanding data in kernel disk buffers has been safely stored
onto stable storage. This is very slow and should only be done
rarely. Setting this parameter to no (the
-default) means that \fBsmbd\fR(8) ignores the Windows applications requests for
+default) means that smbd ignores the Windows applications requests for
a sync call. There is only a possibility of losing data if the
operating system itself that Samba is running on crashes, so there is
little danger in this default setting. In addition, this fixes many
@@ -6518,14 +6538,14 @@ always>\fR parameter.
Default: \fBstrict sync = no\fR
.TP
-\fB>strip dot (G)\fR
+\fBstrip dot (G)\fR
This is a boolean that controls whether to
strip trailing dots off UNIX filenames. This helps with some
CDROMs that have filenames ending in a single dot.
Default: \fBstrip dot = no\fR
.TP
-\fB>sync always (S)\fR
+\fBsync always (S)\fR
This is a boolean parameter that controls
whether writes will always be written to stable storage before
the write call returns. If this is no then the server will be
@@ -6542,7 +6562,7 @@ sync\fR parameter.
Default: \fBsync always = no\fR
.TP
-\fB>syslog (G)\fR
+\fBsyslog (G)\fR
This parameter maps how Samba debug messages
are logged onto the system syslog logging levels. Samba debug
level zero maps onto syslog LOG_ERR, debug
@@ -6556,14 +6576,14 @@ will be sent to syslog.
Default: \fBsyslog = 1\fR
.TP
-\fB>syslog only (G)\fR
+\fBsyslog only (G)\fR
If this parameter is set then Samba debug
messages are logged into the system syslog only, and not to
the debug log files.
Default: \fBsyslog only = no\fR
.TP
-\fB>template homedir (G)\fR
+\fBtemplate homedir (G)\fR
When filling out the user information for a Windows NT
user, the winbindd(8) daemon
uses this parameter to fill in the home directory for that user.
@@ -6574,14 +6594,14 @@ NT user name.
Default: \fBtemplate homedir = /home/%D/%U\fR
.TP
-\fB>template shell (G)\fR
+\fBtemplate shell (G)\fR
When filling out the user information for a Windows NT
-user, the \fBwinbindd\fR(8) daemon
+user, the winbindd(8) daemon
uses this parameter to fill in the login shell for that user.
Default: \fBtemplate shell = /bin/false\fR
.TP
-\fB>time offset (G)\fR
+\fBtime offset (G)\fR
This parameter is a setting in minutes to add
to the normal GMT to local time conversion. This is useful if
you are serving a lot of PCs that have incorrect daylight
@@ -6591,20 +6611,21 @@ Default: \fBtime offset = 0\fR
Example: \fBtime offset = 60\fR
.TP
-\fB>time server (G)\fR
-This parameter determines if \fBnmbd\fR(8) advertises itself as a time server to Windows
+\fBtime server (G)\fR
+This parameter determines if
+nmbd(8) advertises itself as a time server to Windows
clients.
Default: \fBtime server = no\fR
.TP
-\fB>timestamp logs (G)\fR
+\fBtimestamp logs (G)\fR
Synonym for \fI debug timestamp\fR.
.TP
-\fB>total print jobs (G)\fR
+\fBtotal print jobs (G)\fR
This parameter accepts an integer value which defines
a limit on the maximum number of print jobs that will be accepted
system wide at any given time. If a print job is submitted
-by a client which will exceed this number, then \fBsmbd\fR(8) will return an
+by a client which will exceed this number, then smbd will return an
error indicating that no space is available on the server. The
default value of 0 means that no such limit exists. This parameter
can be used to prevent a server from exceeding its capacity and is
@@ -6615,23 +6636,23 @@ Default: \fBtotal print jobs = 0\fR
Example: \fBtotal print jobs = 5000\fR
.TP
-\fB>unicode (G)\fR
+\fBunicode (G)\fR
Specifies whether Samba should try
to use unicode on the wire by default. Note: This does NOT
mean that samba will assume that the unix machine uses unicode!
Default: \fBunicode = yes\fR
.TP
-\fB>unix charset (G)\fR
+\fBunix charset (G)\fR
Specifies the charset the unix machine
Samba runs on uses. Samba needs to know this in order to be able to
convert text to the charsets other SMB clients use.
-Default: \fBunix charset = UTF8\fR
+Default: \fBunix charset = ASCII\fR
-Example: \fBunix charset = ASCII\fR
+Example: \fBunix charset = UTF8\fR
.TP
-\fB>unix extensions(G)\fR
+\fBunix extensions(G)\fR
This boolean parameter controls whether Samba
implments the CIFS UNIX extensions, as defined by HP.
These extensions enable Samba to better serve UNIX CIFS clients
@@ -6641,7 +6662,7 @@ no current use to Windows clients.
Default: \fBunix extensions = no\fR
.TP
-\fB>unix password sync (G)\fR
+\fBunix password sync (G)\fR
This boolean parameter controls whether Samba
attempts to synchronize the UNIX password with the SMB password
when the encrypted SMB password in the smbpasswd file is changed.
@@ -6656,7 +6677,7 @@ program\fR, \fI passwd chat\fR.
Default: \fBunix password sync = no\fR
.TP
-\fB>update encrypted (G)\fR
+\fBupdate encrypted (G)\fR
This boolean parameter allows a user logging
on with a plaintext password to have their encrypted (hashed)
password in the smbpasswd file to be updated automatically as
@@ -6682,7 +6703,7 @@ password in order to connect correctly, and to update their hashed
Default: \fBupdate encrypted = no\fR
.TP
-\fB>use client driver (S)\fR
+\fBuse client driver (S)\fR
This parameter applies only to Windows NT/2000
clients. It has no affect on Windows 95/98/ME clients. When
serving a printer to Windows NT/2000 clients without first installing
@@ -6714,7 +6735,7 @@ See also disable spoolss
Default: \fBuse client driver = no\fR
.TP
-\fB>use mmap (G)\fR
+\fBuse mmap (G)\fR
This global parameter determines if the tdb internals of Samba can
depend on mmap working correctly on the running system. Samba requires a coherent
mmap/read-write system memory cache. Currently only HPUX does not have such a
@@ -6725,7 +6746,7 @@ the tdb internal code.
Default: \fBuse mmap = yes\fR
.TP
-\fB>use rhosts (G)\fR
+\fBuse rhosts (G)\fR
If this global parameter is yes, it specifies
that the UNIX user's \fI.rhosts\fR file in their home directory
will be read to find the names of hosts and users who will be allowed
@@ -6739,13 +6760,13 @@ you are doing.
Default: \fBuse rhosts = no\fR
.TP
-\fB>user (S)\fR
+\fBuser (S)\fR
Synonym for \fI username\fR.
.TP
-\fB>users (S)\fR
+\fBusers (S)\fR
Synonym for \fI username\fR.
.TP
-\fB>username (S)\fR
+\fBusername (S)\fR
Multiple users may be specified in a comma-delimited
list, in which case the supplied password will be tested against
each username in turn (left to right).
@@ -6786,7 +6807,7 @@ If any of the usernames begin with a '+' then the name
will be looked up only in the UNIX groups database and will
expand to a list of all users in the group of that name.
-If any of the usernames begin with a '&' then the name
+If any of the usernames begin with a '&'then the name
will be looked up only in the NIS netgroups database (if Samba
is compiled with netgroup support) and will expand to a list
of all users in the netgroup group of that name.
@@ -6805,7 +6826,7 @@ else <empty string>.\fR
Examples:\fBusername = fred, mary, jack, jane,
@users, @pcgroup\fR
.TP
-\fB>username level (G)\fR
+\fBusername level (G)\fR
This option helps Samba to try and 'guess' at
the real UNIX username, as many DOS clients send an all-uppercase
username. By default Samba tries all lowercase, followed by the
@@ -6824,7 +6845,7 @@ Default: \fBusername level = 0\fR
Example: \fBusername level = 5\fR
.TP
-\fB>username map (G)\fR
+\fBusername map (G)\fR
This option allows you to specify a file containing
a mapping of usernames from the clients to the server. This can be
used for several purposes. The most common is to map usernames
@@ -6887,8 +6908,9 @@ that line.
.nf
-!sys = mary fred
-guest = *
+ !sys = mary fred
+ guest = *
+
.fi
Note that the remapping is applied to all occurrences
@@ -6910,7 +6932,7 @@ Default: \fBno username map\fR
Example: \fBusername map = /usr/local/samba/lib/users.map
\fR
.TP
-\fB>use sendfile (S)\fR
+\fBuse sendfile (S)\fR
If this parameter is yes, and Samba
was built with the --with-sendfile-support option, and the underlying operating
system supports sendfile system call, then some SMB read calls (mainly ReadAndX
@@ -6921,7 +6943,7 @@ as yet.
Default: \fBuse sendfile = no\fR
.TP
-\fB>utmp (G)\fR
+\fButmp (G)\fR
This boolean parameter is only available if
Samba has been configured and compiled with the option \fB --with-utmp\fR. If set to yes then Samba will attempt
to add utmp or utmpx records (depending on the UNIX system) whenever a
@@ -6938,7 +6960,7 @@ See also the \fI utmp directory\fR parameter.
Default: \fButmp = no\fR
.TP
-\fB>utmp directory(G)\fR
+\fButmp directory(G)\fR
This parameter is only available if Samba has
been configured and compiled with the option \fB --with-utmp\fR. It specifies a directory pathname that is
used to store the utmp or utmpx files (depending on the UNIX system) that
@@ -6951,7 +6973,7 @@ Default: \fBno utmp directory\fR
Example: \fButmp directory = /var/run/utmp\fR
.TP
-\fB>wtmp directory(G)\fR
+\fBwtmp directory(G)\fR
This parameter is only available if Samba has
been configured and compiled with the option \fB --with-utmp\fR. It specifies a directory pathname that is
used to store the wtmp or wtmpx files (depending on the UNIX system) that
@@ -6967,7 +6989,7 @@ Default: \fBno wtmp directory\fR
Example: \fBwtmp directory = /var/log/wtmp\fR
.TP
-\fB>valid users (S)\fR
+\fBvalid users (S)\fR
This is a list of users that should be allowed
to login to this service. Names starting with '@', '+' and '&'
are interpreted using the same rules as described in the
@@ -6988,7 +7010,7 @@ Default: \fBNo valid users list (anyone can login)
Example: \fBvalid users = greg, @pcusers\fR
.TP
-\fB>veto files(S)\fR
+\fBveto files(S)\fR
This is a list of files and directories that
are neither visible nor accessible. Each entry in the list must
be separated by a '/', which allows spaces to be included
@@ -7033,7 +7055,7 @@ veto files = /*Security*/*.tmp/*root*/
veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
.fi
.TP
-\fB>veto oplock files (S)\fR
+\fBveto oplock files (S)\fR
This parameter is only valid when the \fIoplocks\fR
parameter is turned on for a share. It allows the Samba administrator
to selectively turn off the granting of oplocks on selected files that
@@ -7055,7 +7077,7 @@ the particular NetBench share :
Example: \fBveto oplock files = /*.SEM/
\fR
.TP
-\fB>vfs path (S)\fR
+\fBvfs path (S)\fR
This parameter specifies the directory
to look in for vfs modules. The name of every \fBvfs object
\fR will be prepended by this directory
@@ -7064,7 +7086,7 @@ Default: \fBvfs path = \fR
Example: \fBvfs path = /usr/lib/samba/vfs\fR
.TP
-\fB>vfs object (S)\fR
+\fBvfs object (S)\fR
This parameter specifies a shared object files that
are used for Samba VFS I/O operations. By default, normal
disk I/O operations are used but these can be overloaded
@@ -7072,21 +7094,21 @@ with one or more VFS objects.
Default : \fBno value\fR
.TP
-\fB>vfs options (S)\fR
+\fBvfs options (S)\fR
This parameter allows parameters to be passed
to the vfs layer at initialization time.
See also \fI vfs object\fR.
Default : \fBno value\fR
.TP
-\fB>volume (S)\fR
+\fBvolume (S)\fR
This allows you to override the volume label
returned for a share. Useful for CDROMs with installation programs
that insist on a particular volume label.
Default: \fBthe name of the share\fR
.TP
-\fB>wide links (S)\fR
+\fBwide links (S)\fR
This parameter controls whether or not links
in the UNIX file system may be followed by the server. Links
that point to areas within the directory tree exported by the
@@ -7099,17 +7121,19 @@ that Samba has to do in order to perform the link checks.
Default: \fBwide links = yes\fR
.TP
-\fB>winbind cache time (G)\fR
-This parameter specifies the number of
-seconds the \fBwinbindd\fR(8) daemon will cache
+\fBwinbind cache time (G)\fR
+This parameter specifies the number of seconds the
+winbindd(8) daemon will cache
user and group information before querying a Windows NT server
again.
Default: \fBwinbind cache type = 15\fR
.TP
-\fB>winbind enum users (G)\fR
-On large installations using \fBwinbindd\fR(8) it may be
-necessary to suppress the enumeration of users through the \fBsetpwent()\fR,
+\fBwinbind enum users (G)\fR
+On large installations using
+winbindd(8) it may be
+necessary to suppress the enumeration of users through the
+\fB setpwent()\fR,
\fBgetpwent()\fR and
\fBendpwent()\fR group of system calls. If
the \fIwinbind enum users\fR parameter is
@@ -7124,9 +7148,11 @@ usernames.
Default: \fBwinbind enum users = yes \fR
.TP
-\fB>winbind enum groups (G)\fR
-On large installations using \fBwinbindd\fR(8) it may be necessary to suppress
-the enumeration of groups through the \fBsetgrent()\fR,
+\fBwinbind enum groups (G)\fR
+On large installations using
+winbindd(8) it may be
+necessary to suppress the enumeration of groups through the
+\fB setgrent()\fR,
\fBgetgrent()\fR and
\fBendgrent()\fR group of system calls. If
the \fIwinbind enum groups\fR parameter is
@@ -7138,9 +7164,9 @@ enumeration may cause some programs to behave oddly.
Default: \fBwinbind enum groups = yes \fR
.TP
-\fB>winbind gid (G)\fR
+\fBwinbind gid (G)\fR
The winbind gid parameter specifies the range of group
-ids that are allocated by the \fBwinbindd\fR(8) daemon. This range of group ids should have no
+ids that are allocated by the winbindd(8) daemon. This range of group ids should have no
existing local or NIS groups within it as strange conflicts can
occur otherwise.
@@ -7149,7 +7175,7 @@ Default: \fBwinbind gid = <empty string>
Example: \fBwinbind gid = 10000-20000\fR
.TP
-\fB>winbind separator (G)\fR
+\fBwinbind separator (G)\fR
This parameter allows an admin to define the character
used when listing a username of the form of \fIDOMAIN
\fR\\\fIuser\fR. This parameter
@@ -7164,9 +7190,9 @@ Default: \fBwinbind separator = '\\'\fR
Example: \fBwinbind separator = +\fR
.TP
-\fB>winbind uid (G)\fR
+\fBwinbind uid (G)\fR
The winbind gid parameter specifies the range of group
-ids that are allocated by the \fBwinbindd\fR(8) daemon. This range of ids should have no
+ids that are allocated by the winbindd(8) daemon. This range of ids should have no
existing local or NIS users within it as strange conflicts can
occur otherwise.
@@ -7175,9 +7201,11 @@ Default: \fBwinbind uid = <empty string>
Example: \fBwinbind uid = 10000-20000\fR
.TP
-\fB>winbind use default domain (G)\fR
-This parameter specifies whether the \fBwinbindd\fR(8) daemon should operate on users
-without domain component in their username.
+\fBwinbind use default domain\fR
+.TP
+\fBwinbind use default domain (G)\fR
+This parameter specifies whether the winbindd(8)
+daemon should operate on users without domain component in their username.
Users without a domain component are treated as is part of the winbindd server's
own domain. While this does not benifit Windows users, it makes SSH, FTP and e-mail
function in a way much closer to the way they would in a native unix system.
@@ -7187,7 +7215,7 @@ Default: \fBwinbind use default domain = <no>
Example: \fBwinbind use default domain = yes\fR
.TP
-\fB>wins hook (G)\fR
+\fBwins hook (G)\fR
When Samba is running as a WINS server this
allows you to call an external program for all changes to the
WINS database. The primary use for this option is to allow the
@@ -7233,16 +7261,16 @@ An example script that calls the BIND dynamic DNS update
program \fBnsupdate\fR is provided in the examples
directory of the Samba source code.
.TP
-\fB>wins proxy (G)\fR
+\fBwins proxy (G)\fR
This is a boolean that controls if nmbd(8) will respond to broadcast name
queries on behalf of other hosts. You may need to set this
to yes for some older clients.
Default: \fBwins proxy = no\fR
.TP
-\fB>wins server (G)\fR
+\fBwins server (G)\fR
This specifies the IP address (or DNS name: IP
-address for preference) of the WINS server that \fBnmbd\fR(8) should register with. If you have a WINS server on
+address for preference) of the WINS server that nmbd(8) should register with. If you have a WINS server on
your network then you should set this to the WINS server's IP.
You should point this at your WINS server if you have a
@@ -7252,15 +7280,16 @@ multi-subnetted network.
to a WINS server if you have multiple subnets and wish cross-subnet
browsing to work correctly.
-See the documentation file BROWSING
+See the documentation file \fIBROWSING.txt\fR
in the docs/ directory of your Samba source distribution.
Default: \fBnot enabled\fR
Example: \fBwins server = 192.9.200.1\fR
.TP
-\fB>wins support (G)\fR
-This boolean controls if the \fBnmbd\fR(8) process in Samba will act as a WINS server. You should
+\fBwins support (G)\fR
+This boolean controls if the
+nmbd(8) process in Samba will act as a WINS server. You should
not set this to yes unless you have a multi-subnetted network and
you wish a particular \fBnmbd\fR to be your WINS server.
Note that you should \fBNEVER\fR set this to yes
@@ -7268,7 +7297,7 @@ on more than one machine in your network.
Default: \fBwins support = no\fR
.TP
-\fB>workgroup (G)\fR
+\fBworkgroup (G)\fR
This controls what workgroup your server will
appear to be in when queried by clients. Note that this parameter
also controls the Domain name used with the \fBsecurity = domain\fR
@@ -7278,10 +7307,10 @@ Default: \fBset at compile time to WORKGROUP\fR
Example: \fBworkgroup = MYGROUP\fR
.TP
-\fB>writable (S)\fR
+\fBwritable (S)\fR
Synonym for \fI writeable\fR for people who can't spell :-).
.TP
-\fB>write cache size (S)\fR
+\fBwrite cache size (S)\fR
If this integer parameter is set to non-zero value,
Samba will create an in-memory cache for each oplocked file
(it does \fBnot\fR do this for
@@ -7307,7 +7336,7 @@ Example: \fBwrite cache size = 262144\fR
for a 256k cache size per file.
.TP
-\fB>write list (S)\fR
+\fBwrite list (S)\fR
This is a list of users that are given read-write
access to a service. If the connecting user is in this list then
they will be given write access, no matter what the \fIread only\fR
@@ -7326,7 +7355,7 @@ Default: \fBwrite list = <empty string>
Example: \fBwrite list = admin, root, @staff
\fR
.TP
-\fB>wins partners (G)\fR
+\fBwins partners (G)\fR
A space separated list of partners' IP addresses for
WINS replication. WINS partners are always defined as push/pull
partners as defining only one way WINS replication is unreliable.
@@ -7337,17 +7366,17 @@ Default: \fBwins partners = \fR
Example: \fBwins partners = 192.168.0.1 172.16.1.2\fR
.TP
-\fB>write ok (S)\fR
+\fBwrite ok (S)\fR
Inverted synonym for \fI read only\fR.
.TP
-\fB>write raw (G)\fR
+\fBwrite raw (G)\fR
This parameter controls whether or not the server
will support raw write SMB's when transferring data from clients.
You should never need to change this parameter.
Default: \fBwrite raw = yes\fR
.TP
-\fB>writeable (S)\fR
+\fBwriteable (S)\fR
Inverted synonym for \fI read only\fR.
.SH "WARNINGS"
.PP
@@ -7357,7 +7386,8 @@ be ignored in comparisons anyway, so it shouldn't be a
problem - but be aware of the possibility.
.PP
On a similar note, many clients - especially DOS clients -
-limit service names to eight characters. \fBsmbd\fR(8) has no such limitation, but attempts to connect from such
+limit service names to eight characters. smbd(8)
+ has no such limitation, but attempts to connect from such
clients will fail if they truncate the service names. For this reason
you should probably keep your service names down to eight characters
in length.
@@ -7369,10 +7399,19 @@ sections. In particular, ensure that the permissions on spool
directories are correct.
.SH "VERSION"
.PP
-This man page is correct for version 3.0 of the Samba suite.
+This man page is correct for version 3.0 of
+the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsamba\fR(7), \fBsmbpasswd\fR(8), \fBswat\fR(8), \fBsmbd\fR(8), \fBnmbd\fR(8), \fBsmbclient\fR(1), \fBnmblookup\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1).
+samba(7)
+\fBsmbpasswd(8)\fR
+\fBswat(8)\fR
+\fBsmbd(8)\fR
+\fBnmbd(8)\fR
+\fBsmbclient(1)\fR
+\fBnmblookup(1)\fR
+\fBtestparm(1)\fR
+\fBtestprns(1)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -7382,7 +7421,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbcacls.1 b/docs/manpages/smbcacls.1
index 9840dab50b..aaed1ba8f5 100644
--- a/docs/manpages/smbcacls.1
+++ b/docs/manpages/smbcacls.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBCACLS" "1" "28 January 2003" "" ""
-
+.TH "SMBCACLS" "1" "04 March 2003" "" ""
.SH NAME
smbcacls \- Set or get ACLs on an NT file or directory names
.SH SYNOPSIS
@@ -13,7 +12,7 @@ smbcacls \- Set or get ACLs on an NT file or directory names
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
The \fBsmbcacls\fR program manipulates NT Access Control
Lists (ACLs) on SMB file shares.
@@ -46,7 +45,7 @@ type, owner and group for the call to succeed.
Specifies a username used to connect to the
specified service. The username may be of the form "username" in
which case the user is prompted to enter in a password and the
-workgroup specified in the \fBsmb.conf\fR(5) file is
+workgroup specified in the \fIsmb.conf\fR file is
used, or "username%password" or "DOMAIN\\username%password" and the
password and workgroup names are used as provided.
.TP
@@ -86,6 +85,7 @@ REVISION:<revision number>
OWNER:<sid or name>
GROUP:<sid or name>
ACL:<sid or name>:<type>/<flags>/<mask>
+
.fi
.PP
The revision of the ACL specifies the internal Windows
@@ -116,7 +116,7 @@ common flags are:
#define SEC_ACE_FLAG_CONTAINER_INHERIT 0x2
.TP 0.2i
\(bu
-#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4
+#define SEC_ACE_FLAG_NO_PROPAGATE_INHERIT 0x4
.TP 0.2i
\(bu
#define SEC_ACE_FLAG_INHERIT_ONLY 0x8
@@ -172,7 +172,8 @@ of 1 is returned. If there was an error parsing any command line
arguments, an exit status of 2 is returned.
.SH "VERSION"
.PP
-This man page is correct for version 2.2 of the Samba suite.
+This man page is correct for version 2.2 of
+the Samba suite.
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -184,5 +185,4 @@ to the way the Linux kernel is developed.
and Tim Potter.
.PP
The conversion to DocBook for Samba 2.2 was done
-by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was done
-by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/manpages/smbclient.1 b/docs/manpages/smbclient.1
index 6299ff9362..e5785acaf5 100644
--- a/docs/manpages/smbclient.1
+++ b/docs/manpages/smbclient.1
@@ -3,21 +3,20 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBCLIENT" "1" "18 February 2003" "" ""
-
+.TH "SMBCLIENT" "1" "04 March 2003" "" ""
.SH NAME
smbclient \- ftp-like client to access SMB/CIFS resources on servers
.SH SYNOPSIS
-\fBsmbclient\fR \fBservicename\fR [ \fBpassword\fR ] [ \fB-b <buffer size>\fR ] [ \fB-d debuglevel\fR ] [ \fB-D Directory\fR ] [ \fB-U username\fR ] [ \fB-W workgroup\fR ] [ \fB-M <netbios name>\fR ] [ \fB-m maxprotocol\fR ] [ \fB-A authfile\fR ] [ \fB-N\fR ] [ \fB-l logfile\fR ] [ \fB-L <netbios name>\fR ] [ \fB-I destinationIP\fR ] [ \fB-E\fR ] [ \fB-c <command string>\fR ] [ \fB-i scope\fR ] [ \fB-O <socket options>\fR ] [ \fB-p port\fR ] [ \fB-R <name resolve order>\fR ] [ \fB-s <smb config file>\fR ] [ \fB-T<c|x>IXFqgbNan\fR ] [ \fB-k\fR ]
+\fBsmbclient\fR \fBservicename\fR [ \fBpassword\fR ] [ \fB-b <buffer size>\fR ] [ \fB-d debuglevel\fR ] [ \fB-D Directory\fR ] [ \fB-U username\fR ] [ \fB-W workgroup\fR ] [ \fB-M <netbios name>\fR ] [ \fB-m maxprotocol\fR ] [ \fB-A authfile\fR ] [ \fB-N\fR ] [ \fB-l logfile\fR ] [ \fB-L <netbios name>\fR ] [ \fB-I destinationIP\fR ] [ \fB-E\fR ] [ \fB-c <command string>\fR ] [ \fB-i scope\fR ] [ \fB-O <socket options>\fR ] [ \fB-p port\fR ] [ \fB-R <name resolve order>\fR ] [ \fB-s <smb config file>\fR ] [ \fB-T<c|x>IXFqgbNan\fR ]
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBsmbclient\fR is a client that can
\&'talk' to an SMB/CIFS server. It offers an interface
-similar to that of the ftp program (see \fBftp\fR(1)).
+similar to that of the ftp program (see \fBftp(1)\fR).
Operations include things like getting files from the server
to the local machine, putting files from the local machine to
the server, retrieving directory information from the server
@@ -42,8 +41,7 @@ same as the IP hostname of the machine running the server.
The server name is looked up according to either
the \fI-R\fR parameter to \fBsmbclient\fR or
-using the name resolve order parameter in
-the \fBsmb.conf\fR(5) file,
+using the name resolve order parameter in the \fIsmb.conf\fR file,
allowing an administrator to change the order and methods
by which server names are looked up.
.TP
@@ -68,13 +66,12 @@ or mixed case passwords may be rejected by these servers.
Be cautious about including passwords in scripts.
.TP
\fB-s smb.conf\fR
-Specifies the location of the all
-important \fBsmb.conf\fR(5) file.
+Specifies the location of the all important
+\fIsmb.conf\fR file.
.TP
\fB-O socket options\fR
TCP socket options to set on the client
-socket. See the socket options parameter in
-the \fBsmb.conf\fR(5) manual page for the list of valid
+socket. See the socket options parameter in the \fI smb.conf (5)\fR manpage for the list of valid
options.
.TP
\fB-R <name resolve order>\fR
@@ -84,18 +81,17 @@ host names to IP addresses. The option takes a space-separated
string of different name resolution options.
The options are :"lmhosts", "host", "wins" and "bcast". They
-cause names to be resolved as follows:
+cause names to be resolved as follows :
.RS
.TP 0.2i
\(bu
-lmhosts: Lookup an IP
+lmhosts : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
-no name type attached to the NetBIOS name (see
-the \fBlmhosts\fR(5) for details) then
+no name type attached to the NetBIOS name (see the lmhosts(5) for details) then
any name type matches for lookup.
.TP 0.2i
\(bu
-host: Do a standard host
+host : Do a standard host
name to IP address resolution, using the system \fI/etc/hosts
\fR, NIS, or DNS lookups. This method of name resolution
is operating system dependent, for instance on IRIX or Solaris this
@@ -105,13 +101,13 @@ type being queried is the 0x20 (server) name type, otherwise
it is ignored.
.TP 0.2i
\(bu
-wins: Query a name with
+wins : Query a name with
the IP address listed in the \fIwins server\fR
parameter. If no WINS server has
been specified this method will be ignored.
.TP 0.2i
\(bu
-bcast: Do a broadcast on
+bcast : Do a broadcast on
each of the known local interfaces listed in the
\fIinterfaces\fR
parameter. This is the least reliable of the name resolution
@@ -120,12 +116,12 @@ connected subnet.
.RE
If this parameter is not set then the name resolve order
-defined in the \fBsmb.conf\fR(5) file parameter
+defined in the \fIsmb.conf\fR file parameter
(name resolve order) will be used.
The default order is lmhosts, host, wins, bcast and without
this parameter or any entry in the \fIname resolve order
-\fR parameter of the \fBsmb.conf\fR(5) file the name resolution
+\fR parameter of the \fIsmb.conf\fR file the name resolution
methods will be attempted in this order.
.TP
\fB-M NetBIOS name\fR
@@ -151,7 +147,7 @@ You may also find the \fI-U\fR and
\fI-I\fR options useful, as they allow you to
control the FROM and TO parts of the message.
-See the \fImessage command\fR parameter in the \fBsmb.conf\fR(5) for a description of how to handle incoming
+See the message command parameter in the \fI smb.conf(5)\fR for a description of how to handle incoming
WinPopup messages in Samba.
\fBNote\fR: Copy WinPopup into the startup group
@@ -295,6 +291,7 @@ password used in the connection. The format of the file is
username = <value>
password = <value>
domain = <value>
+
.fi
If the domain parameter is missing the current workgroup name
@@ -330,8 +327,9 @@ observed to speed up file transfers to and from a Win9x server.
.TP
\fB-W WORKGROUP\fR
Override the default workgroup (domain) specified
-in the workgroup parameter of the \fBsmb.conf\fR(5) file for this connection. This may be
-needed to connect to some servers.
+in the workgroup parameter of the \fIsmb.conf\fR
+file for this connection. This may be needed to connect to some
+servers.
.TP
\fB-T tar options\fR
smbclient may be used to create \fBtar(1)
@@ -415,7 +413,7 @@ files in the archive with relative names, not absolute names.
\fBTar Filenames\fR
-All file names can be given as DOS path names (with '\\\\'
+All file names can be given as DOS path names (with '\\'
as the component separator) or as UNIX path names (with '/' as
the component separator).
@@ -459,10 +457,6 @@ commands to be executed instead of prompting from stdin. \fI -N\fR is implied b
This is particularly useful in scripts and for printing stdin
to the server, e.g. \fB-c 'print -'\fR.
-.TP
-\fB-k\fR
-Try to authenticate with kerberos. Only useful in
-an Active Directory environment.
.SH "OPERATIONS"
.PP
Once the client is running, the user is presented with
@@ -470,7 +464,7 @@ a prompt :
.PP
smb:\\>
.PP
-The backslash ("\\\\") indicates the current working directory
+The backslash ("\\") indicates the current working directory
on the server, and will change if the current working directory
is changed.
.PP
@@ -772,7 +766,8 @@ The client log files should be put in a directory readable
and writeable only by the user.
.PP
To test the client, you will need to know the name of a
-running SMB/CIFS server. It is possible to run \fBsmbd\fR(8) as an ordinary user - running that server as a daemon
+running SMB/CIFS server. It is possible to run \fBsmbd(8)
+\fR as an ordinary user - running that server as a daemon
on a user-accessible port (typically any port number over 1024)
would provide a suitable test server.
.SH "DIAGNOSTICS"
@@ -786,7 +781,8 @@ on the debug level used by the client. If you have problems,
set the debug level to 3 and peruse the log files.
.SH "VERSION"
.PP
-This man page is correct for version 2.2 of the Samba suite.
+This man page is correct for version 2.2 of
+the Samba suite.
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -796,7 +792,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
-was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbcontrol.1 b/docs/manpages/smbcontrol.1
index 80fee0a838..d69e0978a4 100644
--- a/docs/manpages/smbcontrol.1
+++ b/docs/manpages/smbcontrol.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBCONTROL" "1" "28 January 2003" "" ""
-
+.TH "SMBCONTROL" "1" "04 March 2003" "" ""
.SH NAME
smbcontrol \- send messages to smbd, nmbd or winbindd processes
.SH SYNOPSIS
@@ -16,10 +15,13 @@ smbcontrol \- send messages to smbd, nmbd or winbindd processes
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBsmbcontrol\fR is a very small program, which
-sends messages to a \fBsmbd\fR(8), a \fBnmbd\fR(8), or a \fBwinbindd\fR(8) daemon running on the system.
+sends messages to an smbd(8)
+an nmbd(8)
+or a winbindd(8)
+daemon running on the system.
.SH "OPTIONS"
.TP
\fB-i\fR
@@ -29,7 +31,8 @@ on STDIN. An empty command line or a "q" will quit the
program.
.TP
\fBdestination\fR
-One of \fInmbd\fR, \fIsmbd\fR or a process ID.
+One of \fInmbd\fR
+\fIsmbd\fR or a process ID.
The \fIsmbd\fR destination causes the
message to "broadcast" to all smbd daemons.
@@ -131,7 +134,8 @@ This man page is correct for version 2.2 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBnmbd\fR(8) and \fBsmbd\fR(8).
+\fBnmbd(8)\fR
+and \fBsmbd(8)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -141,7 +145,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
-Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbd.8 b/docs/manpages/smbd.8
index 47bc476aac..106c0a98e3 100644
--- a/docs/manpages/smbd.8
+++ b/docs/manpages/smbd.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBD" "8" "28 January 2003" "" ""
-
+.TH "SMBD" "8" "04 March 2003" "" ""
.SH NAME
smbd \- server to provide SMB/CIFS services to clients
.SH SYNOPSIS
@@ -13,7 +12,7 @@ smbd \- server to provide SMB/CIFS services to clients
.SH "DESCRIPTION"
.PP
-This program is part of the \fBSamba\fR(7) suite.
+This program is part of the Samba suite.
.PP
\fBsmbd\fR is the server daemon that
provides filesharing and printing services to Windows clients.
@@ -27,12 +26,14 @@ OS/2, DAVE for Macintosh, and smbfs for Linux.
An extensive description of the services that the
server can provide is given in the man page for the
configuration file controlling the attributes of those
-services (see \fBsmb.conf\fR(5). This man page will not describe the
+services (see \fIsmb.conf(5)
+\fR This man page will not describe the
services, but will concentrate on the administrative aspects
of running the server.
.PP
Please note that there are significant security
-implications to running this server, and the \fBsmb.conf\fR(5) manual page should be regarded as mandatory reading before
+implications to running this server, and the \fIsmb.conf(5)\fR
+manpage should be regarded as mandatory reading before
proceeding with installation.
.PP
A session is created whenever a client requests one.
@@ -116,8 +117,8 @@ use only by developers and generate HUGE amounts of log
data, most of which is extremely cryptic.
Note that specifying this parameter here will
-override the \fIlog
-level\fR parameter in the \fBsmb.conf\fR(5) file.
+override the log
+level file.
.TP
\fB-l <log directory>\fR
If specified,
@@ -126,8 +127,8 @@ specifies a log directory into which the "log.smbd" log
file will be created for informational and debug
messages from the running server. The log
file generated is never removed by the server although
-its size may be controlled by the \fImax log size\fR
-option in the \fBsmb.conf\fR(5) file. \fBBeware:\fR
+its size may be controlled by the max log size
+option in the \fI smb.conf(5)\fR file. \fBBeware:\fR
If the directory specified does not exist, \fBsmbd\fR
will log to the default debug log location defined at compile time.
@@ -135,8 +136,9 @@ The default log directory is specified at
compile time.
.TP
\fB-O <socket options>\fR
-See the \fIsocket options\fR
-parameter in the \fBsmb.conf\fR(5) file for details.
+See the socket options
+parameter in the \fIsmb.conf(5)
+\fR file for details.
.TP
\fB-p <port number>\fR
\fIport number\fR is a positive integer
@@ -167,7 +169,7 @@ configuration details required by the server. The
information in this file includes server-specific
information such as what printcap file to use, as well
as descriptions of all the services that the server is
-to provide. See \fBsmb.conf\fR(5) for more information.
+to provide. See \fI smb.conf(5)\fR for more information.
The default configuration file name is determined at
compile time.
.SH "FILES"
@@ -176,7 +178,7 @@ compile time.
If the server is to be run by the
\fBinetd\fR meta-daemon, this file
must contain suitable startup information for the
-meta-daemon. See the "How to Install and Test SAMBA"
+meta-daemon. See the UNIX_INSTALL.html
document for details.
.TP
\fB\fI/etc/rc\fB\fR
@@ -185,7 +187,7 @@ system uses).
If running the server as a daemon at startup,
this file will need to contain an appropriate startup
-sequence for the server. See the "How to Install and Test SAMBA"
+sequence for the server. See the UNIX_INSTALL.html
document for details.
.TP
\fB\fI/etc/services\fB\fR
@@ -193,16 +195,18 @@ If running the server via the
meta-daemon \fBinetd\fR, this file
must contain a mapping of service name (e.g., netbios-ssn)
to service port (e.g., 139) and protocol type (e.g., tcp).
-See the "How to Install and Test SAMBA"
+See the UNIX_INSTALL.html
document for details.
.TP
\fB\fI/usr/local/samba/lib/smb.conf\fB\fR
-This is the default location of the \fBsmb.conf\fR(5) server configuration file. Other common places that systems
+This is the default location of the
+\fIsmb.conf\fR
+server configuration file. Other common places that systems
install this file are \fI/usr/samba/lib/smb.conf\fR
-and \fI/etc/samba/smb.conf\fR.
+and \fI/etc/smb.conf\fR.
This file describes all the services the server
-is to make available to clients. See \fBsmb.conf\fR(5) for more information.
+is to make available to clients. See \fIsmb.conf(5)\fR for more information.
.SH "LIMITATIONS"
.PP
On some systems \fBsmbd\fR cannot change uid back
@@ -225,8 +229,9 @@ is not specific to the server, however.
Samba uses PAM for authentication (when presented with a plaintext
password), for account checking (is this account disabled?) and for
session management. The degree too which samba supports PAM is restricted
-by the limitations of the SMB protocol and the \fIobey
-pam restricions\fR \fBsmb.conf\fR(5) paramater. When this is set, the following restrictions apply:
+by the limitations of the SMB protocol and the
+obey pam restricions
+smb.conf paramater. When this is set, the following restrictions apply:
.TP 0.2i
\(bu
\fBAccount Validation\fR: All accesses to a
@@ -274,8 +279,9 @@ an \fBsmbd\fR is to send it a SIGTERM (-15) signal and wait for
it to die on its own.
.PP
The debug log level of \fBsmbd\fR may be raised
-or lowered using \fBsmbcontrol\fR(1) program (SIGUSR[1|2] signals are no longer
-used since Samba 2.2). This is to allow transient problems to be diagnosed,
+or lowered using \fBsmbcontrol(1)
+\fR program (SIGUSR[1|2] signals are no longer used in
+Samba 2.2). This is to allow transient problems to be diagnosed,
whilst still running at a normally low log level.
.PP
Note that as the signal handlers send a debug write,
@@ -286,8 +292,12 @@ by un-blocking the signals before the select call and re-blocking
them after, however this would affect performance.
.SH "SEE ALSO"
.PP
-\fBhosts_access\fR(5), \fBinetd\fR(8), \fBnmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1), and the
-Internet RFC's \fIrfc1001.txt\fR, \fIrfc1002.txt\fR.
+hosts_access(5), \fBinetd(8)\fR,
+\fBnmbd(8)\fR
+\fIsmb.conf(5)\fR
+ \fBsmbclient(1)
+\fR and the Internet RFC's
+\fIrfc1001.txt\fR, \fIrfc1002.txt\fR.
In addition the CIFS (formerly SMB) specification is available
as a link from the Web page
http://samba.org/cifs/ <URL:http://samba.org/cifs/>.
@@ -300,7 +310,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
-Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbgroupedit.8 b/docs/manpages/smbgroupedit.8
index f016044634..41b4872798 100644
--- a/docs/manpages/smbgroupedit.8
+++ b/docs/manpages/smbgroupedit.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBGROUPEDIT" "8" "28 January 2003" "" ""
-
+.TH "SMBGROUPEDIT" "8" "04 March 2003" "" ""
.SH NAME
smbgroupedit \- Query/set/change UNIX - Windows NT group mapping
.SH SYNOPSIS
@@ -13,7 +12,8 @@ smbgroupedit \- Query/set/change UNIX - Windows NT group mapping
.SH "DESCRIPTION"
.PP
-This program is part of the \fBSamba\fR(7) suite.
+This program is part of the Samba
+suite.
.PP
The smbgroupedit command allows for mapping unix groups
to NT Builtin, Domain, or Local groups. Also
@@ -39,7 +39,8 @@ give a long listing, of the format:
Privilege :
.fi
-For example:
+For examples,
+
.nf
Users
@@ -58,7 +59,8 @@ display a short listing of the format:
NTGroupName(SID) -> UnixGroupName
.fi
-For example:
+For example,
+
.nf
Users (S-1-5-32-545) -> -1
@@ -92,7 +94,8 @@ map this domadm group to the 'domain admins' group:
.RS
.TP 3
1.
-Get the SID for the Windows NT "Domain Admins" group:
+Get the SID for the Windows NT "Domain Admins"
+group:
.nf
@@ -104,6 +107,7 @@ Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -> -1
map the unix domadm group to the Windows NT
"Domain Admins" group, by running the command:
+
.nf
root# \fBsmbgroupedit \\
-c S-1-5-21-1108995562-3116817432-1375597819-512 \\
@@ -115,6 +119,7 @@ Domain Admins SID (the S-1-5-21-...-512) is different for every PDC.
.RE
.PP
To verify that your mapping has taken effect:
+.PP
.nf
root# \fBsmbgroupedit -vs|grep "Domain Admins"\fR
@@ -124,6 +129,7 @@ Domain Admins (S-1-5-21-1108995562-3116817432-1375597819-512) -> domadm
To give access to a certain directory on a domain member machine (an
NT/W2K or a samba server running winbind) to some users who are member
of a group on your samba PDC, flag that group as a domain group:
+.PP
.nf
root# \fBsmbgroupedit -a unixgroup -td\fR
@@ -134,7 +140,7 @@ This man page is correct for the 3.0alpha releases of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmb.conf\fR(5)
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -144,5 +150,4 @@ to the way the Linux kernel is developed.
.PP
\fBsmbgroupedit\fR was written by Jean Francois Micouleau.
The current set of manpages and documentation is maintained
-by the Samba Team in the same fashion as the Samba source code. The conversion
-to DocBook XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
+by the Samba Team in the same fashion as the Samba source code.
diff --git a/docs/manpages/smbmnt.8 b/docs/manpages/smbmnt.8
index 63425850c9..e8e8562a12 100644
--- a/docs/manpages/smbmnt.8
+++ b/docs/manpages/smbmnt.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBMNT" "8" "28 January 2003" "" ""
-
+.TH "SMBMNT" "8" "04 March 2003" "" ""
.SH NAME
smbmnt \- helper utility for mounting SMB filesystems
.SH SYNOPSIS
@@ -22,7 +21,8 @@ A setuid smbmnt will only allow mounts on directories owned
by the user, and that the user has write permission on.
.PP
The \fBsmbmnt\fR program is normally invoked
-by \fBsmbmount\fR(8). It should not be invoked directly by users.
+by \fBsmbmount(8)\fR
+ It should not be invoked directly by users.
.PP
smbmount searches the normal PATH for smbmnt. You must ensure
that the smbmnt version in your path matches the smbmount used.
@@ -61,5 +61,4 @@ The SAMBA Mailing list <URL:mailto:samba@samba.org>
is the preferred place to ask questions regarding these programs.
.PP
The conversion of this manpage for Samba 2.2 was performed
-by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
-was done by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/manpages/smbmount.8 b/docs/manpages/smbmount.8
index 1b504e08b9..8d7dfd8d22 100644
--- a/docs/manpages/smbmount.8
+++ b/docs/manpages/smbmount.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBMOUNT" "8" "28 January 2003" "" ""
-
+.TH "SMBMOUNT" "8" "04 March 2003" "" ""
.SH NAME
smbmount \- mount an smbfs filesystem
.SH SYNOPSIS
@@ -15,7 +14,7 @@ smbmount \- mount an smbfs filesystem
.PP
\fBsmbmount\fR mounts a Linux SMB filesystem. It
is usually invoked as \fBmount.smbfs\fR by
-the \fBmount\fR(8) command when using the
+the \fBmount(8)\fR command when using the
"-t smbfs" option. This command only works in Linux, and the kernel must
support the smbfs filesystem.
.PP
@@ -28,10 +27,11 @@ unknown options.
\fBsmbmount\fR is a daemon. After mounting it keeps running until
the mounted smbfs is umounted. It will log things that happen
when in daemon mode using the "machine name" smbmount, so
-typically this output will end up in \fIlog.smbmount\fR. The \fB smbmount\fR process may also be called mount.smbfs.
+typically this output will end up in \fIlog.smbmount\fR. The
+\fBsmbmount\fR process may also be called mount.smbfs.
.PP
\fBNOTE:\fR \fBsmbmount\fR
-calls \fBsmbmnt\fR(8) to do the actual mount. You
+calls \fBsmbmnt(8)\fR to do the actual mount. You
must make sure that \fBsmbmnt\fR is in the path so
that it can be found.
.SH "OPTIONS"
@@ -58,12 +58,14 @@ in the PASSWD environment variable or a credentials file (see
below) will be read correctly.
.TP
\fBcredentials=<filename>\fR
-specifies a file that contains a username and/or password.
-The format of the file is:
+specifies a file that contains a username
+and/or password. The format of the file is:
+
.nf
-username = <value>
-password = <value>
+ username = <value>
+ password = <value>
+
.fi
This is preferred over having passwords in plaintext in a
@@ -112,7 +114,8 @@ sets the destination host or IP address.
sets the workgroup on the destination
.TP
\fBsockopt=<arg>\fR
-sets the TCP socket options. See the \fBsmb.conf\fR(5) \fIsocket options\fR option.
+sets the TCP socket options. See the \fIsmb.conf
+\fR \fIsocket options\fR option.
.TP
\fBscope=<arg>\fR
sets the NetBIOS scope
@@ -193,8 +196,10 @@ source tree may contain additional options and information.
.PP
FreeBSD also has a smbfs, but it is not related to smbmount
.PP
-For Solaris, HP-UX and others you may want to look at \fBsmbsh\fR(1) or at other solutions, such as
-Sharity or perhaps replacing the SMB server with a NFS server.
+For Solaris, HP-UX and others you may want to look at
+\fBsmbsh(1)\fR or at other
+solutions, such as sharity or perhaps replacing the SMB server with
+a NFS server.
.SH "AUTHOR"
.PP
Volker Lendecke, Andrew Tridgell, Michael H. Warfield
@@ -207,5 +212,4 @@ The SAMBA Mailing list <URL:mailto:samba@samba.org>
is the preferred place to ask questions regarding these programs.
.PP
The conversion of this manpage for Samba 2.2 was performed
-by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
-was done by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/manpages/smbpasswd.5 b/docs/manpages/smbpasswd.5
index 46527236d9..07b04530c3 100644
--- a/docs/manpages/smbpasswd.5
+++ b/docs/manpages/smbpasswd.5
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBPASSWD" "5" "28 January 2003" "" ""
-
+.TH "SMBPASSWD" "5" "04 March 2003" "" ""
.SH NAME
smbpasswd \- The Samba encrypted password file
.SH SYNOPSIS
@@ -12,7 +11,7 @@ smbpasswd \- The Samba encrypted password file
\fIsmbpasswd\fR
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
smbpasswd is the Samba encrypted password file. It contains
the username, Unix user id and the SMB hashed passwords of the
@@ -96,7 +95,7 @@ This section contains flags that describe
the attributes of the users account. In the Samba 2.2 release
this field is bracketed by '[' and ']' characters and is always
13 characters in length (including the '[' and ']' characters).
-The contents of this field may be any of the following characters:
+The contents of this field may be any of the characters.
.RS
.TP 0.2i
\(bu
@@ -109,11 +108,13 @@ in the smbpasswd file.
\fBN\fR - This means the
account has no password (the passwords in the fields LANMAN
Password Hash and NT Password Hash are ignored). Note that this
-will only allow users to log on with no password if the \fI null passwords\fR parameter is set in the \fBsmb.conf\fR(5) config file.
+will only allow users to log on with no password if the \fI null passwords\fR parameter is set in the \fIsmb.conf(5)
+\fR config file.
.TP 0.2i
\(bu
\fBD\fR - This means the account
-is disabled and no SMB/CIFS logins will be allowed for this user.
+is disabled and no SMB/CIFS logins will be allowed for
+this user.
.TP 0.2i
\(bu
\fBW\fR - This means this account
@@ -138,7 +139,8 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbpasswd\fR(8), \fBSamba\fR(7), and
+\fBsmbpasswd(8)\fR
+samba(7) and
the Internet RFC1321 for details on the MD4 algorithm.
.SH "AUTHOR"
.PP
@@ -149,7 +151,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbpasswd.8 b/docs/manpages/smbpasswd.8
index b2821a8e01..5c7b16c2e9 100644
--- a/docs/manpages/smbpasswd.8
+++ b/docs/manpages/smbpasswd.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBPASSWD" "8" "28 January 2003" "" ""
-
+.TH "SMBPASSWD" "8" "04 March 2003" "" ""
.SH NAME
smbpasswd \- change a user's SMB password
.SH SYNOPSIS
@@ -13,23 +12,24 @@ smbpasswd \- change a user's SMB password
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
The smbpasswd program has several different
-functions, depending on whether it is run by the \fBroot\fR user
-or not. When run as a normal user it allows the user to change
+functions, depending on whether it is run by the \fBroot\fR
+user or not. When run as a normal user it allows the user to change
the password used for their SMB sessions on any machines that store
SMB passwords.
.PP
By default (when run with no arguments) it will attempt to
change the current user's SMB password on the local machine. This is
-similar to the way the \fBpasswd(1)\fR program works. \fB smbpasswd\fR differs from how the passwd program works
+similar to the way the \fBpasswd(1)\fR program works.
+\fBsmbpasswd\fR differs from how the passwd program works
however in that it is not \fBsetuid root\fR but works in
-a client-server mode and communicates with a
-locally running \fBsmbd\fR(8). As a consequence in order for this to
+a client-server mode and communicates with a locally running
+\fBsmbd(8)\fR. As a consequence in order for this to
succeed the smbd daemon must be running on the local machine. On a
UNIX machine the encrypted SMB passwords are usually stored in
-the \fBsmbpasswd\fR(5) file.
+the \fIsmbpasswd(5)\fR file.
.PP
When run by an ordinary user with no options, smbpasswd
will prompt them for their old SMB password and then ask them
@@ -41,12 +41,12 @@ the <Enter> key when asked for your old password.
.PP
smbpasswd can also be used by a normal user to change their
SMB password on remote machines, such as Windows NT Primary Domain
-Controllers. See the (\fI-r\fR) and \fI-U\fR options
-below.
+Controllers. See the (-r) and -U options below.
.PP
When run by root, smbpasswd allows new users to be added
and deleted in the smbpasswd file, as well as allows changes to
-the attributes of the user in this file to be made. When run by root, \fB smbpasswd\fR accesses the local smbpasswd file
+the attributes of the user in this file to be made. When run by root,
+\fBsmbpasswd\fR accesses the local smbpasswd file
directly, thus enabling changes to be made even if smbd is not
running.
.SH "OPTIONS"
@@ -82,7 +82,8 @@ will fail.
If the smbpasswd file is in the 'old' format (pre-Samba 2.0
format) there is no space in the user's password entry to write
-this information and the command will FAIL. See \fBsmbpasswd\fR(5) for details on the 'old' and new password file formats.
+this information and the command will FAIL. See \fBsmbpasswd(5)
+\fR for details on the 'old' and new password file formats.
This option is only available when running smbpasswd as
root.
@@ -95,7 +96,7 @@ disabled this option has no effect. Once the account is enabled then
the user will be able to authenticate via SMB once again.
If the smbpasswd file is in the 'old' format, then \fB smbpasswd\fR will FAIL to enable the account.
-See \fBsmbpasswd\fR(5) for
+See \fBsmbpasswd (5)\fR for
details on the 'old' and new password file formats.
This option is only available when running smbpasswd as root.
@@ -163,17 +164,17 @@ what name resolution services to use when looking up the NetBIOS
name of the host being connected to.
The options are :"lmhosts", "host", "wins" and "bcast". They
-cause names to be resolved as follows:
+cause names to be resolved as follows :
.RS
.TP 0.2i
\(bu
-lmhosts: Lookup an IP
+lmhosts : Lookup an IP
address in the Samba lmhosts file. If the line in lmhosts has
-no name type attached to the NetBIOS name (see the \fBlmhosts\fR(5) for details) then
+no name type attached to the NetBIOS name (see the lmhosts(5) for details) then
any name type matches for lookup.
.TP 0.2i
\(bu
-host: Do a standard host
+host : Do a standard host
name to IP address resolution, using the system \fI/etc/hosts
\fR, NIS, or DNS lookups. This method of name resolution
is operating system depended for instance on IRIX or Solaris this
@@ -183,13 +184,13 @@ type being queried is the 0x20 (server) name type, otherwise
it is ignored.
.TP 0.2i
\(bu
-wins: Query a name with
+wins : Query a name with
the IP address listed in the \fIwins server\fR
parameter. If no WINS server has been specified this method
will be ignored.
.TP 0.2i
\(bu
-bcast: Do a broadcast on
+bcast : Do a broadcast on
each of the known local interfaces listed in the
\fIinterfaces\fR parameter. This is the least
reliable of the name resolution methods as it depends on the
@@ -197,7 +198,8 @@ target host being on a locally connected subnet.
.RE
The default order is \fBlmhosts, host, wins, bcast\fR
-and without this parameter or any entry in the \fBsmb.conf\fR(5) file the name resolution methods will
+and without this parameter or any entry in the
+\fIsmb.conf\fR file the name resolution methods will
be attempted in this order.
.TP
\fB-m\fR
@@ -233,7 +235,7 @@ has been configured to use the experimental
switch is used to specify the password to be used with the
\fIldap admin
dn\fR Note that the password is stored in
-the \fIsecrets.tdb\fR and is keyed off
+the \fIprivate/secrets.tdb\fR and is keyed off
of the admin's DN. This means that if the value of \fIldap
admin dn\fR ever changes, the password will need to be
manually updated as well.
@@ -259,20 +261,23 @@ to modify attributes directly in the local smbpasswd file.
Since \fBsmbpasswd\fR works in client-server
mode communicating with a local smbd for a non-root user then
the smbd daemon must be running for this to work. A common problem
-is to add a restriction to the hosts that may access the \fB smbd\fR running on the local machine by specifying either \fIallow
-hosts\fR or \fIdeny hosts\fR entry in
-the \fBsmb.conf\fR(5) file and neglecting to
+is to add a restriction to the hosts that may access the \fB smbd\fR running on the local machine by specifying a
+\fIallow hosts\fR or \fIdeny hosts\fR
+entry in the \fIsmb.conf\fR file and neglecting to
allow "localhost" access to the smbd.
.PP
In addition, the smbpasswd command is only useful if Samba
-has been set up to use encrypted passwords. See the document "LanMan and NT Password Encryption in Samba" in the docs directory for details
+has been set up to use encrypted passwords. See the file
+\fIENCRYPTION.txt\fR in the docs directory for details
on how to do this.
.SH "VERSION"
.PP
-This man page is correct for version 3.0 of the Samba suite.
+This man page is correct for version 3.0 of
+the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbpasswd\fR(5), \fBSamba\fR(7).
+\fIsmbpasswd(5)\fR
+samba(7)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -282,7 +287,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbsh.1 b/docs/manpages/smbsh.1
index 463a456616..06d27090db 100644
--- a/docs/manpages/smbsh.1
+++ b/docs/manpages/smbsh.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBSH" "1" "28 January 2003" "" ""
-
+.TH "SMBSH" "1" "04 March 2003" "" ""
.SH NAME
smbsh \- Allows access to Windows NT filesystem using UNIX commands
.SH SYNOPSIS
@@ -13,7 +12,7 @@ smbsh \- Allows access to Windows NT filesystem using UNIX commands
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBsmbsh\fR allows you to access an NT filesystem
using UNIX commands such as \fBls\fR, \fB egrep\fR, and \fBrcp\fR. You must use a
@@ -23,7 +22,7 @@ to work correctly.
.TP
\fB-W WORKGROUP\fR
Override the default workgroup specified in the
-workgroup parameter of the \fBsmb.conf\fR(5) file
+workgroup parameter of the \fIsmb.conf\fR file
for this session. This may be needed to connect to some
servers.
.TP
@@ -45,20 +44,20 @@ services and in what order to resolve
host names to IP addresses. The option takes a space-separated
string of different name resolution options.
-The options are: "lmhosts", "host", "wins" and "bcast".
+The options are :"lmhosts", "host", "wins" and "bcast".
They cause names to be resolved as follows :
.RS
.TP 0.2i
\(bu
-lmhosts:
+lmhosts :
Lookup an IP address in the Samba lmhosts file. If the
line in lmhosts has no name type attached to the
NetBIOS name
-(see the \fBlmhosts\fR(5) for details)
-then any name type matches for lookup.
+(see the lmhosts(5)
+for details) then any name type matches for lookup.
.TP 0.2i
\(bu
-host:
+host :
Do a standard host name to IP address resolution, using
the system \fI/etc/hosts\fR, NIS, or DNS
lookups. This method of name resolution is operating
@@ -69,14 +68,14 @@ if the NetBIOS name type being queried is the 0x20
(server) name type, otherwise it is ignored.
.TP 0.2i
\(bu
-wins:
+wins :
Query a name with the IP address listed in the
\fIwins server\fR parameter. If no
WINS server has been specified this method will be
ignored.
.TP 0.2i
\(bu
-bcast:
+bcast :
Do a broadcast on each of the known local interfaces
listed in the \fIinterfaces\fR
parameter. This is the least reliable of the name
@@ -85,13 +84,14 @@ being on a locally connected subnet.
.RE
If this parameter is not set then the name resolve order
-defined in the \fBsmb.conf\fR(5) file parameter
-(\fIname resolve order\fR) will be used.
+defined in the \fIsmb.conf\fR file parameter
+(name resolve order) will be used.
The default order is lmhosts, host, wins, bcast. Without
this parameter or any entry in the \fIname resolve order
-\fR parameter of the \fBsmb.conf\fR(5) file, the name resolution methods
-will be attempted in this order.
+\fR parameter of the \fIsmb.conf\fR
+file, the name resolution methods will be attempted in this
+order.
.TP
\fB-d <debug level>\fR
debug level is an integer from 0 to 10.
@@ -100,7 +100,7 @@ The default value if this parameter is not specified
is zero.
The higher this value, the more detail will be logged
-about the activities of \fBnmblookup\fR(1). At level
+about the activities of \fBnmblookup\fR. At level
0, only critical errors and serious warnings will be logged.
.TP
\fB-l logfilename\fR
@@ -118,11 +118,13 @@ value is specified at compile time.
To use the \fBsmbsh\fR command, execute \fB smbsh\fR from the prompt and enter the username and password
that authenticates you to the machine running the Windows NT
operating system.
+.PP
.nf
-system% \fBsmbsh\fR
-Username: \fBuser\fR
-Password: \fBXXXXXXX\fR
+ system% \fBsmbsh\fR
+ Username: \fBuser\fR
+ Password: \fBXXXXXXX\fR
+
.fi
.PP
Any dynamically linked command you execute from
@@ -136,7 +138,8 @@ names for that machine. You could then, for example, use the \fB cd\fR command t
edit files, and \fBrcp\fR to copy files.
.SH "VERSION"
.PP
-This man page is correct for version 3.0 of the Samba suite.
+This man page is correct for version 3.0 of
+the Samba suite.
.SH "BUGS"
.PP
\fBsmbsh\fR works by intercepting the standard
@@ -150,7 +153,8 @@ of UNIX have a \fBfile\fR command that will
describe how a program was linked.
.SH "SEE ALSO"
.PP
-\fBsmbd\fR(8), \fBsmb.conf\fR(5)
+\fBsmbd(8)\fR
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -160,7 +164,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbspool.8 b/docs/manpages/smbspool.8
index e532b8301f..835494b534 100644
--- a/docs/manpages/smbspool.8
+++ b/docs/manpages/smbspool.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBSPOOL" "8" "28 January 2003" "" ""
-
+.TH "SMBSPOOL" "8" "04 March 2003" "" ""
.SH NAME
smbspool \- send a print file to an SMB printer
.SH SYNOPSIS
@@ -13,7 +12,7 @@ smbspool \- send a print file to an SMB printer
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
smbspool is a very small print spooling program that
sends a print file to an SMB printer. The command-line arguments
@@ -78,10 +77,12 @@ name of the file to print. If this argument is not specified
then the print file is read from the standard input.
.SH "VERSION"
.PP
-This man page is correct for version 2.2 of the Samba suite.
+This man page is correct for version 2.2 of
+the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbd\fR(8) and \fBSamba\fR(7).
+\fBsmbd(8)\fR
+and samba(7)
.SH "AUTHOR"
.PP
\fBsmbspool\fR was written by Michael Sweet
@@ -94,7 +95,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbstatus.1 b/docs/manpages/smbstatus.1
index 0b5a973f60..9fb96f1c43 100644
--- a/docs/manpages/smbstatus.1
+++ b/docs/manpages/smbstatus.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBSTATUS" "1" "28 January 2003" "" ""
-
+.TH "SMBSTATUS" "1" "04 March 2003" "" ""
.SH NAME
smbstatus \- report on current Samba connections
.SH SYNOPSIS
@@ -13,7 +12,7 @@ smbstatus \- report on current Samba connections
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBsmbstatus\fR is a very simple program to
list the current Samba connections.
@@ -40,7 +39,7 @@ causes smbstatus to only list locks.
causes smbstatus to include byte range locks.
.TP
\fB-p|--processes\fR
-print a list of \fBsmbd\fR(8) processes and exit.
+print a list of \fBsmbd(8)\fR processes and exit.
Useful for scripting.
.TP
\fB-S|--shares\fR
@@ -49,7 +48,8 @@ causes smbstatus to only list shares.
\fB-s|--conf=<configuration file>\fR
The default configuration file name is
determined at compile time. The file specified contains the
-configuration details required by the server. See \fBsmb.conf\fR(5) for more information.
+configuration details required by the server. See \fIsmb.conf(5)\fR
+ for more information.
.TP
\fB-u|--user=<username>\fR
selects information relevant to
@@ -60,7 +60,8 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbd\fR(8) and \fBsmb.conf\fR(5).
+\fBsmbd(8)\fR and
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -70,7 +71,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/smbtar.1 b/docs/manpages/smbtar.1
index 54de9fcc80..4ed25bbc75 100644
--- a/docs/manpages/smbtar.1
+++ b/docs/manpages/smbtar.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBTAR" "1" "28 January 2003" "" ""
-
+.TH "SMBTAR" "1" "04 March 2003" "" ""
.SH NAME
smbtar \- shell script for backing up SMB/CIFS shares directly to UNIX tape drives
.SH SYNOPSIS
@@ -13,10 +12,11 @@ smbtar \- shell script for backing up SMB/CIFS shares directly to UNIX tape dri
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBsmbtar\fR is a very small shell script on top
-of \fBsmbclient\fR(1) which dumps SMB shares directly to tape.
+of \fBsmbclient(1)\fR
+which dumps SMB shares directly to tape.
.SH "OPTIONS"
.TP
\fB-s server\fR
@@ -72,7 +72,8 @@ from the tar file.
.TP
\fB-l log level\fR
Log (debug) level. Corresponds to the
-\fI-d\fR flag of \fBsmbclient\fR(1).
+\fI-d\fR flag of \fBsmbclient(1)
+\fR.
.SH "ENVIRONMENT VARIABLES"
.PP
The \fI$TAPE\fR variable specifies the
@@ -90,14 +91,18 @@ on entire shares; should work on file lists. smbtar works best
with GNU tar and may not work well with other versions.
.SH "DIAGNOSTICS"
.PP
-See the \fBDIAGNOSTICS\fR section for the \fBsmbclient\fR(1) command.
+See the \fBDIAGNOSTICS\fR section for the
+\fBsmbclient(1)\fR
+ command.
.SH "VERSION"
.PP
This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmbd\fR(8), \fBsmbclient\fR(1), \fBsmb.conf\fR(5).
+\fBsmbd(8)\fR
+\fBsmbclient(1)\fR
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -110,7 +115,7 @@ wrote the tar extension and this man page. The \fBsmbtar\fR
script was heavily rewritten and improved by Martin Kraemer <URL:mailto:Martin.Kraemer@mch.sni.de>. Many
thanks to everyone who suggested extensions, improvements, bug
fixes, etc. The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
-Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter.
diff --git a/docs/manpages/smbumount.8 b/docs/manpages/smbumount.8
index c8eb19831e..4c3688d63f 100644
--- a/docs/manpages/smbumount.8
+++ b/docs/manpages/smbumount.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SMBUMOUNT" "8" "28 January 2003" "" ""
-
+.TH "SMBUMOUNT" "8" "04 March 2003" "" ""
.SH NAME
smbumount \- smbfs umount for normal users
.SH SYNOPSIS
@@ -27,7 +26,8 @@ to make umount setuid root.
The directory to unmount.
.SH "SEE ALSO"
.PP
-\fBsmbmount\fR(8)
+\fBsmbmount(8)\fR
+
.SH "AUTHOR"
.PP
Volker Lendecke, Andrew Tridgell, Michael H. Warfield
@@ -40,5 +40,4 @@ The SAMBA Mailing list <URL:mailto:samba@samba.org>
is the preferred place to ask questions regarding these programs.
.PP
The conversion of this manpage for Samba 2.2 was performed
-by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0
-was done by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/manpages/swat.8 b/docs/manpages/swat.8
index 8893484c2e..6466a0a79d 100644
--- a/docs/manpages/swat.8
+++ b/docs/manpages/swat.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "SWAT" "8" "28 January 2003" "" ""
-
+.TH "SWAT" "8" "04 March 2003" "" ""
.SH NAME
swat \- Samba Web Administration Tool
.SH SYNOPSIS
@@ -13,10 +12,10 @@ swat \- Samba Web Administration Tool
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBswat\fR allows a Samba administrator to
-configure the complex \fBsmb.conf\fR(5) file via a Web browser. In addition,
+configure the complex \fI smb.conf(5)\fR file via a Web browser. In addition,
a \fBswat\fR configuration page has help links
to all the configurable options in the \fIsmb.conf\fR file allowing an
administrator to easily look up the effects of any change.
@@ -27,8 +26,8 @@ administrator to easily look up the effects of any change.
\fB-s smb configuration file\fR
The default configuration file path is
determined at compile time. The file specified contains
-the configuration details required by the \fBsmbd\fR(8) server. This is the file
-that \fBswat\fR will modify.
+the configuration details required by the \fBsmbd
+\fR server. This is the file that \fBswat\fR will modify.
The information in this file includes server-specific
information such as what printcap file to use, as well as
descriptions of all the services that the server is to provide.
@@ -107,21 +106,26 @@ This file must contain a mapping of service name
(e.g., tcp).
.TP
\fB\fI/usr/local/samba/lib/smb.conf\fB\fR
-This is the default location of the \fBsmb.conf\fR(5) server configuration file that swat edits. Other
+This is the default location of the \fIsmb.conf(5)
+\fR server configuration file that swat edits. Other
common places that systems install this file are \fI /usr/samba/lib/smb.conf\fR and \fI/etc/smb.conf
\fR. This file describes all the services the server
is to make available to clients.
.SH "WARNINGS"
.PP
-\fBswat\fR will rewrite your \fBsmb.conf\fR(5) file. It will rearrange the entries and delete all
+\fBswat\fR will rewrite your \fIsmb.conf
+\fR file. It will rearrange the entries and delete all
comments, \fIinclude=\fR and \fIcopy=
\fR options. If you have a carefully crafted \fI smb.conf\fR then back it up or don't use swat!
.SH "VERSION"
.PP
-This man page is correct for version 2.2 of the Samba suite.
+This man page is correct for version 2.2 of
+the Samba suite.
.SH "SEE ALSO"
.PP
-\fBinetd(5)\fR, \fBsmbd\fR(8), \fBsmb.conf\fR(5)
+\fBinetd(5)\fR,
+\fBsmbd(8)\fR
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -131,7 +135,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for
-Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/testparm.1 b/docs/manpages/testparm.1
index fec26e18ae..c459eeea70 100644
--- a/docs/manpages/testparm.1
+++ b/docs/manpages/testparm.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "TESTPARM" "1" "28 January 2003" "" ""
-
+.TH "TESTPARM" "1" "04 March 2003" "" ""
.SH NAME
testparm \- check an smb.conf configuration file for internal correctness
.SH SYNOPSIS
@@ -13,10 +12,10 @@ testparm \- check an smb.conf configuration file for internal correctness
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBtestparm\fR is a very simple test program
-to check an \fBsmbd\fR(8) configuration file for
+to check an \fBsmbd\fR configuration file for
internal correctness. If this program reports no problems, you
can use the configuration file with confidence that \fBsmbd
\fR will successfully load the configuration file.
@@ -50,7 +49,9 @@ This is useful for testing include files specified with the
.TP
\fB-v\fR
If this option is specified, testparm
-will also output all options that were not used in \fBsmb.conf\fR(5) and are thus set to their defaults.
+will also output all options that were not used in
+\fIsmb.conf\fR and are thus set to
+their defaults.
.TP
\fB-t encoding\fR
Output data in specified encoding.
@@ -58,13 +59,13 @@ Output data in specified encoding.
\fBconfigfilename\fR
This is the name of the configuration file
to check. If this parameter is not present then the
-default \fBsmb.conf\fR(5) file will be checked.
+default \fIsmb.conf\fR file will be checked.
.TP
\fBhostname\fR
If this parameter and the following are
specified, then \fBtestparm\fR will examine the \fIhosts
allow\fR and \fIhosts deny\fR
-parameters in the \fBsmb.conf\fR(5) file to
+parameters in the \fIsmb.conf\fR file to
determine if the hostname with this IP address would be
allowed access to the \fBsmbd\fR server. If
this parameter is supplied, the hostIP parameter must also
@@ -76,9 +77,9 @@ in the previous parameter. This address must be supplied
if the hostname parameter is supplied.
.SH "FILES"
.TP
-\fBsmb.conf(5)\fR
+\fB\fIsmb.conf\fB\fR
This is usually the name of the configuration
-file used by \fBsmbd\fR(8).
+file used by \fBsmbd\fR.
.SH "DIAGNOSTICS"
.PP
The program will issue a message saying whether the
@@ -92,7 +93,8 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBsmb.conf\fR(5), \fBsmbd\fR(8)
+\fIsmb.conf(5)\fR
+\fBsmbd(8)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -102,7 +104,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/testprns.1 b/docs/manpages/testprns.1
index bb567b2a96..f70b383f9d 100644
--- a/docs/manpages/testprns.1
+++ b/docs/manpages/testprns.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "TESTPRNS" "1" "28 January 2003" "" ""
-
+.TH "TESTPRNS" "1" "04 March 2003" "" ""
.SH NAME
testprns \- check printer name for validity with smbd
.SH SYNOPSIS
@@ -13,11 +12,11 @@ testprns \- check printer name for validity with smbd
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBtestprns\fR is a very simple test program
to determine whether a given printer name is valid for use in
-a service to be provided by \fBsmbd\fR(8).
+a service to be provided by \fB smbd(8)\fR
.PP
"Valid" in this context means "can be found in the
printcap specified". This program is very stupid - so stupid in
@@ -35,7 +34,8 @@ Note that no validation or checking of the printcap syntax is
done beyond that required to extract the printer name. It may
be that the print spooling system is more forgiving or less
forgiving than \fBtestprns\fR. However, if
-\fBtestprns\fR finds the printer then \fBsmbd\fR(8) should do so as well.
+\fBtestprns\fR finds the printer then
+\fBsmbd\fR should do so as well.
.TP
\fBprintcapname\fR
This is the name of the printcap file within
@@ -74,7 +74,8 @@ the Samba suite.
.SH "SEE ALSO"
.PP
\fIprintcap(5)\fR,
-\fBsmbd\fR(8), \fBsmbclient\fR(1)
+\fBsmbd(8)\fR
+\fBsmbclient(1)\fR
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -84,7 +85,7 @@ to the way the Linux kernel is developed.
.PP
The original Samba man pages were written by Karl Auer.
The man page sources were converted to YODL format (another
-excellent piece of Open Source software, available at ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
+excellent piece of Open Source software, available at
+ftp://ftp.icce.rug.nl/pub/unix/ <URL:ftp://ftp.icce.rug.nl/pub/unix/>) and updated for the Samba 2.0
release by Jeremy Allison. The conversion to DocBook for
-Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2
-for Samba 3.0 was done by Alexander Bokovoy.
+Samba 2.2 was done by Gerald Carter
diff --git a/docs/manpages/vfstest.1 b/docs/manpages/vfstest.1
index 134ee79c47..9877e2e461 100644
--- a/docs/manpages/vfstest.1
+++ b/docs/manpages/vfstest.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "VFSTEST" "1" "28 January 2003" "" ""
-
+.TH "VFSTEST" "1" "04 March 2003" "" ""
.SH NAME
vfstest \- tool for testing samba VFS modules
.SH SYNOPSIS
@@ -13,7 +12,7 @@ vfstest \- tool for testing samba VFS modules
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
\fBvfstest\fR is a small command line
utility that has the ability to test dso samba VFS modules. It gives the
diff --git a/docs/manpages/wbinfo.1 b/docs/manpages/wbinfo.1
index b8ce01f1c1..3cc35e494d 100644
--- a/docs/manpages/wbinfo.1
+++ b/docs/manpages/wbinfo.1
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "WBINFO" "1" "28 January 2003" "" ""
-
+.TH "WBINFO" "1" "04 March 2003" "" ""
.SH NAME
wbinfo \- Query information from winbind daemon
.SH SYNOPSIS
@@ -13,51 +12,53 @@ wbinfo \- Query information from winbind daemon
.SH "DESCRIPTION"
.PP
-This tool is part of the \fBSamba\fR(7) suite.
+This tool is part of the Samba suite.
.PP
The \fBwbinfo\fR program queries and returns information
-created and used by the \fBwinbindd\fR(8) daemon.
+created and used by the \fB winbindd(8)\fR daemon.
.PP
-The \fBwinbindd\fR(8) daemon must be configured
+The \fBwinbindd(8)\fR daemon must be configured
and running for the \fBwbinfo\fR program to be able
to return information.
.SH "OPTIONS"
.TP
\fB-u\fR
This option will list all users available
-in the Windows NT domain for which the \fBwinbindd\fR(8) daemon is operating in. Users in all trusted domains
+in the Windows NT domain for which the \fBwinbindd(8)
+\fR daemon is operating in. Users in all trusted domains
will also be listed. Note that this operation does not assign
-user ids to any users that have not already been seen by \fBwinbindd\fR(8)
-\&.
+user ids to any users that have not already been seen by
+\fBwinbindd(8)\fR.
.TP
\fB-g\fR
This option will list all groups available
-in the Windows NT domain for which the \fBSamba\fR(7) daemon is operating in. Groups in all trusted domains
+in the Windows NT domain for which the \fBwinbindd(8)
+\fR daemon is operating in. Groups in all trusted domains
will also be listed. Note that this operation does not assign
-group ids to any groups that have not already been
-seen by \fBwinbindd\fR(8).
+group ids to any groups that have not already been seen by
+\fBwinbindd(8)\fR.
.TP
\fB-N name\fR
The \fI-N\fR option
-queries \fBwinbindd\fR(8) to query the WINS
+queries \fBwinbindd(8)\fR to query the WINS
server for the IP address associated with the NetBIOS name
specified by the \fIname\fR parameter.
.TP
\fB-I ip\fR
The \fI-I\fR option
-queries \fBwinbindd\fR(8) to send a node status
+queries \fBwinbindd(8)\fR to send a node status
request to get the NetBIOS name associated with the IP address
specified by the \fIip\fR parameter.
.TP
\fB-n name\fR
The \fI-n\fR option
-queries \fBwinbindd\fR(8) for the SID
+queries \fBwinbindd(8)\fR for the SID
associated with the name specified. Domain names can be specified
before the user name by using the winbind separator character.
For example CWDOM1/Administrator refers to the Administrator
user in the domain CWDOM1. If no domain is specified then the
-domain used is the one specified in the \fBsmb.conf\fR(5) \fIworkgroup
-\fR parameter.
+domain used is the one specified in the \fIsmb.conf\fR
+\fIworkgroup\fR parameter.
.TP
\fB-s sid\fR
Use \fI-s\fR to resolve
@@ -78,12 +79,11 @@ the winbind gid range then the operation will fail.
.TP
\fB-S sid\fR
Convert a SID to a UNIX user id. If the SID
-does not correspond to a UNIX user mapped by \fBwinbindd\fR(8) then the operation will fail.
+does not correspond to a UNIX user mapped by \fB winbindd(8)\fR then the operation will fail.
.TP
\fB-Y sid\fR
Convert a SID to a UNIX group id. If the SID
-does not correspond to a UNIX group mapped by \fBwinbindd\fR(8) then
-the operation will fail.
+does not correspond to a UNIX group mapped by \fB winbindd(8)\fR then the operation will fail.
.TP
\fB-t\fR
Verify that the workstation trust account
@@ -92,7 +92,7 @@ domain is working.
.TP
\fB-m\fR
Produce a list of domains trusted by the
-Windows NT server \fBwinbindd\fR(8) contacts
+Windows NT server \fBwinbindd(8)\fR contacts
when resolving names. This list does not include the Windows
NT domain the server is a Primary Domain Controller for.
.TP
@@ -114,7 +114,8 @@ Windows 2000 servers only).
.SH "EXIT STATUS"
.PP
The wbinfo program returns 0 if the operation
-succeeded, or 1 if the operation failed. If the \fBwinbindd\fR(8) daemon is not working \fBwbinfo\fR will always return
+succeeded, or 1 if the operation failed. If the \fBwinbindd(8)
+\fR daemon is not working \fBwbinfo\fR will always return
failure.
.SH "VERSION"
.PP
@@ -122,7 +123,8 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fBwinbindd\fR(8)
+\fBwinbindd(8)\fR
+
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -134,5 +136,4 @@ to the way the Linux kernel is developed.
were written by Tim Potter.
.PP
The conversion to DocBook for Samba 2.2 was done
-by Gerald Carter. The conversion to DocBook XML 4.2 for Samba
-3.0 was done by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/manpages/winbindd.8 b/docs/manpages/winbindd.8
index a46c0769b5..696de8537b 100644
--- a/docs/manpages/winbindd.8
+++ b/docs/manpages/winbindd.8
@@ -3,8 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "WINBINDD" "8" "18 February 2003" "" ""
-
+.TH "WINBINDD" "8" "04 March 2003" "" ""
.SH NAME
winbindd \- Name Service Switch daemon for resolving names from NT servers
.SH SYNOPSIS
@@ -13,7 +12,7 @@ winbindd \- Name Service Switch daemon for resolving names from NT servers
.SH "DESCRIPTION"
.PP
-This program is part of the \fBSamba\fR(7) suite.
+This program is part of the Samba suite.
.PP
\fBwinbindd\fR is a daemon that provides
a service for the Name Service Switch capability that is present
@@ -60,11 +59,13 @@ For example, the following simple configuration in the
\fI/etc/nsswitch.conf\fR file can be used to initially
resolve user and group information from \fI/etc/passwd
\fR and \fI/etc/group\fR and then from the
-Windows NT server.
+Windows NT server.
+.PP
.nf
passwd: files winbind
group: files winbind
+
.fi
.PP
The following simple configuration in the
@@ -121,7 +122,7 @@ Advantage of this is that responses are accurate and fast.
.TP
\fB-s|--conf=smb.conf\fR
Specifies the location of the all-important
-\fBsmb.conf\fR(5) file.
+\fIsmb.conf\fR file.
.SH "NAME AND ID RESOLUTION"
.PP
Users and groups on a Windows NT server are assigned
@@ -146,7 +147,8 @@ and group rids.
.SH "CONFIGURATION"
.PP
Configuration of the \fBwinbindd\fR daemon
-is done through configuration parameters in the \fBsmb.conf\fR(5) file. All parameters should be specified in the
+is done through configuration parameters in the \fIsmb.conf(5)
+\fR file. All parameters should be specified in the
[global] section of smb.conf.
.TP 0.2i
\(bu
@@ -183,23 +185,28 @@ following setup. This was tested on a RedHat 6.2 Linux box.
.PP
In \fI/etc/nsswitch.conf\fR put the
following:
+.PP
.nf
passwd: files winbind
group: files winbind
+
.fi
.PP
-In \fI/etc/pam.d/*\fR replace the \fI auth\fR lines with something like this:
+In \fI/etc/pam.d/*\fR replace the
+\fIauth\fR lines with something like this:
+.PP
.nf
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
+
.fi
.PP
-Note in particular the use of the \fIsufficient
-\fR keyword and the \fIuse_first_pass\fR keyword.
+Note in particular the use of the \fIsufficient\fR
+keyword and the \fIuse_first_pass\fR keyword.
.PP
Now replace the account lines with this:
.PP
@@ -209,22 +216,25 @@ Now replace the account lines with this:
The next step is to join the domain. To do that use the
\fBsmbpasswd\fR program like this:
.PP
-\fBnet join -S PDC -U Administrator\fR
+\fBsmbpasswd -j DOMAIN -r PDC -U
+Administrator\fR
.PP
The username after the \fI-U\fR can be any
Domain user that has administrator privileges on the machine.
-Substitute the name or IP of your PDC for "PDC".
+Substitute your domain name for "DOMAIN" and the name of your PDC
+for "PDC".
.PP
Next copy \fIlibnss_winbind.so\fR to
-\fI/lib\fR and \fIpam_winbind.so
-\fR to \fI/lib/security\fR. A symbolic link needs to be
+\fI/lib\fR and \fIpam_winbind.so\fR
+to \fI/lib/security\fR. A symbolic link needs to be
made from \fI/lib/libnss_winbind.so\fR to
\fI/lib/libnss_winbind.so.2\fR. If you are using an
older version of glibc then the target of the link should be
\fI/lib/libnss_winbind.so.1\fR.
.PP
-Finally, setup a \fBsmb.conf\fR(5) containing directives like the
-following:
+Finally, setup a \fIsmb.conf\fR containing directives like the
+following:
+.PP
.nf
[global]
@@ -237,6 +247,7 @@ following:
workgroup = DOMAIN
security = domain
password server = *
+
.fi
.PP
Now start winbindd and you should find that your user and
@@ -250,9 +261,9 @@ commands \fBgetent passwd\fR and \fBgetent group
The following notes are useful when configuring and
running \fBwinbindd\fR:
.PP
-\fBnmbd\fR(8) must be running on the local machine
-for \fBwinbindd\fR to work. \fBwinbindd\fR queries
-the list of trusted domains for the Windows NT server
+\fBnmbd\fR must be running on the local machine
+for \fBwinbindd\fR to work. \fBwinbindd\fR
+queries the list of trusted domains for the Windows NT server
on startup and when a SIGHUP is received. Thus, for a running \fB winbindd\fR to become aware of new trust relationships between
servers, it must be sent a SIGHUP signal.
.PP
@@ -278,8 +289,8 @@ The following signals can be used to manipulate the
\fBwinbindd\fR daemon.
.TP
\fBSIGHUP\fR
-Reload the \fBsmb.conf\fR(5) file and
-apply any parameter changes to the running
+Reload the \fIsmb.conf(5)\fR
+file and apply any parameter changes to the running
version of winbindd. This signal also clears any cached
user and group information. The list of other domains trusted
by winbindd is also reloaded.
@@ -322,7 +333,10 @@ This man page is correct for version 3.0 of
the Samba suite.
.SH "SEE ALSO"
.PP
-\fInsswitch.conf(5)\fR, \fBSamba\fR(7), \fBwbinfo\fR(8), \fBsmb.conf\fR(5)
+\fInsswitch.conf(5)\fR,
+samba(7)
+wbinfo(1)
+smb.conf(5)
.SH "AUTHOR"
.PP
The original Samba software and related utilities
@@ -330,9 +344,8 @@ were created by Andrew Tridgell. Samba is now developed
by the Samba Team as an Open Source project similar
to the way the Linux kernel is developed.
.PP
-\fBwbinfo\fR and \fBwinbindd\fR were
-written by Tim Potter.
+\fBwbinfo\fR and \fBwinbindd\fR
+were written by Tim Potter.
.PP
The conversion to DocBook for Samba 2.2 was done
-by Gerald Carter. The conversion to DocBook XML 4.2 for
-Samba 3.0 was done by Alexander Bokovoy.
+by Gerald Carter
diff --git a/docs/roadmap-3.html b/docs/roadmap-3.html
index 4028a7bbdc..00fd31b32e 100644
--- a/docs/roadmap-3.html
+++ b/docs/roadmap-3.html
@@ -56,7 +56,7 @@
<h3>Roadmap to 3.0</h3>
-<p><em>Page Last Updated</em> : $Date: 2003/01/16 02:20:24 $</em>
+<p><em>Page Last Updated</em> : $Date: 2002/11/01 15:24:20 $</em>
<p><em>Estimated shipdate</em> : When it is ready.
<p><em>Current Alpha Release</em> : <a href="http://www.samba.org/samba/ftp/alpha/samba-3.0alpha20.tar.gz">Samba-3.0alpha20</a>
<p><em>Goals for 3.0alpha21 Release</em> :
diff --git a/docs/textdocs/CreatingGroupProfiles-Win2K.txt b/docs/textdocs/CreatingGroupProfiles-Win2K.txt
new file mode 100644
index 0000000000..11a326bafb
--- /dev/null
+++ b/docs/textdocs/CreatingGroupProfiles-Win2K.txt
@@ -0,0 +1,112 @@
+You must first convert the profile from a local profile to a domain
+profile on the MS Windows workstation as follows:
+
+1. Log on as the LOCAL workstation administrator.
+
+2. Right click on the 'My Computer' Icon, select 'Properties'
+
+3. Click on the 'User Profiles' tab
+
+4. Select the profile you wish to convert (click on it once)
+
+5. Click on the button 'Copy To'
+
+6. In the "Permitted to use" box, click on the 'Change' button.
+
+7. Click on the 'Look in" area that lists the machine name, when you click
+here it will open up a selection box. Click on the domain to which the
+profile must be accessible.
+
+Note: You will need to log on if a logon box opens up. Eg: In the connect
+as: MIDEARTH\root, password: mypassword.
+
+8. To make the profile capable of being used by anyone select 'Everyone'
+
+9. Click OK. The Selection box will close.
+
+10. Now click on the 'Ok' button to create the profile in the path you
+nominated.
+
+Done. You now have a profile that can be editted using the samba-3.0.0
+profiles tool.
+
+
+
+> Keep profiles clean and small by making them mandatory.
+> See the Win2K/WinXP resource kits for details how to create a mandatory profile.
+>
+> Can you do this when using Samba as a PDC? I thought you could only do
+> policies if you had a Win2K server?
+
+No difference. Samba handles the profile ACLs the same way Win2K does.
+But understand that it is the Win2K client that does all the processing
+of the SIDs on the ACLs in the profile NTUser.DAT file.
+
+
+Note:
+-----
+> Unless your users are using Outlook (or virtually any E-mail client for
+> that matter) I have a few users with .PST files that are over 1Gig in
+> size. This is due to the regular amount of data files that we are sent. I
+> have discussed with them the need to trim those files down.
+
+Under NT/2K the use of mandotory profiles forces the use of MS Exchange
+storage of mail data. That keeps desktop profiles usable.
+
+
+Note:
+-----
+ Date: Tue, 19 Nov 2002 08:32:17 -0000
+ From: John Russell <apca72@dsl.pipex.com>
+ Reply-To: John Russell <j.c.russell@sussex.ac.uk>
+ To: samba@lists.samba.org
+ Subject: Re: [Samba] Samba and Windows XP
+
+ [ The following text is in the "iso-8859-1" character set. ]
+ [ Your display is set for the "US-ASCII" character set. ]
+ [ Some characters may be displayed incorrectly. ]
+
+ this is a security check new to Windows XP (or maybe only
+ Windows XP service pack 1). It can be disabled via a group policy in
+ Active Directory. The policy is:
+
+ "Computer Configuration\Administrative Templates\System\User
+ Profiles\Do not check for user ownership of Roaming Profile Folders"
+
+ ...and it should be set to "Enabled".
+
+ Does the new version of samba have an Active Directory analogue? If so,
+ then you may be able to set the policy through this.
+
+ If you cannot set group policies in samba, then you may be able to set
+ the policy locally on each machine. If you want to try this, then do
+ the following (N.B. I don't know for sure that this will work in the
+ same way as a domain group policy):
+
+ On the XP workstation log in with an Administrator account.
+
+ Click: "Start", "Run"
+ Type: "mmc"
+ Click: "OK"
+
+ A Microsoft Management Console should appear.
+ Click: File, "Add/Remove Snap-in...", "Add"
+ Double-Click: "Group Policy"
+ Click: "Finish", "Close"
+ Click: "OK"
+
+ In the "Console Root" window:
+ Expand: "Local Computer Policy", "Computer Configuration",
+ "Administrative Templates", "System", "User Profiles"
+ Double-Click: "Do not check for user ownership of Roaming Profile
+ Folders"
+ Select: "Enabled"
+ Click: OK"
+
+ Close the whole console. You do not need to save the settings (this
+ refers to the console settings rather than the policies you have
+ changed).
+
+ Reboot.
+
+
diff --git a/docs/textdocs/CreatingGroupProfiles-Win9X.txt b/docs/textdocs/CreatingGroupProfiles-Win9X.txt
new file mode 100644
index 0000000000..3d9c239a61
--- /dev/null
+++ b/docs/textdocs/CreatingGroupProfiles-Win9X.txt
@@ -0,0 +1,58 @@
+To : "C.Lee Taylor" <leet@leenx.co.za>
+Cc : Bart <bartro@go.ro>,
+ samba@lists.samba.org
+Attchmnt:
+Subject : Re: [Samba] Profiles ...
+----- Message Text -----
+On Fri, 17 Jan 2003, C.Lee Taylor wrote:
+
+> John H Terpstra wrote:
+> > On Thu, 16 Jan 2003, C.Lee Taylor wrote:
+> >
+> >
+> >>Bart wrote:
+> >>
+> >>>Or ju put the documents on the home drive and change the target of the
+> >>>'my documents' folder to this home drive.
+> >>>
+> >>>that way you have security & all the docs on a mounted drive.
+> >>
+> >> We did that with Win98SE, and found that some times it would change
+> >>back or to something that should cause problems ... that is why I was
+> >>hoping, there was away around this ... but then it seems not.
+> >
+> >
+> > Did you check the Win98 Resource Kit for how to configure this?
+> No, just searched the registery for the set strings, changed them and
+> tested. Also used support.microsoft.com for other info ... Don't have
+> access to the Resource kits, unless they have not put them up on the net
+> and it's legal for us to use them wihtout paying?
+
+That method does not work well. You need the Win98 Group Policy Editor to
+set this up. It can be found on the Original full product Win98
+installation CD under tools/reskit/netadmin/poledit. You install this
+using the Add/Remove Programs facility and then click on the 'Have Disk'
+tab.
+
+Use the Group Policy Editor to create a policy file that specifies the
+location of user profiles and/or the 'My Documents' etc. stuff. You then
+save these settings in a file called Config.POL that needs to be placed in
+the root of the [NETLOGON] share. If your Win98 is configured to log onto
+the Samba Domain, it will automatically read this file and update the
+Win98 registry of the machine that is logging on.
+
+All of this is covered in the Win98 Resource Kit documentation.
+
+If you do not do it this way, then every so often Win98 will check the
+integrity of the registry and will restore it's settings from the back-up
+copy of the registry it stores on each Win98 machine. Hence, your symptoms
+of things changing back to original settings.
+
+Hope this helps. I have omitted quite a lot of detail you will need to
+figure out. Yell if you need more help.
+
+- John T.
+--
+John H Terpstra
+Email: jht@samba.org
+
diff --git a/docs/textdocs/CreatingGroupProfilesInNT4.txt b/docs/textdocs/CreatingGroupProfilesInNT4.txt
new file mode 100644
index 0000000000..666788643e
--- /dev/null
+++ b/docs/textdocs/CreatingGroupProfilesInNT4.txt
@@ -0,0 +1,71 @@
+Unfortunately, the Resource Kit info is Win NT4/2K version specific.
+
+Here is a quick guide:
+
+1. On your NT4 Domain Controller, right click on 'My Computer', then
+select the tab labelled 'User Profiles'.
+
+2. Select a user profile you want to migrate and click on it.
+
+Note: I am using the term "migrate" lossely. You can copy a profile to
+create a group profile. You can give the user 'Everyone' rights to the
+profile you copy this to. That is what you need to do, since your samba
+domain is not a member of a trust relationship with your NT4 PDC.
+
+3. Click the 'Copy To' button.
+
+4. In the box labelled 'Copy Profile to' add your new path, eg:
+c:\temp\foobar
+
+5. Click on the button labelled 'Change' in the "Permitted to use" box.
+
+6. Click on the group 'Everyone' and then click OK. This closes the
+'chose user' box.
+
+7. Now click OK.
+
+Follow the above for every profile you need to migrate.
+
+
+Side bar Notes:
+---------------
+You should obtain the SID of your NT4 domain. You can use smbpasswd to do
+this. Read the man page.
+
+With Samba-3.0.0 alpha code you can import all you NT4 domain accounts
+using the net samsync method. This way you can retain your profile
+settings as well as all your users.
+
+Also Note:
+----------
+The above method can be used to create mandatory profiles also. To convert
+a group profile into a mandatory profile simply locate the NTUser.DAT file
+in the copied profile and rename it to NTUser.MAN.
+
+
+Next Note:
+----------
+The W2K professional resource kit has moveuser.exe:
+
+Description:
+
+ moveuser.exe changes the security of a profile from one user to another.
+ This allows the account domain to change, and/or the user name to change.
+
+
+Next Note:
+----------
+You can identify the SID by using GetSID.exe from the Windows NT Server 4.0
+Resource Kit.
+
+Windows NT 4.0 stores the local profile information in the registry under
+the following key:
+HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
+
+Under the ProfileList key, there will be subkeys named with the SIDs of the
+users who have logged on to this computer. (To find the profile information
+for the user whose locally cached profile you want to move, find the SID for
+the user with the GetSID.exe utility.) Inside of the appropriate user's
+subkey, you will see a string value named ProfileImagePath.
+
+
diff --git a/examples/LDAP/export_smbpasswd.pl b/examples/LDAP/export_smbpasswd.pl
new file mode 100644
index 0000000000..3f67dc6242
--- /dev/null
+++ b/examples/LDAP/export_smbpasswd.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+##
+## Example script to export ldap entries into an smbpasswd file format
+## using the Mozilla PerLDAP module.
+##
+## writen by jerry@samba.org
+##
+
+use Mozilla::LDAP::Conn;
+use Mozilla::LDAP::Entry;
+
+######################################################
+## Set these values to whatever you need for your site
+##
+
+$DN="ou=people,dc=plainjoe,dc=org";
+$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
+$rootpw = "secret";
+$LDAPSERVER="localhost";
+
+##
+## end local site variables
+######################################################
+
+
+$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
+die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+
+print "##\n";
+print "## Autogenerated smbpasswd file via ldapsearch\n";
+print "## from $LDAPSERVER ($DN)\n";
+print "##\n";
+
+## scheck for the existence of the posixAccount first
+$result = $conn->search ("$DN", "sub", "(objectclass=smbPasswordEntry)");
+
+
+## loop over the entries we found
+while ($result) {
+
+ @uid = $result->getValue("uid");
+ @uidNumber = $result->getValue("uidNumber");
+ @lm_pw = $result->getValue("lmpassword");
+ @nt_pw = $result->getValue("ntpassword");
+ @acct = $result->getValue("acctFlags");
+ @pwdLastSet = $result->getValue("pwdLastSet");
+
+ if (($#uid+1) && ($#uidNumber+1)) {
+
+ $lm_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#lm_pw+1));
+ $nt_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#nt_pw+1));
+ $acct[0] = "[DU ]" if (! ($#acct+1));
+ $pwdLastSet[0] = "FFFFFFFF" if (! ($#pwdLastSet+1));
+
+ print "$uid[0]:$uidNumber[0]:$lm_pw[0]:$nt_pw[0]:$acct[0]:LCT-$pwdLastSet[0]\n";
+ }
+
+ $result = $conn->nextEntry();
+
+}
+
+$conn->close();
+exit 0;
diff --git a/examples/LDAP/import_smbpasswd.pl b/examples/LDAP/import_smbpasswd.pl
new file mode 100644
index 0000000000..14aeff967f
--- /dev/null
+++ b/examples/LDAP/import_smbpasswd.pl
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+##
+## Example script of how you could import and smbpasswd file into an LDAP
+## directory using the Mozilla PerLDAP module.
+##
+## writen by jerry@samba.org
+##
+
+use Mozilla::LDAP::Conn;
+use Mozilla::LDAP::Entry;
+
+#################################################
+## set these to a value appropriate for your site
+##
+
+$DN="ou=people,dc=plainjoe,dc=org";
+$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
+$rootpw = "secret";
+$LDAPSERVER="localhost";
+
+##
+## end local site variables
+#################################################
+
+$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
+die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+
+
+while ( $string = <STDIN> ) {
+ chop ($string);
+
+ ## get the account information
+ @smbentry = split (/:/, $string);
+
+ ## check for the existence of the posixAccount first
+
+ ## FIXME!! Should do a getownam() and let the NSS modules lookup the account
+ ## This way you can have a UNIX account in /etc/passwd and the smbpasswd i
+ ## entry in LDAP.
+ $result = $conn->search ("$DN", "sub", "(&(uid=$smbentry[0])(objectclass=posixAccount))");
+ if ( ! $result ) {
+ print STDERR "uid=$smbentry[0] does not have a posixAccount entry in the directory!\n";
+ next;
+ }
+
+ print "Updating [" . $result->getDN() . "]\n";
+
+ ## Do we need to add the 'objectclass: smbPasswordEntry' attribute?
+ if (! $result->hasValue("objectclass", "smbPasswordEntry")) {
+ $result->addValue("objectclass", "smbPasswordEntry");
+ }
+
+ ## Set other attribute values
+ $result->setValues ("lmPassword", $smbentry[2]);
+ $result->setValues ("ntPassword", $smbentry[3]);
+ $result->setValues ("acctFlags", $smbentry[4]);
+ $result->setValues ("pwdLastSet", substr($smbentry[5],4));
+
+ if (! $conn->update($result)) {
+ print "Error updating!\n";
+ }
+}
+
+$conn->close();
+exit 0;
diff --git a/examples/pdb/README b/examples/pdb/README
index 7fe4524882..561473129b 100644
--- a/examples/pdb/README
+++ b/examples/pdb/README
@@ -1,7 +1,46 @@
README for Samba Password Database (PDB) examples
====================================================
-Jelmer Vernooij <jelmer@nl.linux.org>
-Stefan (metze) Metzmacher <metze@metzemix.de>
+8-8-2002 Jelmer Vernooij <jelmer@samba.org>
+
+Added mysql and xml modules. See README in xml/ and mysql/ for details.
+
+21-6-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
+
+I have added an interface versioning.
+
+Every module MUST have a pdb_version() function.
+
+this is defined in include/passdb.h:
+#define PDB_MODULE_VERSIONING_MAGIC \
+int pdb_version(void)\
+{\
+ return PASSDB_INTERFACE_VERSION;\
+}
+
+You MUST add this line inside a module:
+PDB_MODULE_VERSIONING_MAGIC
+
+21-6-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
+
+The pdb_interface was changed:
+
+this function are deleted:
+static BOOL testsam_getsampwrid (struct pdb_methods *methods, SAM_ACCOUNT *user, uint32 rid)
+
+this function are added:
+static BOOL testsam_getsampwsid (struct pdb_methods *methods, SAM_ACCOUNT *user, DOM_SID sid)
+
+In the SAM_ACCOUNT struct:
+
+this fields are deleted:
+uint32 user_rid;
+uint32 group_rid;
+
+this fields are added:
+DOM_SID user_sid;
+DOM_SID group_sid;
+
+15-2-2002 Jelmer Vernooij <jelmer@nl.linux.org>
The pdb_test.c file in this directory contains a very basic example of
a pdb plugin. It just prints the name of the function that is executed using
@@ -11,5 +50,6 @@ future too..
To debug passdb backends, try to run gdb on the 'pdbedit' executable. That's really much easier than restarting smbd constantly and attaching with your debugger.
New passdb plugins should go into the samba lib directory, (/usr/lib/samba/ for
-most distributions). An example would be: /usr/lib/samba/test.so
+most distributions) and should be prefixed with 'pdb_'. An example would be:
+/usr/lib/samba/pdb_test.so
diff --git a/examples/pdb/pdb_test.c b/examples/pdb/pdb_test.c
index f5fb57ddb2..c5ba094e42 100644
--- a/examples/pdb/pdb_test.c
+++ b/examples/pdb/pdb_test.c
@@ -25,6 +25,9 @@ static int testsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS testsam_debug_level
+/* define the version of the passdb interface */
+PDB_MODULE_VERSIONING_MAGIC
+
/***************************************************************
Start enumeration of the passwd list.
****************************************************************/
@@ -104,7 +107,7 @@ static NTSTATUS testsam_add_sam_account (struct pdb_methods *methods, SAM_ACCOUN
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS testsam_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
+NTSTATUS pdb_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
{
NTSTATUS nt_status;
@@ -138,12 +141,3 @@ NTSTATUS testsam_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module() {
- if(smb_register_passdb("testsam", testsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/examples/printing/smbprint.old b/examples/printing/smbprint.old
deleted file mode 100755
index 5a00a2a8aa..0000000000
--- a/examples/printing/smbprint.old
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh
-
-# This script is an input filter for printcap printing on a unix machine. It
-# uses the smbclient program to print the file to the specified smb-based
-# server and service.
-# For example you could have a printcap entry like this
-#
-# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
-#
-# which would create a unix printer called "smb" that will print via this
-# script. You will need to create the spool directory /usr/spool/smb with
-# appropriate permissions and ownerships for your system.
-
-# Set these to the server and service you wish to print to
-# In this example I have a WfWg PC called "lapland" that has a printer
-# exported called "printer" with no password.
-
-#
-# Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton)
-# so that the server, service, and password can be read from
-# a /usr/var/spool/lpd/PRINTNAME/.config file.
-#
-# Script further modified by Richard Sharpe to fix some things.
-# Get rid of the -x on the first line, and add parameters
-#
-# -t now causes translate to be used when sending files
-#
-# In order for this to work the /etc/printcap entry must include an
-# accounting file (af=...):
-#
-# cdcolour:\
-# :cm=CD IBM Colorjet on 6th:\
-# :sd=/var/spool/lpd/cdcolour:\
-# :af=/var/spool/lpd/cdcolour/acct:\
-# :if=/usr/local/etc/smbprint:\
-# :mx=0:\
-# :lp=/dev/null:
-#
-# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
-# server=PC_SERVER
-# service=PR_SHARENAME
-# password="password"
-#
-# E.g.
-# server=PAULS_PC
-# service=CJET_371
-# password=""
-
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
-
-
-#
-# The last parameter to the filter is the accounting file name.
-# Extract the directory name from the file name.
-# Concat this with /.config to get the config file.
-#
-TRANS=0
-eval acct_file=\${$#}
-spool_dir=`dirname $acct_file`
-config_file=$spool_dir/.config
-
-# Should read the following variables set in the config file:
-# server
-# service
-# password
-eval `cat $config_file`
-
-while getopts t c; do
- case $c in
- t)
- TRANS=1
- ;;
-
- '?') # Bad parameters, ignore it ...
- ;;
- esac
-done
-#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
- if [ $TRANS -eq 1 ]; then
- echo translate
- fi
- echo "print -"
- cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
diff --git a/examples/sam/.cvsignore b/examples/sam/.cvsignore
deleted file mode 100644
index f3c7a7c5da..0000000000
--- a/examples/sam/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/examples/sam/Makefile.in b/examples/sam/Makefile.in
deleted file mode 100644
index d5df346a8c..0000000000
--- a/examples/sam/Makefile.in
+++ /dev/null
@@ -1,28 +0,0 @@
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LDSHFLAGS = -shared
-srcdir = @builddir@
-FLAGS = $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper -I. $(CPPFLAGS) -I$(srcdir)
-
-SAM_OBJS = sam_skel.so
-
-# Default target
-
-default: $(SAM_OBJS)
-
-# Pattern rules
-
-%.so: %.o
- $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $<
-
-%.o: %.c
- $(CC) $(FLAGS) -c $<
-
-# Misc targets
-
-clean:
- rm -rf .libs
- rm -f core *~ *% *.bak \
- $(SAM_OBJ) $(SAM_OBJS)
diff --git a/examples/sam/README b/examples/sam/README
deleted file mode 100644
index 9e9fbb26db..0000000000
--- a/examples/sam/README
+++ /dev/null
@@ -1,29 +0,0 @@
-README for Samba SAM Database examples
-====================================================
-26-08-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
-
-Every module MUST have a sam_version() function.
-
-this is defined in include/sam.h:
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
- return SAM_INTERFACE_VERSION;\
-}
-
-You MUST add this line inside a module:
-SAM_MODULE_VERSIONING_MAGIC
-
-
-The sam_skel.c file in this directory contains a very basic example of
-a SAM plugin. It just prints the name of the function that is executed using
-DEBUG. Maybe it's nice to include some of the arguments to the function in the
-future too..
-
-New SAM plugins should go into the samba lib directory, (/usr/lib/samba/
-for most distributions) and should be prefixed with 'sam_' and should go into the
-subdir sam/. The SAM subsystem will search in /usr/lib/samba/sam and fall back to
-/usr/lib/samba/ .
-An example path would be:
-/usr/lib/samba/sam/sam_skel.so
-
diff --git a/examples/sam/sam_skel.c b/examples/sam/sam_skel.c
deleted file mode 100644
index da3a375894..0000000000
--- a/examples/sam/sam_skel.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- this is a skeleton for SAM backend modules.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static int sam_skel_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_skel_debug_level
-
-/* define the version of the SAM interface */
-SAM_MODULE_VERSIONING_MAGIC
-
-/* General API */
-
-NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, char **name, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID **sid, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Domain API */
-
-NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Account API */
-
-NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Group API */
-
-NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_init(SAM_METHODS *sam_methods, const char *module_params)
-{
- /* Functions your SAM module doesn't provide should be set
- * to NULL */
-
- sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
- sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
-
- sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
- sam_methods->sam_lookup_name = sam_skel_lookup_name;
-
- /* Domain API */
-
- sam_methods->sam_update_domain = sam_skel_update_domain;
- sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
-
- /* Account API */
-
- sam_methods->sam_create_account = sam_skel_create_account;
- sam_methods->sam_add_account = sam_skel_add_account;
- sam_methods->sam_update_account = sam_skel_update_account;
- sam_methods->sam_delete_account = sam_skel_delete_account;
- sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
-
- sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
- sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
-
- /* Group API */
-
- sam_methods->sam_create_group = sam_skel_create_group;
- sam_methods->sam_add_group = sam_skel_add_group;
- sam_methods->sam_update_group = sam_skel_update_group;
- sam_methods->sam_delete_group = sam_skel_delete_group;
- sam_methods->sam_enum_groups = sam_skel_enum_groups;
- sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
- sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
-
- sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
- sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
- sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
-
- sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
-
- sam_methods->free_private_data = NULL;
-
-
- sam_skel_debug_level = debug_add_class("sam_skel");
- if (sam_skel_debug_level == -1) {
- sam_skel_debug_level = DBGC_SAM;
- DEBUG(0, ("sam_skel: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
-
- if(module_params)
- DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
- else
- DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
-
- return NT_STATUS_OK;
-}
diff --git a/packaging/RedHat/makerpms.sh.tmpl b/packaging/RedHat/makerpms.sh.tmpl
index 9d71452db8..3c4ff40ddc 100644
--- a/packaging/RedHat/makerpms.sh.tmpl
+++ b/packaging/RedHat/makerpms.sh.tmpl
@@ -37,23 +37,19 @@ case $RPMVER in
2*)
echo Building for RPM v2.x
sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
- sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2-devel.spec > samba-devel.spec
;;
3*)
echo Building for RPM v3.x
sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2.spec > samba.spec
- sed -e "s/MANDIR_MACRO/\%\{prefix\}\/man/g" < samba2-devel.spec > samba-devel.spec
;;
4.1*)
echo Building for RPM v4.1
RPM="rpmbuild"
sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba.spec
- sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2-devel.spec > samba-devel.spec
;;
4*)
echo Building for RPM v4.x
sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2.spec > samba.spec
- sed -e "s/MANDIR_MACRO/\%\{_mandir\}/g" < samba2-devel.spec > samba-devel.spec
;;
*)
echo "Unknown RPM version: `rpm --version`"
diff --git a/packaging/RedHat/samba2.spec.tmpl b/packaging/RedHat/samba2.spec.tmpl
index 638df4f2cc..d728441614 100644
--- a/packaging/RedHat/samba2.spec.tmpl
+++ b/packaging/RedHat/samba2.spec.tmpl
@@ -26,6 +26,7 @@ Samba 3.0 also introduces UNICODE support and kerberos/ldap
integration as a member server in a Windows 2000 domain.
Please refer to the WHATSNEW.txt document for fixup information.
+docs directory for implementation details.
%changelog
* Mon Nov 18 2002 Gerald Carter <jerry@samba.org>
@@ -169,6 +170,9 @@ install -m644 packaging/RedHat/samba.pamd.stack $RPM_BUILD_ROOT/etc/samba/samba.
install -m644 packaging/RedHat/samba.xinetd $RPM_BUILD_ROOT/etc/samba/samba.xinetd
echo 127.0.0.1 localhost > $RPM_BUILD_ROOT/etc/samba/lmhosts
+# Remove "*.old" files
+find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -392,6 +396,9 @@ fi
%{prefix}/bin/smbgroupedit
%{prefix}/bin/smbcacls
%{prefix}/bin/pdbedit
+%{prefix}/bin/pam_smbpass.so
+%{prefix}/bin/smbmount
+%{prefix}/bin/smbumount
%{prefix}/bin/tdbbackup
%{prefix}/bin/smbtree
%attr(755,root,root) /lib/libnss_wins.s*
@@ -406,7 +413,10 @@ fi
%{prefix}/share/swat/lang/*/help/*
%{prefix}/share/swat/lang/*/images/*
%{prefix}/share/swat/lang/*/include/*.html
+%{prefix}/share/swat/include/header.html
+%{prefix}/share/swat/include/footer.html
%{prefix}/share/swat/using_samba/*
+%{prefix}/share/swat/README
%config(noreplace) /etc/samba/lmhosts
%config(noreplace) /etc/samba/smb.conf
%config(noreplace) /etc/samba/smbusers
diff --git a/packaging/SGI/relnotes.html b/packaging/SGI/relnotes.html
index d055be6c1a..afcf579677 100644
--- a/packaging/SGI/relnotes.html
+++ b/packaging/SGI/relnotes.html
@@ -205,8 +205,17 @@ printer name to describe its location.</DD>
of the <B>docs</B> directory from the Samba distribution; consult <I>samba</I>(7)
for an introduction. </P>
-<P>There is a mailing list for discussion of Samba. To subscribe and
- for more information go to <a href="http://lists.samba.org/">lists.samba.org</a>.
+<P>There is a mailing list for discussion of Samba. To subscribe send mail
+to <A HREF="mailto:listproc@samba.org">listproc@samba.org</A>
+with a body of &quot;subscribe samba Your Name&quot; </P>
+
+<P>To send mail to everyone on the list mail to <A HREF="mailto:samba@samba.org">samba@samba.org</A>.
+</P>
+
+<P>There is also an announcement mailing list where new versions are announced.
+To subscribe send mail to <A HREF="mailto:listproc@samba.org">listproc@samba.org</A>
+with a body of &quot;subscribe samba-announce Your Name&quot;. All announcements
+also go to the samba list. </P>
<P>You might also like to look at the Usenet news group <A HREF="news:comp.protocols.smb">comp.protocols.smb</A>
as it often contains lots of useful info and is frequented by lots of Samba
@@ -214,10 +223,10 @@ users. The newsgroup was initially setup by people on the Samba mailing
list. It is not, however, exclusive to Samba, it is a forum for discussing
the SMB protocol (which Samba implements). </P>
-<P>
- A Samba WWW site has been setup with lots of useful info. Connect to:
- <A HREF="http://samba.org/">http://samba.org/</A>. You can
- contact the webmaster at "webmaster at samba dot org".
+<P>A Samba WWW site has been setup with lots of useful info. Connect to:
+<A HREF="http://samba.org/pub/samba/">http://samba.org/pub/samba/</A>.
+It is maintained by Paul Blackman (thanks Paul!). You can contact him at
+<A HREF="mailto:ictinus@lake.canberra.edu.au">ictinus@lake.canberra.edu.au</A>.
</P>
</BODY>
diff --git a/source3/.cvsignore b/source3/.cvsignore
index 074a88cef2..d08edab4b0 100644
--- a/source3/.cvsignore
+++ b/source3/.cvsignore
@@ -6,7 +6,7 @@
.proto.check
.proto.stamp
autom4te.cache
-autom4te-2.53.cache
+ID
ID
Makefile
bin
@@ -15,6 +15,7 @@ config.cache
config.log
config.status
configure.tridge
+configure
cvs.log
diffs
dmalloc.log
@@ -27,4 +28,3 @@ testdir
testtmp
trace.out
typescript*
-configure
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 88e616de47..a198298102 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -118,8 +118,7 @@ BIN_PROGS1 = bin/smbclient@EXEEXT@ bin/net@EXEEXT@ bin/smbspool@EXEEXT@ \
BIN_PROGS2 = bin/smbcontrol@EXEEXT@ bin/smbtree@EXEEXT@ bin/tdbbackup@EXEEXT@ \
bin/nmblookup@EXEEXT@ bin/pdbedit@EXEEXT@
BIN_PROGS3 = bin/smbpasswd@EXEEXT@ bin/rpcclient@EXEEXT@ bin/smbcacls@EXEEXT@ \
- bin/profiles@EXEEXT@ bin/smbgroupedit@EXEEXT@ bin/ntlm_auth@EXEEXT@ \
- bin/editreg@EXEEXT@
+ bin/profiles@EXEEXT@ bin/smbgroupedit@EXEEXT@ bin/ntlm_auth@EXEEXT@
TORTURE_PROGS = bin/smbtorture@EXEEXT@ bin/msgtest@EXEEXT@ \
bin/masktest@EXEEXT@ bin/locktest@EXEEXT@ \
@@ -134,10 +133,8 @@ SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/addtosmbpass $(srcdir)/script
QUOTAOBJS=@QUOTAOBJS@
-VFS_MODULES = bin/vfs_audit.@SHLIBEXT@ bin/vfs_extd_audit.@SHLIBEXT@ bin/vfs_recycle.@SHLIBEXT@ \
- bin/vfs_netatalk.@SHLIBEXT@ bin/vfs_fake_perms.@SHLIBEXT@
+VFS_MODULES = bin/vfs_audit.@SHLIBEXT@ bin/vfs_extd_audit.@SHLIBEXT@ bin/vfs_recycle.@SHLIBEXT@ bin/vfs_netatalk.@SHLIBEXT@
PDB_MODULES = @MODULE_MYSQL@ @MODULE_XML@
-MODULES = bin/developer.@SHLIBEXT@
######################################################################
# object file lists
@@ -154,7 +151,7 @@ LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
lib/util_getent.o lib/util_pw.o lib/access.o lib/smbrun.o \
lib/bitmap.o lib/crc32.o lib/snprintf.o lib/dprintf.o \
lib/xfile.o lib/wins_srv.o \
- lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_uuid.o \
+ lib/util_str.o lib/util_sid.o lib/util_uuid.o \
lib/util_unistr.o lib/util_file.o lib/data_blob.o \
lib/util.o lib/util_sock.o lib/util_sec.o \
lib/talloc.o lib/hash.o lib/substitute.o lib/fsusage.o \
@@ -164,8 +161,7 @@ LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
nsswitch/wb_client.o nsswitch/wb_common.o \
lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \
- lib/module.o lib/genparser.o lib/genparser_samba.o \
- lib/ldap_escape.o
+ lib/module.o lib/ldap_escape.o
LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
@@ -193,7 +189,7 @@ SECRETS_OBJ = passdb/secrets.o
LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \
libsmb/namequery.o
-LIBNTLMSSP_OBJ = libsmb/ntlmssp.o libsmb/ntlmssp_parse.o libsmb/ntlmssp_sign.o
+LIBNTLMSSP_OBJ = libsmb/ntlmssp.o libsmb/ntlmssp_parse.o
LIBSAMBA_OBJ = libsmb/nterr.o libsmb/smbdes.o libsmb/smbencrypt.o
@@ -202,11 +198,10 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \
libsmb/clireadwrite.o libsmb/clilist.o libsmb/cliprint.o \
libsmb/clitrans.o libsmb/clisecdesc.o libsmb/clidgram.o \
- libsmb/clistr.o libsmb/smb_signing.o \
+ libsmb/clistr.o \
libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
libsmb/clioplock.o libsmb/errormap.o libsmb/clirap2.o \
libsmb/passchange.o libsmb/doserr.o \
- libsmb/trustdom_cache.o \
$(RPC_PARSE_OBJ1) $(LIBNTLMSSP_OBJ) $(LIBSAMBA_OBJ) $(LIBNMB_OBJ)
LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
@@ -216,7 +211,7 @@ LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
rpc_client/cli_spoolss.o rpc_client/cli_spoolss_notify.o \
rpc_client/cli_ds.o libsmb/namequery_dc.o
-LIBMSRPC_SERVER_OBJ = libsmb/trusts_util.o
+LIBMSRPC_SERVER_OBJ = libsmb/trust_passwd.o
REGOBJS_OBJ = registry/reg_objects.o
REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
@@ -286,21 +281,12 @@ PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o
PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
passdb/machine_sid.o passdb/pdb_smbpasswd.o \
- passdb/pdb_tdb.o passdb/pdb_ldap.o \
- passdb/pdb_unix.o passdb/pdb_guest.o passdb/util_sam_sid.o \
- passdb/pdb_compat.o passdb/pdb_nisplus.o \
- passdb/privileges.o
+ passdb/pdb_tdb.o passdb/pdb_ldap.o passdb/pdb_plugin.o \
+ passdb/pdb_unix.o passdb/util_sam_sid.o \
+ passdb/pdb_compat.o passdb/pdb_nisplus.o
-XML_OBJ = modules/xml.o
-MYSQL_OBJ = modules/mysql.o
-DEVEL_HELP_OBJ = modules/developer.o
-
-SAM_STATIC_MODULES = sam/sam_plugin.o sam/sam_skel.o sam/sam_ads.o
-
-SAM_OBJ = sam/account.o sam/get_set_account.o sam/get_set_group.o \
- sam/get_set_domain.o sam/interface.o $(SAM_STATIC_MODULES)
-
-SAMTEST_OBJ = torture/samtest.o torture/cmd_sam.o $(SAM_OBJ) $(LIB_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(READLINE_OBJ) lib/util_seaccess.o $(LIBADS_OBJ) $(KRBCLIENT_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(GROUPDB_OBJ)
+PDB_XML_OBJ = passdb/pdb_xml.o
+PDB_MYSQL_OBJ = passdb/pdb_mysql.o
GROUPDB_OBJ = groupdb/mapping.o
@@ -336,7 +322,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \
smbd/posix_acls.o lib/sysacls.o lib/server_mutex.o \
smbd/process.o smbd/service.o smbd/error.o \
- printing/printfsp.o lib/util_seaccess.o \
+ printing/printfsp.o lib/util_seaccess.o smbd/srvstr.o \
smbd/build_options.o \
smbd/change_trust_pw.o \
$(MANGLE_OBJ)
@@ -518,7 +504,6 @@ VFS_AUDIT_OBJ = modules/vfs_audit.o
VFS_EXTD_AUDIT_OBJ = modules/vfs_extd_audit.o
VFS_RECYCLE_OBJ = modules/vfs_recycle.o
VFS_NETATALK_OBJ = modules/vfs_netatalk.o
-VFS_FAKE_PERMS_OBJ = modules/vfs_fake_perms.o
LOCKTEST2_OBJ = torture/locktest2.o $(LOCKING_OBJ) $(LIBSMB_OBJ) \
$(KRBCLIENT_OBJ) $(PARAM_OBJ) \
@@ -581,7 +566,6 @@ WINBINDD_OBJ1 = \
nsswitch/winbindd_user.o \
nsswitch/winbindd_group.o \
nsswitch/winbindd_idmap.o \
- nsswitch/winbindd_idmap_tdb.o \
nsswitch/winbindd_util.o \
nsswitch/winbindd_cache.o \
nsswitch/winbindd_pam.o \
@@ -600,7 +584,8 @@ WINBINDD_OBJ = \
$(PROFILE_OBJ) $(UNIGRP_OBJ) \
$(SECRETS_OBJ) $(LIBADS_OBJ) $(KRBCLIENT_OBJ)
-WBINFO_OBJ = nsswitch/wbinfo.o libsmb/smbencrypt.o libsmb/smbdes.o $(POPT_LIB_OBJ)
+WBINFO_OBJ = nsswitch/wbinfo.o libsmb/smbencrypt.o libsmb/smbdes.o \
+ $(POPT_LIB_OBJ)
WINBIND_NSS_OBJ = nsswitch/winbind_nss.o nsswitch/wb_common.o @WINBIND_NSS_EXTRA_OBJS@
@@ -616,8 +601,7 @@ NTLM_AUTH_OBJ = utils/ntlm_auth.o $(LIBNTLMSSP_OBJ) $(LIBSAMBA_OBJ) $(POPT_LIB_O
######################################################################
# now the rules...
######################################################################
-all : SHOWFLAGS proto_exists $(SBIN_PROGS) $(BIN_PROGS) $(SHLIBS) \
- $(TORTURE_PROGS) $(RPC_MODULES) @EXTRA_ALL_TARGETS@
+all : SHOWFLAGS proto_exists $(SBIN_PROGS) $(BIN_PROGS) $(SHLIBS) $(RPC_MODULES) @EXTRA_ALL_TARGETS@
pam_smbpass : SHOWFLAGS bin/pam_smbpass.@SHLIBEXT@
@@ -649,9 +633,9 @@ nsswitch : SHOWFLAGS bin/winbindd@EXEEXT@ bin/wbinfo@EXEEXT@ nsswitch/libnss_win
wins : SHOWFLAGS nsswitch/libnss_wins.@SHLIBEXT@
-modules: SHOWFLAGS proto_exists $(VFS_MODULES) $(PDB_MODULES) $(MODULES)
+modules: SHOWFLAGS proto_exists $(VFS_MODULES) $(PDB_MODULES)
-everything: all libsmbclient debug2html smbfilter talloctort
+everything: all libsmbclient debug2html smbfilter talloctort modules torture
.SUFFIXES:
.SUFFIXES: .c .o .po .po32 .lo
@@ -754,10 +738,6 @@ bin/profiles@EXEEXT@: utils/profiles.o bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ utils/profiles.o $(LDFLAGS) $(LIBS)
-bin/editreg@EXEEXT@: utils/editreg.o bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ utils/editreg.o $(LDFLAGS) $(LIBS)
-
bin/smbspool@EXEEXT@: $(CUPS_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CUPS_OBJ) $(LDFLAGS) $(LIBS)
@@ -802,10 +782,6 @@ bin/pdbedit@EXEEXT@: $(PDBEDIT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-bin/samtest@EXEEXT@: $(SAMTEST_OBJ) @BUILD_POPT@ bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-
bin/smbgroupedit@EXEEXT@: $(SMBGROUPEDIT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBGROUPEDIT_OBJ) $(LDFLAGS) $(LIBS)
@@ -894,11 +870,6 @@ bin/libbigballofmud.@SHLIBEXT@: $(LIBBIGBALLOFMUD_PICOBJS)
$(SHLD) $(LDSHFLAGS) -o $@ $(LIBBIGBALLOFMUD_PICOBJS) $(LIBS) \
@SONAMEFLAG@`basename $@`.$(LIBBIGBALLOFMUD_MAJOR)
-# It would be nice to build a static bigballofmud too, but when I try
-# I get linker errors about dl_open and similar things. I'm not sure
-# if it can be fixed or if they just can't be called from a static
-# library.
-
libsmbclient: $(LIBSMBCLIENT)
bin/librpc_lsarpc.@SHLIBEXT@: $(RPC_LSA_OBJ)
@@ -965,19 +936,14 @@ nsswitch/pam_winbind.@SHLIBEXT@: $(PAM_WINBIND_OBJ) bin/.dummy
@$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_WINBIND_OBJ) \
@SONAMEFLAG@`basename $@` -lpam
-bin/mysql.@SHLIBEXT@: $(MYSQL_OBJ)
+bin/pdb_mysql.@SHLIBEXT@: $(PDB_MYSQL_OBJ)
@echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(MYSQL_OBJ) @MYSQL_LIBS@ \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PDB_MYSQL_OBJ) @MYSQL_LIBS@ \
@SONAMEFLAG@`basename $@`
-bin/developer.@SHLIBEXT@: $(DEVEL_HELP_OBJ)
+bin/pdb_xml.@SHLIBEXT@: $(PDB_XML_OBJ)
@echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(DEVEL_HELP_OBJ) \
- @SONAMEFLAG@`basename $@`
-
-bin/xml.@SHLIBEXT@: $(XML_OBJ)
- @echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(XML_OBJ) @XML_LIBS@ \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PDB_XML_OBJ) @XML_LIBS@ \
@SONAMEFLAG@`basename $@`
bin/vfs_audit.@SHLIBEXT@: $(VFS_AUDIT_OBJ)
@@ -1000,11 +966,6 @@ bin/vfs_netatalk.@SHLIBEXT@: $(VFS_NETATALK_OBJ)
@$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_NETATALK_OBJ) \
@SONAMEFLAG@`basename $@`
-bin/vfs_fake_perms.@SHLIBEXT@: $(VFS_FAKE_PERMS_OBJ)
- @echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FAKE_PERMS_OBJ) \
- @SONAMEFLAG@`basename $@`
-
bin/wbinfo@EXEEXT@: $(WBINFO_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
$(UBIQX_OBJ) $(SECRETS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@@ -1028,11 +989,10 @@ bin/tdbbackup@EXEEXT@: $(TDBBACKUP_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TDBBACKUP_OBJ)
-bin/t_stringoverflow: bin/libbigballofmud.@SHLIBEXT@ torture/t_stringoverflow.o
- $(CC) $(FLAGS) -o $@ torture/t_stringoverflow.o -L./bin -lbigballofmud
-
install: installbin installman installscripts installdat installswat
+install-everything: install installmodules
+
# DESTDIR is used here to prevent packagers wasting their time
# duplicating the Makefile. Remove it and you will have the privelege
# of package each samba release for muliple versions of multiple
@@ -1128,9 +1088,8 @@ uninstallbin:
@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(RPCLIBDIR) $(DESTDIR)$(RPC_MODULES)
uninstallmodules:
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(DESTDIR)$(VFS_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(DESTDIR)$(PDB_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(DESTDIR)$(VFS_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(DESTDIR)$(PDB_MODULES)
uninstallscripts:
@$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
@@ -1140,7 +1099,7 @@ TOPFILES=dynconfig.o dynconfig.po
clean: delheaders python_clean
-rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \
- $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(MODULES) $(TORTURE_PROGS) $(LIBSMBCLIENT) .headers.stamp
+ $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(VFS_MODULES) $(PDB_MODULES) $(RPC_MODULES) $(TORTURE_PROGS) .headers.stamp $(LIBSMBCLIENT)
# Making this target will just make sure that the prototype files
# exist, not necessarily that they are up to date. Since they're
@@ -1148,8 +1107,7 @@ clean: delheaders python_clean
# afterwards.
proto_exists: include/proto.h include/wrepld_proto.h include/build_env.h \
nsswitch/winbindd_proto.h web/swat_proto.h \
- client/client_proto.h utils/net_proto.h \
- include/tdbsam2_parse_info.h
+ client/client_proto.h utils/net_proto.h
delheaders:
@echo Removing prototype headers
@@ -1157,12 +1115,10 @@ delheaders:
@/bin/rm -f $(srcdir)/include/wrepld_proto.h $(srcdir)/nsswitch/winbindd_proto.h
@/bin/rm -f $(srcdir)/web/swat_proto.h
@/bin/rm -f $(srcdir)/client/client_proto.h $(srcdir)/utils/net_proto.h
- @/bin/rm -f $(srcdir)/include/tdbsam2_parse_info.h
@/bin/rm -f include/proto.h include/build_env.h include/wrepld_proto.h \
nsswitch/winbindd_proto.h web/swat_proto.h \
- client/client_proto.h utils/net_proto.h \
- include/tdbsam2_parse_info.h
+ client/client_proto.h utils/net_proto.h
include/proto.h:
@echo Building include/proto.h
@@ -1200,11 +1156,6 @@ utils/net_proto.h:
-h _CLIENT_PROTO_H_ utils/net_proto.h \
$(NET_OBJ1)
-include/tdbsam2_parse_info.h:
- @cd $(srcdir) && @PERL@ -w script/genstruct.pl \
- -o include/tdbsam2_parse_info.h $(CC) -E -O2 -g \
- include/tdbsam2.h
-
# "make headers" or "make proto" calls a subshell because we need to
# make sure these commands are executed in sequence even for a
# parallel make.
@@ -1216,8 +1167,7 @@ headers:
$(MAKE) nsswitch/winbindd_proto.h; \
$(MAKE) web/swat_proto.h; \
$(MAKE) client/client_proto.h; \
- $(MAKE) utils/net_proto.h; \
- $(MAKE) include/tdbsam2_parse_info.h
+ $(MAKE) utils/net_proto.h
proto: headers
@@ -1230,7 +1180,7 @@ ctags:
ctags `find $(srcdir) -name "*.[ch]" | grep -v /CVS/`
realclean: clean delheaders
- -rm -f config.log $(BIN_PROGS) $(MODULES) $(SBIN_PROGS) bin/.dummy script/findsmb
+ -rm -f config.log $(BIN_PROGS) $(SBIN_PROGS) bin/.dummy script/findsmb
distclean: realclean
-rm -f include/stamp-h
diff --git a/source3/auth/auth.c b/source3/auth/auth.c
index 8b33010e91..126a712fbd 100644
--- a/source3/auth/auth.c
+++ b/source3/auth/auth.c
@@ -31,7 +31,6 @@ static const struct auth_init_function_entry builtin_auth_init_functions[] = {
{ "hostsequiv", auth_init_hostsequiv },
{ "sam", auth_init_sam },
{ "samstrict", auth_init_samstrict },
- { "samstrict_dc", auth_init_samstrict_dc },
{ "unix", auth_init_unix },
{ "smbserver", auth_init_smbserver },
{ "ntdomain", auth_init_ntdomain },
diff --git a/source3/auth/auth_domain.c b/source3/auth/auth_domain.c
index 079bb49a21..0d90a184a4 100644
--- a/source3/auth/auth_domain.c
+++ b/source3/auth/auth_domain.c
@@ -272,7 +272,7 @@ static NTSTATUS find_connect_dc(struct cli_state **cli,
struct in_addr dc_ip;
fstring srv_name;
- if (!rpc_find_dc(domain, srv_name, &dc_ip)) {
+ if ( !rpc_find_dc(lp_workgroup(), srv_name, &dc_ip) ) {
DEBUG(0,("find_connect_dc: Failed to find an DCs for %s\n", lp_workgroup()));
return NT_STATUS_NO_LOGON_SERVERS;
}
diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
index a381219d74..d32d248296 100644
--- a/source3/auth/auth_ntlmssp.c
+++ b/source3/auth/auth_ntlmssp.c
@@ -50,7 +50,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state)
/* the client has given us its machine name (which we otherwise would not get on port 445).
we need to possibly reload smb.conf if smb.conf includes depend on the machine name */
- set_remote_machine_name(auth_ntlmssp_state->ntlmssp_state->workstation, True);
+ set_remote_machine_name(auth_ntlmssp_state->ntlmssp_state->workstation);
/* setup the string used by %U */
/* sub_set_smb_name checks for weird internally */
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
index 48fabba0a2..b309833440 100644
--- a/source3/auth/auth_sam.c
+++ b/source3/auth/auth_sam.c
@@ -500,8 +500,6 @@ static NTSTATUS check_samstrict_security(const struct auth_context *auth_context
unless it is one of our aliases. */
if (!is_myname(user_info->domain.str)) {
- DEBUG(7,("The requested user domain is not the local server name. [%s]\\[%s]\n",
- user_info->domain.str,user_info->internal_username.str));
return NT_STATUS_NO_SUCH_USER;
}
@@ -520,45 +518,4 @@ NTSTATUS auth_init_samstrict(struct auth_context *auth_context, const char *para
return NT_STATUS_OK;
}
-/****************************************************************************
-Check SAM security (above) but with a few extra checks if we're a DC.
-****************************************************************************/
-
-static NTSTATUS check_samstrict_dc_security(const struct auth_context *auth_context,
- void *my_private_data,
- TALLOC_CTX *mem_ctx,
- const auth_usersupplied_info *user_info,
- auth_serversupplied_info **server_info)
-{
- if (!user_info || !auth_context) {
- return NT_STATUS_LOGON_FAILURE;
- }
-
- /* If we are a domain member, we must not
- attempt to check the password locally,
- unless it is one of our aliases, empty
- or our domain if we are a logon server.*/
-
-
- if ((!is_myworkgroup(user_info->domain.str))&&
- (!is_myname(user_info->domain.str))) {
- DEBUG(7,("The requested user domain is not the local server name or our domain. [%s]\\[%s]\n",
- user_info->domain.str,user_info->internal_username.str));
- return NT_STATUS_NO_SUCH_USER;
- }
-
- return check_sam_security(auth_context, my_private_data, mem_ctx, user_info, server_info);
-}
-
-/* module initialisation */
-NTSTATUS auth_init_samstrict_dc(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
-{
- if (!make_auth_methods(auth_context, auth_method)) {
- return NT_STATUS_NO_MEMORY;
- }
-
- (*auth_method)->auth = check_samstrict_dc_security;
- (*auth_method)->name = "samstrict_dc";
- return NT_STATUS_OK;
-}
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index f4c43d2d4b..7d85153bd0 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -219,18 +219,35 @@ NTSTATUS make_user_info_map(auth_usersupplied_info **user_info,
where it doens't supply a domain for logon script
'net use' commands.
- Finally, we do this by looking up a cache of trusted domains!
+ The way I do it here is by checking if the fully
+ qualified username exists. This is rather reliant
+ on winbind, but until we have a better method this
+ will have to do
*/
domain = client_domain;
- if (is_trusted_domain(domain)) {
- return make_user_info(user_info, smb_name, internal_username,
- client_domain, domain, wksta_name,
- lm_pwd, nt_pwd, plaintext, ntlmssp_flags,
- encrypted);
- }
+ if ((smb_name) && (*smb_name)) { /* Don't do this for guests */
+ char *user = NULL;
+ if (asprintf(&user, "%s%s%s",
+ client_domain, lp_winbind_separator(),
+ smb_name) < 0) {
+ DEBUG(0, ("make_user_info_map: asprintf() failed!\n"));
+ return NT_STATUS_NO_MEMORY;
+ }
+ DEBUG(5, ("make_user_info_map: testing for user %s\n", user));
+
+ if (Get_Pwnam(user) == NULL) {
+ DEBUG(5, ("make_user_info_map: test for user %s failed\n", user));
+ domain = lp_workgroup();
+ DEBUG(5, ("make_user_info_map: trusted domain %s doesn't appear to exist, using %s\n",
+ client_domain, domain));
+ } else {
+ DEBUG(5, ("make_user_info_map: using trusted domain %s\n", domain));
+ }
+ SAFE_FREE(user);
+ }
} else {
domain = lp_workgroup();
}
diff --git a/source3/bin/.cvsignore b/source3/bin/.cvsignore
index f03ce48d2c..5cad4ba406 100644
--- a/source3/bin/.cvsignore
+++ b/source3/bin/.cvsignore
@@ -2,7 +2,6 @@
.dummy
.libs
debug2html
-editreg
locktest
locktest2
make_printerdef
@@ -37,7 +36,6 @@ smbtorture
smbtree
smbumount
swat
-t_stringoverflow
talloctort
tdbbackup
testparm
@@ -46,3 +44,4 @@ vfstest
wbinfo
winbindd
wrepld
+editreg
diff --git a/source3/change-log b/source3/change-log
index 71f5012484..1f7798b541 100644
--- a/source3/change-log
+++ b/source3/change-log
@@ -2,7 +2,7 @@ SUPERCEDED Change Log for Samba
^^^^^^^^^^
Unless otherwise attributed, all changes were made by
-Andrew.Tridgell@anu.edu.au.
+Andrew.Tridgell@anu.edu.au. All bugs to samba-bugs@samba.org.
NOTE: THIS LOG IS IN CHRONOLOGICAL ORDER
diff --git a/source3/client/client.c b/source3/client/client.c
index 1248c25659..5da12fd984 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -1291,7 +1291,7 @@ static int file_find(struct file_list **list, const char *directory,
int ret;
char *path;
BOOL isdir;
- const char *dname;
+ char *dname;
dir = opendir(directory);
if (!dir) return -1;
@@ -2269,9 +2269,6 @@ static void readline_callback(void)
last_t = t;
- if (cli->fd == -1)
- return;
-
again:
FD_ZERO(&fds);
FD_SET(cli->fd,&fds);
@@ -2349,7 +2346,7 @@ static struct cli_state *do_connect(const char *server, const char *share)
char *sharename;
/* make a copy so we don't modify the global string 'service' */
- fstrcpy(servicename, share);
+ safe_strcpy(servicename, share, sizeof(servicename)-1);
sharename = servicename;
if (*sharename == '\\') {
server = sharename+2;
@@ -2624,9 +2621,9 @@ static int do_message_op(void)
make_nmb_name(&calling, global_myname(), 0x0);
make_nmb_name(&called , desthost, name_type);
- fstrcpy(server_name, desthost);
+ safe_strcpy(server_name, desthost, sizeof(server_name));
snprintf(name_type_hex, sizeof(name_type_hex), "#%X", name_type);
- fstrcat(server_name, name_type_hex);
+ safe_strcat(server_name, name_type_hex, sizeof(server_name));
zero_ip(&ip);
if (have_ip) ip = dest_ip;
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index dfda997ca2..612a383ce0 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -202,7 +202,7 @@ static void writetarheader(int f, const char *aname, SMB_BIG_UINT size, time_t m
/* write out a "standard" tar format header */
hb.dbuf.name[NAMSIZ-1]='\0';
- safe_strcpy(hb.dbuf.mode, amode, sizeof(hb.dbuf.mode)-1);
+ safe_strcpy(hb.dbuf.mode, amode, strlen(amode));
oct_it((SMB_BIG_UINT)0, 8, hb.dbuf.uid);
oct_it((SMB_BIG_UINT)0, 8, hb.dbuf.gid);
oct_it((SMB_BIG_UINT) size, 13, hb.dbuf.size);
@@ -796,11 +796,11 @@ static void do_tar(file_info *finfo)
DEBUG(5, ("Excl: strlen(cur_dir) = %d\n", (int)strlen(cur_dir)));
- pstrcpy(exclaim, cur_dir);
+ safe_strcpy(exclaim, cur_dir, sizeof(pstring));
*(exclaim+strlen(exclaim)-1)='\0';
- pstrcat(exclaim, "\\");
- pstrcat(exclaim, finfo->name);
+ safe_strcat(exclaim, "\\", sizeof(pstring));
+ safe_strcat(exclaim, finfo->name, sizeof(exclaim));
DEBUG(5, ("...tar_re_search: %d\n", tar_re_search));
@@ -820,12 +820,12 @@ static void do_tar(file_info *finfo)
pstring saved_curdir;
pstring mtar_mask;
- pstrcpy(saved_curdir, cur_dir);
+ safe_strcpy(saved_curdir, cur_dir, sizeof(saved_curdir));
DEBUG(5, ("Sizeof(cur_dir)=%d, strlen(cur_dir)=%d, strlen(finfo->name)=%d\nname=%s,cur_dir=%s\n", (int)sizeof(cur_dir), (int)strlen(cur_dir), (int)strlen(finfo->name), finfo->name, cur_dir));
- pstrcat(cur_dir,finfo->name);
- pstrcat(cur_dir,"\\");
+ safe_strcat(cur_dir,finfo->name, sizeof(cur_dir));
+ safe_strcat(cur_dir,"\\", sizeof(cur_dir));
DEBUG(5, ("Writing a dir, Name = %s\n", cur_dir));
@@ -836,16 +836,16 @@ static void do_tar(file_info *finfo)
DEBUG(0,(" directory %s\n", cur_dir));
}
ntarf++; /* Make sure we have a file on there */
- pstrcpy(mtar_mask,cur_dir);
- pstrcat(mtar_mask,"*");
+ safe_strcpy(mtar_mask,cur_dir, sizeof(pstring));
+ safe_strcat(mtar_mask,"*", sizeof(pstring));
DEBUG(5, ("Doing list with mtar_mask: %s\n", mtar_mask));
do_list(mtar_mask, attribute, do_tar, False, True);
- pstrcpy(cur_dir,saved_curdir);
+ safe_strcpy(cur_dir,saved_curdir, sizeof(pstring));
}
else
{
- pstrcpy(rname,cur_dir);
- pstrcat(rname,finfo->name);
+ safe_strcpy(rname,cur_dir, sizeof(pstring));
+ safe_strcat(rname,finfo->name, sizeof(pstring));
do_atar(rname,finfo->name,finfo);
}
}
@@ -1089,7 +1089,7 @@ static char * get_longfilename(file_info2 finfo)
BOOL first = True;
DEBUG(5, ("Restoring a long file name: %s\n", finfo.name));
- DEBUG(5, ("Len = %.0f\n", (double)finfo.size));
+ DEBUG(5, ("Len = %d\n", (int)finfo.size));
if (longname == NULL) {
@@ -1362,8 +1362,8 @@ int cmd_setmode(void)
return 1;
}
- pstrcpy(fname, cur_dir);
- pstrcat(fname, buf);
+ safe_strcpy(fname, cur_dir, sizeof(pstring));
+ safe_strcat(fname, buf, sizeof(pstring));
while (next_token_nr(NULL,buf,NULL,sizeof(buf))) {
q=buf;
@@ -1459,32 +1459,32 @@ int process_tar(void)
if (strrchr_m(cliplist[i], '\\')) {
pstring saved_dir;
- pstrcpy(saved_dir, cur_dir);
+ safe_strcpy(saved_dir, cur_dir, sizeof(pstring));
if (*cliplist[i]=='\\') {
- pstrcpy(tarmac, cliplist[i]);
+ safe_strcpy(tarmac, cliplist[i], sizeof(pstring));
} else {
- pstrcpy(tarmac, cur_dir);
- pstrcat(tarmac, cliplist[i]);
+ safe_strcpy(tarmac, cur_dir, sizeof(pstring));
+ safe_strcat(tarmac, cliplist[i], sizeof(pstring));
}
- pstrcpy(cur_dir, tarmac);
+ safe_strcpy(cur_dir, tarmac, sizeof(pstring));
*(strrchr_m(cur_dir, '\\')+1)='\0';
DEBUG(5, ("process_tar, do_list with tarmac: %s\n", tarmac));
do_list(tarmac,attribute,do_tar, False, True);
- pstrcpy(cur_dir,saved_dir);
+ safe_strcpy(cur_dir,saved_dir, sizeof(pstring));
} else {
- pstrcpy(tarmac, cur_dir);
- pstrcat(tarmac, cliplist[i]);
+ safe_strcpy(tarmac, cur_dir, sizeof(pstring));
+ safe_strcat(tarmac, cliplist[i], sizeof(pstring));
DEBUG(5, ("process_tar, do_list with tarmac: %s\n", tarmac));
do_list(tarmac,attribute,do_tar, False, True);
}
}
} else {
pstring mask;
- pstrcpy(mask,cur_dir);
+ safe_strcpy(mask,cur_dir, sizeof(pstring));
DEBUG(5, ("process_tar, do_list with mask: %s\n", mask));
- pstrcat(mask,"\\*");
+ safe_strcat(mask,"\\*", sizeof(pstring));
do_list(mask,attribute,do_tar,False, True);
}
diff --git a/source3/client/smbmount.c b/source3/client/smbmount.c
index 98302485e4..e2372d02b4 100644
--- a/source3/client/smbmount.c
+++ b/source3/client/smbmount.c
@@ -398,7 +398,7 @@ static void send_fs_socket(char *the_service, char *mount_point, struct cli_stat
}
/* here we are no longer interactive */
- set_remote_machine_name("smbmount", False); /* sneaky ... */
+ set_remote_machine_name("smbmount"); /* sneaky ... */
setup_logging("mount.smbfs", False);
reopen_logs();
DEBUG(0, ("mount.smbfs: entering daemon mode for service %s, pid=%d\n", the_service, sys_getpid()));
diff --git a/source3/config.guess b/source3/config.guess
index 78f6b92cd3..bcdc0742b7 100755
--- a/source3/config.guess
+++ b/source3/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
-timestamp='2003-01-10'
+timestamp='2001-11-26'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ timestamp='2003-01-10'
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per@bothner.com>.
+# Originally written by Per Bothner <bothner@cygnus.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -88,41 +88,30 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+# CC_FOR_BUILD -- compiler used by this script.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int dummy(){}" > $dummy.c ;
+ for c in cc gcc c89 ; do
+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
+ if test $? = 0 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
+ rm -f $dummy.c $dummy.o $dummy.rel ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -146,23 +135,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the
# object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ # Determine the machine/vendor (is the vendor relevant).
+ case "${UNAME_MACHINE}" in
+ amiga) machine=m68k-unknown ;;
+ arm32) machine=arm-unknown ;;
+ atari*) machine=m68k-atari ;;
+ sun3*) machine=m68k-sun ;;
+ mac68k) machine=m68k-apple ;;
+ macppc) machine=powerpc-apple ;;
+ hp3[0-9][05]) machine=m68k-hp ;;
+ ibmrt|romp-ibm) machine=romp-ibm ;;
+ sparc*) machine=`uname -p`-unknown ;;
+ *) machine=${UNAME_MACHINE}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ case "${UNAME_MACHINE}" in
+ i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep __ELF__ >/dev/null
@@ -179,18 +168,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
@@ -235,9 +213,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- *:MicroBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE}
- exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -246,7 +221,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- eval $set_cc_for_build
cat <<EOF >$dummy.s
.data
\$Lformat:
@@ -272,9 +246,10 @@ main:
jsr \$26,exit
.end main
EOF
- $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
+ eval $set_cc_for_build
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
- case `$dummy` in
+ case `./$dummy` in
0-0)
UNAME_MACHINE="alpha"
;;
@@ -296,11 +271,9 @@ EOF
2-1307)
UNAME_MACHINE="alphaev68"
;;
- 3-1307)
- UNAME_MACHINE="alphaev7"
- ;;
esac
fi
+ rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit 0 ;;
Alpha\ *:Windows_NT*:*)
@@ -318,9 +291,6 @@ EOF
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
@@ -341,10 +311,6 @@ EOF
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
- esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
@@ -373,7 +339,7 @@ EOF
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
@@ -451,20 +417,15 @@ EOF
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy \
+ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
exit 0 ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit 0 ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit 0 ;;
@@ -537,7 +498,8 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
@@ -546,7 +508,7 @@ EOF
fi
exit 0 ;;
*:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
@@ -635,21 +597,11 @@ EOF
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
+ (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
+ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+ rm -f $dummy.c $dummy
fi ;;
esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
ia64:HP-UX:*:*)
@@ -683,7 +635,8 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -729,6 +682,9 @@ EOF
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit 0 ;;
+ CRAY*X-MP:*:*:*)
+ echo xmp-cray-unicos
+ exit 0 ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
@@ -741,15 +697,18 @@ EOF
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
+ CRAY*T3D:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
- *:UNICOS/mp:*:*)
- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ CRAY-2:*:*:*)
+ echo cray2-cray-unicos
+ exit 0 ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
@@ -766,18 +725,7 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #if __GLIBC__ >= 2
- LIBC=gnu
- #else
- LIBC=
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
@@ -788,17 +736,11 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit 0 ;;
- x86:Interix*:3*)
- echo i586-pc-interix3
- exit 0 ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
+ echo i386-pc-interix
exit 0 ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
@@ -819,48 +761,16 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux
exit 0 ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in
+ big) echo mips-unknown-linux-gnu && exit 0 ;;
+ little) echo mipsel-unknown-linux-gnu && exit 0 ;;
+ esac
;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
@@ -909,8 +819,7 @@ EOF
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
# problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ ld_supported_targets=`cd /; ld --help 2>&1 \
| sed -ne '/supported targets:/!d
s/[ ][ ]*/ /g
s/.*supported targets: *//
@@ -922,7 +831,7 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit 0 ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0 ;;
@@ -934,28 +843,32 @@ EOF
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
+ cat >$dummy.c <<EOF
+#include <features.h>
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __ELF__
+# ifdef __GLIBC__
+# if __GLIBC__ >= 2
+ printf ("%s-pc-linux-gnu\n", argv[1]);
+# else
+ printf ("%s-pc-linux-gnulibc1\n", argv[1]);
+# endif
+# else
+ printf ("%s-pc-linux-gnulibc1\n", argv[1]);
+# endif
+#else
+ printf ("%s-pc-linux-gnuaout\n", argv[1]);
+#endif
+ return 0;
+}
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
i*86:DYNIX/ptx:4*:*)
@@ -972,23 +885,6 @@ EOF
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -1010,19 +906,22 @@ EOF
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
&& UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1046,15 +945,9 @@ EOF
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit 0 ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0)
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1071,6 +964,9 @@ EOF
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1142,9 +1038,6 @@ EOF
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit 0 ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
@@ -1152,24 +1045,18 @@ EOF
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
- case `uname -p` in
- *86) UNAME_PROCESSOR=i686 ;;
- powerpc) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
exit 0 ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
+ if test "${UNAME_MACHINE}" = "x86pc"; then
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
exit 0 ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
- NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1192,6 +1079,11 @@ EOF
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
exit 0 ;;
@@ -1210,6 +1102,12 @@ EOF
*:ITS:*:*)
echo pdp10-unknown-its
exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1330,7 +1228,8 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
# Apollos put the system type in the environment.
diff --git a/source3/config.sub b/source3/config.sub
index 04baf3d80d..2476310dff 100755
--- a/source3/config.sub
+++ b/source3/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
-timestamp='2003-01-03'
+timestamp='2001-12-03'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,7 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -227,39 +227,26 @@ case $basic_machine in
1750a | 580 \
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | c4x | clipper \
+ | d10v | d30v | dsp16xx \
+ | fr30 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | ip2k \
| m32r | m68000 | m68k | m88k | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
+ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
+ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
+ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
+ | mipsisa32 \
| mn10200 | mn10300 \
- | msp430 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | openrisc \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | sh | sh[34] | sh[34]eb | shbe | shle \
+ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
| strongarm \
| tahoe | thumb | tic80 | tron \
| v850 | v850e \
@@ -291,52 +278,38 @@ case $basic_machine in
580-* \
| a29k-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | alphapca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armv*-* \
| avr-* \
| bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
- | clipper-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
+ | c[123]* | c30-* | [cjt]90-* | c54x-* \
+ | clipper-* | cray2-* | cydra-* \
+ | d10v-* | d30v-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fr30-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* \
| m32r-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | msp430-* \
- | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
+ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
+ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
+ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
+ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
| xtensa-* \
| ymp-* \
| z8k-*)
@@ -402,10 +375,6 @@ case $basic_machine in
basic_machine=ns32k-sequent
os=-dynix
;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
convex-c1)
basic_machine=c1-convex
os=-bsd
@@ -426,8 +395,16 @@ case $basic_machine in
basic_machine=c38-convex
os=-bsd
;;
- cray | j90)
- basic_machine=j90-cray
+ cray | ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ cray2)
+ basic_machine=cray2-cray
+ os=-unicos
+ ;;
+ [cjt]90)
+ basic_machine=${basic_machine}-cray
os=-unicos
;;
crds | unos)
@@ -442,14 +419,6 @@ case $basic_machine in
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
@@ -630,6 +599,14 @@ case $basic_machine in
basic_machine=m68k-atari
os=-mint
;;
+ mipsel*-linux*)
+ basic_machine=mipsel-unknown
+ os=-linux-gnu
+ ;;
+ mips*-linux*)
+ basic_machine=mips-unknown
+ os=-linux-gnu
+ ;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
@@ -644,10 +621,6 @@ case $basic_machine in
basic_machine=m68k-rom68k
os=-coff
;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -720,10 +693,6 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- nv1)
- basic_machine=nv1-cray
- os=-unicosmp
- ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -731,10 +700,6 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
- basic_machine=or32-unknown
- os=-coff
- ;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
@@ -757,13 +722,13 @@ case $basic_machine in
pbb)
basic_machine=m68k-tti
;;
- pc532 | pc532-*)
+ pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ pentiumpro | p6 | 6x86 | athlon)
basic_machine=i686-pc
;;
pentiumii | pentium2)
@@ -784,22 +749,22 @@ case $basic_machine in
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
- ;;
+ ;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
- ;;
+ ;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
- ;;
+ ;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
- ;;
+ ;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
@@ -830,12 +795,6 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
sequent)
basic_machine=i386-sequent
;;
@@ -910,17 +869,9 @@ case $basic_machine in
os=-dynix
;;
t3e)
- basic_machine=alphaev5-cray
+ basic_machine=t3e-cray
os=-unicos
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic4x | c4x*)
- basic_machine=tic4x-unknown
- os=-coff
- ;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
@@ -931,10 +882,6 @@ case $basic_machine in
tx39el)
basic_machine=mipstx39el-unknown
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
tower | tower-32)
basic_machine=m68k-ncr
;;
@@ -959,8 +906,8 @@ case $basic_machine in
os=-vms
;;
vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
+ basic_machine=f301-fujitsu
+ ;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -981,13 +928,17 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ windows32)
+ basic_machine=i386-pc
+ os=-windows32-msvcrt
;;
- ymp)
- basic_machine=ymp-cray
+ xmp)
+ basic_machine=xmp-cray
os=-unicos
;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
z8k-*-coff)
basic_machine=z8k-unknown
os=-sim
@@ -1008,6 +959,13 @@ case $basic_machine in
op60c)
basic_machine=hppa1.1-oki
;;
+ mips)
+ if [ x$os = x-linux-gnu ]; then
+ basic_machine=mips-unknown
+ else
+ basic_machine=mips-mips
+ fi
+ ;;
romp)
basic_machine=romp-ibm
;;
@@ -1027,16 +985,13 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+ sh3 | sh4 | sh3eb | sh4eb)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
- cydra)
+ cydra)
basic_machine=cydra-cydrome
;;
orion)
@@ -1051,6 +1006,10 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
+ c4x*)
+ basic_machine=c4x-none
+ os=-coff
+ ;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
@@ -1113,12 +1072,10 @@ case $os in
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -microbsd*)
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1130,10 +1087,8 @@ case $os in
;;
esac
;;
- -nto-qnx*)
- ;;
-nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ os=-nto-qnx
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
@@ -1181,11 +1136,8 @@ case $os in
-ctix* | -uts*)
os=-sysv
;;
- -nova*)
- os=-rtmk-nova
- ;;
-ns2 )
- os=-nextstep2
+ os=-nextstep2
;;
-nsk*)
os=-nsk
@@ -1224,8 +1176,8 @@ case $os in
-xenix)
os=-xenix
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
;;
-none)
;;
@@ -1258,11 +1210,10 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- # This must come before the *-dec entry.
pdp10-*)
os=-tops20
;;
- pdp11-*)
+ pdp11-*)
os=-none
;;
*-dec | vax-*)
@@ -1289,9 +1240,6 @@ case $basic_machine in
mips*-*)
os=-elf
;;
- or32-*)
- os=-coff
- ;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
@@ -1355,19 +1303,19 @@ case $basic_machine in
*-next)
os=-nextstep3
;;
- *-gould)
+ *-gould)
os=-sysv
;;
- *-highlevel)
+ *-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
- *-sgi)
+ *-sgi)
os=-irix
;;
- *-siemens)
+ *-siemens)
os=-sysv4
;;
*-masscomp)
@@ -1439,7 +1387,7 @@ case $basic_machine in
-ptx*)
vendor=sequent
;;
- -vxsim* | -vxworks* | -windiss*)
+ -vxsim* | -vxworks*)
vendor=wrs
;;
-aux*)
diff --git a/source3/configure.in b/source3/configure.in
index e038654f7e..69c001f59b 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -657,24 +657,6 @@ if test x"$samba_cv_immediate_structures" = x"yes"; then
fi
############################################
-# check if the compiler can do immediate structures
-AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
- AC_TRY_LINK([
-#include <stdio.h>],
-[
- if (0) {
- this_function_does_not_exist();
- } else {
- return 1;
- }
-
-],
- samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
-if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
- AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
-fi
-
-############################################
# check for unix domain sockets
AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
AC_TRY_COMPILE([
@@ -2344,13 +2326,13 @@ fi
########################################################
# Compile with MySQL support?
-AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/mysql.so],[MODULE_MYSQL=])
+AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/pdb_mysql.so],[MODULE_MYSQL=])
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
AC_SUBST(MODULE_MYSQL)
########################################################
# Compile with XML support?
-AM_PATH_XML2([2.0.0],[MODULE_XML=bin/xml.so],[MODULE_XML=])
+AM_PATH_XML2([2.0.0],[MODULE_XML=bin/pdb_xml.so],[MODULE_XML=])
CFLAGS="$CFLAGS $XML_CFLAGS"
AC_SUBST(MODULE_XML)
@@ -2471,24 +2453,6 @@ if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
fi
fi
-# New experimental SAM system
-
-AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
-AC_ARG_WITH(sam,
-[ --with-sam Build new (experimental) SAM database (default=no)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-
########################################################################################
##
## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER
diff --git a/source3/configure.nodebug.developer b/source3/configure.nodebug.developer
new file mode 100755
index 0000000000..65e21b4bdf
--- /dev/null
+++ b/source3/configure.nodebug.developer
@@ -0,0 +1,3 @@
+#!/bin/sh
+CFLAGS="-Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD"; export CFLAGS
+./configure $*
diff --git a/source3/groupdb/mapping.c b/source3/groupdb/mapping.c
index 02fc23418f..272783608c 100644
--- a/source3/groupdb/mapping.c
+++ b/source3/groupdb/mapping.c
@@ -841,7 +841,6 @@ BOOL enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **rmap,
}
*num_entries=entries;
-
return True;
}
@@ -1277,57 +1276,3 @@ int smb_delete_user_group(const char *unix_group, const char *unix_user)
DEBUG(3,("smb_delete_user_group: Running the command `%s' gave %d\n",del_script,ret));
return ret;
}
-
-
-NTSTATUS pdb_default_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
- DOM_SID sid, BOOL with_priv)
-{
- return get_group_map_from_sid(sid, map, with_priv) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
- gid_t gid, BOOL with_priv)
-{
- return get_group_map_from_gid(gid, map, with_priv) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
- char *name, BOOL with_priv)
-{
- return get_group_map_from_ntname(name, map, with_priv) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_add_group_mapping_entry(struct pdb_methods *methods,
- GROUP_MAP *map)
-{
- return add_mapping_entry(map, TDB_INSERT) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_update_group_mapping_entry(struct pdb_methods *methods,
- GROUP_MAP *map)
-{
- return add_mapping_entry(map, TDB_REPLACE) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_delete_group_mapping_entry(struct pdb_methods *methods,
- DOM_SID sid)
-{
- return group_map_remove(sid) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS pdb_default_enum_group_mapping(struct pdb_methods *methods,
- enum SID_NAME_USE sid_name_use,
- GROUP_MAP **rmap, int *num_entries,
- BOOL unix_only, BOOL with_priv)
-{
- return enum_group_mapping(sid_name_use, rmap, num_entries, unix_only,
- with_priv) ?
- NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
diff --git a/source3/include/.cvsignore b/source3/include/.cvsignore
index 4bff170b3b..bff248727f 100644
--- a/source3/include/.cvsignore
+++ b/source3/include/.cvsignore
@@ -3,5 +3,4 @@ config.h
stamp-h
proto.h
wrepld_proto.h
-tdbsam2_parse_info.h
config.h.in
diff --git a/source3/include/charset.h b/source3/include/charset.h
index c56984ca7b..07d5e2d599 100644
--- a/source3/include/charset.h
+++ b/source3/include/charset.h
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
charset defines
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
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
@@ -23,18 +22,3 @@
typedef enum {CH_UCS2=0, CH_UNIX=1, CH_DISPLAY=2, CH_DOS=3, CH_UTF8=4} charset_t;
#define NUM_CHARSETS 5
-
-/*
- * for each charset we have a function that pulls from that charset to
- * a ucs2 buffer, and a function that pushes to a ucs2 buffer
- * */
-
-struct charset_functions {
- const char *name;
- size_t (*pull)(void *, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft);
- size_t (*push)(void *, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft);
- struct charset_functions *prev, *next;
-};
-
diff --git a/source3/include/client.h b/source3/include/client.h
index 0ea793de68..28d6a8c330 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -58,15 +58,14 @@ struct print_job_info
};
typedef struct smb_sign_info {
- void (*sign_outgoing_message)(struct cli_state *cli);
- BOOL (*check_incoming_message)(struct cli_state *cli);
- void (*free_signing_context)(struct cli_state *cli);
- void *signing_context;
-
+ BOOL use_smb_signing;
BOOL negotiated_smb_signing;
+ BOOL temp_smb_signing;
+ size_t mac_key_len;
+ uint8 mac_key[64];
+ uint32 send_seq_num;
+ uint32 reply_seq_num;
BOOL allow_smb_signing;
- BOOL doing_signing;
- BOOL mandetory_signing;
} smb_sign_info;
struct cli_state {
diff --git a/source3/include/debug.h b/source3/include/debug.h
index 70f9f7706d..d4f45539f4 100644
--- a/source3/include/debug.h
+++ b/source3/include/debug.h
@@ -88,7 +88,6 @@ extern int DEBUGLEVEL;
#define DBGC_AUTH 10
#define DBGC_WINBIND 11
#define DBGC_VFS 12
-#define DBGC_IDMAP 13
/* So you can define DBGC_CLASS before including debug.h */
#ifndef DBGC_CLASS
diff --git a/source3/include/genparser.h b/source3/include/genparser.h
deleted file mode 100644
index f28cd78249..0000000000
--- a/source3/include/genparser.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GENPARSER_H
-#define _GENPARSER_H
-
-/* these macros are needed for genstruct auto-parsers */
-#ifndef GENSTRUCT
-#define GENSTRUCT
-#define _LEN(x)
-#define _NULLTERM
-#endif
-
-/*
- automatic marshalling/unmarshalling system for C structures
-*/
-
-/* flag to mark a fixed size array as actually being null terminated */
-#define FLAG_NULLTERM 1
-#define FLAG_ALWAYS 2
-
-struct enum_struct {
- const char *name;
- unsigned value;
-};
-
-/* intermediate dumps are stored in one of these */
-struct parse_string {
- unsigned allocated;
- unsigned length;
- char *s;
-};
-
-typedef int (*gen_dump_fn)(TALLOC_CTX *, struct parse_string *, const char *ptr, unsigned indent);
-typedef int (*gen_parse_fn)(TALLOC_CTX *, char *ptr, const char *str);
-
-/* genstruct.pl generates arrays of these */
-struct parse_struct {
- const char *name;
- unsigned ptr_count;
- unsigned size;
- unsigned offset;
- unsigned array_len;
- const char *dynamic_len;
- unsigned flags;
- gen_dump_fn dump_fn;
- gen_parse_fn parse_fn;
-};
-
-#define DUMP_PARSE_DECL(type) \
- int gen_dump_ ## type(TALLOC_CTX *, struct parse_string *, const char *, unsigned); \
- int gen_parse_ ## type(TALLOC_CTX *, char *, const char *);
-
-DUMP_PARSE_DECL(char)
-DUMP_PARSE_DECL(int)
-DUMP_PARSE_DECL(unsigned)
-DUMP_PARSE_DECL(double)
-DUMP_PARSE_DECL(float)
-
-#define gen_dump_unsigned_char gen_dump_char
-#define gen_parse_unsigned_char gen_parse_char
-
-#endif /* _GENPARSER_H */
diff --git a/source3/include/genparser_samba.h b/source3/include/genparser_samba.h
deleted file mode 100644
index 172ff2362c..0000000000
--- a/source3/include/genparser_samba.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- Copyright (C) Simo Sorce <idra@samba.org> 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GENPARSER_SAMBA_H
-#define _GENPARSER_SAMBA_H
-
-const struct parse_struct pinfo_security_ace_info[] = {
-{"type", 0, sizeof(uint8), offsetof(struct security_ace_info, type), 0, NULL, 0, gen_dump_uint8, gen_parse_uint8},
-{"flags", 0, sizeof(uint8), offsetof(struct security_ace_info, flags), 0, NULL, 0, gen_dump_uint8, gen_parse_uint8},
-{"size", 0, sizeof(uint16), offsetof(struct security_ace_info, size), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"info", 0, sizeof(char), offsetof(struct security_ace_info, info), 0, NULL, 0, gen_dump_SEC_ACCESS, gen_parse_SEC_ACCESS},
-{"obj_flags", 0, sizeof(uint32), offsetof(struct security_ace_info, obj_flags), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"obj_guid", 0, sizeof(char), offsetof(struct security_ace_info, obj_guid), 0, NULL, 0, gen_dump_GUID, gen_parse_GUID},
-{"inh_guid", 0, sizeof(char), offsetof(struct security_ace_info, inh_guid), 0, NULL, 0, gen_dump_GUID, gen_parse_GUID},
-{"trustee", 0, sizeof(char), offsetof(struct security_ace_info, trustee), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_security_acl_info[] = {
-{"revision", 0, sizeof(uint16), offsetof(struct security_acl_info, revision), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"size", 0, sizeof(uint16), offsetof(struct security_acl_info, size), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"num_aces", 0, sizeof(uint32), offsetof(struct security_acl_info, num_aces), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"ace", 1, sizeof(struct security_ace_info), offsetof(struct security_acl_info, ace), 0, "size", 0, gen_dump_SEC_ACE, gen_parse_SEC_ACE},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_security_descriptor_info[] = {
-{"revision", 0, sizeof(uint16), offsetof(struct security_descriptor_info, revision), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"type", 0, sizeof(uint16), offsetof(struct security_descriptor_info, type), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"off_owner_sid", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_owner_sid), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_grp_sid", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_grp_sid), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_sacl", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_sacl), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_dacl", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_dacl), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"dacl", 1, sizeof(struct security_acl_info), offsetof(struct security_descriptor_info, dacl), 0, NULL, 0, gen_dump_SEC_ACL, gen_parse_SEC_ACL},
-{"sacl", 1, sizeof(struct security_acl_info), offsetof(struct security_descriptor_info, sacl), 0, NULL, 0, gen_dump_SEC_ACL, gen_parse_SEC_ACL},
-{"owner_sid", 1, sizeof(char), offsetof(struct security_descriptor_info, owner_sid), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{"grp_sid", 1, sizeof(char), offsetof(struct security_descriptor_info, grp_sid), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_luid_attr_info[] = {
-{"attr", 0, sizeof(uint32), offsetof(struct LUID_ATTR, attr), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"luid", 1, sizeof(LUID), offsetof(struct LUID_ATTR, luid), 0, NULL, 0, gen_dump_LUID, gen_parse_LUID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-#endif /* _GENPARSER_SAMBA_H */
diff --git a/source3/include/gums.h b/source3/include/gums.h
deleted file mode 100644
index 789acc269f..0000000000
--- a/source3/include/gums.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS structures
- Copyright (C) Simo Sorce 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GUMS_H
-#define _GUMS_H
-
-#define GUMS_VERSION_MAJOR 0
-#define GUMS_VERSION_MINOR 1
-#define GUMS_OBJECT_VERSION 1
-
-#define GUMS_OBJ_DOMAIN 1
-#define GUMS_OBJ_NORMAL_USER 2
-#define GUMS_OBJ_GROUP 3
-#define GUMS_OBJ_ALIAS 4
-#define GUMS_OBJ_WORKSTATION_TRUST 5
-#define GUMS_OBJ_SERVER_TRUST 6
-#define GUMS_OBJ_DOMAIN_TRUST 7
-
-typedef struct gums_user
-{
- DOM_SID *group_sid; /* Primary Group SID */
-
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
-
- char *full_name; /* user's full name string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
-
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
-
- uint32 unknown_3; /* 0x00ff ffff */
-
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 *hours;
-
- uint32 unknown_5; /* 0x0002 0000 */
- uint32 unknown_6; /* 0x0000 04ec */
-
-} GUMS_USER;
-
-typedef struct gums_group
-{
- uint32 count; /* Number of SIDs */
- DOM_SID **members; /* SID array */
-
-} GUMS_GROUP;
-
-typedef struct gums_domain
-{
- uint32 next_rid;
-
-} GUMS_DOMAIN;
-
-union gums_obj_p {
- GUMS_USER *user;
- GUMS_GROUP *group;
- GUMS_DOMAIN *domain;
-};
-
-typedef struct gums_object
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object Type */
- uint32 version; /* Object Version */
- uint32 seq_num; /* Object Sequence Number */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
-
- DOM_SID *sid; /* Object Sid */
- char *name; /* Object Name */
- char *description; /* Object Description */
-
- union gums_obj_p data; /* Object Specific data */
-
-} GUMS_OBJECT;
-
-typedef struct gums_data_set
-{
- int type; /* GUMS_SET_xxx */
- void *data;
-
-} GUMS_DATA_SET;
-
-typedef struct gums_commit_set
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object type */
- DOM_SID sid; /* Object Sid */
- uint32 count; /* number of changes */
- GUMS_DATA_SET **data;
-
-} GUMS_COMMIT_SET;
-
-typedef struct gums_privilege
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object Type */
- uint32 version; /* Object Version */
- uint32 seq_num; /* Object Sequence Number */
-
- LUID_ATTR *privilege; /* Privilege Type */
- char *name; /* Object Name */
- char *description; /* Object Description */
-
- uint32 count;
- DOM_SID **members;
-
-} GUMS_PRIVILEGE;
-
-
-typedef struct gums_functions
-{
- /* Generic object functions */
-
- NTSTATUS (*get_domain_sid) (DOM_SID **sid, const char* name);
- NTSTATUS (*set_domain_sid) (const DOM_SID *sid);
-
- NTSTATUS (*get_sequence_number) (void);
-
- NTSTATUS (*new_object) (DOM_SID **sid, const char *name, const int obj_type);
- NTSTATUS (*delete_object) (const DOM_SID *sid);
-
- NTSTATUS (*get_object_from_sid) (GUMS_OBJECT **object, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*get_object_from_name) (GUMS_OBJECT **object, const char *name, const int onj_type);
- /* This function is used to get the list of all objects changed since b_time, it is
- used to support PDC<->BDC synchronization */
- NTSTATUS (*get_updated_objects) (GUMS_OBJECT **objects, const NTTIME base_time);
-
- NTSTATUS (*enumerate_objects_start) (void *handle, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*enumerate_objects_get_next) (GUMS_OBJECT **object, void *handle);
- NTSTATUS (*enumerate_objects_stop) (void *handle);
-
- /* This function MUST be used ONLY by PDC<->BDC replication code or recovery tools.
- Never use this function to update an object in the database, use set_object_values() */
- NTSTATUS (*set_object) (const GUMS_OBJECT *object);
-
- /* set object values function */
- NTSTATUS (*set_object_values) (DOM_SID *sid, uint32 count, GUMS_DATA_SET **data_set);
-
- /* Group related functions */
- NTSTATUS (*add_members_to_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*delete_members_from_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*enumerate_group_members) (DOM_SID **members, const DOM_SID *sid, const int type);
-
- NTSTATUS (*get_sid_groups) (DOM_SID **groups, const DOM_SID *sid);
-
- NTSTATUS (*lock_sid) (const DOM_SID *sid);
- NTSTATUS (*unlock_sid) (const DOM_SID *sid);
-
- /* privileges related functions */
-
- NTSTATUS (*add_members_to_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*delete_members_from_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*enumerate_privilege_members) (DOM_SID **members, const LUID_ATTR *priv);
- NTSTATUS (*get_sid_privileges) (DOM_SID **privs, const DOM_SID *sid);
-
- /* warning!: set_privilege will overwrite a prior existing privilege if such exist */
- NTSTATUS (*set_privilege) (GUMS_PRIVILEGE *priv);
-
-} GUMS_FUNCTIONS;
-
-/* define value types */
-#define GUMS_SET_PRIMARY_GROUP 0x1
-#define GUMS_SET_SEC_DESC 0x2
-
-#define GUMS_SET_NAME 0x10
-#define GUMS_SET_DESCRIPTION 0x11
-#define GUMS_SET_FULL_NAME 0x12
-
-/* user specific type values */
-#define GUMS_SET_LOGON_TIME 0x20
-#define GUMS_SET_LOGOFF_TIME 0x21
-#define GUMS_SET_KICKOFF_TIME 0x23
-#define GUMS_SET_PASS_LAST_SET_TIME 0x24
-#define GUMS_SET_PASS_CAN_CHANGE_TIME 0x25
-#define GUMS_SET_PASS_MUST_CHANGE_TIME 0x26
-
-
-#define GUMS_SET_HOME_DIRECTORY 0x31
-#define GUMS_SET_DRIVE 0x32
-#define GUMS_SET_LOGON_SCRIPT 0x33
-#define GUMS_SET_PROFILE_PATH 0x34
-#define GUMS_SET_WORKSTATIONS 0x35
-#define GUMS_SET_UNKNOWN_STRING 0x36
-#define GUMS_SET_MUNGED_DIAL 0x37
-
-#define GUMS_SET_LM_PASSWORD 0x40
-#define GUMS_SET_NT_PASSWORD 0x41
-#define GUMS_SET_PLAINTEXT_PASSWORD 0x42
-#define GUMS_SET_UNKNOWN_3 0x43
-#define GUMS_SET_LOGON_DIVS 0x44
-#define GUMS_SET_HOURS_LEN 0x45
-#define GUMS_SET_HOURS 0x46
-#define GUMS_SET_UNKNOWN_5 0x47
-#define GUMS_SET_UNKNOWN_6 0x48
-
-#define GUMS_SET_MUST_CHANGE_PASS 0x50
-#define GUMS_SET_CANNOT_CHANGE_PASS 0x51
-#define GUMS_SET_PASS_NEVER_EXPIRE 0x52
-#define GUMS_SET_ACCOUNT_DISABLED 0x53
-#define GUMS_SET_ACCOUNT_LOCKOUT 0x54
-
-/*group specific type values */
-#define GUMS_ADD_SID_LIST 0x60
-#define GUMS_DEL_SID_LIST 0x61
-#define GUMS_SET_SID_LIST 0x62
-
-#endif /* _GUMS_H */
diff --git a/source3/include/idmap.h b/source3/include/idmap.h
deleted file mode 100644
index fd7646a324..0000000000
--- a/source3/include/idmap.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- Idmap headers
-
- Copyright (C) Anthony Liguori 2003
- Copyright (C) Simo Sorce 2003
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#define ID_EMPTY 0x00
-#define ID_USERID 0x01
-#define ID_GROUPID 0x02
-#define ID_OTHER 0x04
-
-#define ID_TYPEMASK 0x0f
-
-#define ID_NOMAP 0x10
-#define ID_CACHE 0x20
-
-typedef union unid_t {
- uid_t uid;
- gid_t gid;
-} unid_t;
-
-/* Filled out by IDMAP backends */
-struct idmap_methods {
-
- /* Called when backend is first loaded */
- NTSTATUS (*init)(const char *init_str);
-
- NTSTATUS (*get_sid_from_id)(DOM_SID *sid, unid_t id, int id_type);
- NTSTATUS (*get_id_from_sid)(unid_t *id, int *id_type, DOM_SID *sid);
- NTSTATUS (*set_mapping)(DOM_SID *sid, unid_t id, int id_type);
-
- /* Called when backend is unloaded */
- NTSTATUS (*close)(void);
-
- /* Called to dump backend status */
- void (*status)(void);
-};
-
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 2bba9d5084..774df34de0 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -433,23 +433,6 @@
#include <com_err.h>
#endif
-/* Special macros that are no-ops except when run under Valgrind on
- * x86. They've moved a little bit from valgrind 1.0.4 to 1.9.4 */
-#if HAVE_VALGRIND_MEMCHECK_H
- /* memcheck.h includes valgrind.h */
-#include <valgrind/memcheck.h>
-#elif HAVE_VALGRIND_H
-#include <valgrind.h>
-#endif
-
-/* If we have --enable-developer and the valgrind header is present,
- * then we're OK to use it. Set a macro so this logic can be done only
- * once. */
-#if defined(DEVELOPER) && (HAVE_VALGRIND_H || HAVE_VALGRIND_VALGRIND_H)
-#define VALGRIND
-#endif
-
-
/* we support ADS if we want it and have krb5 and ldap libs */
#if defined(WITH_ADS) && defined(HAVE_KRB5) && defined(HAVE_LDAP)
#define HAVE_ADS
@@ -790,10 +773,6 @@ extern int errno;
#include "passdb.h"
-#include "sam.h"
-
-#include "gums.h"
-
#include "session.h"
#include "asn_1.h"
@@ -804,8 +783,6 @@ extern int errno;
#include "nsswitch/winbind_client.h"
-#include "genparser.h"
-
/*
* Type for wide character dirent structure.
* Only d_name is defined by POSIX.
@@ -855,7 +832,6 @@ struct printjob;
/* String routines */
-#include "srvstr.h"
#include "safe_string.h"
#ifdef __COMPAR_FN_T
@@ -1225,6 +1201,10 @@ int smb_xvasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(
time_t timegm(struct tm *tm);
#endif
+#if defined(VALGRIND)
+#define strlen(x) valgrind_strlen(x)
+#endif
+
/*
* Veritas File System. Often in addition to native.
* Quotas different.
diff --git a/source3/include/ntlmssp.h b/source3/include/ntlmssp.h
index f0278ffece..4fa4259a6a 100644
--- a/source3/include/ntlmssp.h
+++ b/source3/include/ntlmssp.h
@@ -92,8 +92,6 @@ typedef struct ntlmssp_state
typedef struct ntlmssp_client_state
{
TALLOC_CTX *mem_ctx;
- unsigned int ref_count;
-
BOOL unicode;
BOOL use_ntlmv2;
char *user;
@@ -104,30 +102,9 @@ typedef struct ntlmssp_client_state
const char *(*get_global_myname)(void);
const char *(*get_domain)(void);
- DATA_BLOB chal;
- DATA_BLOB lm_resp;
- DATA_BLOB nt_resp;
DATA_BLOB session_key;
uint32 neg_flags;
-
- /* SMB Signing */
-
- uint32 ntlmssp_seq_num;
-
- /* ntlmv2 */
- char cli_sign_const[16];
- char cli_seal_const[16];
- char srv_sign_const[16];
- char srv_seal_const[16];
-
- unsigned char cli_sign_hash[258];
- unsigned char cli_seal_hash[258];
- unsigned char srv_sign_hash[258];
- unsigned char srv_seal_hash[258];
-
- /* ntlmv1 */
- unsigned char ntlmssp_hash[258];
} NTLMSSP_CLIENT_STATE;
diff --git a/source3/include/passdb.h b/source3/include/passdb.h
index 06409aa34e..fa80b263ff 100644
--- a/source3/include/passdb.h
+++ b/source3/include/passdb.h
@@ -34,6 +34,13 @@
#define PASSDB_INTERFACE_VERSION 4
+/* use this inside a passdb module */
+#define PDB_MODULE_VERSIONING_MAGIC \
+int pdb_version(void)\
+{\
+ return PASSDB_INTERFACE_VERSION;\
+}
+
typedef struct pdb_context
{
struct pdb_methods *pdb_methods;
@@ -149,7 +156,6 @@ struct pdb_init_function_entry {
const char *name;
/* Function to create a member of the pdb_methods list */
pdb_init_function init;
- struct pdb_init_function_entry *prev, *next;
};
#endif /* _PASSDB_H */
diff --git a/source3/include/rpc_client_proto.h b/source3/include/rpc_client_proto.h
deleted file mode 100644
index 0ecb195691..0000000000
--- a/source3/include/rpc_client_proto.h
+++ /dev/null
@@ -1,231 +0,0 @@
-#ifndef _RPC_CLIENT_PROTO_H_
-#define _RPC_CLIENT_PROTO_H_
-/* This file is automatically generated with "make proto". DO NOT EDIT */
-
-
-/*The following definitions come from lib/util_list.c */
-
-BOOL copy_policy_hnd (POLICY_HND *dest, const POLICY_HND *src);
-BOOL compare_rpc_hnd_node(const RPC_HND_NODE *x,
- const RPC_HND_NODE *y);
-BOOL RpcHndList_set_connection(const POLICY_HND *hnd,
- struct cli_connection *con);
-BOOL RpcHndList_del_connection(const POLICY_HND *hnd);
-struct cli_connection* RpcHndList_get_connection(const POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_connect.c */
-
-void init_connections(void);
-void free_connections(void);
-void cli_connection_free(struct cli_connection *con);
-void cli_connection_unlink(struct cli_connection *con);
-BOOL cli_connection_init(const char *srv_name, char *pipe_name,
- struct cli_connection **con);
-BOOL cli_connection_init_auth(const char *srv_name, char *pipe_name,
- struct cli_connection **con,
- cli_auth_fns * auth, void *auth_creds);
-struct _cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
-void *cli_conn_get_auth_creds(struct cli_connection *con);
-BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
- prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
- prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_ok(struct cli_connection *con);
-
-/*The following definitions come from rpc_client/cli_login.c */
-
-BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16]);
-BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd);
-BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username,
- uint32 smb_userid_low, char *password,
- NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username,
- uint32 smb_userid_low, char lm_chal[8],
- char *lm_chal_resp, char *nt_chal_resp,
- NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-
-/*The following definitions come from rpc_client/cli_lsarpc.c */
-
-BOOL do_lsa_open_policy(struct cli_state *cli,
- char *system_name, POLICY_HND *hnd,
- BOOL sec_qos);
-BOOL do_lsa_query_info_pol(struct cli_state *cli,
- POLICY_HND *hnd, uint16 info_class,
- fstring domain_name, DOM_SID *domain_sid);
-BOOL do_lsa_close(struct cli_state *cli, POLICY_HND *hnd);
-BOOL cli_lsa_get_domain_sid(struct cli_state *cli, char *server);
-uint32 lsa_open_policy(const char *system_name, POLICY_HND *hnd,
- BOOL sec_qos, uint32 des_access);
-uint32 lsa_lookup_sids(POLICY_HND *hnd, int num_sids, DOM_SID *sids,
- char ***names, uint32 **types, int *num_names);
-uint32 lsa_lookup_names(POLICY_HND *hnd, int num_names, char **names,
- DOM_SID **sids, uint32 **types, int *num_sids);
-
-/*The following definitions come from rpc_client/cli_netlogon.c */
-
-BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint32 status_level);
-BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan,
- uint32 neg_flags, DOM_CHAL *srv_chal);
-BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
-BOOL cli_net_srv_pwset(struct cli_state *cli, uint8 hashed_mach_pwd[16]);
-BOOL cli_net_sam_logon(struct cli_state *cli, NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-BOOL change_trust_account_password( char *domain, char *remote_machine_list);
-
-/*The following definitions come from rpc_client/cli_pipe.c */
-
-BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
- prs_struct *data, prs_struct *rdata);
-BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, char *my_name);
-void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name);
-void cli_nt_session_close(struct cli_state *cli);
-
-/*The following definitions come from rpc_client/cli_reg.c */
-
-BOOL do_reg_connect(struct cli_state *cli, char *full_keyname, char *key_name,
- POLICY_HND *reg_hnd);
-BOOL do_reg_open_hklm(struct cli_state *cli, uint16 unknown_0, uint32 level,
- POLICY_HND *hnd);
-BOOL do_reg_open_hku(struct cli_state *cli, uint16 unknown_0, uint32 level,
- POLICY_HND *hnd);
-BOOL do_reg_flush_key(struct cli_state *cli, POLICY_HND *hnd);
-BOOL do_reg_query_key(struct cli_state *cli, POLICY_HND *hnd,
- char *class, uint32 *class_len,
- uint32 *num_subkeys, uint32 *max_subkeylen,
- uint32 *max_subkeysize, uint32 *num_values,
- uint32 *max_valnamelen, uint32 *max_valbufsize,
- uint32 *sec_desc, NTTIME *mod_time);
-BOOL do_reg_unknown_1a(struct cli_state *cli, POLICY_HND *hnd, uint32 *unk);
-BOOL do_reg_query_info(struct cli_state *cli, POLICY_HND *hnd,
- char *key_value, uint32* key_type);
-BOOL do_reg_set_key_sec(struct cli_state *cli, POLICY_HND *hnd, SEC_DESC_BUF *sec_desc_buf);
-BOOL do_reg_get_key_sec(struct cli_state *cli, POLICY_HND *hnd, uint32 *sec_buf_size, SEC_DESC_BUF **ppsec_desc_buf);
-BOOL do_reg_delete_val(struct cli_state *cli, POLICY_HND *hnd, char *val_name);
-BOOL do_reg_delete_key(struct cli_state *cli, POLICY_HND *hnd, char *key_name);
-BOOL do_reg_create_key(struct cli_state *cli, POLICY_HND *hnd,
- char *key_name, char *key_class,
- SEC_ACCESS *sam_access,
- POLICY_HND *key);
-BOOL do_reg_enum_key(struct cli_state *cli, POLICY_HND *hnd,
- int key_index, char *key_name,
- uint32 *unk_1, uint32 *unk_2,
- time_t *mod_time);
-BOOL do_reg_create_val(struct cli_state *cli, POLICY_HND *hnd,
- char *val_name, uint32 type, BUFFER3 *data);
-BOOL do_reg_enum_val(struct cli_state *cli, POLICY_HND *hnd,
- int val_index, int max_valnamelen, int max_valbufsize,
- fstring val_name,
- uint32 *val_type, BUFFER2 *value);
-BOOL do_reg_open_entry(struct cli_state *cli, POLICY_HND *hnd,
- char *key_name, uint32 unk_0,
- POLICY_HND *key_hnd);
-BOOL do_reg_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_samr.c */
-
-BOOL get_samr_query_usergroups(struct cli_state *cli,
- POLICY_HND *pol_open_domain, uint32 user_rid,
- uint32 *num_groups, DOM_GID *gid);
-BOOL get_samr_query_userinfo(struct cli_state *cli,
- POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 user_rid, SAM_USER_INFO_21 *usr);
-BOOL do_samr_chgpasswd_user(struct cli_state *cli,
- char *srv_name, char *user_name,
- char nt_newpass[516], uchar nt_oldhash[16],
- char lm_newpass[516], uchar lm_oldhash[16]);
-BOOL do_samr_unknown_38(struct cli_state *cli, char *srv_name);
-BOOL do_samr_query_dom_info(struct cli_state *cli,
- POLICY_HND *domain_pol, uint16 switch_value);
-BOOL do_samr_enum_dom_users(struct cli_state *cli,
- POLICY_HND *pol, uint16 num_entries, uint16 unk_0,
- uint16 acb_mask, uint16 unk_1, uint32 size,
- struct acct_info **sam,
- int *num_sam_users);
-BOOL do_samr_connect(struct cli_state *cli,
- char *srv_name, uint32 unknown_0,
- POLICY_HND *connect_pol);
-BOOL do_samr_open_user(struct cli_state *cli,
- POLICY_HND *pol, uint32 unk_0, uint32 rid,
- POLICY_HND *user_pol);
-BOOL do_samr_open_domain(struct cli_state *cli,
- POLICY_HND *connect_pol, uint32 rid, DOM_SID *sid,
- POLICY_HND *domain_pol);
-BOOL do_samr_query_unknown_12(struct cli_state *cli,
- POLICY_HND *pol, uint32 rid, uint32 num_gids, uint32 *gids,
- uint32 *num_aliases,
- fstring als_names [MAX_LOOKUP_SIDS],
- uint32 num_als_users[MAX_LOOKUP_SIDS]);
-BOOL do_samr_query_usergroups(struct cli_state *cli,
- POLICY_HND *pol, uint32 *num_groups, DOM_GID *gid);
-BOOL do_samr_query_userinfo(struct cli_state *cli,
- POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL do_samr_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_spoolss_notify.c */
-
-BOOL spoolss_disconnect_from_client( struct cli_state *cli);
-BOOL spoolss_connect_to_client( struct cli_state *cli, char *remote_machine);
-BOOL cli_spoolss_reply_open_printer(struct cli_state *cli, char *printer, uint32 localprinter, uint32 type, uint32 *status, POLICY_HND *handle);
-BOOL cli_spoolss_reply_rrpcn(struct cli_state *cli, POLICY_HND *handle,
- uint32 change_low, uint32 change_high, uint32 *status);
-BOOL cli_spoolss_reply_close_printer(struct cli_state *cli, POLICY_HND *handle, uint32 *status);
-
-/*The following definitions come from rpc_client/cli_srvsvc.c */
-
-BOOL do_srv_net_srv_conn_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli,
- char *server_name,
- uint32 switch_value, SRV_R_NET_SHARE_ENUM *r_o,
- uint32 preferred_len, ENUM_HND *hnd);
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_get_info(struct cli_state *cli,
- char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
-
-/*The following definitions come from rpc_client/cli_use.c */
-
-void init_cli_use(void);
-void free_cli_use(void);
-struct cli_state *cli_net_use_add(const char *srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL reuse, BOOL *is_new);
-BOOL cli_net_use_del(const char *srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL force_close, BOOL *connection_closed);
-void cli_net_use_enum(uint32 *num_cons, struct use_info ***use);
-void cli_use_wait_keyboard(void);
-
-/*The following definitions come from rpc_client/cli_wkssvc.c */
-
-BOOL do_wks_query_info(struct cli_state *cli,
- char *server_name, uint32 switch_value,
- WKS_INFO_100 *wks100);
-
-/*The following definitions come from rpc_client/ncacn_np_use.c */
-
-BOOL ncacn_np_use_del(const char *srv_name, const char *pipe_name,
- const vuser_key * key,
- BOOL force_close, BOOL *connection_closed);
-struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
- const vuser_key * key);
-struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
- const vuser_key * key,
- const char *srv_name,
- const struct ntuser_creds *ntc,
- BOOL reuse, BOOL *is_new_connection);
-#endif /* _PROTO_H_ */
diff --git a/source3/include/rpc_lsa.h b/source3/include/rpc_lsa.h
index 8e1368810f..33dde6e3cb 100644
--- a/source3/include/rpc_lsa.h
+++ b/source3/include/rpc_lsa.h
@@ -237,7 +237,7 @@ typedef struct r_lsa_query_sec_obj_info
typedef struct lsa_query_info
{
POLICY_HND pol; /* policy handle */
- uint16 info_class; /* info class */
+ uint16 info_class; /* info class */
} LSA_Q_QUERY_INFO;
@@ -537,6 +537,7 @@ typedef struct
POLICY_HND pol; /* policy handle */
DOM_SID2 sid;
UNISTR2_ARRAY rights;
+ uint32 count;
} LSA_Q_ADD_ACCT_RIGHTS;
/* LSA_R_ADD_ACCT_RIGHTS - LSA add account rights */
@@ -553,6 +554,7 @@ typedef struct
DOM_SID2 sid;
uint32 removeall;
UNISTR2_ARRAY rights;
+ uint32 count;
} LSA_Q_REMOVE_ACCT_RIGHTS;
/* LSA_R_REMOVE_ACCT_RIGHTS - LSA remove account rights */
@@ -561,22 +563,6 @@ typedef struct
NTSTATUS status;
} LSA_R_REMOVE_ACCT_RIGHTS;
-/* LSA_Q_ENUM_ACCT_WITH_RIGHT - LSA enum accounts with right */
-typedef struct
-{
- POLICY_HND pol;
- STRHDR right_hdr;
- UNISTR2 right;
-} LSA_Q_ENUM_ACCT_WITH_RIGHT;
-
-/* LSA_R_ENUM_ACCT_WITH_RIGHT - LSA enum accounts with right */
-typedef struct
-{
- uint32 count;
- SID_ARRAY sids;
- NTSTATUS status;
-} LSA_R_ENUM_ACCT_WITH_RIGHT;
-
/* LSA_Q_PRIV_GET_DISPNAME - LSA get privilege display name */
typedef struct lsa_q_priv_get_dispname
diff --git a/source3/include/rpc_misc.h b/source3/include/rpc_misc.h
index 06ad760c58..7710489435 100644
--- a/source3/include/rpc_misc.h
+++ b/source3/include/rpc_misc.h
@@ -227,22 +227,6 @@ typedef struct
UNISTR2_ARRAY_EL *strings;
} UNISTR2_ARRAY;
-
-/* an element in a sid array */
-typedef struct
-{
- uint32 ref_id;
- DOM_SID2 sid;
-} SID_ARRAY_EL;
-
-/* an array of sids */
-typedef struct
-{
- uint32 ref_id;
- uint32 count;
- SID_ARRAY_EL *sids;
-} SID_ARRAY;
-
/* DOM_RID2 - domain RID structure for ntlsa pipe */
typedef struct domrid2_info
{
diff --git a/source3/include/safe_string.h b/source3/include/safe_string.h
index 61ef4bdf96..ad7b4139a3 100644
--- a/source3/include/safe_string.h
+++ b/source3/include/safe_string.h
@@ -129,17 +129,11 @@ size_t __unsafe_string_function_usage_here_char__(void);
safe_strcpy(dest, src, sizeof(pstring)-PTR_DIFF(dest,pstring_base)-1)
-/* Inside the _fn variants of these is a call to clobber_region(), -
- * which might destroy the stack on a buggy function. We help the
- * debugging process by putting the function and line who last caused
- * a clobbering into a static buffer. If the program crashes at
- * address 0xf1f1f1f1 then this function is probably, but not
- * necessarily, to blame. */
-
-/* overmalloc_safe_strcpy: DEPRECATED! Used when you know the
- * destination buffer is longer than maxlength, but you don't know how
- * long. This is not a good situation, because we can't do the normal
- * sanity checks. Don't use in new code! */
+/* inside the _fn varients of these is a call to 'clobber_region' - which might
+ destory the stack on a buggy function. Help the debugging process by putting
+ the function and line it was last called from into a static buffer
+
+ But only for developers */
#ifdef DEVELOPER
#define overmalloc_safe_strcpy(dest,src,maxlength) safe_strcpy_fn(__FUNCTION__,__LINE__,dest,src,maxlength)
@@ -220,4 +214,7 @@ size_t __unsafe_string_function_usage_here_char__(void);
#define strlower(s) strlower_m(s)
#define strupper(s) strupper_m(s)
+#define safe_strcpy_base(dest, src, base, size) \
+ safe_strcpy(dest, src, size-PTR_DIFF(dest,base)-1)
+
#endif
diff --git a/source3/include/sam.h b/source3/include/sam.h
deleted file mode 100644
index f46a6e7bcb..0000000000
--- a/source3/include/sam.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM structures
- Copyright (C) Kai Krueger 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Simo Sorce 2002
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _SAM_H
-#define _SAM_H
-
-/* We want to track down bugs early */
-#if 1
-#define SAM_ASSERT(x) SMB_ASSERT(x)
-#else
-#define SAM_ASSERT(x) while (0) { \
- if (!(x)) {
- DEBUG(0, ("SAM_ASSERT failed!\n"))
- return NT_STATUS_FAIL_CHECK;\
- } \
- }
-#endif
-
-
-/* let it be 0 until we have a stable interface --metze */
-#define SAM_INTERFACE_VERSION 0
-
-/* use this inside a passdb module */
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
- return SAM_INTERFACE_VERSION;\
-}
-
-/* Backend to use by default when no backend was specified */
-#define SAM_DEFAULT_BACKEND "plugin"
-
-typedef struct sam_domain_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_domain_handle **);
- struct domain_data {
- DOM_SID sid; /*SID of the domain. Should not be changed */
- char *name; /* Name of the domain */
- char *servername; /* */
- NTTIME max_passwordage; /* time till next password expiration */
- NTTIME min_passwordage; /* time till password can be changed again */
- NTTIME lockout_duration; /* time till login is allowed again after lockout*/
- NTTIME reset_count; /* time till bad login counter is reset */
- uint16 min_passwordlength; /* minimum number of characters for a password */
- uint16 password_history; /* number of passwords stored in history */
- uint16 lockout_count; /* number of bad login attempts before lockout */
- BOOL force_logoff; /* force logoff after logon hours have expired */
- BOOL login_pwdchange; /* Users need to logon to change their password */
- uint32 num_accounts; /* number of accounts in the domain */
- uint32 num_groups; /* number of global groups */
- uint32 num_aliases; /* number of local groups */
- uint32 sam_sequence_number; /* global sequence number */
- } private;
-} SAM_DOMAIN_HANDLE;
-
-typedef struct sam_account_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_account_handle **);
- struct sam_account_data {
- uint32 init_flag;
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
- char * account_name; /* account_name string */
- SAM_DOMAIN_HANDLE * domain; /* domain of account */
- char *full_name; /* account's full name string */
- char *unix_home_dir; /* UNIX home directory string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *acct_desc; /* account description string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
- DOM_SID account_sid; /* Primary Account SID */
- DOM_SID group_sid; /* Primary Group SID */
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
- char *plaintext_pw; /* if Null not available */
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- uint32 unknown_1; /* 0x00ff ffff */
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 hours[MAX_HOURS_LEN];
- uint32 unknown_2; /* 0x0002 0000 */
- uint32 unknown_3; /* 0x0000 04ec */
- } private;
-} SAM_ACCOUNT_HANDLE;
-
-typedef struct sam_group_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_group_handle **);
- struct sam_group_data {
- char *group_name;
- char *group_desc;
- DOM_SID sid;
- uint16 group_ctrl; /* specifies if the group is a local group or a global group */
- uint32 num_members;
- } private;
-} SAM_GROUP_HANDLE;
-
-
-typedef struct sam_group_member {
- DOM_SID sid;
- BOOL group; /* specifies if it is a group or a account */
-} SAM_GROUP_MEMBER;
-
-typedef struct sam_account_enum {
- DOM_SID sid;
- char *account_name;
- char *full_name;
- char *account_desc;
- uint16 acct_ctrl;
-} SAM_ACCOUNT_ENUM;
-
-typedef struct sam_group_enum {
- DOM_SID sid;
- char *group_name;
- char *group_desc;
- uint16 group_ctrl;
-} SAM_GROUP_ENUM;
-
-
-/* bits for group_ctrl: to spezify if the group is global group or alias */
-#define GCB_LOCAL_GROUP 0x0001
-#define GCB_ALIAS_GROUP (GCB_LOCAL_GROUP |GCB_BUILTIN)
-#define GCB_GLOBAL_GROUP 0x0002
-#define GCB_BUILTIN 0x1000
-
-typedef struct sam_context
-{
- struct sam_methods *methods;
- TALLOC_CTX *mem_ctx;
-
- void (*free_fn)(struct sam_context **);
-} SAM_CONTEXT;
-
-typedef struct sam_methods
-{
- struct sam_context *parent;
- struct sam_methods *next;
- struct sam_methods *prev;
- const char *backendname;
- const char *domain_name;
- DOM_SID domain_sid;
- void *private_data;
-
- /* General API */
-
- NTSTATUS (*sam_get_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd);
- NTSTATUS (*sam_set_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd);
-
- NTSTATUS (*sam_lookup_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type);
- NTSTATUS (*sam_lookup_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const char *name, DOM_SID *sid, uint32 *type);
-
- /* Domain API */
-
- NTSTATUS (*sam_update_domain) (const struct sam_methods *, const SAM_DOMAIN_HANDLE *domain);
- NTSTATUS (*sam_get_domain_handle) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain);
-
- /* Account API */
-
- NTSTATUS (*sam_create_account) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account);
- NTSTATUS (*sam_add_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_update_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_delete_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_enum_accounts) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts);
-
- NTSTATUS (*sam_get_account_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account);
- NTSTATUS (*sam_get_account_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account);
-
- /* Group API */
-
- NTSTATUS (*sam_create_group) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group);
- NTSTATUS (*sam_add_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_update_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_delete_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_enum_groups) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups);
- NTSTATUS (*sam_get_group_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group);
- NTSTATUS (*sam_get_group_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group);
-
- NTSTATUS (*sam_add_member_to_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
- NTSTATUS (*sam_delete_member_from_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
- NTSTATUS (*sam_enum_groupmembers) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members);
-
- NTSTATUS (*sam_get_groups_of_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups);
-
- void (*free_private_data)(void **);
-} SAM_METHODS;
-
-typedef NTSTATUS (*sam_init_function)(SAM_METHODS *, const char *);
-
-struct sam_init_function_entry {
- char *module_name;
- /* Function to create a member of the sam_methods list */
- sam_init_function init;
-};
-
-typedef struct sam_backend_entry {
- char *module_name;
- char *module_params;
- char *domain_name;
- DOM_SID *domain_sid;
-} SAM_BACKEND_ENTRY;
-
-
-#endif /* _SAM_H */
diff --git a/source3/include/secrets.h b/source3/include/secrets.h
index 07faf28d43..183b29d7a8 100644
--- a/source3/include/secrets.h
+++ b/source3/include/secrets.h
@@ -57,14 +57,14 @@ struct machine_acct_pass {
/*
* storage structure for trusted domain
*/
-typedef struct trusted_dom_pass {
+struct trusted_dom_pass {
size_t uni_name_len;
smb_ucs2_t uni_name[32]; /* unicode domain name */
size_t pass_len;
fstring pass; /* trust relationship's password */
time_t mod_time;
DOM_SID domain_sid; /* remote domain's sid */
-} TRUSTED_DOM_PASS;
+};
/*
* trusted domain entry/entries returned by secrets_get_trusted_domains
diff --git a/source3/include/smb.h b/source3/include/smb.h
index bf2d5631a7..edd25fb44e 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1721,6 +1721,6 @@ extern struct poptOption popt_common_netbios_name[];
extern struct poptOption popt_common_log_base[];
/* Module support */
-typedef int (init_module_function) (void);
+typedef NTSTATUS (init_module_function) (void);
#endif /* _SMB_H */
diff --git a/source3/include/tdbsam2.h b/source3/include/tdbsam2.h
deleted file mode 100644
index 047b4e7c90..0000000000
--- a/source3/include/tdbsam2.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * tdbsam2 genstruct enabled header file
- * Copyright (C) Simo Sorce 2002
- *
- * 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 2 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, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* ALL strings assumes UTF8 as encoding */
-
-GENSTRUCT struct tdbsam2_domain_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *dom_sid; /* The Domain SID */
- char *name; _NULLTERM /* NT Domain Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- uint32 next_rid; /* The Next free RID */
-};
-
-GENSTRUCT struct tdbsam2_user_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *user_sid; /* The User SID */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- DOM_SID *group_sid; /* The Primary Group SID */
-
- NTTIME *logon_time;
- NTTIME *logoff_time;
- NTTIME *kickoff_time;
- NTTIME *pass_last_set_time;
- NTTIME *pass_can_change_time;
- NTTIME *pass_must_change_time;
-
- char *full_name; _NULLTERM /* The Full Name */
- char *home_dir; _NULLTERM /* Home Directory */
- char *dir_drive; _NULLTERM /* Drive Letter the home should be mapped to */
- char *logon_script; _NULLTERM /* Logon script path */
- char *profile_path; _NULLTERM /* Profile is stored here */
- char *workstations; _NULLTERM /* List of Workstation names the user is allowed to LogIn */
- char *unknown_str; _NULLTERM /* Guess ... Unknown */
- char *munged_dial; _NULLTERM /* Callback Number */
-
- /* passwords are 16 byte leght, pointer is null if no password */
- uint8 *lm_pw_ptr; _LEN(16) /* Lanman hashed password */
- uint8 *nt_pw_ptr; _LEN(16) /* NT hashed password */
-
- uint16 logon_divs; /* 168 - num of hours in a week */
- uint32 hours_len; /* normally 21 */
- uint8 *hours; _LEN(hours_len) /* normally 21 bytes (depends on hours_len) */
-
- uint32 unknown_3; /* 0x00ff ffff */
- uint32 unknown_5; /* 0x0002 0000 */
- uint32 unknown_6; /* 0x0000 04ec */
-};
-
-GENSTRUCT struct tdbsam2_group_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *group_sid; /* The Group SID */
- char *name; _NULLTERM /* NT Group Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- uint32 count; /* number of sids */
- DOM_SID **members; _LEN(count) /* SID array */
-};
-
-GENSTRUCT struct tdbsam2_privilege_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- LUID_ATTR *privilege; /* Privilege */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- uint32 count; /* number of sids */
- DOM_SID **members; _LEN(count) /* SID array */
-};
-
diff --git a/source3/include/version.h b/source3/include/version.h
index c0a1c702f2..7f3ec99e29 100644
--- a/source3/include/version.h
+++ b/source3/include/version.h
@@ -1 +1 @@
-#define VERSION "post3.0-HEAD"
+#define VERSION "3.0alpha22"
diff --git a/source3/lib/crc32.c b/source3/lib/crc32.c
index da3aeaa901..bd4f1633e5 100644
--- a/source3/lib/crc32.c
+++ b/source3/lib/crc32.c
@@ -8,7 +8,7 @@
#include "includes.h"
-static const unsigned long CRCTable[256] =
+static unsigned long CRCTable[256] =
{
0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,
0xE963A535,0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,
@@ -55,7 +55,7 @@ static const unsigned long CRCTable[256] =
0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D
};
-uint32 crc32_calc_buffer( const char *buffer, uint32 count)
+uint32 crc32_calc_buffer( char *buffer, uint32 count)
{
uint32 crc=0xffffffff, i;
for(i=0;i<count;i++)
diff --git a/source3/lib/domain_namemap.c b/source3/lib/domain_namemap.c
deleted file mode 100644
index 988f5e5d65..0000000000
--- a/source3/lib/domain_namemap.c
+++ /dev/null
@@ -1,1317 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Groupname handling
- Copyright (C) Jeremy Allison 1998.
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * UNIX gid and Local or Domain SID resolution. This module resolves
- * only those entries in the map files, it is *NOT* responsible for
- * resolving UNIX groups not listed: that is an entirely different
- * matter, altogether...
- */
-
-/*
- *
- *
-
- format of the file is:
-
- unixname NT Group name
- unixname Domain Admins (well-known Domain Group)
- unixname DOMAIN_NAME\NT Group name
- unixname OTHER_DOMAIN_NAME\NT Group name
- unixname DOMAIN_NAME\Domain Admins (well-known Domain Group)
- ....
-
- if the DOMAIN_NAME\ component is left off, then your own domain is assumed.
-
- *
- *
- */
-
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-extern fstring global_myworkgroup;
-extern DOM_SID global_member_sid;
-extern fstring global_sam_name;
-extern DOM_SID global_sam_sid;
-extern DOM_SID global_sid_S_1_5_20;
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uid_t pwdb_user_rid_to_uid(uint32 user_rid)
-{
- return ((user_rid & (~RID_TYPE_USER))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_group_rid_to_gid(uint32 group_rid)
-{
- return ((group_rid & (~RID_TYPE_GROUP))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Alias RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_alias_rid_to_gid(uint32 alias_rid)
-{
- return ((alias_rid & (~RID_TYPE_ALIAS))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_group_rid(uint32 gid)
-{
- uint32 grp_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_GROUP);
- return grp_rid;
-}
-
-/******************************************************************
- converts UNIX gid to an NT Alias RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_alias_rid(uint32 gid)
-{
- uint32 alias_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_ALIAS);
- return alias_rid;
-}
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_uid_to_user_rid(uint32 uid)
-{
- uint32 user_rid = ((((uid)*RID_MULTIPLIER) + 1000) | RID_TYPE_USER);
- return user_rid;
-}
-
-/******************************************************************
- converts SID + SID_NAME_USE type to a UNIX id. the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_sam_sid_to_unixid(DOM_SID *sid, uint8 type, uint32 *id)
-{
- DOM_SID tmp_sid;
- uint32 rid;
-
- sid_copy(&tmp_sid, sid);
- sid_split_rid(&tmp_sid, &rid);
- if (!sid_equal(&global_sam_sid, &tmp_sid))
- {
- return False;
- }
-
- switch (type)
- {
- case SID_NAME_USER:
- {
- *id = pwdb_user_rid_to_uid(rid);
- return True;
- }
- case SID_NAME_ALIAS:
- {
- *id = pwdb_alias_rid_to_gid(rid);
- return True;
- }
- case SID_NAME_DOM_GRP:
- case SID_NAME_WKN_GRP:
- {
- *id = pwdb_group_rid_to_gid(rid);
- return True;
- }
- }
- return False;
-}
-
-/******************************************************************
- converts UNIX gid + SID_NAME_USE type to a SID. the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_unixid_to_sam_sid(uint32 id, uint8 type, DOM_SID *sid)
-{
- sid_copy(sid, &global_sam_sid);
- switch (type)
- {
- case SID_NAME_USER:
- {
- sid_append_rid(sid, pwdb_uid_to_user_rid(id));
- return True;
- }
- case SID_NAME_ALIAS:
- {
- sid_append_rid(sid, pwdb_gid_to_alias_rid(id));
- return True;
- }
- case SID_NAME_DOM_GRP:
- case SID_NAME_WKN_GRP:
- {
- sid_append_rid(sid, pwdb_gid_to_group_rid(id));
- return True;
- }
- }
- return False;
-}
-
-/*******************************************************************
- Decides if a RID is a well known RID.
- ********************************************************************/
-static BOOL pwdb_rid_is_well_known(uint32 rid)
-{
- return (rid < 1000);
-}
-
-/*******************************************************************
- determines a rid's type. NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_rid_type(uint32 rid)
-{
- /* lkcl i understand that NT attaches an enumeration to a RID
- * such that it can be identified as either a user, group etc
- * type: SID_ENUM_TYPE.
- */
- if (pwdb_rid_is_well_known(rid))
- {
- /*
- * The only well known user RIDs are DOMAIN_USER_RID_ADMIN
- * and DOMAIN_USER_RID_GUEST.
- */
- if (rid == DOMAIN_USER_RID_ADMIN || rid == DOMAIN_USER_RID_GUEST)
- {
- return RID_TYPE_USER;
- }
- if (DOMAIN_GROUP_RID_ADMINS <= rid && rid <= DOMAIN_GROUP_RID_GUESTS)
- {
- return RID_TYPE_GROUP;
- }
- if (BUILTIN_ALIAS_RID_ADMINS <= rid && rid <= BUILTIN_ALIAS_RID_REPLICATOR)
- {
- return RID_TYPE_ALIAS;
- }
- }
- return (rid & RID_TYPE_MASK);
-}
-
-/*******************************************************************
- checks whether rid is a user rid. NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-BOOL pwdb_rid_is_user(uint32 rid)
-{
- return pwdb_rid_type(rid) == RID_TYPE_USER;
-}
-
-/**************************************************************************
- Groupname map functionality. The code loads a groupname map file and
- (currently) loads it into a linked list. This is slow and memory
- hungry, but can be changed into a more efficient storage format
- if the demands on it become excessive.
-***************************************************************************/
-
-typedef struct name_map
-{
- ubi_slNode next;
- DOM_NAME_MAP grp;
-
-} name_map_entry;
-
-static ubi_slList groupname_map_list;
-static ubi_slList aliasname_map_list;
-static ubi_slList ntusrname_map_list;
-
-static void delete_name_entry(name_map_entry *gmep)
-{
- if (gmep->grp.nt_name)
- {
- free(gmep->grp.nt_name);
- }
- if (gmep->grp.nt_domain)
- {
- free(gmep->grp.nt_domain);
- }
- if (gmep->grp.unix_name)
- {
- free(gmep->grp.unix_name);
- }
- free((char*)gmep);
-}
-
-/**************************************************************************
- Delete all the entries in the name map list.
-***************************************************************************/
-
-static void delete_map_list(ubi_slList *map_list)
-{
- name_map_entry *gmep;
-
- while ((gmep = (name_map_entry *)ubi_slRemHead(map_list )) != NULL)
- {
- delete_name_entry(gmep);
- }
-}
-
-
-/**************************************************************************
- makes a group sid out of a domain sid and a _unix_ gid.
-***************************************************************************/
-static BOOL make_mydomain_sid(DOM_NAME_MAP *grp, DOM_MAP_TYPE type)
-{
- int ret = False;
- fstring sid_str;
-
- if (!map_domain_name_to_sid(&grp->sid, &(grp->nt_domain)))
- {
- DEBUG(0,("make_mydomain_sid: unknown domain %s\n",
- grp->nt_domain));
- return False;
- }
-
- if (sid_equal(&grp->sid, &global_sid_S_1_5_20))
- {
- /*
- * only builtin aliases are recognised in S-1-5-20
- */
- DEBUG(10,("make_mydomain_sid: group %s in builtin domain\n",
- grp->nt_name));
-
- if (lookup_builtin_alias_name(grp->nt_name, "BUILTIN", &grp->sid, &grp->type) != 0x0)
- {
- DEBUG(0,("unix group %s mapped to an unrecognised BUILTIN domain name %s\n",
- grp->unix_name, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else if (lookup_wk_user_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
- {
- if (type != DOM_MAP_USER)
- {
- DEBUG(0,("well-known NT user %s\\%s listed in wrong map file\n",
- grp->nt_domain, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else if (lookup_wk_group_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
- {
- if (type != DOM_MAP_DOMAIN)
- {
- DEBUG(0,("well-known NT group %s\\%s listed in wrong map file\n",
- grp->nt_domain, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else
- {
- switch (type)
- {
- case DOM_MAP_USER:
- {
- grp->type = SID_NAME_USER;
- break;
- }
- case DOM_MAP_DOMAIN:
- {
- grp->type = SID_NAME_DOM_GRP;
- break;
- }
- case DOM_MAP_LOCAL:
- {
- grp->type = SID_NAME_ALIAS;
- break;
- }
- }
-
- ret = pwdb_unixid_to_sam_sid(grp->unix_id, grp->type, &grp->sid);
- }
-
- sid_to_string(sid_str, &grp->sid);
- DEBUG(10,("nt name %s\\%s gid %d mapped to %s\n",
- grp->nt_domain, grp->nt_name, grp->unix_id, sid_str));
- return ret;
-}
-
-/**************************************************************************
- makes a group sid out of an nt domain, nt group name or a unix group name.
-***************************************************************************/
-static BOOL unix_name_to_nt_name_info(DOM_NAME_MAP *map, DOM_MAP_TYPE type)
-{
- /*
- * Attempt to get the unix gid_t for this name.
- */
-
- DEBUG(5,("unix_name_to_nt_name_info: unix_name:%s\n", map->unix_name));
-
- if (type == DOM_MAP_USER)
- {
- const struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
- if (pwptr == NULL)
- {
- DEBUG(0,("unix_name_to_nt_name_info: Get_Pwnam for user %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
- return False;
- }
-
- map->unix_id = (uint32)pwptr->pw_uid;
- }
- else
- {
- struct group *gptr = getgrnam(map->unix_name);
- if (gptr == NULL)
- {
- DEBUG(0,("unix_name_to_nt_name_info: getgrnam for group %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
- return False;
- }
-
- map->unix_id = (uint32)gptr->gr_gid;
- }
-
- DEBUG(5,("unix_name_to_nt_name_info: unix gid:%d\n", map->unix_id));
-
- /*
- * Now map the name to an NT SID+RID.
- */
-
- if (map->nt_domain != NULL && !strequal(map->nt_domain, global_sam_name))
- {
- /* Must add client-call lookup code here, to
- * resolve remote domain's sid and the group's rid,
- * in that domain.
- *
- * NOTE: it is _incorrect_ to put code here that assumes
- * we are responsible for lookups for foriegn domains' RIDs.
- *
- * for foriegn domains for which we are *NOT* the PDC, all
- * we can be responsible for is the unix gid_t to which
- * the foriegn SID+rid maps to, on this _local_ machine.
- * we *CANNOT* make any short-cuts or assumptions about
- * RIDs in a foriegn domain.
- */
-
- if (!map_domain_name_to_sid(&map->sid, &(map->nt_domain)))
- {
- DEBUG(0,("unix_name_to_nt_name_info: no known sid for %s\n",
- map->nt_domain));
- return False;
- }
- }
-
- return make_mydomain_sid(map, type);
-}
-
-static BOOL make_name_entry(name_map_entry **new_ep,
- char *nt_domain, char *nt_group, char *unix_group,
- DOM_MAP_TYPE type)
-{
- /*
- * Create the list entry and add it onto the list.
- */
-
- DEBUG(5,("make_name_entry:%s,%s,%s\n", nt_domain, nt_group, unix_group));
-
- (*new_ep) = (name_map_entry *)malloc(sizeof(name_map_entry));
- if ((*new_ep) == NULL)
- {
- DEBUG(0,("make_name_entry: malloc fail for name_map_entry.\n"));
- return False;
- }
-
- ZERO_STRUCTP(*new_ep);
-
- (*new_ep)->grp.nt_name = strdup(nt_group );
- (*new_ep)->grp.nt_domain = strdup(nt_domain );
- (*new_ep)->grp.unix_name = strdup(unix_group);
-
- if ((*new_ep)->grp.nt_name == NULL ||
- (*new_ep)->grp.unix_name == NULL)
- {
- DEBUG(0,("make_name_entry: malloc fail for names in name_map_entry.\n"));
- delete_name_entry((*new_ep));
- return False;
- }
-
- /*
- * look up the group names, make the Group-SID and unix gid
- */
-
- if (!unix_name_to_nt_name_info(&(*new_ep)->grp, type))
- {
- delete_name_entry((*new_ep));
- return False;
- }
-
- return True;
-}
-
-/**************************************************************************
- Load a name map file. Sets last accessed timestamp.
-***************************************************************************/
-static ubi_slList *load_name_map(DOM_MAP_TYPE type)
-{
- static time_t groupmap_file_last_modified = (time_t)0;
- static time_t aliasmap_file_last_modified = (time_t)0;
- static time_t ntusrmap_file_last_modified = (time_t)0;
- static BOOL initialised_group = False;
- static BOOL initialised_alias = False;
- static BOOL initialised_ntusr = False;
- char *groupname_map_file = lp_groupname_map();
- char *aliasname_map_file = lp_aliasname_map();
- char *ntusrname_map_file = lp_ntusrname_map();
-
- FILE *fp;
- char *s;
- pstring buf;
- name_map_entry *new_ep;
-
- time_t *file_last_modified = NULL;
- int *initialised = NULL;
- char *map_file = NULL;
- ubi_slList *map_list = NULL;
-
- switch (type)
- {
- case DOM_MAP_DOMAIN:
- {
- file_last_modified = &groupmap_file_last_modified;
- initialised = &initialised_group;
- map_file = groupname_map_file;
- map_list = &groupname_map_list;
-
- break;
- }
- case DOM_MAP_LOCAL:
- {
- file_last_modified = &aliasmap_file_last_modified;
- initialised = &initialised_alias;
- map_file = aliasname_map_file;
- map_list = &aliasname_map_list;
-
- break;
- }
- case DOM_MAP_USER:
- {
- file_last_modified = &ntusrmap_file_last_modified;
- initialised = &initialised_ntusr;
- map_file = ntusrname_map_file;
- map_list = &ntusrname_map_list;
-
- break;
- }
- }
-
- if (!(*initialised))
- {
- DEBUG(10,("initialising map %s\n", map_file));
- ubi_slInitList(map_list);
- (*initialised) = True;
- }
-
- if (!*map_file)
- {
- return map_list;
- }
-
- /*
- * Load the file.
- */
-
- fp = open_file_if_modified(map_file, "r", file_last_modified);
- if (!fp)
- {
- return map_list;
- }
-
- /*
- * Throw away any previous list.
- */
- delete_map_list(map_list);
-
- DEBUG(4,("load_name_map: Scanning name map %s\n",map_file));
-
- while ((s = fgets_slash(buf, sizeof(buf), fp)) != NULL)
- {
- pstring unixname;
- pstring nt_name;
- fstring nt_domain;
- fstring ntname;
- char *p;
-
- DEBUG(10,("Read line |%s|\n", s));
-
- memset(nt_name, 0, sizeof(nt_name));
-
- if (!*s || strchr("#;",*s))
- continue;
-
- if (!next_token(&s,unixname, "\t\n\r=", sizeof(unixname)))
- continue;
-
- if (!next_token(&s,nt_name, "\t\n\r=", sizeof(nt_name)))
- continue;
-
- trim_string(unixname, " ", " ");
- trim_string(nt_name, " ", " ");
-
- if (!*nt_name)
- continue;
-
- if (!*unixname)
- continue;
-
- p = strchr(nt_name, '\\');
-
- if (p == NULL)
- {
- memset(nt_domain, 0, sizeof(nt_domain));
- fstrcpy(ntname, nt_name);
- }
- else
- {
- *p = 0;
- p++;
- fstrcpy(nt_domain, nt_name);
- fstrcpy(ntname , p);
- }
-
- if (make_name_entry(&new_ep, nt_domain, ntname, unixname, type))
- {
- ubi_slAddTail(map_list, (ubi_slNode *)new_ep);
- DEBUG(5,("unixname = %s, ntname = %s\\%s type = %d\n",
- new_ep->grp.unix_name,
- new_ep->grp.nt_domain,
- new_ep->grp.nt_name,
- new_ep->grp.type));
- }
- }
-
- DEBUG(10,("load_name_map: Added %ld entries to name map.\n",
- ubi_slCount(map_list)));
-
- fclose(fp);
-
- return map_list;
-}
-
-static void copy_grp_map_entry(DOM_NAME_MAP *grp, const DOM_NAME_MAP *from)
-{
- sid_copy(&grp->sid, &from->sid);
- grp->unix_id = from->unix_id;
- grp->nt_name = from->nt_name;
- grp->nt_domain = from->nt_domain;
- grp->unix_name = from->unix_name;
- grp->type = from->type;
-}
-
-#if 0
-/***********************************************************
- Lookup unix name.
-************************************************************/
-static BOOL map_unixname(DOM_MAP_TYPE type,
- char *unixname, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (strequal(gmep->grp.unix_name, unixname))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_unixname: Mapping unix name %s to nt group %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-#endif
-
-/***********************************************************
- Lookup nt name.
-************************************************************/
-static BOOL map_ntname(DOM_MAP_TYPE type, char *ntname, char *ntdomain,
- DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (strequal(gmep->grp.nt_name , ntname) &&
- strequal(gmep->grp.nt_domain, ntdomain))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_ntname: Mapping unix name %s to nt name %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-
-/***********************************************************
- Lookup by SID
-************************************************************/
-static BOOL map_sid(DOM_MAP_TYPE type,
- DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (sid_equal(&gmep->grp.sid, psid))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_sid: Mapping unix name %s to nt name %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-/***********************************************************
- Lookup by gid_t.
-************************************************************/
-static BOOL map_unixid(DOM_MAP_TYPE type, uint32 unix_id, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- fstring sid_str;
- sid_to_string(sid_str, &gmep->grp.sid);
- DEBUG(10,("map_unixid: enum entry unix group %s %d nt %s %s\n",
- gmep->grp.unix_name, gmep->grp.unix_id, gmep->grp.nt_name, sid_str));
- if (gmep->grp.unix_id == unix_id)
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_unixid: Mapping unix name %s to nt name %s type %d\n",
- gmep->grp.unix_name, gmep->grp.nt_name, gmep->grp.type));
- return True;
- }
- }
-
- return False;
-}
-
-/***********************************************************
- *
- * Call four functions to resolve unix group ids and either
- * local group SIDs or domain group SIDs listed in the local group
- * or domain group map files.
- *
- * Note that it is *NOT* the responsibility of these functions to
- * resolve entries that are not in the map files.
- *
- * Any SID can be in the map files (i.e from any Domain).
- *
- ***********************************************************/
-
-#if 0
-
-/***********************************************************
- Lookup a UNIX Group entry by name.
-************************************************************/
-BOOL map_unix_group_name(char *group_name, DOM_NAME_MAP *grp_info)
-{
- return map_unixname(DOM_MAP_DOMAIN, group_name, grp_info);
-}
-
-/***********************************************************
- Lookup a UNIX Alias entry by name.
-************************************************************/
-BOOL map_unix_alias_name(char *alias_name, DOM_NAME_MAP *grp_info)
-{
- return map_unixname(DOM_MAP_LOCAL, alias_name, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias name entry
-************************************************************/
-BOOL map_nt_alias_name(char *ntalias_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_LOCAL, ntalias_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry
-************************************************************/
-BOOL map_nt_group_name(char *ntgroup_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_DOMAIN, ntgroup_name, nt_domain, grp_info);
-}
-
-#endif
-
-/***********************************************************
- Lookup a Username entry by name.
-************************************************************/
-static BOOL map_nt_username(char *nt_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_USER, nt_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Username entry by SID.
-************************************************************/
-static BOOL map_username_sid(DOM_SID *sid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_USER, sid, grp_info);
-}
-
-/***********************************************************
- Lookup a Username SID entry by uid.
-************************************************************/
-static BOOL map_username_uid(uid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_USER, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by name.
-************************************************************/
-BOOL map_alias_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_LOCAL, psid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry by sid.
-************************************************************/
-BOOL map_group_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_DOMAIN, psid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by gid_t.
-************************************************************/
-static BOOL map_alias_gid(gid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_LOCAL, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group SID entry by gid_t.
-************************************************************/
-static BOOL map_group_gid( gid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_DOMAIN, (uint32)gid, grp_info);
-}
-
-
-/************************************************************************
- Routine to look up User details by UNIX name
-*************************************************************************/
-BOOL lookupsmbpwnam(const char *unix_usr_name, DOM_NAME_MAP *grp)
-{
- uid_t uid;
- DEBUG(10,("lookupsmbpwnam: unix user name %s\n", unix_usr_name));
- if (nametouid(unix_usr_name, &uid))
- {
- return lookupsmbpwuid(uid, grp);
- }
- else
- {
- return False;
- }
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
-{
- struct cli_state cli;
- POLICY_HND lsa_pol;
- fstring srv_name;
- extern struct ntuser_creds *usr_creds;
- struct ntuser_creds usr;
-
- BOOL res3 = True;
- BOOL res4 = True;
- uint32 num_sids;
- DOM_SID *sids;
- uint8 *types;
- char *names[1];
-
- usr_creds = &usr;
-
- ZERO_STRUCT(usr);
- pwd_set_nullpwd(&usr.pwd);
-
- DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
-
- if (!cli_connect_serverlist(&cli, lp_passwordserver()))
- {
- return False;
- }
-
- names[0] = ntname;
-
- fstrcpy(srv_name, "\\\\");
- fstrcat(srv_name, cli.desthost);
- strupper(srv_name);
-
- /* lookup domain controller; receive a policy handle */
- res3 = res3 ? lsa_open_policy( srv_name,
- &lsa_pol, True) : False;
-
- /* send lsa lookup sids call */
- res4 = res3 ? lsa_lookup_names( &lsa_pol,
- 1, names,
- &sids, &types, &num_sids) : False;
-
- res3 = res3 ? lsa_close(&lsa_pol) : False;
-
- if (res4 && res3 && sids != NULL && types != NULL)
- {
- sid_copy(sid, &sids[0]);
- *type = types[0];
- }
- else
- {
- res3 = False;
- }
- if (types != NULL)
- {
- free(types);
- }
-
- if (sids != NULL)
- {
- free(sids);
- }
-
- return res3 && res4;
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL get_sid_and_type(const char *fullntname, uint8 expected_type,
- DOM_NAME_MAP *gmep)
-{
- /*
- * check with the PDC to see if it owns the name. if so,
- * the SID is resolved with the PDC database.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- if (lookup_remote_ntname(fullntname, &gmep->sid, &gmep->type))
- {
- if (sid_front_equal(&gmep->sid, &global_member_sid) &&
- strequal(gmep->nt_domain, global_myworkgroup) &&
- gmep->type == expected_type)
- {
- return True;
- }
- return False;
- }
- }
-
- /*
- * ... otherwise, it's one of ours. map the sid ourselves,
- * which can only happen in our own SAM database.
- */
-
- if (!strequal(gmep->nt_domain, global_sam_name))
- {
- return False;
- }
- if (!pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid))
- {
- return False;
- }
-
- return True;
-}
-
-/*
- * used by lookup functions below
- */
-
-static fstring nt_name;
-static fstring unix_name;
-static fstring nt_domain;
-
-/*************************************************************************
- looks up a uid, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbpwuid: unix uid %d\n", uid));
- if (map_username_uid(uid, gmep))
- {
- return True;
- }
-#if 0
- if (lp_server_role() != ROLE_DOMAIN_NONE)
-#endif
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- gmep->unix_id = (uint32)uid;
-
- /*
- * ok, assume it's one of ours. then double-check it
- * if we are a member of a domain
- */
-
- gmep->type = SID_NAME_USER;
- fstrcpy(gmep->nt_name, uidtoname(uid));
- fstrcpy(gmep->unix_name, gmep->nt_name);
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-#endif
- }
-
- /*
- * ok, it's one of ours.
- */
-
- gmep->nt_domain = global_sam_name;
- pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid);
-
- return True;
- }
-
- /* oops. */
-
- return False;
-}
-
-/*************************************************************************
- looks up by NT name, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwntnam(const char *fullntname, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbpwntnam: nt user name %s\n", fullntname));
-
- if (!split_domain_name(fullntname, nt_domain, nt_name))
- {
- return False;
- }
-
- if (map_nt_username(nt_name, nt_domain, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- uid_t uid;
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * ok, it's one of ours. we therefore "create" an nt user named
- * after the unix user. this is the point where "appliance mode"
- * should get its teeth in, as unix users won't really exist,
- * they will only be numbers...
- */
-
- gmep->type = SID_NAME_USER;
- fstrcpy(gmep->unix_name, gmep->nt_name);
- if (!nametouid(gmep->unix_name, &uid))
- {
- return False;
- }
- gmep->unix_id = (uint32)uid;
-
- return get_sid_and_type(fullntname, gmep->type, gmep);
- }
-
- /* oops. */
-
- return False;
-}
-
-/*************************************************************************
- looks up by RID, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
- fstring sid_str;
- sid_to_string(sid_str, sid);
- DEBUG(10,("lookupsmbpwsid: nt sid %s\n", sid_str));
-
- if (map_username_sid(sid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- if (lookup_remote_sid(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt user named
- * after the unix user. this is the point where "appliance mode"
- * should get its teeth in, as unix users won't really exist,
- * they will only be numbers...
- */
-
- gmep->type = SID_NAME_USER;
- sid_copy(&gmep->sid, sid);
- if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
- {
- return False;
- }
- fstrcpy(gmep->nt_name, uidtoname((uid_t)gmep->unix_id));
- fstrcpy(gmep->unix_name, gmep->nt_name);
- gmep->nt_domain = global_sam_name;
-
- return True;
- }
-
- /* oops. */
-
- return False;
-}
-
-/************************************************************************
- Routine to look up group / alias / well-known group RID by UNIX name
-*************************************************************************/
-BOOL lookupsmbgrpnam(const char *unix_grp_name, DOM_NAME_MAP *grp)
-{
- gid_t gid;
- DEBUG(10,("lookupsmbgrpnam: unix user group %s\n", unix_grp_name));
- if (nametogid(unix_grp_name, &gid))
- {
- return lookupsmbgrpgid(gid, grp);
- }
- else
- {
- return False;
- }
-}
-
-/*************************************************************************
- looks up a SID, returns name map entry
-*************************************************************************/
-BOOL lookupsmbgrpsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
- fstring sid_str;
- sid_to_string(sid_str, sid);
- DEBUG(10,("lookupsmbgrpsid: nt sid %s\n", sid_str));
-
- if (map_alias_sid(sid, gmep))
- {
- return True;
- }
- if (map_group_sid(sid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- lsa_lookup_sids(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt group or
- * alias name named after the unix group. this is the point
- * where "appliance mode" should get its teeth in, as unix
- * groups won't really exist, they will only be numbers...
- */
-
- /* name is not explicitly mapped
- * with map files or the PDC
- * so we are responsible for it...
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- /* ... as a LOCAL group. */
- gmep->type = SID_NAME_ALIAS;
- }
- else
- {
- /* ... as a DOMAIN group. */
- gmep->type = SID_NAME_DOM_GRP;
- }
-
- sid_copy(&gmep->sid, sid);
- if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
- {
- return False;
- }
- fstrcpy(gmep->nt_name, gidtoname((gid_t)gmep->unix_id));
- fstrcpy(gmep->unix_name, gmep->nt_name);
- gmep->nt_domain = global_sam_name;
-
- return True;
- }
-
- /* oops */
- return False;
-}
-
-/*************************************************************************
- looks up a gid, returns RID and type local, domain or well-known domain group
-*************************************************************************/
-BOOL lookupsmbgrpgid(gid_t gid, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbgrpgid: unix gid %d\n", (int)gid));
- if (map_alias_gid(gid, gmep))
- {
- return True;
- }
- if (map_group_gid(gid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- gmep->unix_id = (uint32)gid;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- if (lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
- {
- return True;
- }
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt group or
- * alias name named after the unix group. this is the point
- * where "appliance mode" should get its teeth in, as unix
- * groups won't really exist, they will only be numbers...
- */
-
- /* name is not explicitly mapped
- * with map files or the PDC
- * so we are responsible for it...
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- /* ... as a LOCAL group. */
- gmep->type = SID_NAME_ALIAS;
- }
- else
- {
- /* ... as a DOMAIN group. */
- gmep->type = SID_NAME_DOM_GRP;
- }
- fstrcpy(gmep->nt_name, gidtoname(gid));
- fstrcpy(gmep->unix_name, gmep->nt_name);
-
- return get_sid_and_type(gmep->nt_name, gmep->type, gmep);
- }
-
- /* oops */
- return False;
-}
-
diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c
index 5c8ad1339b..7260e477b8 100644
--- a/source3/lib/gencache.c
+++ b/source3/lib/gencache.c
@@ -94,12 +94,12 @@ BOOL gencache_shutdown(void)
* Set an entry in the cache file. If there's no such
* one, then add it.
*
- * @param keystr string that represents a key of this entry
+ * @param key string that represents a key of this entry
* @param value text representation value being cached
* @param timeout time when the value is expired
*
- * @retval true when entry is successfuly stored
- * @retval false on failure
+ * @return true when entry is successfuly stored or
+ * false on the attempt's failure
**/
BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
@@ -134,12 +134,12 @@ BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
/**
* Set existing entry to the cache file.
*
- * @param keystr string that represents a key of this entry
- * @param valstr text representation value being cached
+ * @param key string that represents a key of this entry
+ * @param value text representation value being cached
* @param timeout time when the value is expired
*
- * @retval true when entry is successfuly set
- * @retval false on failure
+ * @return true when entry is successfuly set or
+ * false on the attempt's failure
**/
BOOL gencache_set_only(const char *keystr, const char *valstr, time_t timeout)
@@ -189,10 +189,10 @@ BOOL gencache_set_only(const char *keystr, const char *valstr, time_t timeout)
/**
* Delete one entry from the cache file.
*
- * @param keystr string that represents a key of this entry
+ * @param key string that represents a key of this entry
*
- * @retval true upon successful deletion
- * @retval false in case of failure
+ * @return true upon successful deletion or
+ * false in case of failure
**/
BOOL gencache_del(const char *keystr)
@@ -218,14 +218,14 @@ BOOL gencache_del(const char *keystr)
/**
* Get existing entry from the cache file.
*
- * @param keystr string that represents a key of this entry
- * @param valstr buffer that is allocated and filled with the entry value
+ * @param key string that represents a key of this entry
+ * @param value buffer that is allocated and filled with the entry value
* buffer's disposing must be done outside
* @param timeout pointer to a time_t that is filled with entry's
* timeout
*
- * @retval true when entry is successfuly fetched
- * @retval False for failure
+ * @return true when entry is successfuly fetched or
+ * false on the failure
**/
BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
diff --git a/source3/lib/genparser.c b/source3/lib/genparser.c
deleted file mode 100644
index 233050b432..0000000000
--- a/source3/lib/genparser.c
+++ /dev/null
@@ -1,786 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- automatic marshalling/unmarshalling system for C structures
-*/
-
-#include "includes.h"
-
-/* see if a range of memory is all zero. Used to prevent dumping of zero elements */
-static int all_zero(const char *ptr, unsigned size)
-{
- int i;
- if (!ptr) return 1;
- for (i=0;i<size;i++) {
- if (ptr[i]) return 0;
- }
- return 1;
-}
-
-/* encode a buffer of bytes into a escaped string */
-static char *encode_bytes(TALLOC_CTX *mem_ctx, const char *ptr, unsigned len)
-{
- const char *hexdig = "0123456789abcdef";
- char *ret, *p;
- unsigned i;
- ret = talloc(mem_ctx, len*3 + 1); /* worst case size */
- if (!ret) return NULL;
- for (p=ret,i=0;i<len;i++) {
- if (isalnum(ptr[i]) || isspace(ptr[i]) ||
- (ispunct(ptr[i]) && !strchr("\\{}", ptr[i]))) {
- *p++ = ptr[i];
- } else {
- unsigned char c = *(unsigned char *)(ptr+i);
- if (c == 0 && all_zero(ptr+i, len-i)) break;
- p[0] = '\\';
- p[1] = hexdig[c>>4];
- p[2] = hexdig[c&0xF];
- p += 3;
- }
- }
-
- *p = 0;
-
- return ret;
-}
-
-/* decode an escaped string from encode_bytes() into a buffer */
-static char *decode_bytes(TALLOC_CTX *mem_ctx, const char *s, unsigned *len)
-{
- char *ret, *p;
- unsigned i;
- int slen = strlen(s) + 1;
-
- ret = talloc(mem_ctx, slen); /* worst case length */
- if (!ret)
- return NULL;
- memset(ret, 0, slen);
-
- if (*s == '{') s++;
-
- for (p=ret,i=0;s[i];i++) {
- if (s[i] == '}') {
- break;
- } else if (s[i] == '\\') {
- unsigned v;
- if (sscanf(&s[i+1], "%02x", &v) != 1 || v > 255) {
- return NULL;
- }
- *(unsigned char *)p = v;
- p++;
- i += 2;
- } else {
- *p++ = s[i];
- }
- }
- *p = 0;
-
- (*len) = (unsigned)(p - ret);
-
- return ret;
-}
-
-/* the add*() functions deal with adding things to a struct
- parse_string */
-
-/* allocate more space if needed */
-static int addgen_alloc(TALLOC_CTX *mem_ctx, struct parse_string *p, int n)
-{
- if (p->length + n <= p->allocated) return 0;
- p->allocated = p->length + n + 200;
- p->s = talloc_realloc(mem_ctx, p->s, p->allocated);
- if (!p->s) {
- errno = ENOMEM;
- return -1;
- }
- return 0;
-}
-
-/* add a character to the buffer */
-static int addchar(TALLOC_CTX *mem_ctx, struct parse_string *p, char c)
-{
- if (addgen_alloc(mem_ctx, p, 2) != 0) {
- return -1;
- }
- p->s[p->length++] = c;
- p->s[p->length] = 0;
- return 0;
-}
-
-/* add a string to the buffer */
-int addstr(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *s)
-{
- int len = strlen(s);
- if (addgen_alloc(mem_ctx, p, len+1) != 0) {
- return -1;
- }
- memcpy(p->s + p->length, s, len+1);
- p->length += len;
- return 0;
-}
-
-/* add a string to the buffer with a tab prefix */
-static int addtabbed(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *s, unsigned indent)
-{
- int len = strlen(s);
- if (addgen_alloc(mem_ctx, p, indent+len+1) != 0) {
- return -1;
- }
- while (indent--) {
- p->s[p->length++] = '\t';
- }
- memcpy(p->s + p->length, s, len+1);
- p->length += len;
- return 0;
-}
-
-/* note! this can only be used for results up to 60 chars wide! */
-int addshort(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *fmt, ...)
-{
- char buf[60];
- int n;
- va_list ap;
- va_start(ap, fmt);
- n = vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- if (addgen_alloc(mem_ctx, p, n + 1) != 0) {
- return -1;
- }
- if (n != 0) {
- memcpy(p->s + p->length, buf, n);
- }
- p->length += n;
- p->s[p->length] = 0;
- return 0;
-}
-
-/*
- this is here to make it easier for people to write dump functions
- for their own types
- */
-int gen_addgen(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *fmt, ...)
-{
- char *buf = NULL;
- int n;
- va_list ap;
- va_start(ap, fmt);
- n = vasprintf(&buf, fmt, ap);
- va_end(ap);
- if (addgen_alloc(mem_ctx, p, n + 1) != 0) {
- if (buf) free(buf);
- return -1;
- }
- if (n != 0) {
- memcpy(p->s + p->length, buf, n);
- }
- p->length += n;
- p->s[p->length] = 0;
- if (buf) free(buf);
- return 0;
-}
-
-/* dump a enumerated type */
-int gen_dump_enum(TALLOC_CTX *mem_ctx,
- const struct enum_struct *einfo,
- struct parse_string *p,
- const char *ptr,
- unsigned indent)
-{
- unsigned v = *(unsigned *)ptr;
- int i;
- for (i=0;einfo[i].name;i++) {
- if (v == einfo[i].value) {
- addstr(mem_ctx, p, einfo[i].name);
- return 0;
- }
- }
- /* hmm, maybe we should just fail? */
- return gen_dump_unsigned(mem_ctx, p, ptr, indent);
-}
-
-/* dump a single non-array element, hanlding struct and enum */
-static int gen_dump_one(TALLOC_CTX *mem_ctx,
- struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *ptr,
- unsigned indent)
-{
- if (pinfo->dump_fn == gen_dump_char && pinfo->ptr_count == 1) {
- char *s = encode_bytes(mem_ctx, ptr, strlen(ptr));
- if (addchar(mem_ctx, p,'{') ||
- addstr(mem_ctx, p, s) ||
- addstr(mem_ctx, p, "}")) {
- return -1;
- }
- return 0;
- }
-
- return pinfo->dump_fn(mem_ctx, p, ptr, indent);
-}
-
-/* handle dumping of an array of arbitrary type */
-static int gen_dump_array(TALLOC_CTX *mem_ctx,
- struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *ptr,
- int array_len,
- int indent)
-{
- int i, count=0;
-
- /* special handling of fixed length strings */
- if (array_len != 0 &&
- pinfo->ptr_count == 0 &&
- pinfo->dump_fn == gen_dump_char) {
- char *s = encode_bytes(mem_ctx, ptr, array_len);
- if (!s) return -1;
- if (addtabbed(mem_ctx, p, pinfo->name, indent) ||
- addstr(mem_ctx, p, " = {") ||
- addstr(mem_ctx, p, s) ||
- addstr(mem_ctx, p, "}\n")) {
- return -1;
- }
- free(s);
- return 0;
- }
-
- for (i=0;i<array_len;i++) {
- const char *p2 = ptr;
- unsigned size = pinfo->size;
-
- /* generic pointer dereference */
- if (pinfo->ptr_count) {
- p2 = *(const char **)ptr;
- size = sizeof(void *);
- }
-
- if ((count || pinfo->ptr_count) &&
- !(pinfo->flags & FLAG_ALWAYS) &&
- all_zero(ptr, size)) {
- ptr += size;
- continue;
- }
- if (count == 0) {
- if (addtabbed(mem_ctx, p, pinfo->name, indent) ||
- addshort(mem_ctx, p, " = %u:", i)) {
- return -1;
- }
- } else {
- if (addshort(mem_ctx, p, ", %u:", i) != 0) {
- return -1;
- }
- }
- if (gen_dump_one(mem_ctx, p, pinfo, p2, indent) != 0) {
- return -1;
- }
- ptr += size;
- count++;
- }
- if (count) {
- return addstr(mem_ctx, p, "\n");
- }
- return 0;
-}
-
-/* find a variable by name in a loaded structure and return its value
- as an integer. Used to support dynamic arrays */
-static int find_var(const struct parse_struct *pinfo,
- const char *data,
- const char *var)
-{
- int i;
- const char *ptr;
-
- /* this allows for constant lengths */
- if (isdigit(*var)) {
- return atoi(var);
- }
-
- for (i=0;pinfo[i].name;i++) {
- if (strcmp(pinfo[i].name, var) == 0) break;
- }
- if (!pinfo[i].name) return -1;
-
- ptr = data + pinfo[i].offset;
-
- switch (pinfo[i].size) {
- case sizeof(int):
- return *(int *)ptr;
- case sizeof(char):
- return *(char *)ptr;
- }
-
- return -1;
-}
-
-
-int gen_dump_struct(TALLOC_CTX *mem_ctx,
- const struct parse_struct *pinfo,
- struct parse_string *p,
- const char *ptr,
- unsigned indent)
-{
- char *s = gen_dump(mem_ctx, pinfo, ptr, indent+1);
- if (!s) return -1;
- if (addstr(mem_ctx, p, "{\n") ||
- addstr(mem_ctx, p, s) ||
- addtabbed(mem_ctx, p, "}", indent)) {
- return -1;
- }
- return 0;
-}
-
-static int gen_dump_string(TALLOC_CTX *mem_ctx,
- struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *data,
- unsigned indent)
-{
- const char *ptr = *(char **)data;
- char *s = encode_bytes(mem_ctx, ptr, strlen(ptr));
- if (addtabbed(mem_ctx, p, pinfo->name, indent) ||
- addstr(mem_ctx, p, " = ") ||
- addchar(mem_ctx, p, '{') ||
- addstr(mem_ctx, p, s) ||
- addstr(mem_ctx, p, "}\n")) {
- return -1;
- }
- return 0;
-}
-
-/*
- find the length of a nullterm array
-*/
-static int len_nullterm(const char *ptr, int size, int array_len)
-{
- int len;
-
- if (size == 1) {
- len = strnlen(ptr, array_len);
- } else {
- for (len=0; len < array_len; len++) {
- if (all_zero(ptr+len*size, size)) break;
- }
- }
-
- if (len == 0) len = 1;
-
- return len;
-}
-
-
-/* the generic dump routine. Scans the parse information for this structure
- and processes it recursively */
-char *gen_dump(TALLOC_CTX *mem_ctx,
- const struct parse_struct *pinfo,
- const char *data,
- unsigned indent)
-{
- struct parse_string p;
- int i;
-
- p.length = 0;
- p.allocated = 0;
- p.s = NULL;
-
- if (addstr(mem_ctx, &p, "") != 0) {
- return NULL;
- }
-
- for (i=0;pinfo[i].name;i++) {
- const char *ptr = data + pinfo[i].offset;
- unsigned size = pinfo[i].size;
-
- if (pinfo[i].ptr_count) {
- size = sizeof(void *);
- }
-
- /* special handling for array types */
- if (pinfo[i].array_len) {
- unsigned len = pinfo[i].array_len;
- if (pinfo[i].flags & FLAG_NULLTERM) {
- len = len_nullterm(ptr, size, len);
- }
- if (gen_dump_array(mem_ctx, &p, &pinfo[i], ptr,
- len, indent)) {
- goto failed;
- }
- continue;
- }
-
- /* and dynamically sized arrays */
- if (pinfo[i].dynamic_len) {
- int len = find_var(pinfo, data, pinfo[i].dynamic_len);
- struct parse_struct p2 = pinfo[i];
- if (len < 0) {
- goto failed;
- }
- if (len > 0) {
- if (pinfo[i].flags & FLAG_NULLTERM) {
- len = len_nullterm(*(char **)ptr,
- pinfo[i].size, len);
- }
- p2.ptr_count--;
- p2.dynamic_len = NULL;
- if (gen_dump_array(mem_ctx, &p, &p2,
- *(char **)ptr,
- len, indent) != 0) {
- goto failed;
- }
- }
- continue;
- }
-
- /* don't dump zero elements */
- if (!(pinfo[i].flags & FLAG_ALWAYS) && all_zero(ptr, size)) continue;
-
- /* assume char* is a null terminated string */
- if (pinfo[i].size == 1 && pinfo[i].ptr_count == 1 &&
- pinfo[i].dump_fn == gen_dump_char) {
- if (gen_dump_string(mem_ctx, &p, &pinfo[i], ptr, indent) != 0) {
- goto failed;
- }
- continue;
- }
-
- /* generic pointer dereference */
- if (pinfo[i].ptr_count) {
- ptr = *(const char **)ptr;
- }
-
- if (addtabbed(mem_ctx, &p, pinfo[i].name, indent) ||
- addstr(mem_ctx, &p, " = ") ||
- gen_dump_one(mem_ctx, &p, &pinfo[i], ptr, indent) ||
- addstr(mem_ctx, &p, "\n")) {
- goto failed;
- }
- }
- return p.s;
-
-failed:
- return NULL;
-}
-
-/* search for a character in a string, skipping over sections within
- matching braces */
-static char *match_braces(char *s, char c)
-{
- int depth = 0;
- while (*s) {
- switch (*s) {
- case '}':
- depth--;
- break;
- case '{':
- depth++;
- break;
- }
- if (depth == 0 && *s == c) {
- return s;
- }
- s++;
- }
- return s;
-}
-
-/* parse routine for enumerated types */
-int gen_parse_enum(TALLOC_CTX *mem_ctx,
- const struct enum_struct *einfo,
- char *ptr,
- const char *str)
-{
- unsigned v;
- int i;
-
- if (isdigit(*str)) {
- if (sscanf(str, "%u", &v) != 1) {
- errno = EINVAL;
- return -1;
- }
- *(unsigned *)ptr = v;
- return 0;
- }
-
- for (i=0;einfo[i].name;i++) {
- if (strcmp(einfo[i].name, str) == 0) {
- *(unsigned *)ptr = einfo[i].value;
- return 0;
- }
- }
-
- /* unknown enum value?? */
- return -1;
-}
-
-
-/* parse all base types */
-static int gen_parse_base(TALLOC_CTX *mem_ctx,
- const struct parse_struct *pinfo,
- char *ptr,
- const char *str)
-{
- if (pinfo->parse_fn == gen_parse_char && pinfo->ptr_count==1) {
- unsigned len;
- char *s = decode_bytes(mem_ctx, str, &len);
- if (!s) return -1;
- *(char **)ptr = s;
- return 0;
- }
-
- if (pinfo->ptr_count) {
- unsigned size = pinfo->ptr_count>1?sizeof(void *):pinfo->size;
- struct parse_struct p2 = *pinfo;
- *(void **)ptr = talloc(mem_ctx, size);
- if (! *(void **)ptr) {
- return -1;
- }
- memset(*(void **)ptr, 0, size);
- ptr = *(char **)ptr;
- p2.ptr_count--;
- return gen_parse_base(mem_ctx, &p2, ptr, str);
- }
-
- return pinfo->parse_fn(mem_ctx, ptr, str);
-}
-
-/* parse a generic array */
-static int gen_parse_array(TALLOC_CTX *mem_ctx,
- const struct parse_struct *pinfo,
- char *ptr,
- const char *str,
- int array_len)
-{
- char *p, *p2;
- unsigned size = pinfo->size;
-
- /* special handling of fixed length strings */
- if (array_len != 0 &&
- pinfo->ptr_count == 0 &&
- pinfo->dump_fn == gen_dump_char) {
- unsigned len = 0;
- char *s = decode_bytes(mem_ctx, str, &len);
- if (!s || (len > array_len)) return -1;
- memset(ptr, 0, array_len);
- memcpy(ptr, s, len);
- return 0;
- }
-
- if (pinfo->ptr_count) {
- size = sizeof(void *);
- }
-
- while (*str) {
- unsigned idx;
- int done;
-
- idx = atoi(str);
- p = strchr(str,':');
- if (!p) break;
- p++;
- p2 = match_braces(p, ',');
- done = (*p2 != ',');
- *p2 = 0;
-
- if (*p == '{') {
- p++;
- p[strlen(p)-1] = 0;
- }
-
- if (gen_parse_base(mem_ctx, pinfo, ptr + idx*size, p) != 0) {
- return -1;
- }
-
- if (done) break;
- str = p2+1;
- }
-
- return 0;
-}
-
-/* parse one element, hanlding dynamic and static arrays */
-static int gen_parse_one(TALLOC_CTX *mem_ctx,
- const struct parse_struct *pinfo,
- const char *name,
- char *data,
- const char *str)
-{
- int i;
- for (i=0;pinfo[i].name;i++) {
- if (strcmp(pinfo[i].name, name) == 0) {
- break;
- }
- }
- if (pinfo[i].name == NULL) {
- return 0;
- }
-
- if (pinfo[i].array_len) {
- return gen_parse_array(mem_ctx, &pinfo[i],
- data+pinfo[i].offset,
- str, pinfo[i].array_len);
- }
-
- if (pinfo[i].dynamic_len) {
- int len = find_var(pinfo, data, pinfo[i].dynamic_len);
- if (len < 0) {
- errno = EINVAL;
- return -1;
- }
- if (len > 0) {
- struct parse_struct p2 = pinfo[i];
- char *ptr;
- unsigned size = pinfo[i].ptr_count>1?sizeof(void*):pinfo[i].size;
- ptr = talloc(mem_ctx, len*size);
- if (!ptr) {
- errno = ENOMEM;
- return -1;
- }
- memset(ptr, 0, len*size);
- *((char **)(data + pinfo[i].offset)) = ptr;
- p2.ptr_count--;
- p2.dynamic_len = NULL;
- return gen_parse_array(mem_ctx, &p2, ptr, str, len);
- }
- return 0;
- }
-
- return gen_parse_base(mem_ctx, &pinfo[i], data + pinfo[i].offset, str);
-}
-
-int gen_parse_struct(TALLOC_CTX * mem_ctx, const struct parse_struct *pinfo, char *ptr, const char *str)
-{
- return gen_parse(mem_ctx, pinfo, ptr, str);
-}
-
-/* the main parse routine */
-int gen_parse(TALLOC_CTX *mem_ctx, const struct parse_struct *pinfo, char *data, const char *s)
-{
- char *str, *s0;
-
- s0 = strdup(s);
- str = s0;
-
- while (*str) {
- char *p;
- char *name;
- char *value;
-
- /* skip leading whitespace */
- while (isspace(*str)) str++;
-
- p = strchr(str, '=');
- if (!p) break;
- value = p+1;
- while (p > str && isspace(*(p-1))) {
- p--;
- }
-
- *p = 0;
- name = str;
-
- while (isspace(*value)) value++;
-
- if (*value == '{') {
- str = match_braces(value, '}');
- value++;
- } else {
- str = match_braces(value, '\n');
- }
-
- *str++ = 0;
-
- if (gen_parse_one(mem_ctx, pinfo, name, data, value) != 0) {
- free(s0);
- return -1;
- }
- }
-
- free(s0);
- return 0;
-}
-
-
-
-/* for convenience supply some standard dumpers and parsers here */
-
-int gen_parse_char(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(unsigned char *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_int(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(int *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_unsigned(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(unsigned *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_time_t(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(time_t *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_double(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(double *)ptr = atof(str);
- return 0;
-}
-
-int gen_parse_float(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(float *)ptr = atof(str);
- return 0;
-}
-
-int gen_dump_char(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(unsigned char *)(ptr));
-}
-
-int gen_dump_int(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%d", *(int *)(ptr));
-}
-
-int gen_dump_unsigned(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(unsigned *)(ptr));
-}
-
-int gen_dump_time_t(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(time_t *)(ptr));
-}
-
-int gen_dump_double(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%lg", *(double *)(ptr));
-}
-
-int gen_dump_float(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%g", *(float *)(ptr));
-}
diff --git a/source3/lib/genparser_samba.c b/source3/lib/genparser_samba.c
deleted file mode 100644
index bece587747..0000000000
--- a/source3/lib/genparser_samba.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
- Copyright (C) Simo Sorce <idra@samba.org> 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "genparser_samba.h"
-
-/* PARSE functions */
-
-int gen_parse_uint8(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(uint8 *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_uint16(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(uint16 *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_uint32(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- *(uint32 *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_NTTIME(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- if(sscanf(str, "%u,%u", &(((NTTIME *)(ptr))->high), &(((NTTIME *)(ptr))->low)) != 2) {
- errno = EINVAL;
- return -1;
- }
- return 0;
-}
-
-int gen_parse_DOM_SID(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- if(!string_to_sid((DOM_SID *)ptr, str)) return -1;
- return 0;
-}
-
-int gen_parse_SEC_ACCESS(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- ((SEC_ACCESS *)ptr)->mask = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_GUID(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- int info[GUID_SIZE];
- int i;
- char *sc;
- char *p;
- char *m;
-
- m = strdup(str);
- if (!m) return -1;
- sc = m;
-
- memset(info, 0, sizeof(info));
- for (i = 0; i < GUID_SIZE; i++) {
- p = strchr(sc, ',');
- if (p != NULL) p = '\0';
- info[i] = atoi(sc);
- if (p != NULL) sc = p + 1;
- }
- free(m);
-
- for (i = 0; i < GUID_SIZE; i++) {
- ((GUID *)ptr)->info[i] = info[i];
- }
-
- return 0;
-}
-
-int gen_parse_SEC_ACE(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- return gen_parse_struct(mem_ctx, pinfo_security_ace_info, ptr, str);
-}
-
-int gen_parse_SEC_ACL(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- return gen_parse_struct(mem_ctx, pinfo_security_acl_info, ptr, str);
-}
-
-int gen_parse_SEC_DESC(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- return gen_parse_struct(mem_ctx, pinfo_security_descriptor_info, ptr, str);
-}
-
-int gen_parse_LUID_ATTR(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- return gen_parse_struct(mem_ctx, pinfo_luid_attr_info, ptr, str);
-}
-
-int gen_parse_LUID(TALLOC_CTX *mem_ctx, char *ptr, const char *str)
-{
- if(sscanf(str, "%u,%u", &(((LUID *)(ptr))->high), &(((LUID *)(ptr))->low)) != 2) {
- errno = EINVAL;
- return -1;
- }
- return 0;
-}
-
-
-
-/* DUMP functions */
-
-int gen_dump_uint8(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(uint8 *)(ptr));
-}
-
-int gen_dump_uint16(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(uint16 *)(ptr));
-}
-
-int gen_dump_uint32(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", *(uint32 *)(ptr));
-}
-
-int gen_dump_NTTIME(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- uint32 low, high;
-
- high = ((NTTIME *)(ptr))->high;
- low = ((NTTIME *)(ptr))->low;
- return addshort(mem_ctx, p, "%u,%u", high, low);
-}
-
-int gen_dump_DOM_SID(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- fstring sidstr;
-
- sid_to_string(sidstr, (DOM_SID *)ptr);
- return addstr(mem_ctx, p, sidstr);
-}
-
-int gen_dump_SEC_ACCESS(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(mem_ctx, p, "%u", ((SEC_ACCESS *)ptr)->mask);
-}
-
-int gen_dump_GUID(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- int i, r;
-
- for (i = 0; i < (GUID_SIZE - 1); i++) {
- if (!(r = addshort(mem_ctx, p, "%d,", ((GUID *)ptr)->info[i]))) return r;
- }
- return addshort(mem_ctx, p, "%d", ((GUID *)ptr)->info[i]);
-}
-
-int gen_dump_SEC_ACE(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(mem_ctx, pinfo_security_ace_info, p, ptr, indent);
-}
-
-int gen_dump_SEC_ACL(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(mem_ctx, pinfo_security_acl_info, p, ptr, indent);
-}
-
-int gen_dump_SEC_DESC(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(mem_ctx, pinfo_security_descriptor_info, p, ptr, indent);
-}
-
-int gen_dump_LUID_ATTR(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(mem_ctx, pinfo_luid_attr_info, p, ptr, indent);
-}
-
-int gen_dump_LUID(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent)
-{
- uint32 low, high;
-
- high = ((LUID *)(ptr))->high;
- low = ((LUID *)(ptr))->low;
- return addshort(mem_ctx, p, "%u,%u", high, low);
-}
-
diff --git a/source3/lib/iconv.c b/source3/lib/iconv.c
index 8b360a14c6..54733c2ac2 100644
--- a/source3/lib/iconv.c
+++ b/source3/lib/iconv.c
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
minimal iconv implementation
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
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
@@ -21,79 +20,35 @@
#include "includes.h"
-
-/**
- * @file
- *
- * @brief Samba wrapper/stub for iconv character set conversion.
- *
- * iconv is the XPG2 interface for converting between character
- * encodings. This file provides a Samba wrapper around it, and also
- * a simple reimplementation that is used if the system does not
- * implement iconv.
- *
- * Samba only works with encodings that are supersets of ASCII: ascii
- * characters like whitespace can be tested for directly, multibyte
- * sequences start with a byte with the high bit set, and strings are
- * terminated by a nul byte.
- *
- * Note that the only function provided by iconv is conversion between
- * characters. It doesn't directly support operations like
- * uppercasing or comparison. We have to convert to UCS-2 and compare
- * there.
- *
- * @sa Samba Developers Guide
- **/
-
static size_t ascii_pull(void *,char **, size_t *, char **, size_t *);
static size_t ascii_push(void *,char **, size_t *, char **, size_t *);
static size_t utf8_pull(void *,char **, size_t *, char **, size_t *);
static size_t utf8_push(void *,char **, size_t *, char **, size_t *);
+static size_t weird_pull(void *,char **, size_t *, char **, size_t *);
+static size_t weird_push(void *,char **, size_t *, char **, size_t *);
static size_t ucs2hex_pull(void *,char **, size_t *, char **, size_t *);
static size_t ucs2hex_push(void *,char **, size_t *, char **, size_t *);
static size_t iconv_copy(void *,char **, size_t *, char **, size_t *);
-static struct charset_functions builtin_functions[] = {
+/*
+ for each charset we have a function that pulls from that charset to
+ a ucs2 buffer, and a function that pushes to a ucs2 buffer
+*/
+static struct {
+ const char *name;
+ size_t (*pull)(void *, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+ size_t (*push)(void *, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+} charsets[] = {
{"UCS-2LE", iconv_copy, iconv_copy},
{"UTF8", utf8_pull, utf8_push},
{"ASCII", ascii_pull, ascii_push},
+ {"WEIRD", weird_pull, weird_push},
{"UCS2-HEX", ucs2hex_pull, ucs2hex_push},
{NULL, NULL, NULL}
};
-static struct charset_functions *charsets = NULL;
-
-BOOL smb_register_charset(struct charset_functions *funcs)
-{
- struct charset_functions *c = charsets;
-
- DEBUG(5, ("Attempting to register new charset %s\n", funcs->name));
- /* Check whether we already have this charset... */
- while(c) {
- if(!strcasecmp(c->name, funcs->name)){
- DEBUG(2, ("Duplicate charset %s, not registering\n", funcs->name));
- return False;
- }
- c = c->next;
- }
-
- funcs->next = funcs->prev = NULL;
- DEBUG(5, ("Registered charset %s\n", funcs->name));
- DLIST_ADD(charsets, funcs);
- return True;
-}
-
-void lazy_initialize_iconv(void)
-{
- static BOOL initialized = False;
- int i;
-
- if (!initialized) {
- initialized = True;
- for(i = 0; builtin_functions[i].name; i++)
- smb_register_charset(&builtin_functions[i]);
- }
-}
/* if there was an error then reset the internal state,
this ensures that we don't have a shift state remaining for
@@ -161,11 +116,7 @@ size_t smb_iconv(smb_iconv_t cd,
smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
{
smb_iconv_t ret;
- struct charset_functions *from, *to;
-
- lazy_initialize_iconv();
- from = charsets;
- to = charsets;
+ int from, to;
ret = (smb_iconv_t)malloc(sizeof(*ret));
if (!ret) {
@@ -183,52 +134,48 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
return ret;
}
- while (from) {
- if (strcasecmp(from->name, fromcode) == 0) break;
- from = from->next;
+ for (from=0; charsets[from].name; from++) {
+ if (strcasecmp(charsets[from].name, fromcode) == 0) break;
}
-
- while (to) {
- if (strcasecmp(to->name, tocode) == 0) break;
- to = to->next;
+ for (to=0; charsets[to].name; to++) {
+ if (strcasecmp(charsets[to].name, tocode) == 0) break;
}
#ifdef HAVE_NATIVE_ICONV
- if (!from) {
+ if (!charsets[from].name) {
ret->pull = sys_iconv;
ret->cd_pull = iconv_open("UCS-2LE", fromcode);
if (ret->cd_pull == (iconv_t)-1) goto failed;
}
-
- if (!to) {
+ if (!charsets[to].name) {
ret->push = sys_iconv;
ret->cd_push = iconv_open(tocode, "UCS-2LE");
if (ret->cd_push == (iconv_t)-1) goto failed;
}
#else
- if (!from || !to) {
+ if (!charsets[from].name || !charsets[to].name) {
goto failed;
}
#endif
/* check for conversion to/from ucs2 */
- if (strcasecmp(fromcode, "UCS-2LE") == 0 && to) {
- ret->direct = to->push;
+ if (from == 0 && charsets[to].name) {
+ ret->direct = charsets[to].push;
return ret;
}
- if (strcasecmp(tocode, "UCS-2LE") == 0 && from) {
- ret->direct = from->pull;
+ if (to == 0 && charsets[from].name) {
+ ret->direct = charsets[from].pull;
return ret;
}
#ifdef HAVE_NATIVE_ICONV
- if (strcasecmp(fromcode, "UCS-2LE") == 0) {
+ if (from == 0) {
ret->direct = sys_iconv;
ret->cd_direct = ret->cd_push;
ret->cd_push = NULL;
return ret;
}
- if (strcasecmp(tocode, "UCS-2LE") == 0) {
+ if (to == 0) {
ret->direct = sys_iconv;
ret->cd_direct = ret->cd_pull;
ret->cd_pull = NULL;
@@ -237,8 +184,8 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
#endif
/* the general case has to go via a buffer */
- if (!ret->pull) ret->pull = from->pull;
- if (!ret->push) ret->push = to->push;
+ if (!ret->pull) ret->pull = charsets[from].pull;
+ if (!ret->push) ret->push = charsets[to].push;
return ret;
failed:
@@ -406,6 +353,111 @@ static size_t ucs2hex_push(void *cd, char **inbuf, size_t *inbytesleft,
}
+/* the "weird" character set is very useful for testing multi-byte
+ support and finding bugs. Don't use on a production system!
+*/
+static struct {
+ const char from;
+ const char *to;
+ int len;
+} weird_table[] = {
+ {'q', "^q^", 3},
+ {'Q', "^Q^", 3},
+ {0, NULL}
+};
+
+static size_t weird_pull(void *cd, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft)
+{
+ while (*inbytesleft >= 1 && *outbytesleft >= 2) {
+ int i;
+ int done = 0;
+ for (i=0;weird_table[i].from;i++) {
+ if (strncmp((*inbuf),
+ weird_table[i].to,
+ weird_table[i].len) == 0) {
+ if (*inbytesleft < weird_table[i].len) {
+ DEBUG(0,("ERROR: truncated weird string\n"));
+ /* smb_panic("weird_pull"); */
+
+ } else {
+ (*outbuf)[0] = weird_table[i].from;
+ (*outbuf)[1] = 0;
+ (*inbytesleft) -= weird_table[i].len;
+ (*outbytesleft) -= 2;
+ (*inbuf) += weird_table[i].len;
+ (*outbuf) += 2;
+ done = 1;
+ break;
+ }
+ }
+ }
+ if (done) continue;
+ (*outbuf)[0] = (*inbuf)[0];
+ (*outbuf)[1] = 0;
+ (*inbytesleft) -= 1;
+ (*outbytesleft) -= 2;
+ (*inbuf) += 1;
+ (*outbuf) += 2;
+ }
+
+ if (*inbytesleft > 0) {
+ errno = E2BIG;
+ return -1;
+ }
+
+ return 0;
+}
+
+static size_t weird_push(void *cd, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft)
+{
+ int ir_count=0;
+
+ while (*inbytesleft >= 2 && *outbytesleft >= 1) {
+ int i;
+ int done=0;
+ for (i=0;weird_table[i].from;i++) {
+ if ((*inbuf)[0] == weird_table[i].from &&
+ (*inbuf)[1] == 0) {
+ if (*outbytesleft < weird_table[i].len) {
+ DEBUG(0,("No room for weird character\n"));
+ /* smb_panic("weird_push"); */
+ } else {
+ memcpy(*outbuf, weird_table[i].to,
+ weird_table[i].len);
+ (*inbytesleft) -= 2;
+ (*outbytesleft) -= weird_table[i].len;
+ (*inbuf) += 2;
+ (*outbuf) += weird_table[i].len;
+ done = 1;
+ break;
+ }
+ }
+ }
+ if (done) continue;
+
+ (*outbuf)[0] = (*inbuf)[0];
+ if ((*inbuf)[1]) ir_count++;
+ (*inbytesleft) -= 2;
+ (*outbytesleft) -= 1;
+ (*inbuf) += 2;
+ (*outbuf) += 1;
+ }
+
+ if (*inbytesleft == 1) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (*inbytesleft > 1) {
+ errno = E2BIG;
+ return -1;
+ }
+
+ return ir_count;
+}
+
static size_t iconv_copy(void *cd, char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
diff --git a/source3/lib/module.c b/source3/lib/module.c
index 4e2fe48af7..2498f6de2c 100644
--- a/source3/lib/module.c
+++ b/source3/lib/module.c
@@ -22,11 +22,11 @@
#include "includes.h"
#ifdef HAVE_DLOPEN
-int smb_load_module(const char *module_name)
+NTSTATUS smb_load_module(const char *module_name)
{
void *handle;
init_module_function *init;
- int status;
+ NTSTATUS nt_status;
const char *error;
/* Always try to use LAZY symbol resolving; if the plugin has
@@ -37,7 +37,7 @@ int smb_load_module(const char *module_name)
if(!handle) {
DEBUG(0, ("Error loading module '%s': %s\n", module_name, sys_dlerror()));
- return False;
+ return NT_STATUS_UNSUCCESSFUL;
}
init = sys_dlsym(handle, "init_module");
@@ -47,75 +47,22 @@ int smb_load_module(const char *module_name)
error = sys_dlerror();
if (error) {
DEBUG(0, ("Error trying to resolve symbol 'init_module' in %s: %s\n", module_name, error));
- return False;
+ return NT_STATUS_UNSUCCESSFUL;
}
- status = init();
+ nt_status = init();
DEBUG(2, ("Module '%s' loaded\n", module_name));
- return status;
-}
-
-/* Load all modules in list and return number of
- * modules that has been successfully loaded */
-int smb_load_modules(const char **modules)
-{
- int i;
- int success = 0;
-
- for(i = 0; modules[i]; i++){
- if(smb_load_module(modules[i])) {
- success++;
- }
- }
-
- DEBUG(2, ("%d modules successfully loaded\n", success));
-
- return success;
-}
-
-int smb_probe_module(const char *subsystem, const char *module)
-{
- pstring full_path;
-
- /* Check for absolute path */
- if(module[0] == '/')return smb_load_module(module);
-
- pstrcpy(full_path, lib_path(subsystem));
- pstrcat(full_path, "/");
- pstrcat(full_path, module);
- pstrcat(full_path, ".");
- pstrcat(full_path, shlib_ext());
-
- return smb_load_module(full_path);
+ return nt_status;
}
#else /* HAVE_DLOPEN */
-int smb_load_module(const char *module_name)
+NTSTATUS smb_load_module(const char *module_name)
{
- DEBUG(0,("This samba executable has not been built with plugin support"));
- return False;
-}
-
-int smb_load_modules(const char **modules)
-{
- DEBUG(0,("This samba executable has not been built with plugin support"));
- return False;
-}
-
-int smb_probe_module(const char *subsystem, const char *module)
-{
- DEBUG(0,("This samba executable has not been built with plugin support, not probing"));
- return False;
+ DEBUG(0,("This samba executable has not been build with plugin support"));
+ return NT_STATUS_NOT_SUPPORTED;
}
#endif /* HAVE_DLOPEN */
-
-void init_modules(void)
-{
- if(lp_preload_modules())
- smb_load_modules(lp_preload_modules());
- /* FIXME: load static modules */
-}
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
index ef68bce985..2d1b2ab1fa 100644
--- a/source3/lib/substitute.c
+++ b/source3/lib/substitute.c
@@ -29,44 +29,21 @@ fstring remote_proto="UNKNOWN";
static fstring remote_machine;
static fstring smb_user_name;
-/**
- * Set the 'local' machine name
- * @param local_name the name we are being called
- * @param if this is the 'final' name for us, not be be changed again
- */
-void set_local_machine_name(const char* local_name, BOOL perm)
+void set_local_machine_name(const char* local_name)
{
- static BOOL already_perm = False;
fstring tmp_local_machine;
- if (already_perm)
- return;
-
- already_perm = perm;
-
fstrcpy(tmp_local_machine,local_name);
trim_string(tmp_local_machine," "," ");
strlower(tmp_local_machine);
alpha_strcpy(local_machine,tmp_local_machine,SAFE_NETBIOS_CHARS,sizeof(local_machine)-1);
}
-/**
- * Set the 'remote' machine name
- * @param remote_name the name our client wants to be called by
- * @param if this is the 'final' name for them, not be be changed again
- */
-
-void set_remote_machine_name(const char* remote_name, BOOL perm)
+void set_remote_machine_name(const char* remote_name)
{
- static BOOL already_perm = False;
fstring tmp_remote_machine;
- if (already_perm)
- return;
-
- already_perm = perm;
-
fstrcpy(tmp_remote_machine,remote_name);
trim_string(tmp_remote_machine," "," ");
strlower(tmp_remote_machine);
@@ -80,10 +57,6 @@ const char* get_remote_machine_name(void)
const char* get_local_machine_name(void)
{
- if (!*local_machine) {
- return global_myname();
- }
-
return local_machine;
}
diff --git a/source3/lib/util_getent.c b/source3/lib/util_getent.c
index 32641dbf83..ef01dd5947 100644
--- a/source3/lib/util_getent.c
+++ b/source3/lib/util_getent.c
@@ -228,7 +228,7 @@ static struct sys_userlist *add_members_to_userlist(struct sys_userlist *list_he
free_userlist(list_head);
return NULL;
}
- entry->unix_name = (char *)strdup(grp->gr_mem[i]);
+ entry->unix_name = strdup(grp->gr_mem[i]);
if (entry->unix_name == NULL) {
SAFE_FREE(entry);
free_userlist(list_head);
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c
index 81d17ae3f2..824987f189 100644
--- a/source3/lib/util_sid.c
+++ b/source3/lib/util_sid.c
@@ -629,21 +629,3 @@ void print_guid(GUID *guid)
d_printf("%02x", guid->info[i]);
d_printf("\n");
}
-
-/*******************************************************************
- Tallocs a duplicate SID.
-********************************************************************/
-
-DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, DOM_SID *src)
-{
- DOM_SID *dst;
-
- if(!src)
- return NULL;
-
- if((dst = talloc_zero(ctx, sizeof(DOM_SID))) != NULL) {
- sid_copy( dst, src);
- }
-
- return dst;
-}
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
index 8ef4ddade6..7643c2807e 100644
--- a/source3/lib/util_str.c
+++ b/source3/lib/util_str.c
@@ -21,6 +21,11 @@
#include "includes.h"
+#ifdef DEVELOPER
+const char *global_clobber_region_function;
+unsigned int global_clobber_region_line;
+#endif
+
/**
* Get the next token from a string, return False if none found.
* Handles double-quotes.
@@ -410,6 +415,28 @@ size_t count_chars(const char *s,char c)
}
/**
+ * In developer builds, clobber a region of memory.
+ *
+ * If we think a string buffer is longer than it really is, this ought
+ * to make the failure obvious, by segfaulting (if in the heap) or by
+ * killing the return address (on the stack), or by trapping under a
+ * memory debugger.
+ *
+ * This is meant to catch possible string overflows, even if the
+ * actual string copied is not big enough to cause an overflow.
+ **/
+void clobber_region(const char *fn, unsigned int line, char *dest, size_t len)
+{
+#ifdef DEVELOPER
+ /* F1 is odd and 0xf1f1f1f1 shouldn't be a valid pointer */
+ memset(dest, 0xF1, len);
+ global_clobber_region_function = fn;
+ global_clobber_region_line = line;
+#endif
+}
+
+
+/**
Safe string copy into a known length string. maxlength does not
include the terminating zero.
**/
diff --git a/source3/libads/ads_utils.c b/source3/libads/ads_utils.c
index 626c177926..750940e336 100644
--- a/source3/libads/ads_utils.c
+++ b/source3/libads/ads_utils.c
@@ -89,52 +89,6 @@ uint32 ads_uf2atype(uint32 uf)
}
/*
-translated the GROUP_CTRL Flags to GroupType (groupType)
-*/
-uint32 ads_gcb2gtype(uint16 gcb)
-{
- uint32 gtype = 0x00000000;
-
- if (gcb & GCB_ALIAS_GROUP) gtype |= GTYPE_SECURITY_BUILTIN_LOCAL_GROUP;
- else if(gcb & GCB_LOCAL_GROUP) gtype |= GTYPE_SECURITY_DOMAIN_LOCAL_GROUP;
- if (gcb & GCB_GLOBAL_GROUP) gtype |= GTYPE_SECURITY_GLOBAL_GROUP;
-
- return gtype;
-}
-
-/*
-translated the GroupType (groupType) to GROUP_CTRL Flags
-*/
-uint16 ads_gtype2gcb(uint32 gtype)
-{
- uint16 gcb = 0x0000;
-
- switch(gtype) {
- case GTYPE_SECURITY_BUILTIN_LOCAL_GROUP:
- gcb = GCB_ALIAS_GROUP;
- break;
- case GTYPE_SECURITY_DOMAIN_LOCAL_GROUP:
- gcb = GCB_LOCAL_GROUP;
- break;
- case GTYPE_SECURITY_GLOBAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
-
- case GTYPE_DISTRIBUTION_GLOBAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
- case GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP:
- gcb = GCB_LOCAL_GROUP;
- break;
- case GTYPE_DISTRIBUTION_UNIVERSAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
- }
-
- return gcb;
-}
-
-/*
get the accountType from the groupType
*/
uint32 ads_gtype2atype(uint32 gtype)
diff --git a/source3/libads/krb5_setpw.c b/source3/libads/krb5_setpw.c
index 214871b3fb..a5b9eee4ce 100644
--- a/source3/libads/krb5_setpw.c
+++ b/source3/libads/krb5_setpw.c
@@ -538,6 +538,7 @@ ADS_STATUS krb5_set_password(const char *kdc_host, const char *princ, const char
krb5_free_creds(context, credsp);
krb5_free_principal(context, creds.client);
+ krb5_free_principal(context, creds.server);
krb5_free_principal(context, principal);
krb5_free_context(context);
@@ -570,11 +571,11 @@ kerb_prompter(krb5_context ctx, void *data,
return 0;
}
-static ADS_STATUS krb5_chg_password(const char *kdc_host,
- const char *principal,
- const char *oldpw,
- const char *newpw,
- int time_offset)
+ADS_STATUS krb5_chg_password(const char *kdc_host,
+ const char *principal,
+ const char *oldpw,
+ const char *newpw,
+ int time_offset)
{
ADS_STATUS aret;
krb5_error_code ret;
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 763878f9b3..49b0004ac2 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -66,7 +66,7 @@ static BOOL cli_session_setup_lanman2(struct cli_state *cli, const char *user,
memcpy(pword, pass, passlen);
} else if (passlen > 0) {
/* Plaintext mode needed, assume plaintext supplied. */
- passlen = clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE);
+ passlen = clistr_push(cli, pword, pass, -1, STR_TERMINATE);
}
/* send a session setup command */
@@ -228,11 +228,39 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, const char *user,
return True;
}
+static void set_signing_on_cli (struct cli_state *cli, uint8 user_session_key[16], DATA_BLOB response)
+{
+ uint8 zero_sig[8];
+ ZERO_STRUCT(zero_sig);
+
+ DEBUG(5, ("Server returned security sig:\n"));
+ dump_data(5, &cli->inbuf[smb_ss_field], 8);
+
+ if (cli->sign_info.use_smb_signing) {
+ DEBUG(5, ("smb signing already active on connection\n"));
+ } else if (memcmp(&cli->inbuf[smb_ss_field], zero_sig, 8) != 0) {
+
+ DEBUG(3, ("smb signing enabled!\n"));
+ cli->sign_info.use_smb_signing = True;
+ cli_calculate_mac_key(cli, user_session_key, response);
+ } else {
+ DEBUG(5, ("smb signing NOT enabled!\n"));
+ }
+}
+
static void set_cli_session_key (struct cli_state *cli, DATA_BLOB session_key)
{
memcpy(cli->user_session_key, session_key.data, MIN(session_key.length, sizeof(cli->user_session_key)));
}
+
+static void set_temp_signing_on_cli(struct cli_state *cli)
+{
+ if (cli->sign_info.negotiated_smb_signing)
+ cli->sign_info.temp_smb_signing = True;
+}
+
+
/****************************************************************************
do a NT1 NTLM/LM encrypted session setup
@param cli client state to create do session setup on
@@ -282,7 +310,8 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, const char *user,
session_key = data_blob(NULL, 16);
SMBsesskeygen_ntv1(nt_hash, NULL, session_key.data);
}
- cli_simple_set_signing(cli, session_key.data, nt_response);
+
+ set_temp_signing_on_cli(cli);
} else {
/* pre-encrypted password supplied. Only used for
security=server, can't do
@@ -345,24 +374,26 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, const char *user,
if (session_key.data) {
/* Have plaintext orginal */
set_cli_session_key(cli, session_key);
+ set_signing_on_cli(cli, session_key.data, nt_response);
}
- ret = True;
end:
data_blob_free(&lm_response);
data_blob_free(&nt_response);
data_blob_free(&session_key);
- return ret;
+ return True;
}
/****************************************************************************
- Send a extended security session setup blob
+ Send a extended security session setup blob, returning a reply blob.
****************************************************************************/
-static BOOL cli_session_setup_blob_send(struct cli_state *cli, DATA_BLOB blob)
+static DATA_BLOB cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob)
{
uint32 capabilities = cli_session_setup_capabilities(cli);
char *p;
+ DATA_BLOB blob2 = data_blob(NULL, 0);
+ uint32 len;
capabilities |= CAP_EXTENDED_SECURITY;
@@ -372,6 +403,8 @@ static BOOL cli_session_setup_blob_send(struct cli_state *cli, DATA_BLOB blob)
set_message(cli->outbuf,12,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
+ set_temp_signing_on_cli(cli);
+
cli_setup_packet(cli);
SCVAL(cli->outbuf,smb_vwv0,0xFF);
@@ -387,18 +420,7 @@ static BOOL cli_session_setup_blob_send(struct cli_state *cli, DATA_BLOB blob)
p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
cli_setup_bcc(cli, p);
- return cli_send_smb(cli);
-}
-
-/****************************************************************************
- Send a extended security session setup blob, returning a reply blob.
-****************************************************************************/
-
-static DATA_BLOB cli_session_setup_blob_receive(struct cli_state *cli)
-{
- DATA_BLOB blob2 = data_blob(NULL, 0);
- char *p;
- size_t len;
+ cli_send_smb(cli);
if (!cli_receive_smb(cli))
return blob2;
@@ -427,20 +449,6 @@ static DATA_BLOB cli_session_setup_blob_receive(struct cli_state *cli)
return blob2;
}
-/****************************************************************************
- Send a extended security session setup blob, returning a reply blob.
-****************************************************************************/
-
-static DATA_BLOB cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob)
-{
- DATA_BLOB blob2 = data_blob(NULL, 0);
- if (!cli_session_setup_blob_send(cli, blob)) {
- return blob2;
- }
-
- return cli_session_setup_blob_receive(cli);
-}
-
#ifdef HAVE_KRB5
/****************************************************************************
Use in-memory credentials cache
@@ -494,8 +502,6 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, const char *user,
DATA_BLOB blob_in = data_blob(NULL, 0);
DATA_BLOB blob_out;
- cli_temp_set_signing(cli);
-
if (!NT_STATUS_IS_OK(nt_status = ntlmssp_client_start(&ntlmssp_state))) {
return False;
}
@@ -526,15 +532,8 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, const char *user,
}
/* now send that blob on its way */
- if (!cli_session_setup_blob_send(cli, msg1)) {
- return False;
- }
+ blob = cli_session_setup_blob(cli, msg1);
data_blob_free(&msg1);
-
- cli_ntlmssp_set_signing(cli, ntlmssp_state);
-
- blob = cli_session_setup_blob_receive(cli);
-
nt_status = cli_nt_error(cli);
}
@@ -571,9 +570,6 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, const char *user,
set_cli_session_key(cli, ntlmssp_state->session_key);
}
- /* we have a reference conter on ntlmssp_state, if we are signing
- then the state will be kept by the signing engine */
-
if (!NT_STATUS_IS_OK(ntlmssp_client_end(&ntlmssp_state))) {
return False;
}
@@ -778,7 +774,7 @@ BOOL cli_send_tconX(struct cli_state *cli,
/*
* Non-encrypted passwords - convert to DOS codepage before using.
*/
- passlen = clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE);
+ passlen = clistr_push(cli, pword, pass, -1, STR_TERMINATE);
} else {
memcpy(pword, pass, passlen);
}
@@ -887,6 +883,11 @@ BOOL cli_negprot(struct cli_state *cli)
int numprots;
int plength;
+ if (cli->sign_info.use_smb_signing) {
+ DEBUG(0, ("Cannot send negprot again, particularly after setting up SMB Signing\n"));
+ return False;
+ }
+
if (cli->protocol < PROTOCOL_NT1)
cli->use_spnego = False;
@@ -1012,6 +1013,11 @@ BOOL cli_session_request(struct cli_state *cli,
if (cli->port == 445)
return True;
+ if (cli->sign_info.use_smb_signing) {
+ DEBUG(0, ("Cannot send session resquest again, particularly after setting up SMB Signing\n"));
+ return False;
+ }
+
/* send a session request (RFC 1002) */
/* setup the packet length
* Remove four bytes from the length count, since the length
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index d969193089..9598f4ac96 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -177,6 +177,9 @@ void cli_setup_packet(struct cli_state *cli)
flags2 |= FLAGS2_32_BIT_ERROR_CODES;
if (cli->use_spnego)
flags2 |= FLAGS2_EXTENDED_SECURITY;
+ if (cli->sign_info.use_smb_signing
+ || cli->sign_info.temp_smb_signing)
+ flags2 |= FLAGS2_SMB_SECURITY_SIGNATURES;
SSVAL(cli->outbuf,smb_flg2, flags2);
}
}
@@ -197,8 +200,8 @@ void cli_setup_bcc(struct cli_state *cli, void *p)
void cli_init_creds(struct cli_state *cli, const struct ntuser_creds *usr)
{
/* copy_nt_creds(&cli->usr, usr); */
- fstrcpy(cli->domain , usr->domain);
- fstrcpy(cli->user_name, usr->user_name);
+ safe_strcpy(cli->domain , usr->domain , sizeof(usr->domain )-1);
+ safe_strcpy(cli->user_name, usr->user_name, sizeof(usr->user_name)-1);
memcpy(&cli->pwd, &usr->pwd, sizeof(usr->pwd));
cli->ntlmssp_flags = usr->ntlmssp_flags;
cli->ntlmssp_cli_flgs = usr != NULL ? usr->ntlmssp_flags : 0;
@@ -245,8 +248,8 @@ struct cli_state *cli_initialise(struct cli_state *cli)
cli->timeout = 20000; /* Timeout is in milliseconds. */
cli->bufsize = CLI_BUFFER_SIZE+4;
cli->max_xmit = cli->bufsize;
- cli->outbuf = (char *)malloc(cli->bufsize+SAFETY_MARGIN);
- cli->inbuf = (char *)malloc(cli->bufsize+SAFETY_MARGIN);
+ cli->outbuf = (char *)malloc(cli->bufsize);
+ cli->inbuf = (char *)malloc(cli->bufsize);
cli->oplock_handler = cli_oplock_ack;
cli->use_spnego = lp_client_use_spnego();
@@ -259,9 +262,6 @@ struct cli_state *cli_initialise(struct cli_state *cli)
if (getenv("CLI_FORCE_DOSERR"))
cli->force_dos_errors = True;
- /* initialise signing */
- cli_null_set_signing(cli);
-
if (lp_client_signing())
cli->sign_info.allow_smb_signing = True;
@@ -303,7 +303,6 @@ void cli_close_connection(struct cli_state *cli)
SAFE_FREE(cli->outbuf);
SAFE_FREE(cli->inbuf);
- cli_free_signing_context(cli);
data_blob_free(&cli->secblob);
if (cli->mem_ctx) {
@@ -315,7 +314,6 @@ void cli_close_connection(struct cli_state *cli)
close(cli->fd);
cli->fd = -1;
cli->smb_rw_error = 0;
-
}
/****************************************************************************
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index d86f36405d..8e84963c09 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -948,7 +948,7 @@ BOOL cli_chkpath(struct cli_state *cli, const char *path)
pstring path2;
char *p;
- pstrcpy(path2,path);
+ safe_strcpy(path2,path,sizeof(pstring));
trim_string(path2,NULL,"\\");
if (!*path2) *path2 = '\\';
diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c
index 5bd1283ab7..3884e4da82 100644
--- a/source3/libsmb/clilist.c
+++ b/source3/libsmb/clilist.c
@@ -178,7 +178,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
SSVAL(param,6,info_level);
SIVAL(param,8,0);
p = param+12;
- p += clistr_push(cli, param+12, mask, sizeof(param)-12,
+ p += clistr_push(cli, param+12, mask, -1,
STR_TERMINATE);
} else {
setup = TRANSACT2_FINDNEXT;
@@ -188,7 +188,7 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
SIVAL(param,6,0); /* ff_resume_key */
SSVAL(param,10,8+4+2); /* continue + resume required + close on end */
p = param+12;
- p += clistr_push(cli, param+12, mask, sizeof(param)-12,
+ p += clistr_push(cli, param+12, mask, -1,
STR_TERMINATE);
}
diff --git a/source3/libsmb/netlogon_unigrp.c b/source3/libsmb/netlogon_unigrp.c
index 466410d800..fa2fe32f35 100644
--- a/source3/libsmb/netlogon_unigrp.c
+++ b/source3/libsmb/netlogon_unigrp.c
@@ -22,7 +22,6 @@
*/
#include "includes.h"
-#define UNIGROUP_PREFIX "UNIGROUP"
/*
Handle for netlogon_unigrp.tdb database. It is used internally
@@ -51,22 +50,17 @@ BOOL uni_group_cache_init(void)
BOOL uni_group_cache_store_netlogon(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user)
{
TDB_DATA key,data;
- fstring keystr, sid_string;
- DOM_SID user_sid;
- unsigned int i;
+ fstring keystr;
+ int i;
if (!uni_group_cache_init()) {
DEBUG(0,("uni_group_cache_store_netlogon: cannot open netlogon_unigrp.tdb for write!\n"));
return False;
}
- sid_copy(&user_sid, &user->dom_sid.sid);
- sid_append_rid(&user_sid, user->user_rid);
-
- /* Prepare key as USER-SID string */
- slprintf(keystr, sizeof(keystr), "%s/%s",
- UNIGROUP_PREFIX,
- sid_to_string(sid_string, &user_sid));
+ /* Prepare key as DOMAIN-SID/USER-RID string */
+ slprintf(keystr, sizeof(keystr), "%s/%d",
+ sid_string_static(&user->dom_sid.sid), user->user_rid);
key.dptr = keystr;
key.dsize = strlen(keystr) + 1;
@@ -96,15 +90,14 @@ BOOL uni_group_cache_store_netlogon(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user)
and elements are array[0] ... array[num_elements-1]
*/
-DOM_SID **uni_group_cache_fetch(DOM_SID *domain, DOM_SID *user_sid,
+uint32* uni_group_cache_fetch(DOM_SID *domain, uint32 user_rid,
TALLOC_CTX *mem_ctx, uint32 *num_groups)
{
TDB_DATA key,data;
fstring keystr;
- DOM_SID **groups;
+ uint32 *groups;
uint32 i;
uint32 group_count;
- fstring sid_string;
if (!domain) {
DEBUG(1,("uni_group_cache_fetch: expected non-null domain sid\n"));
@@ -130,9 +123,8 @@ DOM_SID **uni_group_cache_fetch(DOM_SID *domain, DOM_SID *user_sid,
*num_groups = 0;
/* Fetch universal groups */
- slprintf(keystr, sizeof(keystr), "%s/%s",
- UNIGROUP_PREFIX,
- sid_to_string(sid_string, user_sid));
+ slprintf(keystr, sizeof(keystr), "%s/%d",
+ sid_string_static(domain), user_rid);
key.dptr = keystr;
key.dsize = strlen(keystr) + 1;
data = tdb_fetch(netlogon_unigrp_tdb, key);
@@ -144,17 +136,12 @@ DOM_SID **uni_group_cache_fetch(DOM_SID *domain, DOM_SID *user_sid,
/* Transfer data to receiver's memory context */
group_count = IVAL(&((uint32*)data.dptr)[0],0);
- groups = talloc(mem_ctx, (group_count)*sizeof(*groups));
+ groups = talloc(mem_ctx, (group_count)*sizeof(uint32));
if (groups) {
for(i=0; i<group_count; i++) {
- groups[i] = talloc(mem_ctx, sizeof(**groups));
- if (!groups[i]) {
- DEBUG(1,("uni_group_cache_fetch: cannot allocate uni groups in receiver's memory context\n"));
- return NULL;
- }
- sid_copy(groups[i], domain);
- sid_append_rid(groups[i], IVAL(&((uint32*)data.dptr)[i+1],0));
+ groups[i] = IVAL(&((uint32*)data.dptr)[i+1],0);
}
+
} else {
DEBUG(1,("uni_group_cache_fetch: cannot allocate uni groups in receiver's memory context\n"));
}
diff --git a/source3/libsmb/ntlmssp.c b/source3/libsmb/ntlmssp.c
index 5722b8efcd..e1509f6b63 100644
--- a/source3/libsmb/ntlmssp.c
+++ b/source3/libsmb/ntlmssp.c
@@ -81,7 +81,7 @@ static const uint8 *get_challenge(struct ntlmssp_state *ntlmssp_state)
/**
* Determine correct target name flags for reply, given server role
- * and negotiated flags
+ * and negoitated falgs
*
* @param ntlmssp_state NTLMSSP State
* @param neg_flags The flags from the packet
@@ -291,7 +291,7 @@ static NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
/**
* Create an NTLMSSP state machine
*
- * @param ntlmssp_state NTLMSSP State, allocated by this function
+ * @param ntlmssp_state NTLMSSP State, allocated by this funciton
*/
NTSTATUS ntlmssp_server_start(NTLMSSP_STATE **ntlmssp_state)
@@ -322,7 +322,7 @@ NTSTATUS ntlmssp_server_start(NTLMSSP_STATE **ntlmssp_state)
/**
* End an NTLMSSP state machine
*
- * @param ntlmssp_state NTLMSSP State, free()ed by this function
+ * @param ntlmssp_state NTLMSSP State, free()ed by this funciton
*/
NTSTATUS ntlmssp_server_end(NTLMSSP_STATE **ntlmssp_state)
@@ -431,7 +431,7 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_client_state *ntlmssp_st
DATA_BLOB session_key = data_blob(NULL, 0);
uint8 datagram_sess_key[16];
- generate_random_buffer(datagram_sess_key, sizeof(datagram_sess_key), False);
+ ZERO_STRUCT(datagram_sess_key);
if (!msrpc_parse(&reply, "CdBd",
"NTLMSSP",
@@ -508,6 +508,8 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_client_state *ntlmssp_st
session_key = data_blob(NULL, 16);
SMBsesskeygen_ntv1(nt_hash, NULL, session_key.data);
}
+
+ data_blob_free(&challenge_blob);
/* this generates the actual auth packet */
if (!msrpc_gen(next_request, auth_gen_string,
@@ -518,7 +520,7 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_client_state *ntlmssp_st
ntlmssp_state->domain,
ntlmssp_state->user,
ntlmssp_state->get_global_myname(),
- datagram_sess_key, 16,
+ datagram_sess_key, 0,
ntlmssp_state->neg_flags)) {
data_blob_free(&lm_response);
@@ -527,14 +529,9 @@ static NTSTATUS ntlmssp_client_challenge(struct ntlmssp_client_state *ntlmssp_st
return NT_STATUS_NO_MEMORY;
}
- data_blob_free(&ntlmssp_state->chal);
- data_blob_free(&ntlmssp_state->lm_resp);
- data_blob_free(&ntlmssp_state->nt_resp);
- data_blob_free(&ntlmssp_state->session_key);
+ data_blob_free(&lm_response);
+ data_blob_free(&nt_response);
- ntlmssp_state->chal = challenge_blob;
- ntlmssp_state->lm_resp = lm_response;
- ntlmssp_state->nt_resp = nt_response;
ntlmssp_state->session_key = session_key;
return NT_STATUS_MORE_PROCESSING_REQUIRED;
@@ -561,12 +558,10 @@ NTSTATUS ntlmssp_client_start(NTLMSSP_CLIENT_STATE **ntlmssp_state)
(*ntlmssp_state)->unicode = True;
(*ntlmssp_state)->neg_flags =
- NTLMSSP_NEGOTIATE_128 |
+ NTLMSSP_NEGOTIATE_128 |
NTLMSSP_NEGOTIATE_NTLM |
NTLMSSP_REQUEST_TARGET;
- (*ntlmssp_state)->ref_count = 1;
-
return NT_STATUS_OK;
}
@@ -574,16 +569,8 @@ NTSTATUS ntlmssp_client_end(NTLMSSP_CLIENT_STATE **ntlmssp_state)
{
TALLOC_CTX *mem_ctx = (*ntlmssp_state)->mem_ctx;
- (*ntlmssp_state)->ref_count--;
-
- if ((*ntlmssp_state)->ref_count == 0) {
- data_blob_free(&(*ntlmssp_state)->chal);
- data_blob_free(&(*ntlmssp_state)->lm_resp);
- data_blob_free(&(*ntlmssp_state)->nt_resp);
- data_blob_free(&(*ntlmssp_state)->session_key);
- talloc_destroy(mem_ctx);
- }
-
+ data_blob_free(&(*ntlmssp_state)->session_key);
+ talloc_destroy(mem_ctx);
*ntlmssp_state = NULL;
return NT_STATUS_OK;
}
diff --git a/source3/libsmb/smbencrypt.c b/source3/libsmb/smbencrypt.c
index 28160d9609..aa9391325f 100644
--- a/source3/libsmb/smbencrypt.c
+++ b/source3/libsmb/smbencrypt.c
@@ -295,7 +295,7 @@ void SMBsesskeygen_ntv1(const uchar kr[16],
#endif
}
-static DATA_BLOB NTLMv2_generate_response(uchar ntlm_v2_hash[16],
+DATA_BLOB NTLMv2_generate_response(uchar ntlm_v2_hash[16],
DATA_BLOB server_chal, size_t client_chal_length)
{
uchar ntlmv2_response[16];
@@ -416,3 +416,101 @@ BOOL decode_pw_buffer(char in_buffer[516], char *new_pwrd,
return True;
}
+
+/***********************************************************
+ SMB signing - setup the MAC key.
+************************************************************/
+
+void cli_calculate_mac_key(struct cli_state *cli, const uchar user_session_key[16], const DATA_BLOB response)
+{
+
+ memcpy(&cli->sign_info.mac_key[0], user_session_key, 16);
+ memcpy(&cli->sign_info.mac_key[16],response.data, MIN(response.length, 40 - 16));
+ cli->sign_info.mac_key_len = MIN(response.length + 16, 40);
+ cli->sign_info.use_smb_signing = True;
+
+ /* These calls are INCONPATIBLE with SMB signing */
+ cli->readbraw_supported = False;
+ cli->writebraw_supported = False;
+
+ /* Reset the sequence number in case we had a previous (aborted) attempt */
+ cli->sign_info.send_seq_num = 2;
+}
+
+/***********************************************************
+ SMB signing - calculate a MAC to send.
+************************************************************/
+
+void cli_caclulate_sign_mac(struct cli_state *cli)
+{
+ unsigned char calc_md5_mac[16];
+ struct MD5Context md5_ctx;
+
+ if (cli->sign_info.temp_smb_signing) {
+ memcpy(&cli->outbuf[smb_ss_field], "SignRequest", 8);
+ cli->sign_info.temp_smb_signing = False;
+ return;
+ }
+
+ if (!cli->sign_info.use_smb_signing) {
+ return;
+ }
+
+ /*
+ * Firstly put the sequence number into the first 4 bytes.
+ * and zero out the next 4 bytes.
+ */
+ SIVAL(cli->outbuf, smb_ss_field, cli->sign_info.send_seq_num);
+ SIVAL(cli->outbuf, smb_ss_field + 4, 0);
+
+ /* Calculate the 16 byte MAC and place first 8 bytes into the field. */
+ MD5Init(&md5_ctx);
+ MD5Update(&md5_ctx, cli->sign_info.mac_key, cli->sign_info.mac_key_len);
+ MD5Update(&md5_ctx, cli->outbuf + 4, smb_len(cli->outbuf));
+ MD5Final(calc_md5_mac, &md5_ctx);
+
+ memcpy(&cli->outbuf[smb_ss_field], calc_md5_mac, 8);
+
+/* cli->outbuf[smb_ss_field+2]=0;
+ Uncomment this to test if the remote server actually verifies signitures...*/
+ cli->sign_info.send_seq_num++;
+ cli->sign_info.reply_seq_num = cli->sign_info.send_seq_num;
+ cli->sign_info.send_seq_num++;
+}
+
+/***********************************************************
+ SMB signing - check a MAC sent by server.
+************************************************************/
+
+BOOL cli_check_sign_mac(struct cli_state *cli)
+{
+ unsigned char calc_md5_mac[16];
+ unsigned char server_sent_mac[8];
+ struct MD5Context md5_ctx;
+
+ if (cli->sign_info.temp_smb_signing) {
+ return True;
+ }
+
+ if (!cli->sign_info.use_smb_signing) {
+ return True;
+ }
+
+ /*
+ * Firstly put the sequence number into the first 4 bytes.
+ * and zero out the next 4 bytes.
+ */
+
+ memcpy(server_sent_mac, &cli->inbuf[smb_ss_field], sizeof(server_sent_mac));
+
+ SIVAL(cli->inbuf, smb_ss_field, cli->sign_info.reply_seq_num);
+ SIVAL(cli->inbuf, smb_ss_field + 4, 0);
+
+ /* Calculate the 16 byte MAC and place first 8 bytes into the field. */
+ MD5Init(&md5_ctx);
+ MD5Update(&md5_ctx, cli->sign_info.mac_key, cli->sign_info.mac_key_len);
+ MD5Update(&md5_ctx, cli->inbuf + 4, smb_len(cli->inbuf));
+ MD5Final(calc_md5_mac, &md5_ctx);
+
+ return (memcmp(server_sent_mac, calc_md5_mac, 8) == 0);
+}
diff --git a/source3/libsmb/trusts_util.c b/source3/libsmb/trust_passwd.c
index b8f84ba890..cf9fd58b13 100644
--- a/source3/libsmb/trusts_util.c
+++ b/source3/libsmb/trust_passwd.c
@@ -1,8 +1,7 @@
/*
* Unix SMB/CIFS implementation.
- * Routines to operate on various trust relationships
- * Copyright (C) Andrew Bartlett 2001
- * Copyright (C) Rafal Szczesniak 2003
+ * Routines to change trust account passwords.
+ * Copyright (C) Andrew Bartlett 2001.
*
* 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
@@ -114,63 +113,4 @@ NTSTATUS trust_pw_find_change_and_store_it(struct cli_state *cli, TALLOC_CTX *me
return trust_pw_change_and_store_it(cli, mem_ctx, old_trust_passwd_hash);
-}
-
-
-/**
- * Verify whether or not given domain is trusted.
- *
- * @param domain_name name of the domain to be verified
- * @return true if domain is one of the trusted once or
- * false if otherwise
- **/
-
-BOOL is_trusted_domain(const char* dom_name)
-{
- int enum_ctx = 0;
- const int trustdom_size = 10;
- int num_domains, i;
- TRUSTDOM **domains;
- NTSTATUS result;
- fstring trustdom_name;
- DOM_SID trustdom_sid;
- TALLOC_CTX *mem_ctx;
-
- /*
- * Query the secrets db as an ultimate source of information
- * about trusted domain names. This is PDC or BDC case.
- */
- mem_ctx = talloc_init("is_trusted_domain");
-
- do {
- result = secrets_get_trusted_domains(mem_ctx, &enum_ctx, trustdom_size,
- &num_domains, &domains);
- /* compare each returned entry against incoming connection's domain */
- for (i = 0; i < num_domains; i++) {
- pull_ucs2_fstring(trustdom_name, domains[i]->name);
- if (strequal(trustdom_name, dom_name)) {
- talloc_destroy(mem_ctx);
- return True;
- }
- }
- } while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
-
- talloc_destroy(mem_ctx);
-
- /*
- * Query the trustdom_cache updated periodically. The only
- * way for domain member server.
- */
- if (trustdom_cache_enable() &&
- trustdom_cache_fetch(dom_name, &trustdom_sid)) {
- trustdom_cache_shutdown();
- return True;
- }
-
- /*
- * if nothing's been found, then give up here, although
- * the last resort might be to query the PDC.
- */
- return False;
-}
-
+}
diff --git a/source3/mainpage.dox b/source3/mainpage.dox
new file mode 100644
index 0000000000..8b72f80462
--- /dev/null
+++ b/source3/mainpage.dox
@@ -0,0 +1,7 @@
+/**
+
+@mainpage
+
+@li \ref CodingSuggestions
+
+**/
diff --git a/source3/modules/developer.c b/source3/modules/developer.c
deleted file mode 100644
index a697abcd22..0000000000
--- a/source3/modules/developer.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba module with developer tools
- Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static struct {
- char from;
- char *to;
- int len;
-} weird_table[] = {
- {'q', "^q^", 3},
- {'Q', "^Q^", 3},
- {0, NULL}
-};
-
-static size_t weird_pull(void *cd, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft)
-{
- while (*inbytesleft >= 1 && *outbytesleft >= 2) {
- int i;
- int done = 0;
- for (i=0;weird_table[i].from;i++) {
- if (strncmp((*inbuf),
- weird_table[i].to,
- weird_table[i].len) == 0) {
- if (*inbytesleft < weird_table[i].len) {
- DEBUG(0,("ERROR: truncated weird string\n"));
- /* smb_panic("weird_pull"); */
-
- } else {
- (*outbuf)[0] = weird_table[i].from;
- (*outbuf)[1] = 0;
- (*inbytesleft) -= weird_table[i].len;
- (*outbytesleft) -= 2;
- (*inbuf) += weird_table[i].len;
- (*outbuf) += 2;
- done = 1;
- break;
- }
- }
- }
- if (done) continue;
- (*outbuf)[0] = (*inbuf)[0];
- (*outbuf)[1] = 0;
- (*inbytesleft) -= 1;
- (*outbytesleft) -= 2;
- (*inbuf) += 1;
- (*outbuf) += 2;
- }
-
- if (*inbytesleft > 0) {
- errno = E2BIG;
- return -1;
- }
-
- return 0;
-}
-
-static size_t weird_push(void *cd, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft)
-{
- int ir_count=0;
-
- while (*inbytesleft >= 2 && *outbytesleft >= 1) {
- int i;
- int done=0;
- for (i=0;weird_table[i].from;i++) {
- if ((*inbuf)[0] == weird_table[i].from &&
- (*inbuf)[1] == 0) {
- if (*outbytesleft < weird_table[i].len) {
- DEBUG(0,("No room for weird character\n"));
- /* smb_panic("weird_push"); */
- } else {
- memcpy(*outbuf, weird_table[i].to,
- weird_table[i].len);
- (*inbytesleft) -= 2;
- (*outbytesleft) -= weird_table[i].len;
- (*inbuf) += 2;
- (*outbuf) += weird_table[i].len;
- done = 1;
- break;
- }
- }
- }
- if (done) continue;
-
- (*outbuf)[0] = (*inbuf)[0];
- if ((*inbuf)[1]) ir_count++;
- (*inbytesleft) -= 2;
- (*outbytesleft) -= 1;
- (*inbuf) += 2;
- (*outbuf) += 1;
- }
-
- if (*inbytesleft == 1) {
- errno = EINVAL;
- return -1;
- }
-
- if (*inbytesleft > 1) {
- errno = E2BIG;
- return -1;
- }
-
- return ir_count;
-}
-
-struct charset_functions weird_functions = {"WEIRD", weird_pull, weird_push};
-
-int init_module(void)
-{
- smb_register_charset(&weird_functions);
- return 1;
-}
diff --git a/source3/modules/vfs_fake_perms.c b/source3/modules/vfs_fake_perms.c
deleted file mode 100644
index 85515df21a..0000000000
--- a/source3/modules/vfs_fake_perms.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Fake Perms VFS module. Implements passthrough operation of all VFS
- * calls to disk functions, except for file permissions, which are now
- * mode 0700 for the current uid/gid.
- *
- * Copyright (C) Tim Potter, 1999-2000
- * Copyright (C) Alexander Bokovoy, 2002
- * Copyright (C) Andrew Bartlett, 2002
- *
- * 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 2 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, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <sys/stat.h>
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <errno.h>
-#include <string.h>
-
-#include <includes.h>
-#include <vfs.h>
-
-static struct vfs_ops default_vfs_ops; /* For passthrough operation */
-static struct smb_vfs_handle_struct *fake_perms_handle; /* use fake_perms_handle->data for storing per-instance private data */
-
-static int fake_perms_stat(struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf)
-{
- int ret = default_vfs_ops.stat(conn, fname, sbuf);
- if (ret == 0) {
- extern struct current_user current_user;
-
- if (S_ISDIR(sbuf->st_mode)) {
- sbuf->st_mode = S_IFDIR | S_IRWXU;
- } else {
- sbuf->st_mode = S_IRWXU;
- }
- sbuf->st_uid = current_user.uid;
- sbuf->st_gid = current_user.gid;
- }
- return ret;
-}
-
-static int fake_perms_fstat(struct files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf)
-{
- int ret = default_vfs_ops.fstat(fsp, fd, sbuf);
- if (ret == 0) {
- extern struct current_user current_user;
-
- if (S_ISDIR(sbuf->st_mode)) {
- sbuf->st_mode = S_IFDIR | S_IRWXU;
- } else {
- sbuf->st_mode = S_IRWXU;
- }
- sbuf->st_uid = current_user.uid;
- sbuf->st_gid = current_user.gid;
- }
- return ret;
-}
-
-#if 0
-static size_t fake_perms_fget_nt_acl(struct files_struct *fsp, int fd, struct security_descriptor_info **ppdesc)
-{
- return default_vfs_ops.fget_nt_acl(fsp, fd, ppdesc);
-}
-
-static size_t fake_perms_get_nt_acl(struct files_struct *fsp, const char *name, struct security_descriptor_info **ppdesc)
-{
- return default_vfs_ops.get_nt_acl(fsp, name, ppdesc);
-}
-
-static BOOL fake_perms_fset_nt_acl(struct files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd)
-{
- return default_vfs_ops.fset_nt_acl(fsp, fd, security_info_sent, psd);
-}
-
-static BOOL fake_perms_set_nt_acl(struct files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd)
-{
- return default_vfs_ops.set_nt_acl(fsp, name, security_info_sent, psd);
-}
-
-static BOOL fake_perms_chmod_acl(struct connection_struct *conn, const char *name, mode_t mode)
-{
- return default_vfs_ops.chmod_acl(conn, name, mode);
-}
-
-static BOOL fake_perms_fchmod_acl(struct files_struct *fsp, int fd, mode_t mode)
-{
- return default_vfs_ops.fchmod_acl(fsp, fd, mode);
-}
-
-static int fake_perms_sys_acl_get_entry(struct connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p)
-{
- return default_vfs_ops.sys_acl_get_entry(conn, theacl, entry_id, entry_p);
-}
-
-static int fake_perms_sys_acl_get_tag_type(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p)
-{
- return default_vfs_ops.sys_acl_get_tag_type(conn, entry_d, tag_type_p);
-}
-
-static int fake_perms_sys_acl_get_permset(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p)
-{
- return default_vfs_ops.sys_acl_get_permset(conn, entry_d, permset_p);
-}
-
-static void *fake_perms_sys_acl_get_qualifier(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d)
-{
- return default_vfs_ops.sys_acl_get_qualifier(conn, entry_d);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_get_file(struct connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type)
-{
- return default_vfs_ops.sys_acl_get_file(conn, path_p, type);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_get_fd(struct files_struct *fsp, int fd)
-{
- return default_vfs_ops.sys_acl_get_fd(fsp, fd);
-}
-
-static int fake_perms_sys_acl_clear_perms(struct connection_struct *conn, SMB_ACL_PERMSET_T permset)
-{
- return default_vfs_ops.sys_acl_clear_perms(conn, permset);
-}
-
-static int fake_perms_sys_acl_add_perm(struct connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
-{
- return default_vfs_ops.sys_acl_add_perm(conn, permset, perm);
-}
-
-static char *fake_perms_sys_acl_to_text(struct connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen)
-{
- return default_vfs_ops.sys_acl_to_text(conn, theacl, plen);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_init(struct connection_struct *conn, int count)
-{
- return default_vfs_ops.sys_acl_init(conn, count);
-}
-
-static int fake_perms_sys_acl_create_entry(struct connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry)
-{
- return default_vfs_ops.sys_acl_create_entry(conn, pacl, pentry);
-}
-
-static int fake_perms_sys_acl_set_tag_type(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype)
-{
- return default_vfs_ops.sys_acl_set_tag_type(conn, entry, tagtype);
-}
-
-static int fake_perms_sys_acl_set_qualifier(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual)
-{
- return default_vfs_ops.sys_acl_set_qualifier(conn, entry, qual);
-}
-
-static int fake_perms_sys_acl_set_permset(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset)
-{
- return default_vfs_ops.sys_acl_set_permset(conn, entry, permset);
-}
-
-static int fake_perms_sys_acl_valid(struct connection_struct *conn, SMB_ACL_T theacl )
-{
- return default_vfs_ops.sys_acl_valid(conn, theacl );
-}
-
-static int fake_perms_sys_acl_set_file(struct connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl)
-{
- return default_vfs_ops.sys_acl_set_file(conn, name, acltype, theacl);
-}
-
-static int fake_perms_sys_acl_set_fd(struct files_struct *fsp, int fd, SMB_ACL_T theacl)
-{
- return default_vfs_ops.sys_acl_set_fd(fsp, fd, theacl);
-}
-
-static int fake_perms_sys_acl_delete_def_file(struct connection_struct *conn, const char *path)
-{
- return default_vfs_ops.sys_acl_delete_def_file(conn, path);
-}
-
-static int fake_perms_sys_acl_get_perm(struct connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
-{
- return default_vfs_ops.sys_acl_get_perm(conn, permset, perm);
-}
-
-static int fake_perms_sys_acl_free_text(struct connection_struct *conn, char *text)
-{
- return default_vfs_ops.sys_acl_free_text(conn, text);
-}
-
-static int fake_perms_sys_acl_free_acl(struct connection_struct *conn, SMB_ACL_T posix_acl)
-{
- return default_vfs_ops.sys_acl_free_acl(conn, posix_acl);
-}
-
-static int fake_perms_sys_acl_free_qualifier(struct connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype)
-{
- return default_vfs_ops.sys_acl_free_qualifier(conn, qualifier, tagtype);
-}
-#endif
-
-/* VFS operations structure */
-
-static vfs_op_tuple fake_perms_ops[] = {
-
- /* NT File ACL operations */
-#if 0
- {fake_perms_fget_nt_acl, SMB_VFS_OP_FGET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_get_nt_acl, SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fset_nt_acl, SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_set_nt_acl, SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
-
- /* POSIX ACL operations */
-
- {fake_perms_chmod_acl, SMB_VFS_OP_CHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fchmod_acl, SMB_VFS_OP_FCHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT},
-
- {fake_perms_sys_acl_get_entry, SMB_VFS_OP_SYS_ACL_GET_ENTRY, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_tag_type, SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_permset, SMB_VFS_OP_SYS_ACL_GET_PERMSET, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_qualifier, SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_file, SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_fd, SMB_VFS_OP_SYS_ACL_GET_FD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_clear_perms, SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_add_perm, SMB_VFS_OP_SYS_ACL_ADD_PERM, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_to_text, SMB_VFS_OP_SYS_ACL_TO_TEXT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_init, SMB_VFS_OP_SYS_ACL_INIT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_create_entry, SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_tag_type, SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_qualifier, SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_permset, SMB_VFS_OP_SYS_ACL_SET_PERMSET, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_valid, SMB_VFS_OP_SYS_ACL_VALID, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_file, SMB_VFS_OP_SYS_ACL_SET_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_fd, SMB_VFS_OP_SYS_ACL_SET_FD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_delete_def_file, SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_perm, SMB_VFS_OP_SYS_ACL_GET_PERM, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_text, SMB_VFS_OP_SYS_ACL_FREE_TEXT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_acl, SMB_VFS_OP_SYS_ACL_FREE_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_qualifier, SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
-#endif
-
- {fake_perms_stat, SMB_VFS_OP_STAT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fstat, SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_TRANSPARENT},
- {NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
-};
-
-/* VFS initialisation - return initialized vfs_op_tuple array back to Samba */
-
-vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
- struct smb_vfs_handle_struct *vfs_handle)
-{
- DEBUG(3, ("Initialising default vfs hooks\n"));
-
- *vfs_version = SMB_VFS_INTERFACE_VERSION;
- memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
-
- /* Remember vfs_handle for further allocation and referencing of private
- information in vfs_handle->data
- */
- fake_perms_handle = vfs_handle;
- return fake_perms_ops;
-}
-
-/* VFS finalization function */
-void vfs_done(connection_struct *conn)
-{
- DEBUG(3, ("Finalizing default vfs hooks\n"));
-}
diff --git a/source3/modules/vfs_recycle.c b/source3/modules/vfs_recycle.c
index a99a593caf..eedb65cd9d 100644
--- a/source3/modules/vfs_recycle.c
+++ b/source3/modules/vfs_recycle.c
@@ -37,7 +37,7 @@ static const char *delimiter = "|"; /* delimiter for options */
typedef struct recycle_bin_struct
{
- TALLOC_CTX *mem_ctx;
+ TALLOC_CTX *ctx;
char *repository; /* name of the recycle bin directory */
BOOL keep_dir_tree; /* keep directory structure of deleted file in recycle bin */
BOOL versions; /* create versions of deleted files with identical name */
@@ -48,19 +48,6 @@ typedef struct recycle_bin_struct
SMB_OFF_T maxsize; /* maximum file size to be saved */
} recycle_bin_struct;
-typedef struct recycle_bin_connections {
- int conn;
- recycle_bin_struct *data;
- struct recycle_bin_connections *next;
-} recycle_bin_connections;
-
-typedef struct recycle_bin_private_data {
- TALLOC_CTX *mem_ctx;
- recycle_bin_connections *conns;
-} recycle_bin_private_data;
-
-struct smb_vfs_handle_struct *recycle_bin_private_handle;
-
/* VFS operations */
static struct vfs_ops default_vfs_ops; /* For passthrough operation */
@@ -82,6 +69,16 @@ static vfs_op_tuple recycle_ops[] = {
{NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
};
+static BOOL check_bool_param(const char *value)
+{
+ if (strwicmp(value, "yes") == 0 ||
+ strwicmp(value, "true") == 0 ||
+ strwicmp(value, "1") == 0)
+ return True;
+
+ return False;
+}
+
/**
* VFS initialisation function.
*
@@ -90,8 +87,6 @@ static vfs_op_tuple recycle_ops[] = {
vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
struct smb_vfs_handle_struct *vfs_handle)
{
- TALLOC_CTX *mem_ctx = NULL;
-
DEBUG(10, ("Initializing VFS module recycle\n"));
*vfs_version = SMB_VFS_INTERFACE_VERSION;
memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
@@ -103,20 +98,6 @@ vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
DEBUG(0, ("vfs_recycle: Debug class number of 'vfs_recycle': %d\n", vfs_recycle_debug_level));
}
- recycle_bin_private_handle = vfs_handle;
- if (!(mem_ctx = talloc_init("recycle bin data"))) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return NULL;
- }
-
- recycle_bin_private_handle->data = talloc(mem_ctx, sizeof(recycle_bin_private_data));
- if (recycle_bin_private_handle->data == NULL) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return NULL;
- }
- ((recycle_bin_private_data *)(recycle_bin_private_handle->data))->mem_ctx = mem_ctx;
- ((recycle_bin_private_data *)(recycle_bin_private_handle->data))->conns = NULL;
-
return recycle_ops;
}
@@ -124,67 +105,34 @@ vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
* VFS finalization function.
*
**/
-void vfs_done(void)
+void vfs_done(connection_struct *conn)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
-
- DEBUG(10, ("Unloading/Cleaning VFS module recycle bin\n"));
-
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return;
- }
-
- if (recdata) {
- if (recdata->conns) {
- recconn = recdata->conns;
- while (recconn) {
- talloc_destroy(recconn->data->mem_ctx);
- recconn = recconn->next;
- }
- }
- if (recdata->mem_ctx) {
- talloc_destroy(recdata->mem_ctx);
- }
- recdata = NULL;
- }
+ DEBUG(10,("Called for connection %d\n", SNUM(conn)));
}
static int recycle_connect(struct connection_struct *conn, const char *service, const char *user)
{
TALLOC_CTX *ctx = NULL;
recycle_bin_struct *recbin;
- recycle_bin_connections *recconn;
- recycle_bin_connections *recconnbase;
- recycle_bin_private_data *recdata;
+ char *servicename;
char *tmp_str;
DEBUG(10, ("Called for service %s (%d) as user %s\n", service, SNUM(conn), user));
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return -1;
- }
-
- if (!(ctx = talloc_init("recycle bin connection"))) {
+ if (!(ctx = talloc_init("recycle bin"))) {
DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return -1;
+ return 0;
}
- recbin = talloc(ctx, sizeof(recycle_bin_struct));
- if (recbin == NULL) {
+ recbin = talloc(ctx,sizeof(recycle_bin_struct));
+ if ( recbin == NULL) {
DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
return -1;
}
- recbin->mem_ctx = ctx;
+ recbin->ctx = ctx;
/* Set defaults */
- recbin->repository = talloc_strdup(recbin->mem_ctx, ".recycle");
+ recbin->repository = talloc_strdup(ctx, ".recycle");
ALLOC_CHECK(recbin->repository, error);
recbin->keep_dir_tree = False;
recbin->versions = False;
@@ -195,61 +143,55 @@ static int recycle_connect(struct connection_struct *conn, const char *service,
recbin->maxsize = 0;
/* parse configuration options */
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "repository")) != NULL) {
- recbin->repository = talloc_sub_conn(recbin->mem_ctx, conn, tmp_str);
+ servicename = talloc_strdup(recbin->ctx, lp_servicename(SNUM(conn)));
+ DEBUG(10, ("servicename = %s\n",servicename));
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "repository")) != NULL) {
+ recbin->repository = talloc_sub_conn(ctx, conn, tmp_str);
ALLOC_CHECK(recbin->repository, error);
trim_string(recbin->repository, "/", "/");
DEBUG(5, ("recycle.bin: repository = %s\n", recbin->repository));
}
-
- recbin->keep_dir_tree = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "keeptree");
- DEBUG(5, ("recycle.bin: keeptree = %d\n", recbin->keep_dir_tree));
-
- recbin->versions = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "versions");
- DEBUG(5, ("recycle.bin: versions = %d\n", recbin->versions));
-
- recbin->touch = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "touch");
- DEBUG(5, ("recycle.bin: touch = %d\n", recbin->touch));
-
- recbin->maxsize = lp_parm_ulong(SNUM(conn), "vfs_recycle_bin", "maxsize");
- if (recbin->maxsize == 0) {
- recbin->maxsize = -1;
- DEBUG(5, ("recycle.bin: maxsize = -infinite-\n"));
- } else {
- DEBUG(5, ("recycle.bin: maxsize = %ld\n", (long int)recbin->maxsize));
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "keeptree")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->keep_dir_tree = True;
+ DEBUG(5, ("recycle.bin: keeptree = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "versions")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->versions = True;
+ DEBUG(5, ("recycle.bin: versions = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "touch")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->touch = True;
+ DEBUG(5, ("recycle.bin: touch = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "maxsize")) != NULL) {
+ recbin->maxsize = strtoul(tmp_str, NULL, 10);
+ if (recbin->maxsize == 0) {
+ recbin->maxsize = -1;
+ DEBUG(5, ("recycle.bin: maxsize = -infinite-\n"));
+ } else {
+ DEBUG(5, ("recycle.bin: maxsize = %ld\n", (long int)recbin->maxsize));
+ }
}
-
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "exclude")) != NULL) {
- recbin->exclude = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "exclude")) != NULL) {
+ recbin->exclude = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->exclude, error);
DEBUG(5, ("recycle.bin: exclude = %s\n", recbin->exclude));
}
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "exclude_dir")) != NULL) {
- recbin->exclude_dir = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "exclude_dir")) != NULL) {
+ recbin->exclude_dir = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->exclude_dir, error);
DEBUG(5, ("recycle.bin: exclude_dir = %s\n", recbin->exclude_dir));
}
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "noversions")) != NULL) {
- recbin->noversions = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "noversions")) != NULL) {
+ recbin->noversions = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->noversions, error);
DEBUG(5, ("recycle.bin: noversions = %s\n", recbin->noversions));
}
- recconn = talloc(recdata->mem_ctx, sizeof(recycle_bin_connections));
- if (recconn == NULL) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- goto error;
- }
- recconn->conn = SNUM(conn);
- recconn->data = recbin;
- recconn->next = NULL;
- if (recdata->conns) {
- recconnbase = recdata->conns;
- while (recconnbase->next != NULL) recconnbase = recconnbase->next;
- recconnbase->next = recconn;
- } else {
- recdata->conns = recconn;
- }
+ conn->vfs_private = (void *)recbin;
return default_vfs_ops.connect(conn, service, user);
error:
@@ -259,35 +201,10 @@ error:
static void recycle_disconnect(struct connection_struct *conn)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
-
DEBUG(10, ("Disconnecting VFS module recycle bin\n"));
-
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return;
- }
-
- if (recdata) {
- if (recdata->conns) {
- if (recdata->conns->conn == SNUM(conn)) {
- talloc_destroy(recdata->conns->data->mem_ctx);
- recdata->conns = recdata->conns->next;
- } else {
- recconn = recdata->conns;
- while (recconn->next) {
- if (recconn->next->conn == SNUM(conn)) {
- talloc_destroy(recconn->next->data->mem_ctx);
- recconn->next = recconn->next->next;
- break;
- }
- recconn = recconn->next;
- }
- }
- }
+ if (conn->vfs_private) {
+ talloc_destroy(((recycle_bin_struct *)conn->vfs_private)->ctx);
+ conn->vfs_private = NULL;
}
default_vfs_ops.disconnect(conn);
}
@@ -472,35 +389,26 @@ static void recycle_touch(connection_struct *conn, const char *fname)
/**
* Check if file should be recycled
**/
-static int recycle_unlink(connection_struct *conn, const char *file_name)
+static int recycle_unlink(connection_struct *conn, const char *inname)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
recycle_bin_struct *recbin;
+ char *file_name = NULL;
char *path_name = NULL;
char *temp_name = NULL;
char *final_name = NULL;
- const char *base;
+ char *base;
int i;
-/* SMB_BIG_UINT dfree, dsize, bsize; */
- SMB_OFF_T file_size; /* space_avail; */
+ SMB_BIG_UINT dfree, dsize, bsize;
+ SMB_OFF_T file_size, space_avail;
BOOL exist;
int rc = -1;
- recbin = NULL;
- if (recycle_bin_private_handle) {
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- if (recdata) {
- if (recdata->conns) {
- recconn = recdata->conns;
- while (recconn && recconn->conn != SNUM(conn)) recconn = recconn->next;
- if (recconn != NULL) {
- recbin = recconn->data;
- }
- }
- }
- }
- if (recbin == NULL) {
+ file_name = strdup(inname);
+ ALLOC_CHECK(file_name, done);
+
+ if (conn->vfs_private)
+ recbin = (recycle_bin_struct *)conn->vfs_private;
+ else {
DEBUG(0, ("Recycle bin not initialized!\n"));
rc = default_vfs_ops.unlink(conn, file_name);
goto done;
@@ -556,13 +464,14 @@ static int recycle_unlink(connection_struct *conn, const char *file_name)
path_name = (char *)malloc(PATH_MAX);
ALLOC_CHECK(path_name, done);
*path_name = '\0';
- safe_strcpy(path_name, file_name, PATH_MAX - 1);
+ safe_strcpy(path_name, file_name, PATH_MAX);
base = strrchr(path_name, '/');
if (base == NULL) {
base = file_name;
- safe_strcpy(path_name, "/", PATH_MAX - 1);
+ safe_strcpy(path_name, "/", PATH_MAX);
}
else {
+ *base = '\0';
base++;
}
@@ -586,13 +495,14 @@ static int recycle_unlink(connection_struct *conn, const char *file_name)
goto done;
}
- temp_name = (char *)strdup(recbin->repository);
+ temp_name = (char *)malloc(PATH_MAX);
ALLOC_CHECK(temp_name, done);
+ safe_strcpy(temp_name, recbin->repository, PATH_MAX);
/* see if we need to recreate the original directory structure in the recycle bin */
if (recbin->keep_dir_tree == True) {
- safe_strcat(temp_name, "/", PATH_MAX - 1);
- safe_strcat(temp_name, path_name, PATH_MAX - 1);
+ safe_strcat(temp_name, "/", PATH_MAX);
+ safe_strcat(temp_name, path_name, PATH_MAX);
}
exist = recycle_directory_exist(conn, temp_name);
@@ -607,9 +517,9 @@ static int recycle_unlink(connection_struct *conn, const char *file_name)
}
}
- final_name = NULL;
- asprintf(&final_name, "%s/%s", temp_name, base);
+ final_name = (char *)malloc(PATH_MAX);
ALLOC_CHECK(final_name, done);
+ snprintf(final_name, PATH_MAX, "%s/%s", temp_name, base);
DEBUG(10, ("recycle.bin: recycled file name%s\n", temp_name)); /* new filename with path */
/* check if we should delete file from recycle bin */
@@ -641,6 +551,7 @@ static int recycle_unlink(connection_struct *conn, const char *file_name)
recycle_touch(conn, final_name);
done:
+ SAFE_FREE(file_name);
SAFE_FREE(path_name);
SAFE_FREE(temp_name);
SAFE_FREE(final_name);
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index fc08645f1d..2b7d8033a2 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -292,7 +292,7 @@ static BOOL reload_nmbd_services(BOOL test)
{
BOOL ret;
- set_remote_machine_name("nmbd", False);
+ set_remote_machine_name("nmbd");
if ( lp_loaded() ) {
pstring fname;
diff --git a/source3/nmbd/nmbd_become_lmb.c b/source3/nmbd/nmbd_become_lmb.c
index 6f8e7efb1a..bac5589566 100644
--- a/source3/nmbd/nmbd_become_lmb.c
+++ b/source3/nmbd/nmbd_become_lmb.c
@@ -207,7 +207,7 @@ static void release_1d_name( struct subnet_record *subrec, char *workgroup_name,
if((namerec = find_name_on_subnet( subrec, &nmbname, FIND_SELF_NAME))!=NULL)
{
struct userdata_struct *userdata;
- size_t size = sizeof(struct userdata_struct) + sizeof(BOOL);
+ int size = sizeof(struct userdata_struct) + sizeof(BOOL);
if((userdata = (struct userdata_struct *)malloc(size)) == NULL)
{
@@ -518,7 +518,7 @@ workgroup %s on subnet %s. Couldn't register name %s.\n",
void become_local_master_browser(struct subnet_record *subrec, struct work_record *work)
{
struct userdata_struct *userdata;
- size_t size = sizeof(struct userdata_struct) + sizeof(fstring) + 1;
+ int size = sizeof(struct userdata_struct) + sizeof(fstring) + 1;
/* Sanity check. */
if (!lp_local_master())
@@ -563,7 +563,7 @@ in workgroup %s on subnet %s\n",
userdata->copy_fn = NULL;
userdata->free_fn = NULL;
userdata->userdata_len = strlen(work->work_group)+1;
- overmalloc_safe_strcpy(userdata->data, work->work_group, size - sizeof(*userdata) - 1);
+ fstrcpy(userdata->data, work->work_group);
/* Register the special browser group name. */
register_name(subrec, MSBROWSE, 0x01, samba_nb_type|NB_GROUP,
diff --git a/source3/nmbd/nmbd_browsesync.c b/source3/nmbd/nmbd_browsesync.c
index b9082ee1c3..c363ed0d34 100644
--- a/source3/nmbd/nmbd_browsesync.c
+++ b/source3/nmbd/nmbd_browsesync.c
@@ -288,7 +288,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
struct work_record *work;
struct nmb_name nmbname;
struct userdata_struct *userdata;
- size_t size = sizeof(struct userdata_struct) + sizeof(fstring)+1;
+ int size = sizeof(struct userdata_struct) + sizeof(fstring)+1;
if( !(work = find_workgroup_on_subnet(subrec, q_name->name)) )
{
@@ -333,7 +333,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
userdata->copy_fn = NULL;
userdata->free_fn = NULL;
userdata->userdata_len = strlen(work->work_group)+1;
- overmalloc_safe_strcpy(userdata->data, work->work_group, size - sizeof(*userdata) - 1);
+ fstrcpy(userdata->data, work->work_group);
node_status( subrec, &nmbname, answer_ip,
domain_master_node_status_success,
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
index 6c3446d6c8..d83cd10d0c 100644
--- a/source3/nmbd/nmbd_packets.c
+++ b/source3/nmbd/nmbd_packets.c
@@ -1929,7 +1929,7 @@ BOOL listen_for_packets(BOOL run_election)
/****************************************************************************
Construct and send a netbios DGRAM.
**************************************************************************/
-BOOL send_mailslot(BOOL unique, const char *mailslot,char *buf, size_t len,
+BOOL send_mailslot(BOOL unique, const char *mailslot,char *buf,int len,
const char *srcname, int src_type,
const char *dstname, int dest_type,
struct in_addr dest_ip,struct in_addr src_ip,
@@ -1979,16 +1979,11 @@ BOOL send_mailslot(BOOL unique, const char *mailslot,char *buf, size_t len,
SSVAL(ptr,smb_vwv15,1);
SSVAL(ptr,smb_vwv16,2);
p2 = smb_buf(ptr);
- safe_strcpy_base(p2, mailslot, dgram->data, sizeof(dgram->data));
+ pstrcpy(p2,mailslot);
p2 = skip_string(p2,1);
-
- if (((p2+len) > dgram->data+sizeof(dgram->data)) || ((p2+len) < p2)) {
- DEBUG(0, ("send_mailslot: Cannot write beyond end of packet\n"));
- return False;
- } else {
- memcpy(p2,buf,len);
- p2 += len;
- }
+
+ memcpy(p2,buf,len);
+ p2 += len;
dgram->datasize = PTR_DIFF(p2,ptr+4); /* +4 for tcp length. */
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index 921f7d2864..35fef6e361 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -43,9 +43,15 @@ static BOOL reload_services_file(BOOL test)
}
}
+ snprintf(logfile, sizeof(logfile), "%s/log.winbindd", dyn_LOGFILEBASE);
+ lp_set_logfile(logfile);
+
reopen_logs();
ret = lp_load(dyn_CONFIGFILE,False,False,True);
+ snprintf(logfile, sizeof(logfile), "%s/log.winbindd", dyn_LOGFILEBASE);
+ lp_set_logfile(logfile);
+
reopen_logs();
load_interfaces();
@@ -817,12 +823,13 @@ static void usage(void)
fault_setup((void (*)(void *))fault_quit );
+ snprintf(logfile, sizeof(logfile), "%s/log.winbindd", dyn_LOGFILEBASE);
+ lp_set_logfile(logfile);
+
/* Initialise for running in non-root mode */
sec_init();
- set_remote_machine_name("winbindd", False);
-
/* Set environment variable so we don't recursively call ourselves.
This may also be useful interactively. */
@@ -938,7 +945,6 @@ static void usage(void)
process_loop();
- trustdom_cache_shutdown();
uni_group_cache_shutdown();
return 0;
}
diff --git a/source3/nsswitch/winbindd.h b/source3/nsswitch/winbindd.h
index 42ef209faf..cc7cdc5297 100644
--- a/source3/nsswitch/winbindd.h
+++ b/source3/nsswitch/winbindd.h
@@ -4,7 +4,6 @@
Winbind daemon for ntdom nss module
Copyright (C) Tim Potter 2000
- Copyright (C) Anthony Liguori 2003
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -64,8 +63,7 @@ struct getent_state {
struct getpwent_user {
fstring name; /* Account name */
fstring gecos; /* User information */
- DOM_SID user_sid; /* NT user and primary group SIDs */
- DOM_SID group_sid;
+ uint32 user_rid, group_rid; /* NT user and group rids */
};
/* Server state structure */
@@ -83,8 +81,8 @@ extern struct winbindd_state server_state; /* Server information */
typedef struct {
char *acct_name;
char *full_name;
- DOM_SID *user_sid; /* NT user and primary group SIDs */
- DOM_SID *group_sid;
+ uint32 user_rid;
+ uint32 group_rid; /* primary group */
} WINBIND_USERINFO;
/* Structures to hold per domain information */
@@ -140,7 +138,6 @@ struct winbindd_methods {
/* convert one user or group name to a sid */
NTSTATUS (*name_to_sid)(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
const char *name,
DOM_SID *sid,
enum SID_NAME_USE *type);
@@ -152,10 +149,10 @@ struct winbindd_methods {
char **name,
enum SID_NAME_USE *type);
- /* lookup user info for a given SID */
+ /* lookup user info for a given rid */
NTSTATUS (*query_user)(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
+ uint32 user_rid,
WINBIND_USERINFO *user_info);
/* lookup all groups that a user is a member of. The backend
@@ -163,15 +160,14 @@ struct winbindd_methods {
function */
NTSTATUS (*lookup_usergroups)(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
- uint32 *num_groups, DOM_SID ***user_gids);
+ uint32 user_rid,
+ uint32 *num_groups, uint32 **user_gids);
/* find all members of the group with the specified group_rid */
NTSTATUS (*lookup_groupmem)(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *group_sid,
- uint32 *num_names,
- DOM_SID ***sid_mem, char ***names,
+ uint32 group_rid, uint32 *num_names,
+ uint32 **rid_mem, char ***names,
uint32 **name_types);
/* return the current global sequence number */
@@ -200,23 +196,6 @@ typedef struct {
POLICY_HND pol;
} CLI_POLICY_HND;
-/* Filled out by IDMAP backends */
-struct idmap_methods {
- /* Called when backend is first loaded */
- BOOL (*init)(void);
-
- BOOL (*get_sid_from_uid)(uid_t uid, DOM_SID *sid);
- BOOL (*get_sid_from_gid)(gid_t gid, DOM_SID *sid);
-
- BOOL (*get_uid_from_sid)(DOM_SID *sid, uid_t *uid);
- BOOL (*get_gid_from_sid)(DOM_SID *sid, gid_t *gid);
-
- /* Called when backend is unloaded */
- BOOL (*close)(void);
- /* Called to dump backend status */
- void (*status)(void);
-};
-
#include "winbindd_proto.h"
#include "rpc_parse.h"
diff --git a/source3/nsswitch/winbindd_ads.c b/source3/nsswitch/winbindd_ads.c
index de3757aa44..f6fc3a8d6c 100644
--- a/source3/nsswitch/winbindd_ads.c
+++ b/source3/nsswitch/winbindd_ads.c
@@ -4,7 +4,6 @@
Winbind ADS backend functions
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Andrew Bartlett <abartlet@samba.org> 2003
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
@@ -89,6 +88,13 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain)
return ads;
}
+/* useful utility */
+static void sid_from_rid(struct winbindd_domain *domain, uint32 rid, DOM_SID *sid)
+{
+ sid_copy(sid, &domain->sid);
+ sid_append_rid(sid, rid);
+}
+
/* Query display info for a realm. This is the basic user list fn */
static NTSTATUS query_user_list(struct winbindd_domain *domain,
@@ -137,9 +143,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
for (msg = ads_first_entry(ads, res); msg; msg = ads_next_entry(ads, msg)) {
char *name, *gecos;
DOM_SID sid;
- DOM_SID *sid2;
- DOM_SID *group_sid;
- uint32 group;
+ uint32 rid, group;
uint32 atype;
if (!ads_pull_uint32(ads, msg, "sAMAccountType", &atype) ||
@@ -159,20 +163,15 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
continue;
}
- sid2 = talloc(mem_ctx, sizeof(*sid2));
- if (!sid2) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
+ if (!sid_peek_check_rid(&domain->sid, &sid, &rid)) {
+ DEBUG(1,("No rid for %s !?\n", name));
+ continue;
}
- sid_copy(sid2, &sid);
-
- group_sid = rid_to_talloced_sid(domain, mem_ctx, group);
-
(*info)[i].acct_name = name;
(*info)[i].full_name = gecos;
- (*info)[i].user_sid = sid2;
- (*info)[i].group_sid = group_sid;
+ (*info)[i].user_rid = rid;
+ (*info)[i].group_rid = group;
i++;
}
@@ -297,7 +296,6 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
const char *name,
DOM_SID *sid,
enum SID_NAME_USE *type)
@@ -330,13 +328,13 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
}
-/* convert a DN to a name, SID and name type
+/* convert a DN to a name, rid and name type
this might become a major speed bottleneck if groups have
lots of users, in which case we could cache the results
*/
static BOOL dn_lookup(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
const char *dn,
- char **name, uint32 *name_type, DOM_SID *sid)
+ char **name, uint32 *name_type, uint32 *rid)
{
char *exp;
void *res = NULL;
@@ -344,6 +342,7 @@ static BOOL dn_lookup(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
"objectSid", "sAMAccountType", NULL};
ADS_STATUS rc;
uint32 atype;
+ DOM_SID sid;
char *escaped_dn = escape_ldap_string_alloc(dn);
if (!escaped_dn) {
@@ -366,7 +365,8 @@ static BOOL dn_lookup(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
}
(*name_type) = ads_atype_map(atype);
- if (!ads_pull_sid(ads, res, "objectSid", sid)) {
+ if (!ads_pull_sid(ads, res, "objectSid", &sid) ||
+ !sid_peek_rid(&sid, rid)) {
goto failed;
}
@@ -381,158 +381,76 @@ failed:
/* Lookup user information from a rid */
static NTSTATUS query_user(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *sid,
+ uint32 user_rid,
WINBIND_USERINFO *info)
{
ADS_STRUCT *ads = NULL;
const char *attrs[] = {"userPrincipalName",
"sAMAccountName",
- "name",
+ "name", "objectSid",
"primaryGroupID", NULL};
ADS_STATUS rc;
int count;
void *msg = NULL;
char *exp;
+ DOM_SID sid;
char *sidstr;
- uint32 group_rid;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- DOM_SID *sid2;
- fstring sid_string;
DEBUG(3,("ads: query_user\n"));
+ sid_from_rid(domain, user_rid, &sid);
+
ads = ads_cached_connection(domain);
if (!ads) goto done;
- sidstr = sid_binstring(sid);
+ sidstr = sid_binstring(&sid);
asprintf(&exp, "(objectSid=%s)", sidstr);
rc = ads_search_retry(ads, &msg, exp, attrs);
free(exp);
free(sidstr);
if (!ADS_ERR_OK(rc)) {
- DEBUG(1,("query_user(sid=%s) ads_search: %s\n", sid_to_string(sid_string, sid), ads_errstr(rc)));
+ DEBUG(1,("query_user(rid=%d) ads_search: %s\n", user_rid, ads_errstr(rc)));
goto done;
}
count = ads_count_replies(ads, msg);
if (count != 1) {
- DEBUG(1,("query_user(sid=%s): Not found\n", sid_to_string(sid_string, sid)));
+ DEBUG(1,("query_user(rid=%d): Not found\n", user_rid));
goto done;
}
info->acct_name = ads_pull_username(ads, mem_ctx, msg);
info->full_name = ads_pull_string(ads, mem_ctx, msg, "name");
-
- if (!ads_pull_uint32(ads, msg, "primaryGroupID", &group_rid)) {
- DEBUG(1,("No primary group for %s !?\n", sid_to_string(sid_string, sid)));
+ if (!ads_pull_sid(ads, msg, "objectSid", &sid)) {
+ DEBUG(1,("No sid for %d !?\n", user_rid));
goto done;
}
-
- sid2 = talloc(mem_ctx, sizeof(*sid2));
- if (!sid2) {
- status = NT_STATUS_NO_MEMORY;
+ if (!ads_pull_uint32(ads, msg, "primaryGroupID", &info->group_rid)) {
+ DEBUG(1,("No primary group for %d !?\n", user_rid));
goto done;
}
- sid_copy(sid2, sid);
-
- info->user_sid = sid2;
-
- info->group_sid = rid_to_talloced_sid(domain, mem_ctx, group_rid);
-
- status = NT_STATUS_OK;
-
- DEBUG(3,("ads query_user gave %s\n", info->acct_name));
-done:
- if (msg) ads_msgfree(ads, msg);
-
- return status;
-}
-
-/* Lookup groups a user is a member of - alternate method, for when
- tokenGroups are not available. */
-static NTSTATUS lookup_usergroups_alt(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- const char *user_dn,
- DOM_SID *primary_group,
- uint32 *num_groups, DOM_SID ***user_gids)
-{
- ADS_STATUS rc;
- NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- int count;
- void *res = NULL;
- void *msg = NULL;
- char *exp;
- ADS_STRUCT *ads;
- const char *group_attrs[] = {"objectSid", NULL};
-
- ads = ads_cached_connection(domain);
- if (!ads) goto done;
-
- /* buggy server, no tokenGroups. Instead lookup what groups this user
- is a member of by DN search on member*/
- if (asprintf(&exp, "(&(member=%s)(objectClass=group))", user_dn) == -1) {
- DEBUG(1,("lookup_usergroups(dn=%s) asprintf failed!\n", user_dn));
- return NT_STATUS_NO_MEMORY;
- }
- rc = ads_search_retry(ads, &res, exp, group_attrs);
- free(exp);
-
- if (!ADS_ERR_OK(rc)) {
- DEBUG(1,("lookup_usergroups ads_search member=%s: %s\n", user_dn, ads_errstr(rc)));
- return ads_ntstatus(rc);
- }
-
- count = ads_count_replies(ads, res);
- if (count == 0) {
- DEBUG(5,("lookup_usergroups: No supp groups found\n"));
-
- status = ads_ntstatus(rc);
+ if (!sid_peek_check_rid(&domain->sid,&sid, &info->user_rid)) {
+ DEBUG(1,("No rid for %d !?\n", user_rid));
goto done;
}
-
- (*user_gids) = talloc_zero(mem_ctx, sizeof(**user_gids) * (count + 1));
- (*user_gids)[0] = primary_group;
-
- *num_groups = 1;
-
- for (msg = ads_first_entry(ads, res); msg; msg = ads_next_entry(ads, msg)) {
- DOM_SID group_sid;
-
- if (!ads_pull_sid(ads, msg, "objectSid", &group_sid)) {
- DEBUG(1,("No sid for this group ?!?\n"));
- continue;
- }
-
- if (sid_equal(&group_sid, primary_group)) continue;
-
- (*user_gids)[*num_groups] = talloc(mem_ctx, sizeof(***user_gids));
- if (!(*user_gids)[*num_groups]) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- sid_copy((*user_gids)[*num_groups], &group_sid);
-
- (*num_groups)++;
-
- }
status = NT_STATUS_OK;
- DEBUG(3,("ads lookup_usergroups (alt) for dn=%s\n", user_dn));
+ DEBUG(3,("ads query_user gave %s\n", info->acct_name));
done:
- if (res) ads_msgfree(ads, res);
if (msg) ads_msgfree(ads, msg);
return status;
}
+
/* Lookup groups a user is a member of. */
static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *sid,
- uint32 *num_groups, DOM_SID ***user_gids)
+ uint32 user_rid,
+ uint32 *num_groups, uint32 **user_gids)
{
ADS_STRUCT *ads = NULL;
const char *attrs[] = {"distinguishedName", NULL};
@@ -544,94 +462,63 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
char *user_dn;
DOM_SID *sids;
int i;
- DOM_SID *primary_group;
- uint32 primary_group_rid;
+ uint32 primary_group;
+ DOM_SID sid;
char *sidstr;
- fstring sid_string;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
- DEBUG(3,("ads: lookup_usergroups\n"));
*num_groups = 0;
+ DEBUG(3,("ads: lookup_usergroups\n"));
+
+ (*num_groups) = 0;
+
+ sid_from_rid(domain, user_rid, &sid);
+
ads = ads_cached_connection(domain);
if (!ads) goto done;
- if (!(sidstr = sid_binstring(sid))) {
- DEBUG(1,("lookup_usergroups(sid=%s) sid_binstring returned NULL\n", sid_to_string(sid_string, sid)));
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
- if (asprintf(&exp, "(objectSid=%s)", sidstr) == -1) {
- free(sidstr);
- DEBUG(1,("lookup_usergroups(sid=%s) asprintf failed!\n", sid_to_string(sid_string, sid)));
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
+ sidstr = sid_binstring(&sid);
+ asprintf(&exp, "(objectSid=%s)", sidstr);
rc = ads_search_retry(ads, &msg, exp, attrs);
free(exp);
free(sidstr);
-
if (!ADS_ERR_OK(rc)) {
- DEBUG(1,("lookup_usergroups(sid=%s) ads_search: %s\n", sid_to_string(sid_string, sid), ads_errstr(rc)));
+ DEBUG(1,("lookup_usergroups(rid=%d) ads_search: %s\n", user_rid, ads_errstr(rc)));
goto done;
}
user_dn = ads_pull_string(ads, mem_ctx, msg, "distinguishedName");
- if (!user_dn) {
- DEBUG(1,("lookup_usergroups(sid=%s) ads_search did not return a a distinguishedName!\n", sid_to_string(sid_string, sid)));
- if (msg) ads_msgfree(ads, msg);
- goto done;
- }
if (msg) ads_msgfree(ads, msg);
rc = ads_search_retry_dn(ads, &msg, user_dn, attrs2);
if (!ADS_ERR_OK(rc)) {
- DEBUG(1,("lookup_usergroups(sid=%s) ads_search tokenGroups: %s\n", sid_to_string(sid_string, sid), ads_errstr(rc)));
+ DEBUG(1,("lookup_usergroups(rid=%d) ads_search tokenGroups: %s\n", user_rid, ads_errstr(rc)));
goto done;
}
- if (!ads_pull_uint32(ads, msg, "primaryGroupID", &primary_group_rid)) {
- DEBUG(1,("%s: No primary group for sid=%s !?\n", domain->name, sid_to_string(sid_string, sid)));
+ if (!ads_pull_uint32(ads, msg, "primaryGroupID", &primary_group)) {
+ DEBUG(1,("%s: No primary group for rid=%d !?\n", domain->name, user_rid));
goto done;
}
- primary_group = rid_to_talloced_sid(domain, mem_ctx, primary_group_rid);
-
- count = ads_pull_sids(ads, mem_ctx, msg, "tokenGroups", &sids);
-
- if (msg) ads_msgfree(ads, msg);
+ count = ads_pull_sids(ads, mem_ctx, msg, "tokenGroups", &sids) + 1;
+ (*user_gids) = (uint32 *)talloc_zero(mem_ctx, sizeof(uint32) * count);
+ (*user_gids)[(*num_groups)++] = primary_group;
- /* there must always be at least one group in the token,
- unless we are talking to a buggy Win2k server */
- if (count == 0) {
- return lookup_usergroups_alt(domain, mem_ctx, user_dn,
- primary_group,
- num_groups, user_gids);
- }
-
- (*user_gids) = talloc_zero(mem_ctx, sizeof(**user_gids) * (count + 1));
- (*user_gids)[0] = primary_group;
-
- *num_groups = 1;
-
- for (i=0;i<count;i++) {
- if (sid_equal(&sids[i], primary_group)) continue;
-
- (*user_gids)[*num_groups] = talloc(mem_ctx, sizeof(***user_gids));
- if (!(*user_gids)[*num_groups]) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- sid_copy((*user_gids)[*num_groups], &sids[i]);
+ for (i=1;i<count;i++) {
+ uint32 rid;
+ if (!sid_peek_check_rid(&domain->sid, &sids[i-1], &rid)) continue;
+ (*user_gids)[*num_groups] = rid;
(*num_groups)++;
}
status = NT_STATUS_OK;
- DEBUG(3,("ads lookup_usergroups for sid=%s\n", sid_to_string(sid_string, sid)));
+ DEBUG(3,("ads lookup_usergroups for rid=%d\n", user_rid));
done:
+ if (msg) ads_msgfree(ads, msg);
+
return status;
}
@@ -640,10 +527,11 @@ done:
*/
static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *group_sid, uint32 *num_names,
- DOM_SID ***sid_mem, char ***names,
+ uint32 group_rid, uint32 *num_names,
+ uint32 **rid_mem, char ***names,
uint32 **name_types)
{
+ DOM_SID group_sid;
ADS_STATUS rc;
int count;
void *res=NULL;
@@ -654,14 +542,14 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
const char *attrs[] = {"member", NULL};
char **members;
int i, num_members;
- fstring sid_string;
*num_names = 0;
ads = ads_cached_connection(domain);
if (!ads) goto done;
- sidstr = sid_binstring(group_sid);
+ sid_from_rid(domain, group_rid, &group_sid);
+ sidstr = sid_binstring(&group_sid);
/* search for all members of the group */
asprintf(&exp, "(objectSid=%s)",sidstr);
@@ -693,30 +581,24 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
for (i=0;members[i];i++) /* noop */ ;
num_members = i;
- (*sid_mem) = talloc_zero(mem_ctx, sizeof(**sid_mem) * num_members);
- (*name_types) = talloc_zero(mem_ctx, sizeof(**name_types) * num_members);
- (*names) = talloc_zero(mem_ctx, sizeof(**names) * num_members);
+ (*rid_mem) = talloc_zero(mem_ctx, sizeof(uint32) * num_members);
+ (*name_types) = talloc_zero(mem_ctx, sizeof(uint32) * num_members);
+ (*names) = talloc_zero(mem_ctx, sizeof(char *) * num_members);
for (i=0;i<num_members;i++) {
- uint32 name_type;
+ uint32 name_type, rid;
char *name;
- DOM_SID sid;
- if (dn_lookup(ads, mem_ctx, members[i], &name, &name_type, &sid)) {
+ if (dn_lookup(ads, mem_ctx, members[i], &name, &name_type, &rid)) {
(*names)[*num_names] = name;
(*name_types)[*num_names] = name_type;
- (*sid_mem)[*num_names] = talloc(mem_ctx, sizeof(***sid_mem));
- if (!(*sid_mem)[*num_names]) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
- sid_copy((*sid_mem)[*num_names], &sid);
+ (*rid_mem)[*num_names] = rid;
(*num_names)++;
}
}
status = NT_STATUS_OK;
- DEBUG(3,("ads lookup_groupmem for sid=%s\n", sid_to_string(sid_string, group_sid)));
+ DEBUG(3,("ads lookup_groupmem for rid=%d\n", group_rid));
done:
if (res) ads_msgfree(ads, res);
diff --git a/source3/nsswitch/winbindd_cache.c b/source3/nsswitch/winbindd_cache.c
index 5fb59e7467..6ba1d48f5a 100644
--- a/source3/nsswitch/winbindd_cache.c
+++ b/source3/nsswitch/winbindd_cache.c
@@ -192,23 +192,6 @@ static char *centry_string(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
return ret;
}
-/* pull a string from a cache entry, using the supplied
- talloc context
-*/
-static DOM_SID *centry_sid(struct cache_entry *centry, TALLOC_CTX *mem_ctx)
-{
- DOM_SID *sid;
- char *sid_string;
- sid = talloc(mem_ctx, sizeof(*sid));
- if (!sid) return NULL;
-
- sid_string = centry_string(centry, mem_ctx);
- if (!string_to_sid(sid, sid_string)) {
- return NULL;
- }
- return sid;
-}
-
/* the server is considered down if it can't give us a sequence number */
static BOOL wcache_server_down(struct winbindd_domain *domain)
{
@@ -277,9 +260,6 @@ static BOOL centry_expired(struct winbindd_domain *domain, struct cache_entry *c
*/
static struct cache_entry *wcache_fetch(struct winbind_cache *cache,
struct winbindd_domain *domain,
- const char *format, ...) PRINTF_ATTRIBUTE(3,4);
-static struct cache_entry *wcache_fetch(struct winbind_cache *cache,
- struct winbindd_domain *domain,
const char *format, ...)
{
va_list ap;
@@ -390,13 +370,6 @@ static void centry_put_string(struct cache_entry *centry, const char *s)
centry->ofs += len;
}
-static void centry_put_sid(struct cache_entry *centry, const DOM_SID *sid)
-{
- int len;
- fstring sid_string;
- centry_put_string(centry, sid_to_string(sid_string, sid));
-}
-
/*
start a centry for output. When finished, call centry_end()
*/
@@ -420,7 +393,6 @@ struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status
/*
finish a centry and write it to the tdb
*/
-static void centry_end(struct cache_entry *centry, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
static void centry_end(struct cache_entry *centry, const char *format, ...)
{
va_list ap;
@@ -440,30 +412,39 @@ static void centry_end(struct cache_entry *centry, const char *format, ...)
free(kstr);
}
-static void wcache_save_name_to_sid(struct winbindd_domain *domain,
- NTSTATUS status,
- const char *name, DOM_SID *sid,
- enum SID_NAME_USE type)
+/* form a sid from the domain plus rid */
+static DOM_SID *form_sid(struct winbindd_domain *domain, uint32 rid)
+{
+ static DOM_SID sid;
+ sid_copy(&sid, &domain->sid);
+ sid_append_rid(&sid, rid);
+ return &sid;
+}
+
+static void wcache_save_name_to_sid(struct winbindd_domain *domain, NTSTATUS status,
+ const char *name, DOM_SID *sid, enum SID_NAME_USE type)
{
struct cache_entry *centry;
uint32 len;
fstring uname;
- fstring sid_string;
centry = centry_start(domain, status);
if (!centry) return;
- centry_put_sid(centry, sid);
+ len = sid_size(sid);
+ centry_expand(centry, len);
+ centry_put_uint32(centry, type);
+ sid_linearize(centry->data + centry->ofs, len, sid);
+ centry->ofs += len;
fstrcpy(uname, name);
strupper(uname);
- centry_end(centry, "NS/%s", sid_to_string(sid_string, sid));
+ centry_end(centry, "NS/%s/%s", domain->name, uname);
centry_free(centry);
}
static void wcache_save_sid_to_name(struct winbindd_domain *domain, NTSTATUS status,
- DOM_SID *sid, const char *name, enum SID_NAME_USE type)
+ DOM_SID *sid, const char *name, enum SID_NAME_USE type, uint32 rid)
{
struct cache_entry *centry;
- fstring sid_string;
centry = centry_start(domain, status);
if (!centry) return;
@@ -471,7 +452,7 @@ static void wcache_save_sid_to_name(struct winbindd_domain *domain, NTSTATUS sta
centry_put_uint32(centry, type);
centry_put_string(centry, name);
}
- centry_end(centry, "SN/%s", sid_to_string(sid_string, sid));
+ centry_end(centry, "SN/%s/%d", domain->name, rid);
centry_free(centry);
}
@@ -479,15 +460,14 @@ static void wcache_save_sid_to_name(struct winbindd_domain *domain, NTSTATUS sta
static void wcache_save_user(struct winbindd_domain *domain, NTSTATUS status, WINBIND_USERINFO *info)
{
struct cache_entry *centry;
- fstring sid_string;
centry = centry_start(domain, status);
if (!centry) return;
centry_put_string(centry, info->acct_name);
centry_put_string(centry, info->full_name);
- centry_put_sid(centry, info->user_sid);
- centry_put_sid(centry, info->group_sid);
- centry_end(centry, "U/%s", sid_to_string(sid_string, info->user_sid));
+ centry_put_uint32(centry, info->user_rid);
+ centry_put_uint32(centry, info->group_rid);
+ centry_end(centry, "U/%s/%d", domain->name, info->user_rid);
centry_free(centry);
}
@@ -501,7 +481,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- unsigned int i;
+ int i;
if (!cache->tdb) goto do_query;
@@ -517,8 +497,8 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
for (i=0; i<(*num_entries); i++) {
(*info)[i].acct_name = centry_string(centry, mem_ctx);
(*info)[i].full_name = centry_string(centry, mem_ctx);
- (*info)[i].user_sid = centry_sid(centry, mem_ctx);
- (*info)[i].group_sid = centry_sid(centry, mem_ctx);
+ (*info)[i].user_rid = centry_uint32(centry);
+ (*info)[i].group_rid = centry_uint32(centry);
}
do_cached:
@@ -544,18 +524,18 @@ do_query:
for (i=0; i<(*num_entries); i++) {
centry_put_string(centry, (*info)[i].acct_name);
centry_put_string(centry, (*info)[i].full_name);
- centry_put_sid(centry, (*info)[i].user_sid);
- centry_put_sid(centry, (*info)[i].group_sid);
+ centry_put_uint32(centry, (*info)[i].user_rid);
+ centry_put_uint32(centry, (*info)[i].group_rid);
if (cache->backend->consistent) {
/* when the backend is consistent we can pre-prime some mappings */
wcache_save_name_to_sid(domain, NT_STATUS_OK,
(*info)[i].acct_name,
- (*info)[i].user_sid,
+ form_sid(domain, (*info)[i].user_rid),
SID_NAME_USER);
wcache_save_sid_to_name(domain, NT_STATUS_OK,
- (*info)[i].user_sid,
+ form_sid(domain, (*info)[i].user_rid),
(*info)[i].acct_name,
- SID_NAME_USER);
+ SID_NAME_USER, (*info)[i].user_rid);
wcache_save_user(domain, NT_STATUS_OK, &(*info)[i]);
}
}
@@ -575,7 +555,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- unsigned int i;
+ int i;
if (!cache->tdb) goto do_query;
@@ -635,7 +615,7 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- unsigned int i;
+ int i;
if (!cache->tdb) goto do_query;
@@ -689,7 +669,7 @@ do_query:
centry_put_string(centry, (*info)[i].acct_name);
centry_put_string(centry, (*info)[i].acct_desc);
centry_put_uint32(centry, (*info)[i].rid);
- }
+ }
centry_end(centry, "GL/%s/local", domain->name);
centry_free(centry);
@@ -699,7 +679,6 @@ skip_save:
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
const char *name,
DOM_SID *sid,
enum SID_NAME_USE *type)
@@ -708,7 +687,6 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
struct cache_entry *centry = NULL;
NTSTATUS status;
fstring uname;
- DOM_SID *sid2;
if (!cache->tdb) goto do_query;
@@ -717,12 +695,7 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
centry = wcache_fetch(cache, domain, "NS/%s/%s", domain->name, uname);
if (!centry) goto do_query;
*type = centry_uint32(centry);
- sid2 = centry_sid(centry, mem_ctx);
- if (!sid2) {
- ZERO_STRUCTP(sid);
- } else {
- sid_copy(sid, sid2);
- }
+ sid_parse(centry->data + centry->ofs, centry->len - centry->ofs, sid);
status = centry->status;
centry_free(centry);
@@ -734,7 +707,7 @@ do_query:
if (wcache_server_down(domain)) {
return NT_STATUS_SERVER_DISABLED;
}
- status = cache->backend->name_to_sid(domain, mem_ctx, name, sid, type);
+ status = cache->backend->name_to_sid(domain, name, sid, type);
/* and save it */
wcache_save_name_to_sid(domain, status, name, sid, *type);
@@ -756,11 +729,14 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- fstring sid_string;
+ uint32 rid = 0;
+
+ if (!sid_peek_check_rid(&domain->sid, sid, &rid))
+ return NT_STATUS_INVALID_PARAMETER;
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "SN/%s", sid_to_string(sid_string, sid));
+ centry = wcache_fetch(cache, domain, "SN/%s/%d", domain->name, rid);
if (!centry) goto do_query;
if (NT_STATUS_IS_OK(centry->status)) {
*type = centry_uint32(centry);
@@ -780,7 +756,7 @@ do_query:
/* and save it */
refresh_sequence_number(domain, True);
- wcache_save_sid_to_name(domain, status, sid, *name, *type);
+ wcache_save_sid_to_name(domain, status, sid, *name, *type, rid);
wcache_save_name_to_sid(domain, status, *name, sid, *type);
return status;
@@ -790,23 +766,22 @@ do_query:
/* Lookup user information from a rid */
static NTSTATUS query_user(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
+ uint32 user_rid,
WINBIND_USERINFO *info)
{
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- fstring sid_string;
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "U/%s", sid_to_string(sid_string, user_sid));
+ centry = wcache_fetch(cache, domain, "U/%s/%d", domain->name, user_rid);
if (!centry) goto do_query;
info->acct_name = centry_string(centry, mem_ctx);
info->full_name = centry_string(centry, mem_ctx);
- info->user_sid = centry_sid(centry, mem_ctx);
- info->group_sid = centry_sid(centry, mem_ctx);
+ info->user_rid = centry_uint32(centry);
+ info->group_rid = centry_uint32(centry);
status = centry->status;
centry_free(centry);
return status;
@@ -818,7 +793,7 @@ do_query:
return NT_STATUS_SERVER_DISABLED;
}
- status = cache->backend->query_user(domain, mem_ctx, user_sid, info);
+ status = cache->backend->query_user(domain, mem_ctx, user_rid, info);
/* and save it */
refresh_sequence_number(domain, True);
@@ -831,18 +806,17 @@ do_query:
/* Lookup groups a user is a member of. */
static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
- uint32 *num_groups, DOM_SID ***user_gids)
+ uint32 user_rid,
+ uint32 *num_groups, uint32 **user_gids)
{
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- unsigned int i;
- fstring sid_string;
+ int i;
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "UG/%s", sid_to_string(sid_string, user_sid));
+ centry = wcache_fetch(cache, domain, "UG/%s/%d", domain->name, user_rid);
if (!centry) goto do_query;
*num_groups = centry_uint32(centry);
@@ -852,7 +826,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
(*user_gids) = talloc(mem_ctx, sizeof(**user_gids) * (*num_groups));
if (! (*user_gids)) smb_panic("lookup_usergroups out of memory");
for (i=0; i<(*num_groups); i++) {
- (*user_gids)[i] = centry_sid(centry, mem_ctx);
+ (*user_gids)[i] = centry_uint32(centry);
}
do_cached:
@@ -867,7 +841,7 @@ do_query:
if (wcache_server_down(domain)) {
return NT_STATUS_SERVER_DISABLED;
}
- status = cache->backend->lookup_usergroups(domain, mem_ctx, user_sid, num_groups, user_gids);
+ status = cache->backend->lookup_usergroups(domain, mem_ctx, user_rid, num_groups, user_gids);
/* and save it */
refresh_sequence_number(domain, True);
@@ -875,9 +849,9 @@ do_query:
if (!centry) goto skip_save;
centry_put_uint32(centry, *num_groups);
for (i=0; i<(*num_groups); i++) {
- centry_put_sid(centry, (*user_gids)[i]);
+ centry_put_uint32(centry, (*user_gids)[i]);
}
- centry_end(centry, "UG/%s", sid_to_string(sid_string, user_sid));
+ centry_end(centry, "UG/%s/%d", domain->name, user_rid);
centry_free(centry);
skip_save:
@@ -887,35 +861,34 @@ skip_save:
static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *group_sid, uint32 *num_names,
- DOM_SID ***sid_mem, char ***names,
+ uint32 group_rid, uint32 *num_names,
+ uint32 **rid_mem, char ***names,
uint32 **name_types)
{
struct winbind_cache *cache = get_cache(domain);
struct cache_entry *centry = NULL;
NTSTATUS status;
- unsigned int i;
- fstring sid_string;
+ int i;
if (!cache->tdb) goto do_query;
- centry = wcache_fetch(cache, domain, "GM/%s", sid_to_string(sid_string, group_sid));
+ centry = wcache_fetch(cache, domain, "GM/%s/%d", domain->name, group_rid);
if (!centry) goto do_query;
*num_names = centry_uint32(centry);
if (*num_names == 0) goto do_cached;
- (*sid_mem) = talloc(mem_ctx, sizeof(**sid_mem) * (*num_names));
+ (*rid_mem) = talloc(mem_ctx, sizeof(**rid_mem) * (*num_names));
(*names) = talloc(mem_ctx, sizeof(**names) * (*num_names));
(*name_types) = talloc(mem_ctx, sizeof(**name_types) * (*num_names));
- if (! (*sid_mem) || ! (*names) || ! (*name_types)) {
+ if (! (*rid_mem) || ! (*names) || ! (*name_types)) {
smb_panic("lookup_groupmem out of memory");
}
for (i=0; i<(*num_names); i++) {
- (*sid_mem)[i] = centry_sid(centry, mem_ctx);
+ (*rid_mem)[i] = centry_uint32(centry);
(*names)[i] = centry_string(centry, mem_ctx);
(*name_types)[i] = centry_uint32(centry);
}
@@ -927,7 +900,7 @@ do_cached:
do_query:
(*num_names) = 0;
- (*sid_mem) = NULL;
+ (*rid_mem) = NULL;
(*names) = NULL;
(*name_types) = NULL;
@@ -935,8 +908,8 @@ do_query:
if (wcache_server_down(domain)) {
return NT_STATUS_SERVER_DISABLED;
}
- status = cache->backend->lookup_groupmem(domain, mem_ctx, group_sid, num_names,
- sid_mem, names, name_types);
+ status = cache->backend->lookup_groupmem(domain, mem_ctx, group_rid, num_names,
+ rid_mem, names, name_types);
/* and save it */
refresh_sequence_number(domain, True);
@@ -944,11 +917,11 @@ do_query:
if (!centry) goto skip_save;
centry_put_uint32(centry, *num_names);
for (i=0; i<(*num_names); i++) {
- centry_put_sid(centry, (*sid_mem)[i]);
+ centry_put_uint32(centry, (*rid_mem)[i]);
centry_put_string(centry, (*names)[i]);
centry_put_uint32(centry, (*name_types)[i]);
}
- centry_end(centry, "GM/%s", sid_to_string(sid_string, group_sid));
+ centry_end(centry, "GM/%s/%d", domain->name, group_rid);
centry_free(centry);
skip_save:
diff --git a/source3/nsswitch/winbindd_cm.c b/source3/nsswitch/winbindd_cm.c
index 1b49d8ce01..586a307464 100644
--- a/source3/nsswitch/winbindd_cm.c
+++ b/source3/nsswitch/winbindd_cm.c
@@ -371,9 +371,9 @@ static NTSTATUS cm_open_connection(const char *domain, const int pipe_index,
result = NT_STATUS_POSSIBLE_DEADLOCK;
continue;
}
-
+
result = cli_full_connection(&new_conn->cli, global_myname(), new_conn->controller,
- &dc_ip, 0, "IPC$", "IPC", ipc_username, ipc_domain,
+ &dc_ip, 0, "IPC$", "IPC", ipc_username, ipc_domain,
ipc_password, CLI_FULL_CONNECTION_ANNONYMOUS_FALLBACK, &retry);
secrets_named_mutex_release(new_conn->controller);
@@ -877,10 +877,10 @@ NTSTATUS cm_get_netlogon_cli(const char *domain, const unsigned char *trust_pass
}
result = cli_nt_setup_creds(conn->cli, get_sec_chan(), trust_passwd, &neg_flags, 2);
-
+
if (got_mutex)
secrets_named_mutex_release(lock_name);
-
+
if (!NT_STATUS_IS_OK(result)) {
DEBUG(0, ("error connecting to domain password server: %s\n",
nt_errstr(result)));
@@ -897,7 +897,7 @@ NTSTATUS cm_get_netlogon_cli(const char *domain, const unsigned char *trust_pass
/* Try again */
result = cli_nt_setup_creds( conn->cli, get_sec_chan(),trust_passwd, &neg_flags, 2);
-
+
if (got_mutex)
secrets_named_mutex_release(lock_name);
}
diff --git a/source3/nsswitch/winbindd_group.c b/source3/nsswitch/winbindd_group.c
index d06db5943c..94a826fbbc 100644
--- a/source3/nsswitch/winbindd_group.c
+++ b/source3/nsswitch/winbindd_group.c
@@ -49,44 +49,43 @@ static BOOL fill_grent(struct winbindd_gr *gr, const char *dom_name,
return True;
}
-/* Fill in the group membership field of a NT group given by group_sid */
+/* Fill in the group membership field of a NT group given by group_rid */
static BOOL fill_grent_mem(struct winbindd_domain *domain,
- DOM_SID *group_sid,
+ uint32 group_rid,
enum SID_NAME_USE group_name_type,
int *num_gr_mem, char **gr_mem, int *gr_mem_len)
{
- DOM_SID **sid_mem = NULL;
- uint32 num_names = 0;
+ uint32 *rid_mem = NULL, num_names = 0;
uint32 *name_types = NULL;
- unsigned int buf_len, buf_ndx, i;
+ int buf_len, buf_ndx, i;
char **names = NULL, *buf;
BOOL result = False;
TALLOC_CTX *mem_ctx;
NTSTATUS status;
- fstring sid_string;
if (!(mem_ctx = talloc_init("fill_grent_mem(%s)", domain->name)))
return False;
/* Initialise group membership information */
- DEBUG(10, ("group SID %s\n", sid_to_string(sid_string, group_sid)));
+ DEBUG(10, ("group %s rid 0x%x\n", domain ? domain->name : "NULL",
+ group_rid));
*num_gr_mem = 0;
if (group_name_type != SID_NAME_DOM_GRP) {
- DEBUG(1, ("SID %s in domain %s isn't a domain group\n",
- sid_to_string(sid_string, group_sid), domain->name));
+ DEBUG(1, ("rid %d in domain %s isn't a domain group\n",
+ group_rid, domain->name));
goto done;
}
/* Lookup group members */
- status = domain->methods->lookup_groupmem(domain, mem_ctx, group_sid, &num_names,
- &sid_mem, &names, &name_types);
+ status = domain->methods->lookup_groupmem(domain, mem_ctx, group_rid, &num_names,
+ &rid_mem, &names, &name_types);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(1, ("could not lookup membership for group rid %s in domain %s (error: %s)\n",
- sid_to_string(sid_string, group_sid), domain->name, nt_errstr(status)));
+ DEBUG(1, ("could not lookup membership for group rid %d in domain %s (error: %s)\n",
+ group_rid, domain->name, nt_errstr(status)));
goto done;
}
@@ -95,7 +94,7 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
if (DEBUGLEVEL >= 10) {
for (i = 0; i < num_names; i++)
- DEBUG(10, ("\t%20s %s %d\n", names[i], sid_to_string(sid_string, sid_mem[i]),
+ DEBUG(10, ("\t%20s %x %d\n", names[i], rid_mem[i],
name_types[i]));
}
@@ -191,6 +190,7 @@ enum winbindd_result winbindd_getgrnam(struct winbindd_cli_state *state)
DOM_SID group_sid;
struct winbindd_domain *domain;
enum SID_NAME_USE name_type;
+ uint32 group_rid;
fstring name_domain, name_group;
char *tmp, *gr_mem;
gid_t gid;
@@ -233,6 +233,10 @@ enum winbindd_result winbindd_getgrnam(struct winbindd_cli_state *state)
return WINBINDD_ERROR;
}
+ /* Fill in group structure */
+ if (!sid_peek_check_rid(&domain->sid, &group_sid, &group_rid))
+ return WINBINDD_ERROR;
+
if (!winbindd_idmap_get_gid_from_sid(&group_sid, &gid)) {
DEBUG(1, ("error converting unix gid to sid\n"));
return WINBINDD_ERROR;
@@ -240,7 +244,7 @@ enum winbindd_result winbindd_getgrnam(struct winbindd_cli_state *state)
if (!fill_grent(&state->response.data.gr, name_domain,
name_group, gid) ||
- !fill_grent_mem(domain, &group_sid, name_type,
+ !fill_grent_mem(domain, group_rid, name_type,
&state->response.data.gr.num_gr_mem,
&gr_mem, &gr_mem_len)) {
return WINBINDD_ERROR;
@@ -265,6 +269,7 @@ enum winbindd_result winbindd_getgrgid(struct winbindd_cli_state *state)
enum SID_NAME_USE name_type;
fstring dom_name;
fstring group_name;
+ uint32 group_rid;
int gr_mem_len;
char *gr_mem;
@@ -279,13 +284,17 @@ enum winbindd_result winbindd_getgrgid(struct winbindd_cli_state *state)
/* Get rid from gid */
- if (!winbindd_idmap_get_sid_from_gid(state->request.data.gid, &group_sid)) {
+ if (!winbindd_idmap_get_rid_from_gid(state->request.data.gid,
+ &group_rid, &domain)) {
DEBUG(1, ("could not convert gid %d to rid\n",
state->request.data.gid));
return WINBINDD_ERROR;
}
- /* Get name from sid */
+ /* Get sid from gid */
+
+ sid_copy(&group_sid, &domain->sid);
+ sid_append_rid(&group_sid, group_rid);
if (!winbindd_lookup_name_by_sid(&group_sid, dom_name, group_name, &name_type)) {
DEBUG(1, ("could not lookup sid\n"));
@@ -301,16 +310,9 @@ enum winbindd_result winbindd_getgrgid(struct winbindd_cli_state *state)
/* Fill in group structure */
- domain = find_domain_from_sid(&group_sid);
-
- if (!domain) {
- DEBUG(1,("Can't find domain from sid\n"));
- return WINBINDD_ERROR;
- }
-
if (!fill_grent(&state->response.data.gr, dom_name, group_name,
state->request.data.gid) ||
- !fill_grent_mem(domain, &group_sid, name_type,
+ !fill_grent_mem(domain, group_rid, name_type,
&state->response.data.gr.num_gr_mem,
&gr_mem, &gr_mem_len))
return WINBINDD_ERROR;
@@ -542,9 +544,7 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
gid_t group_gid;
int gr_mem_len;
char *gr_mem, *new_gr_mem_list;
- DOM_SID group_sid;
- struct winbindd_domain *domain;
-
+
/* Do we need to fetch another chunk of groups? */
tryagain:
@@ -578,25 +578,16 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
name_list = ent->sam_entries;
- if (!(domain =
- find_domain_from_name(ent->domain_name))) {
- DEBUG(3, ("No such domain %s in winbindd_getgrent\n", ent->domain_name));
- result = False;
- goto done;
- }
-
/* Lookup group info */
- sid_copy(&group_sid, &domain->sid);
- sid_append_rid(&group_sid, name_list[ent->sam_entry_index].rid);
-
- if (!winbindd_idmap_get_gid_from_sid(
- &group_sid,
- &group_gid)) {
+ if (!winbindd_idmap_get_gid_from_rid(
+ ent->domain_name,
+ name_list[ent->sam_entry_index].rid,
+ &group_gid)) {
DEBUG(1, ("could not look up gid for group %s\n",
name_list[ent->sam_entry_index].acct_name));
-
+
ent->sam_entry_index++;
goto tryagain;
}
@@ -617,7 +608,15 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
/* Fill in group membership entry */
if (result) {
- DOM_SID member_sid;
+ struct winbindd_domain *domain;
+
+ if (!(domain =
+ find_domain_from_name(ent->domain_name))) {
+ DEBUG(3, ("No such domain %s in winbindd_getgrent\n", ent->domain_name));
+ result = False;
+ goto done;
+ }
+
group_list[group_list_ndx].num_gr_mem = 0;
gr_mem = NULL;
gr_mem_len = 0;
@@ -626,11 +625,9 @@ enum winbindd_result winbindd_getgrent(struct winbindd_cli_state *state)
if (state->request.cmd == WINBINDD_GETGRLST) {
result = True;
} else {
- sid_copy(&member_sid, &domain->sid);
- sid_append_rid(&member_sid, name_list[ent->sam_entry_index].rid);
result = fill_grent_mem(
domain,
- &member_sid,
+ name_list[ent->sam_entry_index].rid,
SID_NAME_DOM_GRP,
&group_list[group_list_ndx].num_gr_mem,
&gr_mem, &gr_mem_len);
@@ -733,7 +730,7 @@ enum winbindd_result winbindd_list_groups(struct winbindd_cli_state *state)
struct winbindd_domain *domain;
char *extra_data = NULL;
char *ted = NULL;
- unsigned int extra_data_len = 0, i;
+ int extra_data_len = 0, i;
DEBUG(3, ("[%5d]: list groups\n", state->pid));
@@ -808,13 +805,13 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state)
fstring name_domain, name_user;
DOM_SID user_sid;
enum SID_NAME_USE name_type;
- uint32 num_groups, num_gids;
+ uint32 user_rid, num_groups, num_gids;
NTSTATUS status;
- DOM_SID **user_gids;
+ uint32 *user_gids;
struct winbindd_domain *domain;
enum winbindd_result result = WINBINDD_ERROR;
gid_t *gid_list;
- unsigned int i;
+ int i;
TALLOC_CTX *mem_ctx;
/* Ensure null termination */
@@ -855,9 +852,9 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state)
goto done;
}
- status = domain->methods->lookup_usergroups(domain, mem_ctx,
- &user_sid, &num_groups,
- &user_gids);
+ sid_split_rid(&user_sid, &user_rid);
+
+ status = domain->methods->lookup_usergroups(domain, mem_ctx, user_rid, &num_groups, &user_gids);
if (!NT_STATUS_IS_OK(status)) goto done;
/* Copy data back to client */
@@ -869,13 +866,12 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state)
goto done;
for (i = 0; i < num_groups; i++) {
- if (!winbindd_idmap_get_gid_from_sid(
- user_gids[i],
- &gid_list[num_gids])) {
- fstring sid_string;
+ if (!winbindd_idmap_get_gid_from_rid(domain->name,
+ user_gids[i],
+ &gid_list[num_gids])) {
- DEBUG(1, ("unable to convert group sid %s to gid\n",
- sid_to_string(sid_string, user_gids[i])));
+ DEBUG(1, ("unable to convert group rid %d to gid\n",
+ user_gids[i]));
continue;
}
diff --git a/source3/nsswitch/winbindd_idmap.c b/source3/nsswitch/winbindd_idmap.c
index de547cde41..6d184fec5f 100644
--- a/source3/nsswitch/winbindd_idmap.c
+++ b/source3/nsswitch/winbindd_idmap.c
@@ -1,19 +1,20 @@
/*
Unix SMB/CIFS implementation.
- Winbind ID Mapping
- Copyright (C) Tim Potter 2000
- Copyright (C) Anthony Liguori <aliguor@us.ibm.com> 2003
+ Winbind daemon - user related function
+
+ Copyright (C) Tim Potter 2000
+
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 2 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, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@@ -21,176 +22,508 @@
#include "winbindd.h"
-static struct {
- const char *name;
- /* Function to create a member of the idmap_methods list */
- BOOL (*reg_meth)(struct idmap_methods **methods);
- struct idmap_methods *methods;
-} builtin_idmap_functions[] = {
- { "tdb", winbind_idmap_reg_tdb, NULL },
- /* { "ldap", winbind_idmap_reg_ldap, NULL },*/
- { NULL, NULL, NULL }
-};
-
-/* singleton pattern: uberlazy evaluation */
-static struct idmap_methods *impl;
-
-static struct idmap_methods *get_impl(const char *name)
-{
- int i = 0;
- struct idmap_methods *ret = NULL;
-
- while (builtin_idmap_functions[i].name &&
- strcmp(builtin_idmap_functions[i].name, name)) {
- i++;
- }
-
- if (builtin_idmap_functions[i].name) {
- if (!builtin_idmap_functions[i].methods) {
- builtin_idmap_functions[i].reg_meth(&builtin_idmap_functions[i].methods);
- }
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_WINBIND
- ret = builtin_idmap_functions[i].methods;
- }
+/* High water mark keys */
- return ret;
-}
+#define HWM_GROUP "GROUP HWM"
+#define HWM_USER "USER HWM"
-/* Initialize backend */
-BOOL winbindd_idmap_init(void)
+/* idmap version determines auto-conversion */
+#define IDMAP_VERSION 2
+
+/* Globals */
+
+static TDB_CONTEXT *idmap_tdb;
+
+/* Allocate either a user or group id from the pool */
+
+static BOOL allocate_id(uid_t *id, BOOL isgroup)
{
- BOOL ret = False;
+ int hwm;
- DEBUG(3, ("winbindd_idmap_init: using '%s' as backend\n",
- lp_idmap_backend()));
+ /* Get current high water mark */
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- if (!impl) {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
+ if ((hwm = tdb_fetch_int32(idmap_tdb,
+ isgroup ? HWM_GROUP : HWM_USER)) == -1) {
+ return False;
}
- }
- if (impl) {
- ret = impl->init();
- }
+ /* Return next available uid in list */
- DEBUG(3, ("winbind_idmap_init: returning %s\n", ret ? "true" : "false"));
+ if ((isgroup && (hwm > server_state.gid_high)) ||
+ (!isgroup && (hwm > server_state.uid_high))) {
+ DEBUG(0, ("winbind %sid range full!\n", isgroup ? "g" : "u"));
+ return False;
+ }
+
+ if (id) {
+ *id = hwm;
+ }
+
+ hwm++;
+
+ /* Store new high water mark */
+
+ tdb_store_int32(idmap_tdb, isgroup ? HWM_GROUP : HWM_USER, hwm);
- return ret;
+ return True;
}
-/* Get UID from SID */
-BOOL winbindd_idmap_get_uid_from_sid(DOM_SID *sid, uid_t *uid)
+/* Get an id from a rid */
+static BOOL get_id_from_sid(DOM_SID *sid, uid_t *id, BOOL isgroup)
{
- BOOL ret = False;
+ TDB_DATA data, key;
+ fstring keystr;
+ BOOL result = False;
+
+ /* Check if sid is present in database */
+ sid_to_string(keystr, sid);
+
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
+
+ data = tdb_fetch(idmap_tdb, key);
+
+ if (data.dptr) {
+ fstring scanstr;
+ int the_id;
+
+ /* Parse and return existing uid */
+ fstrcpy(scanstr, isgroup ? "GID" : "UID");
+ fstrcat(scanstr, " %d");
+
+ if (sscanf(data.dptr, scanstr, &the_id) == 1) {
+ /* Store uid */
+ if (id) {
+ *id = the_id;
+ }
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- if (!impl) {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
+ result = True;
+ }
+
+ SAFE_FREE(data.dptr);
+ } else {
+
+ /* Allocate a new id for this sid */
+
+ if (id && allocate_id(id, isgroup)) {
+ fstring keystr2;
+
+ /* Store new id */
+
+ slprintf(keystr2, sizeof(keystr2), "%s %d", isgroup ? "GID" : "UID", *id);
+
+ data.dptr = keystr2;
+ data.dsize = strlen(keystr2) + 1;
+
+ tdb_store(idmap_tdb, key, data, TDB_REPLACE);
+ tdb_store(idmap_tdb, data, key, TDB_REPLACE);
+
+ result = True;
+ }
}
- }
- if (impl) {
- ret = impl->get_uid_from_sid(sid, uid);
- }
+ return result;
+}
- return ret;
+/* Get a uid from a user sid */
+BOOL winbindd_idmap_get_uid_from_sid(DOM_SID *sid, uid_t *uid)
+{
+ return get_id_from_sid(sid, uid, False);
}
-/* Get GID from SID */
+/* Get a gid from a group sid */
BOOL winbindd_idmap_get_gid_from_sid(DOM_SID *sid, gid_t *gid)
{
- BOOL ret = False;
+ return get_id_from_sid(sid, gid, True);
+}
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- if (!impl) {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
- }
- }
+/* Get a uid from a user rid */
+BOOL winbindd_idmap_get_uid_from_rid(const char *dom_name, uint32 rid, uid_t *uid)
+{
+ struct winbindd_domain *domain;
+ DOM_SID sid;
+
+ if (!(domain = find_domain_from_name(dom_name))) {
+ return False;
+ }
- if (impl) {
- ret = impl->get_gid_from_sid(sid, gid);
- }
+ sid_copy(&sid, &domain->sid);
+ sid_append_rid(&sid, rid);
- return ret;
+ return get_id_from_sid(&sid, uid, False);
}
-/* Get SID from UID */
-BOOL winbindd_idmap_get_sid_from_uid(uid_t uid, DOM_SID *sid)
+/* Get a gid from a group rid */
+BOOL winbindd_idmap_get_gid_from_rid(const char *dom_name, uint32 rid, gid_t *gid)
+{
+ struct winbindd_domain *domain;
+ DOM_SID sid;
+
+ if (!(domain = find_domain_from_name(dom_name))) {
+ return False;
+ }
+
+ sid_copy(&sid, &domain->sid);
+ sid_append_rid(&sid, rid);
+
+ return get_id_from_sid(&sid, gid, True);
+}
+
+
+BOOL get_sid_from_id(int id, DOM_SID *sid, BOOL isgroup)
{
- BOOL ret = False;
+ TDB_DATA key, data;
+ fstring keystr;
+ BOOL result = False;
+
+ slprintf(keystr, sizeof(keystr), "%s %d", isgroup ? "GID" : "UID", id);
+
+ key.dptr = keystr;
+ key.dsize = strlen(keystr) + 1;
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- if (!impl) {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
+ data = tdb_fetch(idmap_tdb, key);
+
+ if (data.dptr) {
+ result = string_to_sid(sid, data.dptr);
+ SAFE_FREE(data.dptr);
}
- }
- if (impl) {
- ret = impl->get_sid_from_uid(uid, sid);
- }
+ return result;
+}
- return ret;
+/* Get a sid from a uid */
+BOOL winbindd_idmap_get_sid_from_uid(uid_t uid, DOM_SID *sid)
+{
+ return get_sid_from_id((int)uid, sid, False);
}
-/* Get SID from GID */
+/* Get a sid from a gid */
BOOL winbindd_idmap_get_sid_from_gid(gid_t gid, DOM_SID *sid)
{
- BOOL ret = False;
+ return get_sid_from_id((int)gid, sid, True);
+}
+
+/* Get a user rid from a uid */
+BOOL winbindd_idmap_get_rid_from_uid(uid_t uid, uint32 *user_rid,
+ struct winbindd_domain **domain)
+{
+ DOM_SID sid;
+
+ if (!get_sid_from_id((int)uid, &sid, False)) {
+ return False;
+ }
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- }
+ *domain = find_domain_from_sid(&sid);
+ if (! *domain) return False;
- if (impl) {
- ret = impl->get_sid_from_gid(gid, sid);
- } else {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
- }
+ sid_split_rid(&sid, user_rid);
- return ret;
+ return True;
}
-/* Close backend */
-BOOL winbindd_idmap_close(void)
+/* Get a group rid from a gid */
+
+BOOL winbindd_idmap_get_rid_from_gid(gid_t gid, uint32 *group_rid,
+ struct winbindd_domain **domain)
{
- BOOL ret = False;
+ DOM_SID sid;
+
+ if (!get_sid_from_id((int)gid, &sid, True)) {
+ return False;
+ }
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- }
+ *domain = find_domain_from_sid(&sid);
+ if (! *domain) return False;
- if (impl) {
- ret = impl->close();
- } else {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
- }
+ sid_split_rid(&sid, group_rid);
- return ret;
+ return True;
}
-/* Dump backend status */
-void winbindd_idmap_status(void)
+/* convert one record to the new format */
+static int convert_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA data, void *ignored)
+{
+ struct winbindd_domain *domain;
+ char *p;
+ DOM_SID sid;
+ uint32 rid;
+ fstring keystr;
+ fstring dom_name;
+ TDB_DATA key2;
+
+ p = strchr(key.dptr, '/');
+ if (!p)
+ return 0;
+
+ *p = 0;
+ fstrcpy(dom_name, key.dptr);
+ *p++ = '/';
+
+ domain = find_domain_from_name(dom_name);
+ if (!domain) {
+ /* We must delete the old record. */
+ DEBUG(0,("winbindd: convert_fn : Unable to find domain %s\n", dom_name ));
+ DEBUG(0,("winbindd: convert_fn : deleting record %s\n", key.dptr ));
+ tdb_delete(idmap_tdb, key);
+ return 0;
+ }
+
+ rid = atoi(p);
+
+ sid_copy(&sid, &domain->sid);
+ sid_append_rid(&sid, rid);
+
+ sid_to_string(keystr, &sid);
+ key2.dptr = keystr;
+ key2.dsize = strlen(keystr) + 1;
+
+ if (tdb_store(idmap_tdb, key2, data, TDB_INSERT) != 0) {
+ /* not good! */
+ DEBUG(0,("winbindd: convert_fn : Unable to update record %s\n", key2.dptr ));
+ DEBUG(0,("winbindd: convert_fn : conversion failed - idmap corrupt ?\n"));
+ return -1;
+ }
+
+ if (tdb_store(idmap_tdb, data, key2, TDB_REPLACE) != 0) {
+ /* not good! */
+ DEBUG(0,("winbindd: convert_fn : Unable to update record %s\n", data.dptr ));
+ DEBUG(0,("winbindd: convert_fn : conversion failed - idmap corrupt ?\n"));
+ return -1;
+ }
+
+ tdb_delete(idmap_tdb, key);
+
+ return 0;
+}
+
+#if 0
+/*****************************************************************************
+ Make a backup copy of the old idmap just to be safe.... JRA.
+*****************************************************************************/
+
+static BOOL backup_old_idmap(const char *idmap_name)
+{
+ pstring new_name;
+ int outfd = -1;
+ SMB_OFF_T size;
+ struct stat st;
+
+ pstrcpy(new_name, idmap_name);
+ pstrcat(new_name, ".bak");
+
+ DEBUG(10,("backup_old_idmap: backing up %s to %s before upgrade.\n",
+ idmap_name, new_name ));
+
+ if (tdb_lockall(idmap_tdb) == -1) {
+ DEBUG(10,("backup_old_idmap: failed to lock %s. Error %s\n",
+ idmap_name, tdb_errorstr(idmap_tdb) ));
+ return False;
+ }
+ if ((outfd = open(new_name, O_CREAT|O_EXCL|O_RDWR, 0600)) == -1) {
+ DEBUG(10,("backup_old_idmap: failed to open %s. Error %s\n",
+ new_name, strerror(errno) ));
+ goto fail;
+ }
+
+ if (fstat(idmap_tdb->fd, &st) == -1) {
+ DEBUG(10,("backup_old_idmap: failed to fstat %s. Error %s\n",
+ idmap_name, strerror(errno) ));
+ goto fail;
+ }
+
+ size = (SMB_OFF_T)st.st_size;
+
+ if (transfer_file(idmap_tdb->fd, outfd, size) != size ) {
+ DEBUG(10,("backup_old_idmap: failed to copy %s. Error %s\n",
+ idmap_name, strerror(errno) ));
+ goto fail;
+ }
+
+ if (close(outfd) == -1) {
+ DEBUG(10,("backup_old_idmap: failed to close %s. Error %s\n",
+ idmap_name, strerror(errno) ));
+ outfd = -1;
+ goto fail;
+ }
+ tdb_unlockall(idmap_tdb);
+ return True;
+
+fail:
+
+ if (outfd != -1)
+ close(outfd);
+ tdb_unlockall(idmap_tdb);
+ return False;
+}
+#endif
+
+/*****************************************************************************
+ Convert the idmap database from an older version.
+*****************************************************************************/
+
+static BOOL idmap_convert(const char *idmap_name)
+{
+ int32 vers = tdb_fetch_int32(idmap_tdb, "IDMAP_VERSION");
+ BOOL bigendianheader = (idmap_tdb->flags & TDB_BIGENDIAN) ? True : False;
+
+ if (vers == IDMAP_VERSION)
+ return True;
+
+#if 0
+ /* Make a backup copy before doing anything else.... */
+ if (!backup_old_idmap(idmap_name))
+ return False;
+#endif
+
+ if (((vers == -1) && bigendianheader) || (IREV(vers) == IDMAP_VERSION)) {
+ /* Arrggghh ! Bytereversed or old big-endian - make order independent ! */
+ /*
+ * high and low records were created on a
+ * big endian machine and will need byte-reversing.
+ */
+
+ int32 wm;
+
+ wm = tdb_fetch_int32(idmap_tdb, HWM_USER);
+
+ if (wm != -1) {
+ wm = IREV(wm);
+ } else
+ wm = server_state.uid_low;
+
+ if (tdb_store_int32(idmap_tdb, HWM_USER, wm) == -1) {
+ DEBUG(0, ("idmap_convert: Unable to byteswap user hwm in idmap database\n"));
+ return False;
+ }
+
+ wm = tdb_fetch_int32(idmap_tdb, HWM_GROUP);
+ if (wm != -1) {
+ wm = IREV(wm);
+ } else
+ wm = server_state.gid_low;
+
+ if (tdb_store_int32(idmap_tdb, HWM_GROUP, wm) == -1) {
+ DEBUG(0, ("idmap_convert: Unable to byteswap group hwm in idmap database\n"));
+ return False;
+ }
+ }
+
+ /* the old format stored as DOMAIN/rid - now we store the SID direct */
+ tdb_traverse(idmap_tdb, convert_fn, NULL);
+
+ if (tdb_store_int32(idmap_tdb, "IDMAP_VERSION", IDMAP_VERSION) == -1) {
+ DEBUG(0, ("idmap_convert: Unable to byteswap group hwm in idmap database\n"));
+ return False;
+ }
+
+ return True;
+}
+
+/*****************************************************************************
+ Initialise idmap database.
+*****************************************************************************/
+
+BOOL winbindd_idmap_init(void)
{
- if (!impl) {
- impl = get_impl(lp_idmap_backend());
- }
+ /* Open tdb cache */
+
+ if (!(idmap_tdb = tdb_open_log(lock_path("winbindd_idmap.tdb"), 0,
+ TDB_DEFAULT, O_RDWR | O_CREAT, 0600))) {
+ DEBUG(0, ("winbindd_idmap_init: Unable to open idmap database\n"));
+ return False;
+ }
+
+ /* possibly convert from an earlier version */
+ if (!idmap_convert(lock_path("winbindd_idmap.tdb"))) {
+ DEBUG(0, ("winbindd_idmap_init: Unable to open idmap database\n"));
+ return False;
+ }
+
+ /* Create high water marks for group and user id */
+
+ if (tdb_fetch_int32(idmap_tdb, HWM_USER) == -1) {
+ if (tdb_store_int32(idmap_tdb, HWM_USER, server_state.uid_low) == -1) {
+ DEBUG(0, ("winbindd_idmap_init: Unable to initialise user hwm in idmap database\n"));
+ return False;
+ }
+ }
+
+ if (tdb_fetch_int32(idmap_tdb, HWM_GROUP) == -1) {
+ if (tdb_store_int32(idmap_tdb, HWM_GROUP, server_state.gid_low) == -1) {
+ DEBUG(0, ("winbindd_idmap_init: Unable to initialise group hwm in idmap database\n"));
+ return False;
+ }
+ }
+
+ return True;
+}
- if (impl) {
- impl->status();
- } else {
- DEBUG(0, ("winbindd_idmap_init: could not load backend '%s'\n",
- lp_idmap_backend()));
- }
+BOOL winbindd_idmap_close(void)
+{
+ if (idmap_tdb)
+ return (tdb_close(idmap_tdb) == 0);
+ return True;
}
+/* Dump status information to log file. Display different stuff based on
+ the debug level:
+
+ Debug Level Information Displayed
+ =================================================================
+ 0 Percentage of [ug]id range allocated
+ 0 High water marks (next allocated ids)
+*/
+
+#define DUMP_INFO 0
+
+void winbindd_idmap_status(void)
+{
+ int user_hwm, group_hwm;
+
+ DEBUG(0, ("winbindd idmap status:\n"));
+
+ /* Get current high water marks */
+
+ if ((user_hwm = tdb_fetch_int32(idmap_tdb, HWM_USER)) == -1) {
+ DEBUG(DUMP_INFO, ("\tCould not get userid high water mark!\n"));
+ }
+
+ if ((group_hwm = tdb_fetch_int32(idmap_tdb, HWM_GROUP)) == -1) {
+ DEBUG(DUMP_INFO, ("\tCould not get groupid high water mark!\n"));
+ }
+
+ /* Display next ids to allocate */
+
+ if (user_hwm != -1) {
+ DEBUG(DUMP_INFO, ("\tNext userid to allocate is %d\n", user_hwm));
+ }
+
+ if (group_hwm != -1) {
+ DEBUG(DUMP_INFO, ("\tNext groupid to allocate is %d\n", group_hwm));
+ }
+
+ /* Display percentage of id range already allocated. */
+
+ if (user_hwm != -1) {
+ int num_users = user_hwm - server_state.uid_low;
+ int total_users = server_state.uid_high - server_state.uid_low;
+
+ DEBUG(DUMP_INFO, ("\tUser id range is %d%% full (%d of %d)\n",
+ num_users * 100 / total_users, num_users,
+ total_users));
+ }
+
+ if (group_hwm != -1) {
+ int num_groups = group_hwm - server_state.gid_low;
+ int total_groups = server_state.gid_high - server_state.gid_low;
+
+ DEBUG(DUMP_INFO, ("\tGroup id range is %d%% full (%d of %d)\n",
+ num_groups * 100 / total_groups, num_groups,
+ total_groups));
+ }
+
+ /* Display complete mapping of users and groups to rids */
+}
diff --git a/source3/nsswitch/winbindd_idmap_tdb.c b/source3/nsswitch/winbindd_idmap_tdb.c
deleted file mode 100644
index 911b3b41d2..0000000000
--- a/source3/nsswitch/winbindd_idmap_tdb.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- Winbind daemon - user related function
-
- Copyright (C) Tim Potter 2000
- Copyright (C) Anthony Liguori 2003
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "winbindd.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_WINBIND
-
-/* High water mark keys */
-#define HWM_GROUP "GROUP HWM"
-#define HWM_USER "USER HWM"
-
-/* idmap version determines auto-conversion */
-#define IDMAP_VERSION 2
-
-/* Globals */
-static TDB_CONTEXT *idmap_tdb;
-
-/* convert one record to the new format */
-static int tdb_convert_fn(TDB_CONTEXT * tdb, TDB_DATA key, TDB_DATA data,
- void *ignored)
-{
- struct winbindd_domain *domain;
- char *p;
- DOM_SID sid;
- uint32 rid;
- fstring keystr;
- fstring dom_name;
- TDB_DATA key2;
-
- p = strchr(key.dptr, '/');
- if (!p)
- return 0;
-
- *p = 0;
- fstrcpy(dom_name, key.dptr);
- *p++ = '/';
-
- domain = find_domain_from_name(dom_name);
- if (!domain) {
- /* We must delete the old record. */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to find domain %s\n",
- dom_name));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : deleting record %s\n",
- key.dptr));
- tdb_delete(idmap_tdb, key);
- return 0;
- }
-
- rid = atoi(p);
-
- sid_copy(&sid, &domain->sid);
- sid_append_rid(&sid, rid);
-
- sid_to_string(keystr, &sid);
- key2.dptr = keystr;
- key2.dsize = strlen(keystr) + 1;
-
- if (tdb_store(idmap_tdb, key2, data, TDB_INSERT) != 0) {
- /* not good! */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to update record %s\n",
- key2.dptr));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : conversion failed - idmap corrupt ?\n"));
- return -1;
- }
-
- if (tdb_store(idmap_tdb, data, key2, TDB_REPLACE) != 0) {
- /* not good! */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to update record %s\n",
- data.dptr));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : conversion failed - idmap corrupt ?\n"));
- return -1;
- }
-
- tdb_delete(idmap_tdb, key);
-
- return 0;
-}
-
-/*****************************************************************************
- Convert the idmap database from an older version.
-*****************************************************************************/
-static BOOL tdb_idmap_convert(const char *idmap_name)
-{
- int32 vers = tdb_fetch_int32(idmap_tdb, "IDMAP_VERSION");
- BOOL bigendianheader =
- (idmap_tdb->flags & TDB_BIGENDIAN) ? True : False;
-
- if (vers == IDMAP_VERSION)
- return True;
-
- if (((vers == -1) && bigendianheader)
- || (IREV(vers) == IDMAP_VERSION)) {
- /* Arrggghh ! Bytereversed or old big-endian - make order independent ! */
- /*
- * high and low records were created on a
- * big endian machine and will need byte-reversing.
- */
-
- int32 wm;
-
- wm = tdb_fetch_int32(idmap_tdb, HWM_USER);
-
- if (wm != -1) {
- wm = IREV(wm);
- } else
- wm = server_state.uid_low;
-
- if (tdb_store_int32(idmap_tdb, HWM_USER, wm) == -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap user hwm in idmap database\n"));
- return False;
- }
-
- wm = tdb_fetch_int32(idmap_tdb, HWM_GROUP);
- if (wm != -1) {
- wm = IREV(wm);
- } else
- wm = server_state.gid_low;
-
- if (tdb_store_int32(idmap_tdb, HWM_GROUP, wm) == -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap group hwm in idmap database\n"));
- return False;
- }
- }
-
- /* the old format stored as DOMAIN/rid - now we store the SID direct */
- tdb_traverse(idmap_tdb, tdb_convert_fn, NULL);
-
- if (tdb_store_int32(idmap_tdb, "IDMAP_VERSION", IDMAP_VERSION) ==
- -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap group hwm in idmap database\n"));
- return False;
- }
-
- return True;
-}
-
-/* Allocate either a user or group id from the pool */
-static BOOL tdb_allocate_id(uid_t * id, BOOL isgroup)
-{
- int hwm;
-
- /* Get current high water mark */
- if ((hwm = tdb_fetch_int32(idmap_tdb,
- isgroup ? HWM_GROUP : HWM_USER)) ==
- -1) {
- return False;
- }
-
- /* Return next available uid in list */
- if ((isgroup && (hwm > server_state.gid_high)) ||
- (!isgroup && (hwm > server_state.uid_high))) {
- DEBUG(0,
- ("winbind %sid range full!\n", isgroup ? "g" : "u"));
- return False;
- }
-
- if (id) {
- *id = hwm;
- }
-
- hwm++;
-
- /* Store new high water mark */
- tdb_store_int32(idmap_tdb, isgroup ? HWM_GROUP : HWM_USER, hwm);
-
- return True;
-}
-
-/* Get a sid from an id */
-static BOOL tdb_get_sid_from_id(int id, DOM_SID * sid, BOOL isgroup)
-{
- TDB_DATA key, data;
- fstring keystr;
- BOOL result = False;
-
- slprintf(keystr, sizeof(keystr), "%s %d", isgroup ? "GID" : "UID",
- id);
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(idmap_tdb, key);
-
- if (data.dptr) {
- result = string_to_sid(sid, data.dptr);
- SAFE_FREE(data.dptr);
- }
-
- return result;
-}
-
-/* Get an id from a sid */
-static BOOL tdb_get_id_from_sid(DOM_SID * sid, uid_t * id, BOOL isgroup)
-{
- TDB_DATA data, key;
- fstring keystr;
- BOOL result = False;
-
- /* Check if sid is present in database */
- sid_to_string(keystr, sid);
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(idmap_tdb, key);
-
- if (data.dptr) {
- fstring scanstr;
- int the_id;
-
- /* Parse and return existing uid */
- fstrcpy(scanstr, isgroup ? "GID" : "UID");
- fstrcat(scanstr, " %d");
-
- if (sscanf(data.dptr, scanstr, &the_id) == 1) {
- /* Store uid */
- if (id) {
- *id = the_id;
- }
-
- result = True;
- }
-
- SAFE_FREE(data.dptr);
- } else {
-
- /* Allocate a new id for this sid */
- if (id && tdb_allocate_id(id, isgroup)) {
- fstring keystr2;
-
- /* Store new id */
- slprintf(keystr2, sizeof(keystr2), "%s %d",
- isgroup ? "GID" : "UID", *id);
-
- data.dptr = keystr2;
- data.dsize = strlen(keystr2) + 1;
-
- tdb_store(idmap_tdb, key, data, TDB_REPLACE);
- tdb_store(idmap_tdb, data, key, TDB_REPLACE);
-
- result = True;
- }
- }
-
- return result;
-}
-
-/*****************************************************************************
- Initialise idmap database.
-*****************************************************************************/
-static BOOL tdb_idmap_init(void)
-{
- /* Open tdb cache */
- if (!(idmap_tdb = tdb_open_log(lock_path("winbindd_idmap.tdb"), 0,
- TDB_DEFAULT, O_RDWR | O_CREAT,
- 0600))) {
- DEBUG(0,
- ("winbindd_idmap_init: Unable to open idmap database\n"));
- return False;
- }
-
- /* possibly convert from an earlier version */
- if (!tdb_idmap_convert(lock_path("winbindd_idmap.tdb"))) {
- DEBUG(0,
- ("winbindd_idmap_init: Unable to open idmap database\n"));
- return False;
- }
-
- /* Create high water marks for group and user id */
- if (tdb_fetch_int32(idmap_tdb, HWM_USER) == -1) {
- if (tdb_store_int32
- (idmap_tdb, HWM_USER, server_state.uid_low) == -1) {
- DEBUG(0,
- ("winbindd_idmap_init: Unable to initialise user hwm in idmap database\n"));
- return False;
- }
- }
-
- if (tdb_fetch_int32(idmap_tdb, HWM_GROUP) == -1) {
- if (tdb_store_int32
- (idmap_tdb, HWM_GROUP, server_state.gid_low) == -1) {
- DEBUG(0,
- ("winbindd_idmap_init: Unable to initialise group hwm in idmap database\n"));
- return False;
- }
- }
-
- return True;
-}
-
-/* Get a sid from a uid */
-static BOOL tdb_get_sid_from_uid(uid_t uid, DOM_SID * sid)
-{
- return tdb_get_sid_from_id((int) uid, sid, False);
-}
-
-/* Get a sid from a gid */
-static BOOL tdb_get_sid_from_gid(gid_t gid, DOM_SID * sid)
-{
- return tdb_get_sid_from_id((int) gid, sid, True);
-}
-
-/* Get a uid from a sid */
-static BOOL tdb_get_uid_from_sid(DOM_SID * sid, uid_t * uid)
-{
- return tdb_get_id_from_sid(sid, uid, False);
-}
-
-/* Get a gid from a group sid */
-static BOOL tdb_get_gid_from_sid(DOM_SID * sid, gid_t * gid)
-{
- return tdb_get_id_from_sid(sid, gid, True);
-}
-
-/* Close the tdb */
-static BOOL tdb_idmap_close(void)
-{
- if (idmap_tdb)
- return (tdb_close(idmap_tdb) == 0);
- return True;
-}
-
-
-/* Dump status information to log file. Display different stuff based on
- the debug level:
-
- Debug Level Information Displayed
- =================================================================
- 0 Percentage of [ug]id range allocated
- 0 High water marks (next allocated ids)
-*/
-
-#define DUMP_INFO 0
-
-static void tdb_idmap_status(void)
-{
- int user_hwm, group_hwm;
-
- DEBUG(0, ("winbindd idmap status:\n"));
-
- /* Get current high water marks */
-
- if ((user_hwm = tdb_fetch_int32(idmap_tdb, HWM_USER)) == -1) {
- DEBUG(DUMP_INFO,
- ("\tCould not get userid high water mark!\n"));
- }
-
- if ((group_hwm = tdb_fetch_int32(idmap_tdb, HWM_GROUP)) == -1) {
- DEBUG(DUMP_INFO,
- ("\tCould not get groupid high water mark!\n"));
- }
-
- /* Display next ids to allocate */
-
- if (user_hwm != -1) {
- DEBUG(DUMP_INFO,
- ("\tNext userid to allocate is %d\n", user_hwm));
- }
-
- if (group_hwm != -1) {
- DEBUG(DUMP_INFO,
- ("\tNext groupid to allocate is %d\n", group_hwm));
- }
-
- /* Display percentage of id range already allocated. */
-
- if (user_hwm != -1) {
- int num_users = user_hwm - server_state.uid_low;
- int total_users =
- server_state.uid_high - server_state.uid_low;
-
- DEBUG(DUMP_INFO,
- ("\tUser id range is %d%% full (%d of %d)\n",
- num_users * 100 / total_users, num_users,
- total_users));
- }
-
- if (group_hwm != -1) {
- int num_groups = group_hwm - server_state.gid_low;
- int total_groups =
- server_state.gid_high - server_state.gid_low;
-
- DEBUG(DUMP_INFO,
- ("\tGroup id range is %d%% full (%d of %d)\n",
- num_groups * 100 / total_groups, num_groups,
- total_groups));
- }
-
- /* Display complete mapping of users and groups to rids */
-}
-
-struct idmap_methods tdb_idmap_methods = {
- tdb_idmap_init,
-
- tdb_get_sid_from_uid,
- tdb_get_sid_from_gid,
-
- tdb_get_uid_from_sid,
- tdb_get_gid_from_sid,
-
- tdb_idmap_close,
-
- tdb_idmap_status
-};
-
-BOOL winbind_idmap_reg_tdb(struct idmap_methods **meth)
-{
- *meth = &tdb_idmap_methods;
-
- return True;
-}
diff --git a/source3/nsswitch/winbindd_rpc.c b/source3/nsswitch/winbindd_rpc.c
index 9ec35617f1..48f528f520 100644
--- a/source3/nsswitch/winbindd_rpc.c
+++ b/source3/nsswitch/winbindd_rpc.c
@@ -3,7 +3,7 @@
Winbind rpc backend functions
- Copyright (C) Tim Potter 2000-2001,2003
+ Copyright (C) Tim Potter 2000-2001
Copyright (C) Andrew Tridgell 2001
This program is free software; you can redistribute it and/or modify
@@ -26,7 +26,6 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_WINBIND
-
/* Query display info for a domain. This returns enough information plus a
bit extra to give an overview of domain users for the User Manager
application. */
@@ -40,17 +39,18 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
POLICY_HND dom_pol;
BOOL got_dom_pol = False;
uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED;
- unsigned int i, start_idx, retry;
+ int i, loop_count = 0;
+ int retry;
DEBUG(3,("rpc: query_user_list\n"));
*num_entries = 0;
*info = NULL;
+ /* Get sam handle */
+
retry = 0;
do {
- /* Get sam handle */
-
if (!(hnd = cm_get_sam_handle(domain->name)))
goto done;
@@ -66,39 +66,50 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
got_dom_pol = True;
- i = start_idx = 0;
+ i = 0;
do {
+ SAM_DISPINFO_CTR ctr;
+ SAM_DISPINFO_1 info1;
+ uint32 count = 0, start=i, max_entries, max_size;
+ int j;
TALLOC_CTX *ctx2;
- char **dom_users;
- uint32 num_dom_users, *dom_rids, j, size = 0xffff;
- uint16 acb_mask = ACB_NORMAL;
- if (!(ctx2 = talloc_init("winbindd enum_users"))) {
+ ctr.sam.info1 = &info1;
+
+ ctx2 = talloc_init("winbindd dispinfo");
+ if (!ctx2) {
result = NT_STATUS_NO_MEMORY;
goto done;
- }
+ }
+
+ get_query_dispinfo_params(
+ loop_count, &max_entries, &max_size);
- result = cli_samr_enum_dom_users(
- hnd->cli, ctx2, &dom_pol, &start_idx, acb_mask,
- size, &dom_users, &dom_rids, &num_dom_users);
+ /* Query display info level 1 */
+ result = cli_samr_query_dispinfo(
+ hnd->cli, ctx2, &dom_pol, &start, 1, &count,
+ max_entries, max_size, &ctr);
- *num_entries += num_dom_users;
+ loop_count++;
- *info = talloc_realloc(
- mem_ctx, *info,
- (*num_entries) * sizeof(WINBIND_USERINFO));
+ if (!NT_STATUS_IS_OK(result) &&
+ !NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES)) break;
+ (*num_entries) += count;
+
+ /* now map the result into the WINBIND_USERINFO structure */
+ (*info) = talloc_realloc(mem_ctx, *info,
+ (*num_entries)*sizeof(WINBIND_USERINFO));
if (!(*info)) {
result = NT_STATUS_NO_MEMORY;
talloc_destroy(ctx2);
goto done;
}
- for (j = 0; j < num_dom_users; i++, j++) {
- (*info)[i].acct_name =
- talloc_strdup(mem_ctx, dom_users[j]);
- (*info)[i].full_name = talloc_strdup(mem_ctx, "");
- (*info)[i].user_sid = rid_to_talloced_sid(domain, mem_ctx, dom_rids[j]);
+ for (j=0;j<count;i++, j++) {
+ (*info)[i].acct_name = unistr2_tdup(mem_ctx, &info1.str[j].uni_acct_name);
+ (*info)[i].full_name = unistr2_tdup(mem_ctx, &info1.str[j].uni_full_name);
+ (*info)[i].user_rid = info1.sam[j].rid_user;
/* For the moment we set the primary group for
every user to be the Domain Users group.
There are serious problems with determining
@@ -106,14 +117,10 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
This should really be made into a 'winbind
force group' smb.conf parameter or
something like that. */
- (*info)[i].group_sid
- = rid_to_talloced_sid(domain,
- mem_ctx,
- DOMAIN_GROUP_RID_USERS);
+ (*info)[i].group_rid = DOMAIN_GROUP_RID_USERS;
}
talloc_destroy(ctx2);
-
} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
done:
@@ -256,11 +263,11 @@ static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
/* convert a single name to a sid in a domain */
static NTSTATUS name_to_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
const char *name,
DOM_SID *sid,
enum SID_NAME_USE *type)
{
+ TALLOC_CTX *mem_ctx;
CLI_POLICY_HND *hnd;
NTSTATUS status;
DOM_SID *sids = NULL;
@@ -270,16 +277,23 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
DEBUG(3,("rpc: name_to_sid name=%s\n", name));
+ if (!(mem_ctx = talloc_init("name_to_sid[rpc] for [%s]\\[%s]", domain->name, name))) {
+ DEBUG(0, ("talloc_init failed!\n"));
+ return NT_STATUS_NO_MEMORY;
+ }
+
full_name = talloc_asprintf(mem_ctx, "%s\\%s", domain->name, name);
if (!full_name) {
DEBUG(0, ("talloc_asprintf failed!\n"));
+ talloc_destroy(mem_ctx);
return NT_STATUS_NO_MEMORY;
}
retry = 0;
do {
if (!(hnd = cm_get_lsa_handle(domain->name))) {
+ talloc_destroy(mem_ctx);
return NT_STATUS_UNSUCCESSFUL;
}
@@ -294,6 +308,7 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
*type = types[0];
}
+ talloc_destroy(mem_ctx);
return status;
}
@@ -341,22 +356,17 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
/* Lookup user information from a rid or username. */
static NTSTATUS query_user(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
+ uint32 user_rid,
WINBIND_USERINFO *user_info)
{
- CLI_POLICY_HND *hnd = NULL;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+ CLI_POLICY_HND *hnd;
+ NTSTATUS result;
POLICY_HND dom_pol, user_pol;
BOOL got_dom_pol = False, got_user_pol = False;
SAM_USERINFO_CTR *ctr;
int retry;
- fstring sid_string;
- uint32 user_rid;
- DEBUG(3,("rpc: query_user rid=%s\n", sid_to_string(sid_string, user_sid)));
- if (!sid_peek_check_rid(&domain->sid, user_sid, &user_rid)) {
- goto done;
- }
+ DEBUG(3,("rpc: query_user rid=%u\n", user_rid));
retry = 0;
do {
@@ -395,8 +405,8 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
cli_samr_close(hnd->cli, mem_ctx, &user_pol);
got_user_pol = False;
- user_info->user_sid = rid_to_talloced_sid(domain, mem_ctx, user_rid);
- user_info->group_sid = rid_to_talloced_sid(domain, mem_ctx, ctr->info.id21->group_rid);
+ user_info->user_rid = user_rid;
+ user_info->group_rid = ctr->info.id21->group_rid;
user_info->acct_name = unistr2_tdup(mem_ctx,
&ctr->info.id21->uni_user_name);
user_info->full_name = unistr2_tdup(mem_ctx,
@@ -416,8 +426,8 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
/* Lookup groups a user is a member of. I wish Unix had a call like this! */
static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *user_sid,
- uint32 *num_groups, DOM_SID ***user_gids)
+ uint32 user_rid,
+ uint32 *num_groups, uint32 **user_gids)
{
CLI_POLICY_HND *hnd;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
@@ -425,17 +435,15 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED;
BOOL got_dom_pol = False, got_user_pol = False;
DOM_GID *user_groups;
- unsigned int i;
- unsigned int retry;
- fstring sid_string;
- uint32 user_rid;
+ int i;
+ int retry;
- DEBUG(3,("rpc: lookup_usergroups sid=%s\n", sid_to_string(sid_string, user_sid)));
+ DEBUG(3,("rpc: lookup_usergroups rid=%u\n", user_rid));
*num_groups = 0;
/* First try cached universal groups from logon */
- *user_gids = uni_group_cache_fetch(&domain->sid, user_sid, mem_ctx, num_groups);
+ *user_gids = uni_group_cache_fetch(&domain->sid, user_rid, mem_ctx, num_groups);
if((*num_groups > 0) && *user_gids) {
return NT_STATUS_OK;
} else {
@@ -451,7 +459,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
/* Get domain handle */
result = cli_samr_open_domain(hnd->cli, mem_ctx, &hnd->pol,
- des_access, &domain->sid, &dom_pol);
+ des_access, &domain->sid, &dom_pol);
} while (!NT_STATUS_IS_OK(result) && (retry++ < 1) && hnd && hnd->cli && hnd->cli->fd == -1);
if (!NT_STATUS_IS_OK(result))
@@ -459,11 +467,6 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
got_dom_pol = True;
-
- if (!sid_peek_check_rid(&domain->sid, user_sid, &user_rid)) {
- goto done;
- }
-
/* Get user handle */
result = cli_samr_open_user(hnd->cli, mem_ctx, &dom_pol,
des_access, user_rid, &user_pol);
@@ -481,13 +484,8 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
goto done;
(*user_gids) = talloc(mem_ctx, sizeof(uint32) * (*num_groups));
- if (!(*user_gids)) {
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
for (i=0;i<(*num_groups);i++) {
- (*user_gids)[i] = rid_to_talloced_sid(domain, mem_ctx, user_groups[i].g_rid);
+ (*user_gids)[i] = user_groups[i].g_rid;
}
done:
@@ -505,27 +503,19 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
/* Lookup group membership given a rid. */
static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- DOM_SID *group_sid, uint32 *num_names,
- DOM_SID ***sid_mem, char ***names,
+ uint32 group_rid, uint32 *num_names,
+ uint32 **rid_mem, char ***names,
uint32 **name_types)
{
- CLI_POLICY_HND *hnd = NULL;
+ CLI_POLICY_HND *hnd;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
uint32 i, total_names = 0;
POLICY_HND dom_pol, group_pol;
uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED;
BOOL got_dom_pol = False, got_group_pol = False;
- uint32 *rid_mem = NULL;
- uint32 group_rid;
int retry;
- unsigned int j;
- fstring sid_string;
- DEBUG(10,("rpc: lookup_groupmem %s sid=%s\n", domain->name, sid_to_string(sid_string, group_sid)));
-
- if (!sid_peek_check_rid(&domain->sid, group_sid, &group_rid)) {
- goto done;
- }
+ DEBUG(10,("rpc: lookup_groupmem %s rid=%u\n", domain->name, group_rid));
*num_names = 0;
@@ -560,7 +550,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
group. */
result = cli_samr_query_groupmem(hnd->cli, mem_ctx,
- &group_pol, num_names, &rid_mem,
+ &group_pol, num_names, rid_mem,
name_types);
if (!NT_STATUS_IS_OK(result))
@@ -575,16 +565,6 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
*names = talloc_zero(mem_ctx, *num_names * sizeof(char *));
*name_types = talloc_zero(mem_ctx, *num_names * sizeof(uint32));
- *sid_mem = talloc_zero(mem_ctx, *num_names * sizeof(DOM_SID *));
-
- for (j=0;j<(*num_names);j++) {
- (*sid_mem)[j] = rid_to_talloced_sid(domain, mem_ctx, (rid_mem)[j]);
- }
-
- if (!*names || !*name_types) {
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
for (i = 0; i < *num_names; i += MAX_LOOKUP_RIDS) {
int num_lookup_rids = MIN(*num_names - i, MAX_LOOKUP_RIDS);
@@ -597,7 +577,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
result = cli_samr_lookup_rids(hnd->cli, mem_ctx,
&dom_pol, 1000, /* flags */
num_lookup_rids,
- &rid_mem[i],
+ &(*rid_mem)[i],
&tmp_num_names,
&tmp_names, &tmp_types);
@@ -612,7 +592,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
memcpy(&(*name_types)[i], tmp_types, sizeof(uint32) *
tmp_num_names);
-
+
total_names += tmp_num_names;
}
diff --git a/source3/nsswitch/winbindd_user.c b/source3/nsswitch/winbindd_user.c
index ee05543d30..06c95224ab 100644
--- a/source3/nsswitch/winbindd_user.c
+++ b/source3/nsswitch/winbindd_user.c
@@ -29,30 +29,29 @@
/* Fill a pwent structure with information we have obtained */
static BOOL winbindd_fill_pwent(char *dom_name, char *user_name,
- DOM_SID *user_sid, DOM_SID *group_sid,
+ uint32 user_rid, uint32 group_rid,
char *full_name, struct winbindd_pw *pw)
{
extern userdom_struct current_user_info;
fstring output_username;
pstring homedir;
- fstring sid_string;
if (!pw || !dom_name || !user_name)
return False;
/* Resolve the uid number */
- if (!winbindd_idmap_get_uid_from_sid(user_sid,
+ if (!winbindd_idmap_get_uid_from_rid(dom_name, user_rid,
&pw->pw_uid)) {
- DEBUG(1, ("error getting user id for sid %s\n", sid_to_string(sid_string, user_sid)));
+ DEBUG(1, ("error getting user id for rid %d\n", user_rid));
return False;
}
/* Resolve the gid number */
- if (!winbindd_idmap_get_gid_from_sid(group_sid,
+ if (!winbindd_idmap_get_gid_from_rid(dom_name, group_rid,
&pw->pw_gid)) {
- DEBUG(1, ("error getting group id for sid %s\n", sid_to_string(sid_string, group_sid)));
+ DEBUG(1, ("error getting group id for rid %d\n", group_rid));
return False;
}
@@ -96,6 +95,7 @@ static BOOL winbindd_fill_pwent(char *dom_name, char *user_name,
enum winbindd_result winbindd_getpwnam(struct winbindd_cli_state *state)
{
+ uint32 user_rid;
WINBIND_USERINFO user_info;
DOM_SID user_sid;
NTSTATUS status;
@@ -144,7 +144,9 @@ enum winbindd_result winbindd_getpwnam(struct winbindd_cli_state *state)
return WINBINDD_ERROR;
}
- status = domain->methods->query_user(domain, mem_ctx, &user_sid,
+ sid_split_rid(&user_sid, &user_rid);
+
+ status = domain->methods->query_user(domain, mem_ctx, user_rid,
&user_info);
if (!NT_STATUS_IS_OK(status)) {
@@ -156,7 +158,7 @@ enum winbindd_result winbindd_getpwnam(struct winbindd_cli_state *state)
/* Now take all this information and fill in a passwd structure */
if (!winbindd_fill_pwent(name_domain, name_user,
- user_info.user_sid, user_info.group_sid,
+ user_rid, user_info.group_rid,
user_info.full_name,
&state->response.data.pw)) {
talloc_destroy(mem_ctx);
@@ -174,6 +176,7 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
{
DOM_SID user_sid;
struct winbindd_domain *domain;
+ uint32 user_rid;
fstring dom_name;
fstring user_name;
enum SID_NAME_USE name_type;
@@ -193,15 +196,18 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
/* Get rid from uid */
- if (!winbindd_idmap_get_sid_from_uid(state->request.data.uid,
- &user_sid)) {
- DEBUG(1, ("could not convert uid %d to SID\n",
+ if (!winbindd_idmap_get_rid_from_uid(state->request.data.uid,
+ &user_rid, &domain)) {
+ DEBUG(1, ("could not convert uid %d to rid\n",
state->request.data.uid));
return WINBINDD_ERROR;
}
/* Get name and name type from rid */
+ sid_copy(&user_sid, &domain->sid);
+ sid_append_rid(&user_sid, user_rid);
+
if (!winbindd_lookup_name_by_sid(&user_sid, dom_name, user_name, &name_type)) {
fstring temp;
@@ -210,13 +216,6 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
return WINBINDD_ERROR;
}
- domain = find_domain_from_sid(&user_sid);
-
- if (!domain) {
- DEBUG(1,("Can't find domain from sid\n"));
- return WINBINDD_ERROR;
- }
-
/* Get some user info */
if (!(mem_ctx = talloc_init("winbind_getpwuid(%d)",
@@ -226,7 +225,7 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
return WINBINDD_ERROR;
}
- status = domain->methods->query_user(domain, mem_ctx, &user_sid,
+ status = domain->methods->query_user(domain, mem_ctx, user_rid,
&user_info);
if (!NT_STATUS_IS_OK(status)) {
@@ -238,7 +237,7 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
/* Resolve gid number */
- if (!winbindd_idmap_get_gid_from_sid(user_info.group_sid, &gid)) {
+ if (!winbindd_idmap_get_gid_from_rid(domain->name, user_info.group_rid, &gid)) {
DEBUG(1, ("error getting group id for user %s\n", user_name));
talloc_destroy(mem_ctx);
return WINBINDD_ERROR;
@@ -246,8 +245,7 @@ enum winbindd_result winbindd_getpwuid(struct winbindd_cli_state *state)
/* Fill in password structure */
- if (!winbindd_fill_pwent(domain->name, user_name, user_info.user_sid,
- user_info.group_sid,
+ if (!winbindd_fill_pwent(domain->name, user_name, user_rid, user_info.group_rid,
user_info.full_name, &state->response.data.pw)) {
talloc_destroy(mem_ctx);
return WINBINDD_ERROR;
@@ -334,13 +332,13 @@ static BOOL get_sam_user_entries(struct getent_state *ent)
TALLOC_CTX *mem_ctx;
struct winbindd_domain *domain;
struct winbindd_methods *methods;
- unsigned int i;
+ int i;
if (ent->num_sam_entries)
return False;
if (!(mem_ctx = talloc_init("get_sam_user_entries(%s)",
- ent->domain_name)))
+ ent->domain_name)))
return False;
if (!(domain = find_domain_from_name(ent->domain_name))) {
@@ -395,8 +393,8 @@ static BOOL get_sam_user_entries(struct getent_state *ent)
}
/* User and group ids */
- sid_copy(&name_list[ent->num_sam_entries+i].user_sid, info[i].user_sid);
- sid_copy(&name_list[ent->num_sam_entries+i].group_sid, info[i].group_sid);
+ name_list[ent->num_sam_entries+i].user_rid = info[i].user_rid;
+ name_list[ent->num_sam_entries+i].group_rid = info[i].group_rid;
}
ent->num_sam_entries += num_entries;
@@ -494,8 +492,8 @@ enum winbindd_result winbindd_getpwent(struct winbindd_cli_state *state)
result = winbindd_fill_pwent(
ent->domain_name,
name_list[ent->sam_entry_index].name,
- &name_list[ent->sam_entry_index].user_sid,
- &name_list[ent->sam_entry_index].group_sid,
+ name_list[ent->sam_entry_index].user_rid,
+ name_list[ent->sam_entry_index].group_rid,
name_list[ent->sam_entry_index].gecos,
&user_list[user_list_ndx]);
@@ -542,7 +540,7 @@ enum winbindd_result winbindd_list_users(struct winbindd_cli_state *state)
for (domain = domain_list(); domain; domain = domain->next) {
NTSTATUS status;
struct winbindd_methods *methods;
- unsigned int i;
+ int i;
methods = domain->methods;
diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c
index fdbfd92b5a..99b94eac47 100644
--- a/source3/nsswitch/winbindd_util.c
+++ b/source3/nsswitch/winbindd_util.c
@@ -179,7 +179,7 @@ void rescan_trusted_domains(BOOL force)
int i;
result = domain->methods->trusted_domains(domain, mem_ctx, &num_domains,
- &names, &alt_names, &dom_sids);
+ &names, &alt_names, &dom_sids);
if (!NT_STATUS_IS_OK(result)) {
continue;
}
@@ -188,12 +188,9 @@ void rescan_trusted_domains(BOOL force)
the access methods of its parent */
for(i = 0; i < num_domains; i++) {
DEBUG(10,("Found domain %s\n", names[i]));
- add_trusted_domain(names[i], alt_names?alt_names[i]:NULL,
- domain->methods, &dom_sids[i]);
-
- /* store trusted domain in the cache */
- trustdom_cache_store(names[i], alt_names ? alt_names[i] : NULL,
- &dom_sids[i], t + WINBINDD_RESCAN_FREQ);
+ add_trusted_domain(names[i],
+ alt_names?alt_names[i]:NULL,
+ domain->methods, &dom_sids[i]);
}
}
@@ -271,20 +268,14 @@ BOOL winbindd_lookup_sid_by_name(struct winbindd_domain *domain,
enum SID_NAME_USE *type)
{
NTSTATUS result;
- TALLOC_CTX *mem_ctx;
+
/* Don't bother with machine accounts */
-
+
if (name[strlen(name) - 1] == '$')
return False;
- mem_ctx = talloc_init("lookup_sid_by_name for %s\n", name);
- if (!mem_ctx)
- return False;
-
/* Lookup name */
- result = domain->methods->name_to_sid(domain, mem_ctx, name, sid, type);
-
- talloc_destroy(mem_ctx);
+ result = domain->methods->name_to_sid(domain, name, sid, type);
/* Return rid and type if lookup successful */
if (!NT_STATUS_IS_OK(result)) {
@@ -534,20 +525,3 @@ int winbindd_num_clients(void)
{
return _num_clients;
}
-
-/* Help with RID -> SID conversion */
-
-DOM_SID *rid_to_talloced_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- uint32 rid)
-{
- DOM_SID *sid;
- sid = talloc(mem_ctx, sizeof(*sid));
- if (!sid) {
- smb_panic("rid_to_to_talloced_sid: talloc for DOM_SID failed!\n");
- }
- sid_copy(sid, &domain->sid);
- sid_append_rid(sid, rid);
- return sid;
-}
-
diff --git a/source3/nsswitch/winbindd_wins.c b/source3/nsswitch/winbindd_wins.c
index a1d38ed69a..8ddd5dc10d 100644
--- a/source3/nsswitch/winbindd_wins.c
+++ b/source3/nsswitch/winbindd_wins.c
@@ -137,8 +137,8 @@ enum winbindd_result winbindd_wins_byip(struct winbindd_cli_state *state)
SAFE_FREE(status);
return WINBINDD_ERROR;
}
- fstrcat(response,state->request.data.winsreq);
- fstrcat(response,"\t");
+ safe_strcat(response,state->request.data.winsreq,maxlen);
+ safe_strcat(response,"\t",maxlen);
for (i = 0; i < count; i++) {
/* ignore group names */
if (status[i].flags & 0x80) continue;
@@ -148,8 +148,8 @@ enum winbindd_result winbindd_wins_byip(struct winbindd_cli_state *state)
SAFE_FREE(status);
return WINBINDD_ERROR;
}
- fstrcat(response, status[i].name);
- fstrcat(response, " ");
+ safe_strcat(response, status[i].name, maxlen);
+ safe_strcat(response, " ", maxlen);
}
}
/* make last character a newline */
@@ -190,16 +190,16 @@ enum winbindd_result winbindd_wins_byname(struct winbindd_cli_state *state)
/* Clear out the newline character */
response[strlen(response)-1] = ' ';
}
- fstrcat(response,addr);
- fstrcat(response,"\t");
+ safe_strcat(response,addr,maxlen);
+ safe_strcat(response,"\t",maxlen);
}
size = strlen(state->request.data.winsreq) + strlen(response);
if (size > maxlen) {
SAFE_FREE(ip_list);
return WINBINDD_ERROR;
}
- fstrcat(response,state->request.data.winsreq);
- fstrcat(response,"\n");
+ safe_strcat(response,state->request.data.winsreq,maxlen);
+ safe_strcat(response,"\n",maxlen);
SAFE_FREE(ip_list);
} else
return WINBINDD_ERROR;
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index d558b09d24..3ff6b3e22f 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -8,7 +8,6 @@
Copyright (C) Simo Sorce 2001
Copyright (C) Alexander Bokovoy 2002
Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Anthony Liguori 2003
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
@@ -82,13 +81,6 @@ extern int extra_time_offset;
static BOOL defaults_saved = False;
-typedef struct _param_opt_struct param_opt_struct;
-struct _param_opt_struct {
- param_opt_struct *prev, *next;
- char *key;
- char *value;
-};
-
/*
* This structure describes global (ie., server-wide) parameters.
*/
@@ -119,8 +111,6 @@ typedef struct
char *szSMBPasswdFile;
char *szPrivateDir;
char **szPassdbBackend;
- char **szSamBackend;
- char **szPreloadModules;
char *szPasswordServer;
char *szSocketOptions;
char *szRealm;
@@ -165,14 +155,13 @@ typedef struct
char *szWinbindUID;
char *szWinbindGID;
char *szNonUnixAccountRange;
- int AlgorithmicRidBase;
+ BOOL bAlgorithmicRidBase;
char *szTemplateHomedir;
char *szTemplateShell;
char *szWinbindSeparator;
BOOL bWinbindEnumUsers;
BOOL bWinbindEnumGroups;
BOOL bWinbindUseDefaultDomain;
- char *szIDMapBackend;
char *szAddShareCommand;
char *szChangeShareCommand;
char *szDeleteShareCommand;
@@ -284,7 +273,6 @@ typedef struct
int restrict_anonymous;
int name_cache_timeout;
BOOL client_signing;
- param_opt_struct *param_opt;
}
global;
@@ -407,7 +395,6 @@ typedef struct
BOOL bNTAclSupport;
BOOL bUseSendfile;
BOOL bProfileAcls;
- param_opt_struct *param_opt;
char dummy[3]; /* for alignment */
}
@@ -528,8 +515,6 @@ static service sDefault = {
True, /* bNTAclSupport */
False, /* bUseSendfile */
False, /* bProfileAcls */
-
- NULL, /* Parametric options */
"" /* dummy */
};
@@ -548,6 +533,7 @@ static int default_server_announce;
/* prototypes for the special type handlers */
static BOOL handle_include(const char *pszParmValue, char **ptr);
static BOOL handle_copy(const char *pszParmValue, char **ptr);
+static BOOL handle_vfs_object(const char *pszParmValue, char **ptr);
static BOOL handle_source_env(const char *pszParmValue, char **ptr);
static BOOL handle_netbios_name(const char *pszParmValue, char **ptr);
static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr);
@@ -750,7 +736,6 @@ static struct parm_struct parm_table[] = {
{"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER},
{"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
- {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, FLAG_ADVANCED | FLAG_DEVELOPER},
@@ -759,10 +744,9 @@ static struct parm_struct parm_table[] = {
{"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
{"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
- {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
- {"sam backend", P_LIST, P_GLOBAL, &Globals.szSamBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+ {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
{"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
- {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.AlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+ {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.bAlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_HIDE | FLAG_DEVELOPER},
@@ -824,7 +808,6 @@ static struct parm_struct parm_table[] = {
{"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_HIDE},
{"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
{"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE},
- {"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_BASIC | FLAG_GLOBAL},
{"Logging Options", P_SEP, P_SEPARATOR},
@@ -1103,7 +1086,7 @@ static struct parm_struct parm_table[] = {
{"VFS module options", P_SEP, P_SEPARATOR},
- {"vfs object", P_LIST, P_LOCAL, &sDefault.szVfsObjectFile, NULL, NULL, FLAG_SHARE},
+ {"vfs object", P_STRING, P_LOCAL, &sDefault.szVfsObjectFile, handle_vfs_object, NULL, FLAG_SHARE},
{"vfs options", P_STRING, P_LOCAL, &sDefault.szVfsOptions, NULL, NULL, FLAG_SHARE},
{"vfs path", P_STRING, P_LOCAL, &sDefault.szVfsPath, NULL, NULL, FLAG_SHARE},
@@ -1319,7 +1302,7 @@ static void init_globals(void)
string_set(&Globals.szNameResolveOrder, "lmhosts wins host bcast");
string_set(&Globals.szPasswordServer, "*");
- Globals.AlgorithmicRidBase = BASE_RID;
+ Globals.bAlgorithmicRidBase = BASE_RID;
Globals.bLoadPrinters = True;
Globals.mangled_stack = 50;
@@ -1410,9 +1393,9 @@ static void init_globals(void)
#ifdef WITH_LDAP_SAMCONFIG
string_set(&Globals.szLdapServer, "localhost");
Globals.ldap_port = 636;
- Globals.szPassdbBackend = str_list_make("ldapsam guest", NULL);
+ Globals.szPassdbBackend = str_list_make("ldapsam unixsam", NULL);
#else
- Globals.szPassdbBackend = str_list_make("smbpasswd guest", NULL);
+ Globals.szPassdbBackend = str_list_make("smbpasswd unixsam", NULL);
#endif /* WITH_LDAP_SAMCONFIG */
string_set(&Globals.szLdapSuffix, "");
@@ -1463,8 +1446,6 @@ static void init_globals(void)
Globals.bWinbindEnumGroups = True;
Globals.bWinbindUseDefaultDomain = False;
- string_set(&Globals.szIDMapBackend, "tdb");
-
Globals.name_cache_timeout = 660; /* In seconds */
Globals.bUseSpnego = True;
@@ -1515,9 +1496,6 @@ static char *lp_string(const char *s)
if (!ret)
return NULL;
- /* Note: StrnCpy touches len+1 bytes, but we allocate 100
- * extra bytes so we're OK. */
-
if (!s)
*ret = 0;
else
@@ -1613,8 +1591,6 @@ FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName)
static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion)
FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases)
FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend)
-FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend)
-FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules)
FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction)
FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript)
FN_GLOBAL_STRING(lp_deluser_script, &Globals.szDelUserScript)
@@ -1640,7 +1616,6 @@ FN_GLOBAL_STRING(lp_acl_compatibility, &Globals.szAclCompat)
FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers)
FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups)
FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain)
-FN_GLOBAL_STRING(lp_idmap_backend, &Globals.szIDMapBackend)
#ifdef WITH_LDAP_SAMCONFIG
FN_GLOBAL_STRING(lp_ldap_server, &Globals.szLdapServer)
@@ -1773,7 +1748,7 @@ FN_LOCAL_LIST(lp_readlist, readlist)
FN_LOCAL_LIST(lp_writelist, writelist)
FN_LOCAL_LIST(lp_printer_admin, printer_admin)
FN_LOCAL_STRING(lp_fstype, fstype)
-FN_LOCAL_LIST(lp_vfsobj, szVfsObjectFile)
+FN_LOCAL_STRING(lp_vfsobj, szVfsObjectFile)
FN_LOCAL_STRING(lp_vfs_options, szVfsOptions)
FN_LOCAL_STRING(lp_vfs_path, szVfsPath)
FN_LOCAL_STRING(lp_msdfs_proxy, szMSDfsProxy)
@@ -1851,10 +1826,53 @@ FN_LOCAL_INTEGER(lp_block_size, iBlock_size)
FN_LOCAL_CHAR(lp_magicchar, magic_char)
FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time)
FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers)
-FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase)
+FN_GLOBAL_BOOL(lp_algorithmic_rid_base, &Globals.bAlgorithmicRidBase)
FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout)
FN_GLOBAL_BOOL(lp_client_signing, &Globals.client_signing)
+typedef struct _param_opt_struct param_opt_struct;
+struct _param_opt_struct {
+ char *key;
+ char *value;
+ param_opt_struct *prev, *next;
+};
+
+static param_opt_struct *param_opt = NULL;
+
+/* Return parametric option from given service. Type is a part of option before ':' */
+/* Parametric option has following syntax: 'Type: option = value' */
+/* Returned value is allocated in 'lp_talloc' context */
+
+char *lp_parm_string(const char *servicename, const char *type, const char *option)
+{
+ param_opt_struct *data;
+ pstring vfskey;
+
+ if (param_opt != NULL) {
+ ZERO_STRUCT(vfskey);
+ pstr_sprintf(vfskey, "%s:%s:%s", (servicename==NULL) ? "global" : servicename,
+ type, option);
+ data = param_opt;
+ while (data) {
+ if (strcmp(data->key, vfskey) == 0) {
+ return lp_string(data->value);
+ }
+ data = data->next;
+ }
+ /* Try to fetch the same option but from globals */
+ pstr_sprintf(vfskey, "global:%s:%s", type, option);
+ data = param_opt;
+ while (data) {
+ if (strcmp(data->key, vfskey) == 0) {
+ return lp_string(data->value);
+ }
+ data = data->next;
+ }
+
+ }
+ return NULL;
+}
+
/* local prototypes */
static int map_parameter(const char *pszParmName);
@@ -1868,198 +1886,6 @@ static BOOL do_parameter(const char *pszParmName, const char *pszParmValue);
static BOOL do_section(const char *pszSectionName);
static void init_copymap(service * pservice);
-/* This is a helper function for parametrical options support. */
-/* It returns a pointer to parametrical option value if it exists or NULL otherwise */
-/* Actual parametrical functions are quite simple */
-static const char *get_parametrics(int lookup_service, const char *type, const char *option)
-{
- char* vfskey;
- param_opt_struct *data;
-
- if (lookup_service >= iNumServices) return NULL;
-
- data = (lookup_service < 0) ?
- Globals.param_opt : ServicePtrs[lookup_service]->param_opt;
-
- asprintf(&vfskey, "%s:%s", type, option);
- while (data) {
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&vfskey);
- return data->value;
- }
- data = data->next;
- }
-
- if (lookup_service >= 0) {
- /* Try to fetch the same option but from globals */
- /* but only if we are not already working with Globals */
- data = Globals.param_opt;
- while (data) {
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&vfskey);
- return data->value;
- }
- data = data->next;
- }
- }
-
- string_free(&vfskey);
-
- return NULL;
-}
-
-
-/*******************************************************************
-convenience routine to return int parameters.
-********************************************************************/
-static int lp_int(const char *s)
-{
-
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
- return (-1);
- }
-
- return atoi(s);
-}
-
-/*******************************************************************
-convenience routine to return unsigned long parameters.
-********************************************************************/
-static int lp_ulong(const char *s)
-{
-
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
- return (-1);
- }
-
- return strtoul(s, NULL, 10);
-}
-
-/*******************************************************************
-convenience routine to return boolean parameters.
-********************************************************************/
-static BOOL lp_bool(const char *s)
-{
- BOOL ret = False;
-
- if (!s) {
- DEBUG(0,("lp_bool(%s): is called with NULL!\n",s));
- return False;
- }
-
- if (!set_boolean(&ret,s)) {
- DEBUG(0,("lp_bool(%s): value is not boolean!\n",s));
- return False;
- }
-
- return ret;
-}
-
-/*******************************************************************
-convenience routine to return enum parameters.
-********************************************************************/
-static int lp_enum(const char *s,const struct enum_list *_enum)
-{
- int i;
-
- if (!s || !_enum) {
- DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s));
- return False;
- }
-
- for (i=0; _enum[i].name; i++) {
- if (strcasecmp(_enum[i].name,s)==0)
- return _enum[i].value;
- }
-
- DEBUG(0,("lp_enum(%s,enum): value is not in enum_list!\n",s));
- return (-1);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-/* Returned value is allocated in 'lp_talloc' context */
-
-char *lp_parm_string(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_string(value);
-
- return NULL;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-/* Returned value is allocated in 'lp_talloc' context */
-
-char **lp_parm_string_list(int lookup_service, const char *type, const char *option,
- const char *separator)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return str_list_make(value, separator);
-
- return NULL;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-int lp_parm_int(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_int(value);
-
- return (-1);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_ulong(value);
-
- return (0);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-BOOL lp_parm_bool(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_bool(value);
-
- return False;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-int lp_parm_enum(int lookup_service, const char *type, const char *option,
- const struct enum_list *_enum)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_enum(value, _enum);
-
- return (-1);
-}
-
/***************************************************************************
Initialise a service to the defaults.
@@ -2078,7 +1904,6 @@ static void init_service(service * pservice)
static void free_service(service *pservice)
{
int i;
- param_opt_struct *data, *pdata;
if (!pservice)
return;
@@ -2103,16 +1928,6 @@ static void free_service(service *pservice)
PTR_DIFF(parm_table[i].ptr, &sDefault)));
}
- DEBUG(5,("Freeing parametrics:\n"));
- data = pservice->param_opt;
- while (data) {
- DEBUG(5,("[%s = %s]\n", data->key, data->value));
- string_free(&data->key);
- string_free(&data->value);
- pdata = data->next;
- SAFE_FREE(data);
- data = pdata;
- }
ZERO_STRUCTP(pservice);
}
@@ -2127,27 +1942,14 @@ static int add_a_service(const service *pservice, const char *name)
int i;
service tservice;
int num_to_alloc = iNumServices + 1;
- param_opt_struct *data, *pdata;
tservice = *pservice;
/* it might already exist */
if (name) {
i = getservicebyname(name, NULL);
- if (i >= 0) {
- /* Clean all parametric options for service */
- /* They will be added during parsing again */
- data = ServicePtrs[i]->param_opt;
- while (data) {
- string_free(&data->key);
- string_free(&data->value);
- pdata = data->next;
- SAFE_FREE(data);
- data = pdata;
- }
- ServicePtrs[i]->param_opt = NULL;
+ if (i >= 0)
return (i);
- }
}
/* find an invalid one */
@@ -2390,8 +2192,6 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
{
int i;
BOOL bcopyall = (pcopymapDest == NULL);
- param_opt_struct *data, *pdata, *paramo;
- BOOL not_added;
for (i = 0; parm_table[i].label; i++)
if (parm_table[i].ptr && parm_table[i].class == P_LOCAL &&
@@ -2445,30 +2245,6 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
(void *)pserviceSource->copymap,
sizeof(BOOL) * NUMPARAMETERS);
}
-
- data = pserviceSource->param_opt;
- while (data) {
- not_added = True;
- pdata = pserviceDest->param_opt;
- /* Traverse destination */
- while (pdata) {
- /* If we already have same option, override it */
- if (strcmp(pdata->key, data->key) == 0) {
- string_free(&pdata->value);
- pdata->value = strdup(data->value);
- not_added = False;
- break;
- }
- pdata = pdata->next;
- }
- if (not_added) {
- paramo = smb_xmalloc(sizeof(param_opt_struct));
- paramo->key = strdup(data->key);
- paramo->value = strdup(data->value);
- DLIST_ADD(pserviceDest->param_opt, paramo);
- }
- data = data->next;
- }
}
/***************************************************************************
@@ -2738,6 +2514,22 @@ static BOOL handle_source_env(const char *pszParmValue, char **ptr)
}
/***************************************************************************
+ Handle the interpretation of the vfs object parameter.
+*************************************************************************/
+
+static BOOL handle_vfs_object(const char *pszParmValue, char **ptr)
+{
+ /* Set string value */
+
+ string_set(ptr, pszParmValue);
+
+ /* Do any other initialisation required for vfs. Note that
+ anything done here may have linking repercussions in nmbd. */
+
+ return True;
+}
+
+/***************************************************************************
Handle the include operation.
***************************************************************************/
@@ -3067,8 +2859,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
void *def_ptr = NULL;
pstring vfskey;
char *sep;
- param_opt_struct *paramo, *data;
- BOOL not_added;
+ param_opt_struct *paramo;
parmnum = map_parameter(pszParmName);
@@ -3076,35 +2867,15 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
if ((sep=strchr(pszParmName, ':')) != NULL) {
*sep = 0;
ZERO_STRUCT(vfskey);
- pstr_sprintf(vfskey, "%s:", pszParmName);
+ pstr_sprintf(vfskey, "%s:%s:",
+ (snum >= 0) ? lp_servicename(snum) : "global", pszParmName);
slen = strlen(vfskey);
pstrcat(vfskey, sep+1);
trim_string(vfskey+slen, " ", " ");
- not_added = True;
- data = (snum < 0) ? Globals.param_opt :
- ServicePtrs[snum]->param_opt;
- /* Traverse destination */
- while (data) {
- /* If we already have same option, override it */
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&data->value);
- data->value = strdup(pszParmValue);
- not_added = False;
- break;
- }
- data = data->next;
- }
- if (not_added) {
- paramo = smb_xmalloc(sizeof(param_opt_struct));
- paramo->key = strdup(vfskey);
- paramo->value = strdup(pszParmValue);
- if (snum < 0) {
- DLIST_ADD(Globals.param_opt, paramo);
- } else {
- DLIST_ADD(ServicePtrs[snum]->param_opt, paramo);
- }
- }
-
+ paramo = smb_xmalloc(sizeof(param_opt_struct));
+ paramo->key = strdup(vfskey);
+ paramo->value = strdup(pszParmValue);
+ DLIST_ADD(param_opt, paramo);
*sep = ':';
return (True);
}
@@ -3453,6 +3224,7 @@ static void dump_globals(FILE *f)
{
int i;
param_opt_struct *data;
+ char *s;
fprintf(f, "# Global parameters\n[global]\n");
@@ -3466,11 +3238,14 @@ static void dump_globals(FILE *f)
print_parameter(&parm_table[i], parm_table[i].ptr, f);
fprintf(f, "\n");
}
- if (Globals.param_opt != NULL) {
- data = Globals.param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
while(data) {
- fprintf(f, "\t%s = %s\n", data->key, data->value);
- data = data->next;
+ if (((s=strstr(data->key, "global")) == data->key) &&
+ (*(s+strlen("global")) == ':')) {
+ fprintf(f, "\t%s = %s\n", s+strlen("global")+1, data->value);
+ }
+ data = data->next;
}
}
@@ -3497,6 +3272,7 @@ static void dump_a_service(service * pService, FILE * f)
{
int i;
param_opt_struct *data;
+ char *s, *sn;
if (pService != &sDefault)
fprintf(f, "\n[%s]\n", pService->szService);
@@ -3525,11 +3301,15 @@ static void dump_a_service(service * pService, FILE * f)
((char *)pService) + pdiff, f);
fprintf(f, "\n");
}
- if (pService->param_opt != NULL) {
- data = pService->param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
+ sn = (pService == &sDefault) ? "global" : pService->szService;
while(data) {
- fprintf(f, "\t%s = %s\n", data->key, data->value);
- data = data->next;
+ if (((s=strstr(data->key, sn)) == data->key) &&
+ (*(s+strlen(sn)) == ':')) {
+ fprintf(f, "\t%s = %s\n", s+strlen(sn)+1, data->value);
+ }
+ data = data->next;
}
}
}
@@ -3791,18 +3571,7 @@ static void set_server_role(void)
DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n"));
break;
case SEC_SERVER:
- if (lp_domain_logons())
- DEBUG(0, ("Server's Role (logon server) conflicts with server-level security\n"));
- server_role = ROLE_DOMAIN_MEMBER;
- break;
case SEC_DOMAIN:
- if (lp_domain_logons()) {
- DEBUG(1, ("Server's Role (logon server) NOT ADVISED with domain-level security\n"));
- server_role = ROLE_DOMAIN_BDC;
- break;
- }
- server_role = ROLE_DOMAIN_MEMBER;
- break;
case SEC_ADS:
if (lp_domain_logons()) {
server_role = ROLE_DOMAIN_PDC;
@@ -3875,16 +3644,16 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults,
lp_save_defaults();
}
- if (Globals.param_opt != NULL) {
- data = Globals.param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
while (data) {
- string_free(&data->key);
- string_free(&data->value);
+ SAFE_FREE(data->key);
+ SAFE_FREE(data->value);
pdata = data->next;
SAFE_FREE(data);
data = pdata;
}
- Globals.param_opt = NULL;
+ param_opt = NULL;
}
/* We get sections first, so have to start 'behind' to make up */
diff --git a/source3/passdb/pdb_guest.c b/source3/passdb/pdb_guest.c
deleted file mode 100644
index 3f0f06d18d..0000000000
--- a/source3/passdb/pdb_guest.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 'Guest' password backend for samba
- * Copyright (C) Jelmer Vernooij 2002
- * Copyright (C) Andrew Bartlett 2003
- *
- * 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 2 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, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-
-/******************************************************************
- Lookup a name in the SAM database
- ******************************************************************/
-
-static NTSTATUS guestsam_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname)
-{
- NTSTATUS nt_status;
- struct passwd *pass;
- const char *guest_account = lp_guestaccount();
- if (!(guest_account && *guest_account)) {
- DEBUG(1, ("NULL guest account!?!?\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!methods) {
- DEBUG(0,("invalid methods\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- if (!sname) {
- DEBUG(0,("invalid name specified"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!strequal(guest_account, sname)) {
- return NT_STATUS_NO_SUCH_USER;
- }
-
- pass = getpwnam_alloc(guest_account);
-
- nt_status = pdb_fill_sam_pw(user, pass);
-
- passwd_free(&pass);
- return nt_status;
-}
-
-
-/***************************************************************************
- Search by rid
- **************************************************************************/
-
-static NTSTATUS guestsam_getsampwrid (struct pdb_methods *methods,
- SAM_ACCOUNT *user, uint32 rid)
-{
- NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- struct passwd *pass = NULL;
- const char *guest_account = lp_guestaccount();
- if (!(guest_account && *guest_account)) {
- DEBUG(1, ("NULL guest account!?!?\n"));
- return nt_status;
- }
-
- if (!methods) {
- DEBUG(0,("invalid methods\n"));
- return nt_status;
- }
-
- if (rid == DOMAIN_USER_RID_GUEST) {
- pass = getpwnam_alloc(guest_account);
- if (!pass) {
- DEBUG(1, ("guest account %s does not seem to exist...\n", guest_account));
- return NT_STATUS_NO_SUCH_USER;
- }
- } else {
- return NT_STATUS_NO_SUCH_USER;
- }
-
- nt_status = pdb_fill_sam_pw(user, pass);
- passwd_free(&pass);
-
- return nt_status;
-}
-
-static NTSTATUS guestsam_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid)
-{
- uint32 rid;
- if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid))
- return NT_STATUS_NO_SUCH_USER;
- return guestsam_getsampwrid(my_methods, user, rid);
-}
-
-NTSTATUS pdb_init_guestsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
-{
- NTSTATUS nt_status;
-
- if (!pdb_context) {
- DEBUG(0, ("invalid pdb_context specified\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = make_pdb_methods(pdb_context->mem_ctx, pdb_method))) {
- return nt_status;
- }
-
- (*pdb_method)->name = "guestsam";
-
- (*pdb_method)->getsampwnam = guestsam_getsampwnam;
- (*pdb_method)->getsampwsid = guestsam_getsampwsid;
-
- /* There's not very much to initialise here */
- return NT_STATUS_OK;
-}
diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c
index 48a039b3de..d21cc1d355 100644
--- a/source3/passdb/pdb_interface.c
+++ b/source3/passdb/pdb_interface.c
@@ -25,11 +25,8 @@
#define DBGC_CLASS DBGC_PASSDB
/** List of various built-in passdb modules */
-static const struct {
- const char *name;
- /* Function to create a member of the pdb_methods list */
- pdb_init_function init;
-} builtin_pdb_init_functions[] = {
+
+const struct pdb_init_function_entry builtin_pdb_init_functions[] = {
{ "smbpasswd", pdb_init_smbpasswd },
{ "smbpasswd_nua", pdb_init_smbpasswd_nua },
{ "tdbsam", pdb_init_tdbsam },
@@ -37,67 +34,11 @@ static const struct {
{ "ldapsam", pdb_init_ldapsam },
{ "ldapsam_nua", pdb_init_ldapsam_nua },
{ "unixsam", pdb_init_unixsam },
- { "guest", pdb_init_guestsam },
{ "nisplussam", pdb_init_nisplussam },
+ { "plugin", pdb_init_plugin },
{ NULL, NULL}
};
-static struct pdb_init_function_entry *backends;
-static void lazy_initialize_passdb(void);
-
-static void lazy_initialize_passdb()
-{
- int i;
- static BOOL initialised = False;
-
- if(!initialised) {
- initialised = True;
-
- for(i = 0; builtin_pdb_init_functions[i].name; i++) {
- smb_register_passdb(builtin_pdb_init_functions[i].name, builtin_pdb_init_functions[i].init, PASSDB_INTERFACE_VERSION);
- }
- }
-}
-
-BOOL smb_register_passdb(const char *name, pdb_init_function init, int version)
-{
- struct pdb_init_function_entry *entry = backends;
-
- if(version != PASSDB_INTERFACE_VERSION)
- return False;
-
- DEBUG(5,("Attempting to register passdb backend %s\n", name));
-
- /* Check for duplicates */
- while(entry) {
- if(strcasecmp(name, entry->name) == 0) {
- DEBUG(0,("There already is a passdb backend registered with the name %s!\n", name));
- return False;
- }
- entry = entry->next;
- }
-
- entry = smb_xmalloc(sizeof(struct pdb_init_function_entry));
- entry->name = name;
- entry->init = init;
-
- DLIST_ADD(backends, entry);
- DEBUG(5,("Successfully added passdb backend '%s'\n", name));
- return True;
-}
-
-struct pdb_init_function_entry *pdb_find_backend_entry(const char *name)
-{
- struct pdb_init_function_entry *entry = backends;
-
- while(entry) {
- if (strequal(entry->name, name)) return entry;
- entry = entry->next;
- }
-
- return NULL;
-}
-
static NTSTATUS context_setsampwent(struct pdb_context *context, BOOL update)
{
NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
@@ -430,10 +371,8 @@ static NTSTATUS make_pdb_methods_name(struct pdb_methods **methods, struct pdb_c
{
char *module_name = smb_xstrdup(selected);
char *module_location = NULL, *p;
- struct pdb_init_function_entry *entry;
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
- lazy_initialize_passdb();
+ int i;
p = strchr(module_name, ':');
@@ -445,32 +384,27 @@ static NTSTATUS make_pdb_methods_name(struct pdb_methods **methods, struct pdb_c
trim_string(module_name, " ", " ");
-
DEBUG(5,("Attempting to find an passdb backend to match %s (%s)\n", selected, module_name));
-
- entry = pdb_find_backend_entry(module_name);
-
- /* Try to find a module that contains this module */
- if(!entry) {
- smb_probe_module("passdb", module_name);
- entry = pdb_find_backend_entry(module_name);
+ for (i = 0; builtin_pdb_init_functions[i].name; i++)
+ {
+ if (strequal(builtin_pdb_init_functions[i].name, module_name))
+ {
+ DEBUG(5,("Found pdb backend %s (at pos %d)\n", module_name, i));
+ nt_status = builtin_pdb_init_functions[i].init(context, methods, module_location);
+ if (NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(5,("pdb backend %s has a valid init\n", selected));
+ } else {
+ DEBUG(0,("pdb backend %s did not correctly init (error was %s)\n", selected, nt_errstr(nt_status)));
+ }
+ SAFE_FREE(module_name);
+ return nt_status;
+ break; /* unreached */
+ }
}
-
+
/* No such backend found */
- if(!entry) {
- SAFE_FREE(module_name);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- DEBUG(5,("Found pdb backend %s\n", module_name));
- nt_status = entry->init(context, methods, module_location);
- if (NT_STATUS_IS_OK(nt_status)) {
- DEBUG(5,("pdb backend %s has a valid init\n", selected));
- } else {
- DEBUG(0,("pdb backend %s did not correctly init (error was %s)\n", selected, nt_errstr(nt_status)));
- }
SAFE_FREE(module_name);
- return nt_status;
+ return NT_STATUS_INVALID_PARAMETER;
}
/******************************************************************
@@ -779,51 +713,6 @@ BOOL initialize_password_db(BOOL reload)
}
-/***************************************************************************
- Default implementations of some functions.
- ****************************************************************************/
-
-static NTSTATUS pdb_default_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname)
-{
- return NT_STATUS_NO_SUCH_USER;
-}
-
-static NTSTATUS pdb_default_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid)
-{
- return NT_STATUS_NO_SUCH_USER;
-}
-
-static NTSTATUS pdb_default_add_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd)
-{
- DEBUG(0,("this backend (%s) should not be listed as the first passdb backend! You can't add users to it.\n", methods->name));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS pdb_default_update_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS pdb_default_delete_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS pdb_default_setsampwent(struct pdb_methods *methods, BOOL update)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS pdb_default_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT *user)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static void pdb_default_endsampwent(struct pdb_methods *methods)
-{
- return; /* NT_STATUS_NOT_IMPLEMENTED; */
-}
-
NTSTATUS make_pdb_methods(TALLOC_CTX *mem_ctx, PDB_METHODS **methods)
{
*methods = talloc(mem_ctx, sizeof(struct pdb_methods));
@@ -834,22 +723,5 @@ NTSTATUS make_pdb_methods(TALLOC_CTX *mem_ctx, PDB_METHODS **methods)
ZERO_STRUCTP(*methods);
- (*methods)->setsampwent = pdb_default_setsampwent;
- (*methods)->endsampwent = pdb_default_endsampwent;
- (*methods)->getsampwent = pdb_default_getsampwent;
- (*methods)->getsampwnam = pdb_default_getsampwnam;
- (*methods)->getsampwsid = pdb_default_getsampwsid;
- (*methods)->add_sam_account = pdb_default_add_sam_account;
- (*methods)->update_sam_account = pdb_default_update_sam_account;
- (*methods)->delete_sam_account = pdb_default_delete_sam_account;
-
- (*methods)->getgrsid = pdb_default_getgrsid;
- (*methods)->getgrgid = pdb_default_getgrgid;
- (*methods)->getgrnam = pdb_default_getgrnam;
- (*methods)->add_group_mapping_entry = pdb_default_add_group_mapping_entry;
- (*methods)->update_group_mapping_entry = pdb_default_update_group_mapping_entry;
- (*methods)->delete_group_mapping_entry = pdb_default_delete_group_mapping_entry;
- (*methods)->enum_group_mapping = pdb_default_enum_group_mapping;
-
return NT_STATUS_OK;
}
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
index 46e0994379..62fc5810d1 100644
--- a/source3/passdb/pdb_ldap.c
+++ b/source3/passdb/pdb_ldap.c
@@ -1967,6 +1967,58 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCO
return NT_STATUS_OK;
}
+static NTSTATUS ldapsam_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
+ DOM_SID sid, BOOL with_priv)
+{
+ return get_group_map_from_sid(sid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
+ gid_t gid, BOOL with_priv)
+{
+ return get_group_map_from_gid(gid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
+ char *name, BOOL with_priv)
+{
+ return get_group_map_from_ntname(name, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_add_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_INSERT) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_update_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_REPLACE) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_delete_group_mapping_entry(struct pdb_methods *methods,
+ DOM_SID sid)
+{
+ return group_map_remove(sid) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS ldapsam_enum_group_mapping(struct pdb_methods *methods,
+ enum SID_NAME_USE sid_name_use,
+ GROUP_MAP **rmap, int *num_entries,
+ BOOL unix_only, BOOL with_priv)
+{
+ return enum_group_mapping(sid_name_use, rmap, num_entries, unix_only,
+ with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
static void free_private_data(void **vp)
{
struct ldapsam_privates **ldap_state = (struct ldapsam_privates **)vp;
@@ -2006,6 +2058,13 @@ NTSTATUS pdb_init_ldapsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, co
(*pdb_method)->add_sam_account = ldapsam_add_sam_account;
(*pdb_method)->update_sam_account = ldapsam_update_sam_account;
(*pdb_method)->delete_sam_account = ldapsam_delete_sam_account;
+ (*pdb_method)->getgrsid = ldapsam_getgrsid;
+ (*pdb_method)->getgrgid = ldapsam_getgrgid;
+ (*pdb_method)->getgrnam = ldapsam_getgrnam;
+ (*pdb_method)->add_group_mapping_entry = ldapsam_add_group_mapping_entry;
+ (*pdb_method)->update_group_mapping_entry = ldapsam_update_group_mapping_entry;
+ (*pdb_method)->delete_group_mapping_entry = ldapsam_delete_group_mapping_entry;
+ (*pdb_method)->enum_group_mapping = ldapsam_enum_group_mapping;
/* TODO: Setup private data and free */
diff --git a/source3/modules/mysql.c b/source3/passdb/pdb_mysql.c
index 1d5819295b..d0f30c6394 100644
--- a/source3/modules/mysql.c
+++ b/source3/passdb/pdb_mysql.c
@@ -1,4 +1,3 @@
-
/*
* MySQL password backend for samba
* Copyright (C) Jelmer Vernooij 2002
@@ -64,10 +63,12 @@ static int mysqlsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS mysqlsam_debug_level
+PDB_MODULE_VERSIONING_MAGIC
+
typedef struct pdb_mysql_data {
MYSQL *handle;
MYSQL_RES *pwent;
- const char *location;
+ char *location;
} pdb_mysql_data;
/* Used to construct insert and update queries */
@@ -946,8 +947,8 @@ static NTSTATUS mysqlsam_enum_group_mapping(struct pdb_methods *methods,
}
-static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_methods ** pdb_method,
- const char *location)
+NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+ char *location)
{
NTSTATUS nt_status;
struct pdb_mysql_data *data;
@@ -1031,13 +1032,3 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module()
-{
- if(smb_register_passdb("mysql", mysqlsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/source3/sam/sam_plugin.c b/source3/passdb/pdb_plugin.c
index fd26c4b8d3..ea67da23a5 100644
--- a/source3/sam/sam_plugin.c
+++ b/source3/passdb/pdb_plugin.c
@@ -1,9 +1,8 @@
/*
Unix SMB/CIFS implementation.
- Loadable san module interface.
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
+ Loadable passdb module interface.
+ Copyright (C) Jelmer Vernooij 2002
+ Copyright (C) Andrew Bartlett 2002
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
@@ -23,57 +22,57 @@
#include "includes.h"
#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
+#define DBGC_CLASS DBGC_PASSDB
-NTSTATUS sam_init_plugin(SAM_METHODS *sam_methods, const char *module_params)
+NTSTATUS pdb_init_plugin(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
{
- void *dl_handle;
- char *plugin_params, *plugin_name, *p;
- sam_init_function plugin_init;
+ void * dl_handle;
+ char *plugin_location, *plugin_name, *p;
+ pdb_init_function plugin_init;
int (*plugin_version)(void);
- if (module_params == NULL) {
+ if (location == NULL) {
DEBUG(0, ("The plugin module needs an argument!\n"));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_name = smb_xstrdup(module_params);
+ plugin_name = smb_xstrdup(location);
p = strchr(plugin_name, ':');
if (p) {
*p = 0;
- plugin_params = p+1;
- trim_string(plugin_params, " ", " ");
- } else plugin_params = NULL;
+ plugin_location = p+1;
+ trim_string(plugin_location, " ", " ");
+ } else plugin_location = NULL;
trim_string(plugin_name, " ", " ");
DEBUG(5, ("Trying to load sam plugin %s\n", plugin_name));
- dl_handle = sys_dlopen(plugin_name, RTLD_NOW);
+ dl_handle = sys_dlopen(plugin_name, RTLD_NOW );
if (!dl_handle) {
DEBUG(0, ("Failed to load sam plugin %s using sys_dlopen (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_version = sys_dlsym(dl_handle, "sam_version");
+ plugin_version = sys_dlsym(dl_handle, "pdb_version");
if (!plugin_version) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Failed to find function 'sam_version' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
+ DEBUG(0, ("Failed to find function 'pdb_version' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- if (plugin_version()!=SAM_INTERFACE_VERSION) {
+ if (plugin_version() != PASSDB_INTERFACE_VERSION) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Wrong SAM_INTERFACE_VERSION! sam plugin has version %d and version %d is needed! Please update!\n",
- plugin_version(),SAM_INTERFACE_VERSION));
+ DEBUG(0, ("Wrong PASSDB_INTERFACE_VERSION! sam plugin has version %d and version %d is needed! Please update!\n",
+ plugin_version(),PASSDB_INTERFACE_VERSION));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_init = sys_dlsym(dl_handle, "sam_init");
+ plugin_init = sys_dlsym(dl_handle, "pdb_init");
if (!plugin_init) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Failed to find function 'sam_init' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
+ DEBUG(0, ("Failed to find function 'pdb_init' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- DEBUG(5, ("Starting sam plugin %s with parameters %s for domain %s\n", plugin_name, plugin_params, sam_methods->domain_name));
- return plugin_init(sam_methods, plugin_params);
+ DEBUG(5, ("Starting sam plugin %s with location %s\n", plugin_name, plugin_location));
+ return plugin_init(pdb_context, pdb_method, plugin_location);
}
diff --git a/source3/passdb/pdb_smbpasswd.c b/source3/passdb/pdb_smbpasswd.c
index b5a2bbbfe7..5fd6a828bf 100644
--- a/source3/passdb/pdb_smbpasswd.c
+++ b/source3/passdb/pdb_smbpasswd.c
@@ -1222,6 +1222,7 @@ static BOOL build_sam_account(struct smbpasswd_privates *smbpasswd_state,
return False;
}
} else {
+
if (!NT_STATUS_IS_OK(pdb_fill_sam_pw(sam_pass, pwfile))) {
return False;
}
@@ -1379,19 +1380,14 @@ static NTSTATUS smbpasswd_getsampwnam(struct pdb_methods *my_methods,
return NT_STATUS_OK;
}
-static NTSTATUS smbpasswd_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT *sam_acct, const DOM_SID *sid)
+static NTSTATUS smbpasswd_getsampwrid(struct pdb_methods *my_methods, SAM_ACCOUNT *sam_acct,uint32 rid)
{
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
struct smbpasswd_privates *smbpasswd_state = (struct smbpasswd_privates*)my_methods->private_data;
struct smb_passwd *smb_pw;
void *fp = NULL;
- fstring sid_str;
- uint32 rid;
-
- DEBUG(10, ("smbpasswd_getsampwrid: search by sid: %s\n", sid_to_string(sid_str, sid)));
- if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid))
- return NT_STATUS_UNSUCCESSFUL;
+ DEBUG(10, ("smbpasswd_getsampwrid: search by rid: %d\n", rid));
/* More special case 'guest account' hacks... */
if (rid == DOMAIN_USER_RID_GUEST) {
@@ -1435,18 +1431,18 @@ static NTSTATUS smbpasswd_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUN
if (!build_sam_account (smbpasswd_state, sam_acct, smb_pw))
return nt_status;
- /* build_sam_account might change the SID on us, if the name was for the guest account */
- if (NT_STATUS_IS_OK(nt_status) && !sid_equal(pdb_get_user_sid(sam_acct), sid)) {
- fstring sid_string1, sid_string2;
- DEBUG(1, ("looking for user with sid %s instead returned %s for account %s!?!\n",
- sid_to_string(sid_string1, sid), sid_to_string(sid_string2, pdb_get_user_sid(sam_acct)), pdb_get_username(sam_acct)));
- return NT_STATUS_NO_SUCH_USER;
- }
-
/* success */
return NT_STATUS_OK;
}
+static NTSTATUS smbpasswd_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid)
+{
+ uint32 rid;
+ if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid))
+ return NT_STATUS_UNSUCCESSFUL;
+ return smbpasswd_getsampwrid(my_methods, user, rid);
+}
+
static NTSTATUS smbpasswd_add_sam_account(struct pdb_methods *my_methods, SAM_ACCOUNT *sampass)
{
struct smbpasswd_privates *smbpasswd_state = (struct smbpasswd_privates*)my_methods->private_data;
@@ -1497,6 +1493,58 @@ static NTSTATUS smbpasswd_delete_sam_account (struct pdb_methods *my_methods, SA
return NT_STATUS_UNSUCCESSFUL;
}
+static NTSTATUS smbpasswd_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
+ DOM_SID sid, BOOL with_priv)
+{
+ return get_group_map_from_sid(sid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
+ gid_t gid, BOOL with_priv)
+{
+ return get_group_map_from_gid(gid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
+ char *name, BOOL with_priv)
+{
+ return get_group_map_from_ntname(name, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_add_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_INSERT) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_update_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_REPLACE) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_delete_group_mapping_entry(struct pdb_methods *methods,
+ DOM_SID sid)
+{
+ return group_map_remove(sid) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS smbpasswd_enum_group_mapping(struct pdb_methods *methods,
+ enum SID_NAME_USE sid_name_use,
+ GROUP_MAP **rmap, int *num_entries,
+ BOOL unix_only, BOOL with_priv)
+{
+ return enum_group_mapping(sid_name_use, rmap, num_entries, unix_only,
+ with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
static void free_private_data(void **vp)
{
struct smbpasswd_privates **privates = (struct smbpasswd_privates**)vp;
@@ -1527,6 +1575,13 @@ NTSTATUS pdb_init_smbpasswd(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method,
(*pdb_method)->add_sam_account = smbpasswd_add_sam_account;
(*pdb_method)->update_sam_account = smbpasswd_update_sam_account;
(*pdb_method)->delete_sam_account = smbpasswd_delete_sam_account;
+ (*pdb_method)->getgrsid = smbpasswd_getgrsid;
+ (*pdb_method)->getgrgid = smbpasswd_getgrgid;
+ (*pdb_method)->getgrnam = smbpasswd_getgrnam;
+ (*pdb_method)->add_group_mapping_entry = smbpasswd_add_group_mapping_entry;
+ (*pdb_method)->update_group_mapping_entry = smbpasswd_update_group_mapping_entry;
+ (*pdb_method)->delete_group_mapping_entry = smbpasswd_delete_group_mapping_entry;
+ (*pdb_method)->enum_group_mapping = smbpasswd_enum_group_mapping;
/* Setup private data and free function */
diff --git a/source3/passdb/pdb_tdb.c b/source3/passdb/pdb_tdb.c
index c48c9567b1..a1f786c8cd 100644
--- a/source3/passdb/pdb_tdb.c
+++ b/source3/passdb/pdb_tdb.c
@@ -896,6 +896,58 @@ static NTSTATUS tdbsam_add_sam_account (struct pdb_methods *my_methods, SAM_ACCO
return NT_STATUS_UNSUCCESSFUL;
}
+static NTSTATUS tdbsam_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
+ DOM_SID sid, BOOL with_priv)
+{
+ return get_group_map_from_sid(sid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
+ gid_t gid, BOOL with_priv)
+{
+ return get_group_map_from_gid(gid, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
+ char *name, BOOL with_priv)
+{
+ return get_group_map_from_ntname(name, map, with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_add_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_INSERT) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_update_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return add_mapping_entry(map, TDB_REPLACE) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_delete_group_mapping_entry(struct pdb_methods *methods,
+ DOM_SID sid)
+{
+ return group_map_remove(sid) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
+static NTSTATUS tdbsam_enum_group_mapping(struct pdb_methods *methods,
+ enum SID_NAME_USE sid_name_use,
+ GROUP_MAP **rmap, int *num_entries,
+ BOOL unix_only, BOOL with_priv)
+{
+ return enum_group_mapping(sid_name_use, rmap, num_entries, unix_only,
+ with_priv) ?
+ NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+}
+
static void free_private_data(void **vp)
{
struct tdbsam_privates **tdb_state = (struct tdbsam_privates **)vp;
@@ -933,6 +985,13 @@ NTSTATUS pdb_init_tdbsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, con
(*pdb_method)->add_sam_account = tdbsam_add_sam_account;
(*pdb_method)->update_sam_account = tdbsam_update_sam_account;
(*pdb_method)->delete_sam_account = tdbsam_delete_sam_account;
+ (*pdb_method)->getgrsid = tdbsam_getgrsid;
+ (*pdb_method)->getgrgid = tdbsam_getgrgid;
+ (*pdb_method)->getgrnam = tdbsam_getgrnam;
+ (*pdb_method)->add_group_mapping_entry = tdbsam_add_group_mapping_entry;
+ (*pdb_method)->update_group_mapping_entry = tdbsam_update_group_mapping_entry;
+ (*pdb_method)->delete_group_mapping_entry = tdbsam_delete_group_mapping_entry;
+ (*pdb_method)->enum_group_mapping = tdbsam_enum_group_mapping;
tdb_state = talloc_zero(pdb_context->mem_ctx, sizeof(struct tdbsam_privates));
diff --git a/source3/passdb/pdb_unix.c b/source3/passdb/pdb_unix.c
index 07acd08a4e..8acc29b7a4 100644
--- a/source3/passdb/pdb_unix.c
+++ b/source3/passdb/pdb_unix.c
@@ -89,6 +89,16 @@ static NTSTATUS unixsam_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT
}
/***************************************************************************
+ Adds an existing SAM_ACCOUNT
+ ****************************************************************************/
+
+static NTSTATUS unixsam_add_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *newpwd)
+{
+ DEBUG(0,("pdb_unix should not be listed as the first passdb backend! You can't add users to it.\n"));
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+/***************************************************************************
Updates a SAM_ACCOUNT
This isn't a particulary practical option for pdb_unix. We certainly don't
@@ -103,6 +113,70 @@ static NTSTATUS unixsam_update_sam_account (struct pdb_methods *methods, SAM_ACC
return methods->parent->pdb_add_sam_account(methods->parent, newpwd);
}
+static NTSTATUS unixsam_delete_sam_account (struct pdb_methods *methods, SAM_ACCOUNT *pwd)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_setsampwent(struct pdb_methods *methods, BOOL update)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT *user)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static void unixsam_endsampwent(struct pdb_methods *methods)
+{
+ return; /* NT_STATUS_NOT_IMPLEMENTED; */
+}
+
+static NTSTATUS unixsam_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
+ DOM_SID sid, BOOL with_priv)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
+ gid_t gid, BOOL with_priv)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
+ char *name, BOOL with_priv)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_add_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_update_group_mapping_entry(struct pdb_methods *methods,
+ GROUP_MAP *map)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_delete_group_mapping_entry(struct pdb_methods *methods,
+ DOM_SID sid)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS unixsam_enum_group_mapping(struct pdb_methods *methods,
+ enum SID_NAME_USE sid_name_use,
+ GROUP_MAP **rmap, int *num_entries,
+ BOOL unix_only, BOOL with_priv)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
NTSTATUS pdb_init_unixsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
{
NTSTATUS nt_status;
@@ -117,8 +191,22 @@ NTSTATUS pdb_init_unixsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, co
}
(*pdb_method)->name = "unixsam";
+
+ (*pdb_method)->setsampwent = unixsam_setsampwent;
+ (*pdb_method)->endsampwent = unixsam_endsampwent;
+ (*pdb_method)->getsampwent = unixsam_getsampwent;
(*pdb_method)->getsampwnam = unixsam_getsampwnam;
(*pdb_method)->getsampwsid = unixsam_getsampwsid;
+ (*pdb_method)->add_sam_account = unixsam_add_sam_account;
+ (*pdb_method)->update_sam_account = unixsam_update_sam_account;
+ (*pdb_method)->delete_sam_account = unixsam_delete_sam_account;
+ (*pdb_method)->getgrsid = unixsam_getgrsid;
+ (*pdb_method)->getgrgid = unixsam_getgrgid;
+ (*pdb_method)->getgrnam = unixsam_getgrnam;
+ (*pdb_method)->add_group_mapping_entry = unixsam_add_group_mapping_entry;
+ (*pdb_method)->update_group_mapping_entry = unixsam_update_group_mapping_entry;
+ (*pdb_method)->delete_group_mapping_entry = unixsam_delete_group_mapping_entry;
+ (*pdb_method)->enum_group_mapping = unixsam_enum_group_mapping;
/* There's not very much to initialise here */
return NT_STATUS_OK;
diff --git a/source3/modules/xml.c b/source3/passdb/pdb_xml.c
index ead3e3a874..edf70250e2 100644
--- a/source3/modules/xml.c
+++ b/source3/passdb/pdb_xml.c
@@ -40,6 +40,8 @@ static int xmlsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS xmlsam_debug_level
+PDB_MODULE_VERSIONING_MAGIC
+
static char * iota(int a) {
static char tmp[10];
@@ -512,7 +514,7 @@ static NTSTATUS xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT
return NT_STATUS_OK;
}
-NTSTATUS xmlsam_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
const char *location)
{
NTSTATUS nt_status;
@@ -563,13 +565,3 @@ NTSTATUS xmlsam_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module()
-{
- if(smb_register_passdb("xml", xmlsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 4c9802dd29..db08d02714 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -265,44 +265,38 @@ BOOL secrets_fetch_trust_account_password(const char *domain, uint8 ret_pwd[16],
************************************************************************/
BOOL secrets_fetch_trusted_domain_password(const char *domain, char** pwd,
- DOM_SID *sid, time_t *pass_last_set_time)
+ DOM_SID *sid, time_t *pass_last_set_time)
{
- struct trusted_dom_pass pass;
+ struct trusted_dom_pass *pass;
size_t size;
-
- /* unpacking structures */
- char* pass_buf;
- int pass_len = 0;
-
- ZERO_STRUCT(pass);
/* fetching trusted domain password structure */
- if (!(pass_buf = secrets_fetch(trustdom_keystr(domain), &size))) {
+ if (!(pass = secrets_fetch(trustdom_keystr(domain), &size))) {
DEBUG(5, ("secrets_fetch failed!\n"));
return False;
}
- /* unpack trusted domain password */
- pass_len = tdb_trusted_dom_pass_unpack(pass_buf, size, &pass);
- if (pass_len != size) {
- DEBUG(5, ("Invalid secrets size. Unpacked data doesn't match trusted_dom_pass structure.\n"));
+ if (size != sizeof(*pass)) {
+ DEBUG(0, ("secrets were of incorrect size!\n"));
return False;
}
-
+
/* the trust's password */
if (pwd) {
- *pwd = strdup(pass.pass);
+ *pwd = strdup(pass->pass);
if (!*pwd) {
return False;
}
}
/* last change time */
- if (pass_last_set_time) *pass_last_set_time = pass.mod_time;
+ if (pass_last_set_time) *pass_last_set_time = pass->mod_time;
/* domain sid */
- sid_copy(sid, &pass.domain_sid);
-
+ memcpy(&sid, &(pass->domain_sid), sizeof(sid));
+
+ SAFE_FREE(pass);
+
return True;
}
@@ -321,7 +315,7 @@ BOOL secrets_store_trust_account_password(const char *domain, uint8 new_pwd[16])
}
/**
- * Routine to store the password for trusted domain
+ * Routine to set the password for trusted domain
*
* @param domain remote domain name
* @param pwd plain text password of trust relationship
@@ -331,17 +325,12 @@ BOOL secrets_store_trust_account_password(const char *domain, uint8 new_pwd[16])
**/
BOOL secrets_store_trusted_domain_password(const char* domain, smb_ucs2_t *uni_dom_name,
- size_t uni_name_len, const char* pwd,
- DOM_SID sid)
-{
- /* packing structures */
- pstring pass_buf;
- int pass_len = 0;
- int pass_buf_len = sizeof(pass_buf);
-
+ size_t uni_name_len, const char* pwd,
+ DOM_SID sid)
+{
struct trusted_dom_pass pass;
ZERO_STRUCT(pass);
-
+
/* unicode domain name and its length */
if (!uni_dom_name)
return False;
@@ -357,11 +346,9 @@ BOOL secrets_store_trusted_domain_password(const char* domain, smb_ucs2_t *uni_d
fstrcpy(pass.pass, pwd);
/* domain sid */
- sid_copy(&pass.domain_sid, &sid);
-
- pass_len = tdb_trusted_dom_pass_pack(pass_buf, pass_buf_len, &pass);
+ memcpy(&(pass.domain_sid), &sid, sizeof(sid));
- return secrets_store(trustdom_keystr(domain), (void *)&pass_buf, pass_len);
+ return secrets_store(trustdom_keystr(domain), (void *)&pass, sizeof(pass));
}
/************************************************************************
@@ -488,10 +475,9 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
char *pattern;
unsigned int start_idx;
uint32 idx = 0;
- size_t size, packed_size = 0;
+ size_t size;
fstring dom_name;
- char *packed_pass;
- struct trusted_dom_pass *pass = talloc_zero(ctx, sizeof(struct trusted_dom_pass));
+ struct trusted_dom_pass *pass;
NTSTATUS status;
if (!secrets_init()) return NT_STATUS_ACCESS_DENIED;
@@ -519,7 +505,7 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
*/
status = NT_STATUS_NO_MORE_ENTRIES;
- /* searching for keys in secrets db -- way to go ... */
+ /* searching for keys in sectrets db -- way to go ... */
for (k = keys; k; k = k->next) {
char *secrets_key;
@@ -530,19 +516,14 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
return NT_STATUS_NO_MEMORY;
}
- packed_pass = secrets_fetch(secrets_key, &size);
- packed_size = tdb_trusted_dom_pass_unpack(packed_pass, size, pass);
-
- if (size != packed_size) {
+ pass = secrets_fetch(secrets_key, &size);
+
+ if (size != sizeof(*pass)) {
DEBUG(2, ("Secrets record %s is invalid!\n", secrets_key));
- if (size) SAFE_FREE(packed_pass);
-
- return NT_STATUS_UNSUCCESSFUL;
+ SAFE_FREE(pass);
+ continue;
}
- /* packed representation isn't needed anymore */
- SAFE_FREE(packed_pass);
-
pull_ucs2_fstring(dom_name, pass->uni_name);
DEBUG(18, ("Fetched secret record num %d.\nDomain name: %s, SID: %s\n",
idx, dom_name, sid_string_static(&pass->domain_sid)));
@@ -553,6 +534,8 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
dom = talloc_zero(ctx, sizeof(*dom));
if (!dom) {
/* free returned tdb record */
+ SAFE_FREE(pass);
+
return NT_STATUS_NO_MEMORY;
}
@@ -586,7 +569,10 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
start_idx, max_num_domains));
}
- idx++;
+ idx++;
+
+ /* free returned tdb record */
+ SAFE_FREE(pass);
}
DEBUG(5, ("secrets_get_trusted_domains: got %d domains\n", *num_domains));
@@ -609,9 +595,9 @@ BOOL secrets_named_mutex(const char *name, unsigned int timeout)
if (!message_init())
return False;
- ret = tdb_lock_bystring(tdb, name, timeout);
- if (ret == 0)
- DEBUG(10,("secrets_named_mutex: got mutex for %s\n", name ));
+ ret = tdb_lock_bystring(tdb, name, timeout);
+ if (ret == 0)
+ DEBUG(10,("secrets_named_mutex: got mutex for %s\n", name ));
return (ret == 0);
}
@@ -622,8 +608,8 @@ BOOL secrets_named_mutex(const char *name, unsigned int timeout)
void secrets_named_mutex_release(const char *name)
{
- tdb_unlock_bystring(tdb, name);
- DEBUG(10,("secrets_named_mutex: released mutex for %s\n", name ));
+ tdb_unlock_bystring(tdb, name);
+ DEBUG(10,("secrets_named_mutex: released mutex for %s\n", name ));
}
/*********************************************************
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index a486fb9c00..3f5bf55534 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -2110,7 +2110,7 @@ done:
NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename)
{
- char adevice[MAXDEVICENAME];
+ char adevice[MAXDEVICENAME+1];
NT_DEVICEMODE *nt_devmode = (NT_DEVICEMODE *)malloc(sizeof(NT_DEVICEMODE));
if (nt_devmode == NULL) {
diff --git a/source3/python/py_spoolss_printers.c b/source3/python/py_spoolss_printers.c
index d011681acc..929442ab67 100644
--- a/source3/python/py_spoolss_printers.c
+++ b/source3/python/py_spoolss_printers.c
@@ -173,6 +173,22 @@ PyObject *spoolss_hnd_getprinter(PyObject *self, PyObject *args, PyObject *kw)
case 3:
py_from_PRINTER_INFO_3(&result, ctr.printers_3);
break;
+
+ /* These info levels are supported by NT4 and higher
+ but don't seem to be used by any clients we know of. */
+
+ case 4:
+ case 5:
+ case 6:
+ break;
+
+ /* These info levels are only supported by Windows 2000
+ and higher. */
+
+ case 7:
+ case 8:
+ case 9:
+ break;
}
Py_INCREF(result);
diff --git a/source3/rpc_client/cli_lsarpc.c b/source3/rpc_client/cli_lsarpc.c
index 9002ad3d1b..db873236e4 100644
--- a/source3/rpc_client/cli_lsarpc.c
+++ b/source3/rpc_client/cli_lsarpc.c
@@ -1164,7 +1164,7 @@ NTSTATUS cli_lsa_enum_account_rights(struct cli_state *cli, TALLOC_CTX *mem_ctx,
LSA_Q_ENUM_ACCT_RIGHTS q;
LSA_R_ENUM_ACCT_RIGHTS r;
NTSTATUS result;
- unsigned int i;
+ int i;
ZERO_STRUCT(q);
ZERO_STRUCT(r);
@@ -1199,7 +1199,7 @@ NTSTATUS cli_lsa_enum_account_rights(struct cli_state *cli, TALLOC_CTX *mem_ctx,
*privs_name = (char **)talloc(mem_ctx, (*count) * sizeof(char **));
for (i=0;i<*count;i++) {
- (*privs_name)[i] = unistr2_tdup(mem_ctx, &r.rights.strings[i].string);
+ pull_ucs2_talloc(mem_ctx, &(*privs_name)[i], r.rights.strings[i].string.buffer);
}
done:
@@ -1293,58 +1293,6 @@ done:
}
-/* list account SIDs that have the specified right */
-
-NTSTATUS cli_lsa_enum_account_with_right(struct cli_state *cli, TALLOC_CTX *mem_ctx,
- POLICY_HND *pol, const char *right,
- uint32 *count, DOM_SID **sids)
-{
- prs_struct qbuf, rbuf;
- LSA_Q_ENUM_ACCT_WITH_RIGHT q;
- LSA_R_ENUM_ACCT_WITH_RIGHT r;
- NTSTATUS result;
-
- ZERO_STRUCT(q);
-
- /* Initialise parse structures */
- prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
- prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
-
- /* Marshall data and send request */
- init_q_enum_acct_with_right(&q, pol, right);
-
- if (!lsa_io_q_enum_acct_with_right("", &q, &qbuf, 0) ||
- !rpc_api_pipe_req(cli, LSA_ENUMACCTWITHRIGHT, &qbuf, &rbuf)) {
- result = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- /* Unmarshall response */
-
- if (!lsa_io_r_enum_acct_with_right("", &r, &rbuf, 0)) {
- result = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- *count = r.count;
-
- if (!NT_STATUS_IS_OK(result = r.status)) {
- goto done;
- }
-
- if (*count) {
- int i;
- (*sids) = (DOM_SID *)talloc(mem_ctx, sizeof(DOM_SID) * (*count));
- for (i=0; i<*count; i++) {
- sid_copy(&(*sids)[i], &r.sids.sids[i].sid.sid);
- }
- }
-done:
-
- return result;
-}
-
-
#if 0
/** An example of how to use the routines in this file. Fetch a DOMAIN
diff --git a/source3/rpc_parse/parse_lsa.c b/source3/rpc_parse/parse_lsa.c
index fc9999dc4d..0b45c0baf3 100644
--- a/source3/rpc_parse/parse_lsa.c
+++ b/source3/rpc_parse/parse_lsa.c
@@ -2219,21 +2219,18 @@ BOOL lsa_io_r_query_info2(const char *desc, LSA_R_QUERY_INFO2 *r_c,
if(!prs_uint32("ptr", ps, depth, &r_c->ptr))
return False;
-
- if (r_c->ptr != 0) {
- if(!prs_uint16("info_class", ps, depth, &r_c->info_class))
+ if(!prs_uint16("info_class", ps, depth, &r_c->info_class))
+ return False;
+ switch(r_c->info_class) {
+ case 0x000c:
+ if (!lsa_io_dns_dom_info("info12", &r_c->info.dns_dom_info,
+ ps, depth))
return False;
- switch(r_c->info_class) {
- case 0x000c:
- if (!lsa_io_dns_dom_info("info12", &r_c->info.dns_dom_info,
- ps, depth))
- return False;
break;
- default:
- DEBUG(0,("lsa_io_r_query_info2: unknown info class %d\n",
- r_c->info_class));
- return False;
- }
+ default:
+ DEBUG(0,("lsa_io_r_query_info2: unknown info class %d\n",
+ r_c->info_class));
+ return False;
}
if(!prs_align(ps))
@@ -2304,19 +2301,6 @@ BOOL lsa_io_r_enum_acct_rights(const char *desc, LSA_R_ENUM_ACCT_RIGHTS *r_c, pr
return True;
}
-/*******************************************************************
- Inits an LSA_R_ENUM_ACCT_RIGHTS structure.
-********************************************************************/
-void init_r_enum_acct_rights(LSA_R_ENUM_ACCT_RIGHTS *q_r,
- uint32 count,
- const char **rights)
-{
- DEBUG(5, ("init_r_enum_acct_rights\n"));
-
- q_r->count = count;
- init_unistr2_array(&q_r->rights, count, rights);
-}
-
/*******************************************************************
Inits an LSA_Q_ADD_ACCT_RIGHTS structure.
@@ -2332,6 +2316,7 @@ void init_q_add_acct_rights(LSA_Q_ADD_ACCT_RIGHTS *q_q,
q_q->pol = *hnd;
init_dom_sid2(&q_q->sid, sid);
init_unistr2_array(&q_q->rights, count, rights);
+ q_q->count = 5;
}
@@ -2372,15 +2357,6 @@ BOOL lsa_io_r_add_acct_rights(const char *desc, LSA_R_ADD_ACCT_RIGHTS *r_c, prs_
return True;
}
-/*******************************************************************
- Inits an LSA_R_ADD_ACCT_RIGHTS structure.
-********************************************************************/
-void init_r_add_acct_rights(LSA_R_ADD_ACCT_RIGHTS *q_r)
-{
- DEBUG(5, ("init_r_add_acct_rights\n"));
- /* oh what a silly function! */
-}
-
/*******************************************************************
Inits an LSA_Q_REMOVE_ACCT_RIGHTS structure.
@@ -2398,6 +2374,7 @@ void init_q_remove_acct_rights(LSA_Q_REMOVE_ACCT_RIGHTS *q_q,
init_dom_sid2(&q_q->sid, sid);
q_q->removeall = removeall;
init_unistr2_array(&q_q->rights, count, rights);
+ q_q->count = 5;
}
@@ -2428,7 +2405,7 @@ BOOL lsa_io_q_remove_acct_rights(const char *desc, LSA_Q_REMOVE_ACCT_RIGHTS *q_q
}
/*******************************************************************
-reads or writes a LSA_R_REMOVE_ACCT_RIGHTS structure.
+reads or writes a LSA_R_ENUM_ACCT_RIGHTS structure.
********************************************************************/
BOOL lsa_io_r_remove_acct_rights(const char *desc, LSA_R_REMOVE_ACCT_RIGHTS *r_c, prs_struct *ps, int depth)
{
@@ -2440,89 +2417,3 @@ BOOL lsa_io_r_remove_acct_rights(const char *desc, LSA_R_REMOVE_ACCT_RIGHTS *r_c
return True;
}
-
-/*******************************************************************
- Inits an LSA_R_REMOVE_ACCT_RIGHTS structure.
-********************************************************************/
-void init_r_remove_acct_rights(LSA_R_REMOVE_ACCT_RIGHTS *q_r)
-{
- DEBUG(5, ("init_r_remove_acct_rights\n"));
-}
-
-/*******************************************************************
- Inits an LSA_Q_ENUM_ACCT_WITH_RIGHT structure.
-********************************************************************/
-void init_q_enum_acct_with_right(LSA_Q_ENUM_ACCT_WITH_RIGHT *q_q,
- POLICY_HND *hnd,
- const char *right)
-{
- DEBUG(5, ("init_q_enum_acct_with_right\n"));
-
- q_q->pol = *hnd;
- init_unistr2(&q_q->right, right, strlen(right));
- init_str_hdr(&q_q->right_hdr,
- q_q->right.uni_max_len*2,
- q_q->right.uni_max_len*2, right?1:0);
-}
-
-
-/*******************************************************************
-reads or writes a LSA_Q_ENUM_ACCT_WITH_RIGHT structure.
-********************************************************************/
-BOOL lsa_io_q_enum_acct_with_right(const char *desc, LSA_Q_ENUM_ACCT_WITH_RIGHT *q_q, prs_struct *ps, int depth)
-{
- prs_debug(ps, depth, desc, "lsa_io_q_enum_acct_with_right");
- depth++;
-
- if (!smb_io_pol_hnd("", &q_q->pol, ps, depth))
- return False;
-
- if (!prs_uint32("ref_id ", ps, depth, &q_q->right_hdr.buffer))
- return False;
-
- if (UNMARSHALLING(ps) && q_q->right_hdr.buffer == 0) {
- return True;
- }
-
- if (!smb_io_strhdr("", &q_q->right_hdr, ps, depth))
- return False;
-
- if (!smb_io_unistr2("", &q_q->right, q_q->right_hdr.buffer, ps, depth))
- return False;
-
- return True;
-}
-
-
-/*******************************************************************
-reads or writes a LSA_R_ENUM_ACCT_WITH_RIGHT structure.
-********************************************************************/
-BOOL lsa_io_r_enum_acct_with_right(const char *desc, LSA_R_ENUM_ACCT_WITH_RIGHT *r_c, prs_struct *ps, int depth)
-{
- prs_debug(ps, depth, desc, "lsa_io_r_enum_acct_with_right");
- depth++;
-
- if (!prs_uint32("count ", ps, depth, &r_c->count))
- return False;
-
- if (!smb_io_sid_array("sids ", &r_c->sids, ps, depth))
- return False;
-
- if(!prs_ntstatus("status", ps, depth, &r_c->status))
- return False;
-
- return True;
-}
-
-/*******************************************************************
- Inits an LSA_R_ENUM_ACCT_WITH_RIGHT structure.
-********************************************************************/
-void init_r_enum_acct_with_right(LSA_R_ENUM_ACCT_WITH_RIGHT *r_c,
- uint32 count,
- DOM_SID *sids)
-{
- DEBUG(5, ("init_r_enum_acct_with_right\n"));
-
- r_c->count = count;
- init_sid_array(&r_c->sids, count, sids);
-}
diff --git a/source3/rpc_parse/parse_misc.c b/source3/rpc_parse/parse_misc.c
index b7b0e9346b..f0d4c67d9f 100644
--- a/source3/rpc_parse/parse_misc.c
+++ b/source3/rpc_parse/parse_misc.c
@@ -1122,78 +1122,6 @@ BOOL smb_io_unistr2_array(const char *desc, UNISTR2_ARRAY *array, prs_struct *ps
}
-/*
- initialise a SID_ARRAY from a list of sids
-*/
-BOOL init_sid_array(SID_ARRAY *array,
- uint32 count, DOM_SID *sids)
-{
- unsigned int i;
-
- array->count = count;
- array->ref_id = count?1:0;
- if (array->count == 0) {
- return True;
- }
-
- array->sids = (SID_ARRAY_EL *)talloc_zero(get_talloc_ctx(), count * sizeof(SID_ARRAY_EL));
- if (!array->sids) {
- return False;
- }
-
- for (i=0;i<count;i++) {
- array->sids[i].ref_id = 1;
- init_dom_sid2(&array->sids[i].sid, &sids[i]);
- }
-
- return True;
-}
-
-
-/*******************************************************************
- Reads or writes a SID_ARRAY structure.
-********************************************************************/
-BOOL smb_io_sid_array(const char *desc, SID_ARRAY *array, prs_struct *ps, int depth)
-{
- unsigned int i;
-
- prs_debug(ps, depth, desc, "smb_io_sid_array");
- depth++;
-
- if(!prs_uint32("ref_id", ps, depth, &array->ref_id))
- return False;
-
- if (! array->ref_id) {
- return True;
- }
-
- if(!prs_uint32("count", ps, depth, &array->count))
- return False;
-
- if (array->count == 0) {
- return True;
- }
-
- if (UNMARSHALLING(ps)) {
- array->sids = talloc_zero(get_talloc_ctx(), array->count * sizeof(array->sids[0]));
- }
- if (! array->sids) {
- return False;
- }
-
- for (i=0;i<array->count;i++) {
- if(!prs_uint32("ref_id", ps, depth, &array->sids[i].ref_id))
- return False;
- }
-
- for (i=0;i<array->count;i++) {
- if (!smb_io_dom_sid2("sid", &array->sids[i].sid, ps, depth))
- return False;
- }
-
- return True;
-}
-
/*******************************************************************
Inits a DOM_RID2 structure.
********************************************************************/
diff --git a/source3/rpc_parse/parse_net.c b/source3/rpc_parse/parse_net.c
index a660084250..163e6bab3c 100644
--- a/source3/rpc_parse/parse_net.c
+++ b/source3/rpc_parse/parse_net.c
@@ -1808,9 +1808,9 @@ static BOOL net_io_sam_domain_info(const char *desc, SAM_DOMAIN_INFO * info,
if (!smb_io_unihdr("hdr_unknown", &info->hdr_unknown, ps, depth))
return False;
- if (prs_offset(ps) + 40 > prs_data_size(ps))
+ if (ps->data_offset + 40 > ps->buffer_size)
return False;
- prs_set_offset(ps, prs_offset(ps) + 40);
+ ps->data_offset += 40;
if (!smb_io_unistr2("uni_dom_name", &info->uni_dom_name,
info->hdr_dom_name.buffer, ps, depth))
@@ -1847,9 +1847,9 @@ static BOOL net_io_sam_group_info(const char *desc, SAM_GROUP_INFO * info,
if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth))
return False;
- if (prs_offset(ps) + 48 > prs_data_size(ps))
+ if (ps->data_offset + 48 > ps->buffer_size)
return False;
- prs_set_offset(ps, prs_offset(ps) + 48);
+ ps->data_offset += 48;
if (!smb_io_unistr2("uni_grp_name", &info->uni_grp_name,
info->hdr_grp_name.buffer, ps, depth))
@@ -2128,13 +2128,13 @@ static BOOL net_io_sam_account_info(const char *desc, uint8 sess_key[16],
uint32 len = 0x44;
if (!prs_uint32("pwd_len", ps, depth, &len))
return False;
- old_offset = prs_offset(ps);
+ old_offset = ps->data_offset;
if (len == 0x44)
{
if (ps->io)
{
/* reading */
- if (!prs_hash1(ps, prs_offset(ps), sess_key))
+ if (!prs_hash1(ps, ps->data_offset, sess_key))
return False;
}
if (!net_io_sam_passwd_info("pass", &info->pass,
@@ -2148,9 +2148,9 @@ static BOOL net_io_sam_account_info(const char *desc, uint8 sess_key[16],
return False;
}
}
- if (old_offset + len > prs_data_size(ps))
+ if (old_offset + len > ps->buffer_size)
return False;
- prs_set_offset(ps, old_offset + len);
+ ps->data_offset = old_offset + len;
}
if (!smb_io_buffer4("buf_sec_desc", &info->buf_sec_desc,
info->hdr_sec_desc.buffer, ps, depth))
@@ -2185,9 +2185,9 @@ static BOOL net_io_sam_group_mem_info(const char *desc, SAM_GROUP_MEM_INFO * inf
if (!prs_uint32("num_members", ps, depth, &info->num_members))
return False;
- if (prs_offset(ps) + 16 > prs_data_size(ps))
+ if (ps->data_offset + 16 > ps->buffer_size)
return False;
- prs_set_offset(ps, prs_offset(ps) + 16);
+ ps->data_offset += 16;
if (info->ptr_rids != 0)
{
@@ -2267,9 +2267,9 @@ static BOOL net_io_sam_alias_info(const char *desc, SAM_ALIAS_INFO * info,
if (!smb_io_unihdr("hdr_als_desc", &info->hdr_als_desc, ps, depth))
return False;
- if (prs_offset(ps) + 40 > prs_data_size(ps))
+ if (ps->data_offset + 40 > ps->buffer_size)
return False;
- prs_set_offset(ps, prs_offset(ps) + 40);
+ ps->data_offset += 40;
if (!smb_io_unistr2("uni_als_name", &info->uni_als_name,
info->hdr_als_name.buffer, ps, depth))
@@ -2304,9 +2304,9 @@ static BOOL net_io_sam_alias_mem_info(const char *desc, SAM_ALIAS_MEM_INFO * inf
if (info->ptr_members != 0)
{
- if (prs_offset(ps) + 16 > prs_data_size(ps))
+ if (ps->data_offset + 16 > ps->buffer_size)
return False;
- prs_set_offset(ps, prs_offset(ps) + 16);
+ ps->data_offset += 16;
if (!prs_uint32("num_sids", ps, depth, &info->num_sids))
return False;
diff --git a/source3/rpc_parse/parse_sec.c b/source3/rpc_parse/parse_sec.c
index 081173cf8d..47300e083a 100644
--- a/source3/rpc_parse/parse_sec.c
+++ b/source3/rpc_parse/parse_sec.c
@@ -570,6 +570,24 @@ SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BU
}
/*******************************************************************
+ Tallocs a duplicate SID.
+********************************************************************/
+
+static DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, DOM_SID *src)
+{
+ DOM_SID *dst;
+
+ if(!src)
+ return NULL;
+
+ if((dst = talloc_zero(ctx, sizeof(DOM_SID))) != NULL) {
+ sid_copy( dst, src);
+ }
+
+ return dst;
+}
+
+/*******************************************************************
Creates a SEC_DESC structure
********************************************************************/
diff --git a/source3/rpc_server/srv_dfs.c b/source3/rpc_server/srv_dfs.c
index 14c1cb4088..f6e9ca3d56 100644
--- a/source3/rpc_server/srv_dfs.c
+++ b/source3/rpc_server/srv_dfs.c
@@ -159,7 +159,7 @@ static BOOL api_dfs_enum(pipes_struct *p)
********************************************************************/
#ifdef RPC_DFS_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_dfs_init(void)
#endif
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index 0e4039326b..11388a00b1 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -642,168 +642,38 @@ static BOOL api_lsa_query_info2(pipes_struct *p)
}
-
-/***************************************************************************
- api_lsa_enum_acctrights
- ***************************************************************************/
-static BOOL api_lsa_enum_acct_rights(pipes_struct *p)
-{
- LSA_Q_ENUM_ACCT_RIGHTS q_u;
- LSA_R_ENUM_ACCT_RIGHTS r_u;
-
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- if(!lsa_io_q_enum_acct_rights("", &q_u, data, 0)) {
- DEBUG(0,("api_lsa_enum_acct_rights: failed to unmarshall LSA_Q_ENUM_ACCT_RIGHTS.\n"));
- return False;
- }
-
- r_u.status = _lsa_enum_acct_rights(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!lsa_io_r_enum_acct_rights("", &r_u, rdata, 0)) {
- DEBUG(0,("api_lsa_enum_acct_rights: Failed to marshall LSA_R_ENUM_ACCT_RIGHTS.\n"));
- return False;
- }
-
- return True;
-}
-
-
-/***************************************************************************
- api_lsa_enum_acct_with_right
- ***************************************************************************/
-static BOOL api_lsa_enum_acct_with_right(pipes_struct *p)
-{
- LSA_Q_ENUM_ACCT_WITH_RIGHT q_u;
- LSA_R_ENUM_ACCT_WITH_RIGHT r_u;
-
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- if(!lsa_io_q_enum_acct_with_right("", &q_u, data, 0)) {
- DEBUG(0,("api_lsa_enum_acct_with_right: failed to unmarshall LSA_Q_ENUM_ACCT_WITH_RIGHT.\n"));
- return False;
- }
-
- r_u.status = _lsa_enum_acct_with_right(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!lsa_io_r_enum_acct_with_right("", &r_u, rdata, 0)) {
- DEBUG(0,("api_lsa_enum_acct_with_right: Failed to marshall LSA_R_ENUM_ACCT_WITH_RIGHT.\n"));
- return False;
- }
-
- return True;
-}
-
-
-/***************************************************************************
- api_lsa_add_acctrights
- ***************************************************************************/
-static BOOL api_lsa_add_acct_rights(pipes_struct *p)
-{
- LSA_Q_ADD_ACCT_RIGHTS q_u;
- LSA_R_ADD_ACCT_RIGHTS r_u;
-
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- if(!lsa_io_q_add_acct_rights("", &q_u, data, 0)) {
- DEBUG(0,("api_lsa_add_acct_rights: failed to unmarshall LSA_Q_ADD_ACCT_RIGHTS.\n"));
- return False;
- }
-
- r_u.status = _lsa_add_acct_rights(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!lsa_io_r_add_acct_rights("", &r_u, rdata, 0)) {
- DEBUG(0,("api_lsa_add_acct_rights: Failed to marshall LSA_R_ADD_ACCT_RIGHTS.\n"));
- return False;
- }
-
- return True;
-}
-
-
-/***************************************************************************
- api_lsa_remove_acctrights
- ***************************************************************************/
-static BOOL api_lsa_remove_acct_rights(pipes_struct *p)
-{
- LSA_Q_REMOVE_ACCT_RIGHTS q_u;
- LSA_R_REMOVE_ACCT_RIGHTS r_u;
-
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- if(!lsa_io_q_remove_acct_rights("", &q_u, data, 0)) {
- DEBUG(0,("api_lsa_remove_acct_rights: failed to unmarshall LSA_Q_REMOVE_ACCT_RIGHTS.\n"));
- return False;
- }
-
- r_u.status = _lsa_remove_acct_rights(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!lsa_io_r_remove_acct_rights("", &r_u, rdata, 0)) {
- DEBUG(0,("api_lsa_remove_acct_rights: Failed to marshall LSA_R_REMOVE_ACCT_RIGHTS.\n"));
- return False;
- }
-
- return True;
-}
-
-
/***************************************************************************
\PIPE\ntlsa commands
***************************************************************************/
-
#ifdef RPC_LSA_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_lsa_init(void)
#endif
{
- static const struct api_struct api_lsa_cmds[] =
- {
- { "LSA_OPENPOLICY2" , LSA_OPENPOLICY2 , api_lsa_open_policy2 },
- { "LSA_OPENPOLICY" , LSA_OPENPOLICY , api_lsa_open_policy },
- { "LSA_QUERYINFOPOLICY" , LSA_QUERYINFOPOLICY , api_lsa_query_info },
- { "LSA_ENUMTRUSTDOM" , LSA_ENUMTRUSTDOM , api_lsa_enum_trust_dom },
- { "LSA_CLOSE" , LSA_CLOSE , api_lsa_close },
- { "LSA_OPENSECRET" , LSA_OPENSECRET , api_lsa_open_secret },
- { "LSA_LOOKUPSIDS" , LSA_LOOKUPSIDS , api_lsa_lookup_sids },
- { "LSA_LOOKUPNAMES" , LSA_LOOKUPNAMES , api_lsa_lookup_names },
- { "LSA_ENUM_PRIVS" , LSA_ENUM_PRIVS , api_lsa_enum_privs },
- { "LSA_PRIV_GET_DISPNAME",LSA_PRIV_GET_DISPNAME,api_lsa_priv_get_dispname},
- { "LSA_ENUM_ACCOUNTS" , LSA_ENUM_ACCOUNTS , api_lsa_enum_accounts },
- { "LSA_UNK_GET_CONNUSER", LSA_UNK_GET_CONNUSER, api_lsa_unk_get_connuser },
- { "LSA_OPENACCOUNT" , LSA_OPENACCOUNT , api_lsa_open_account },
- { "LSA_ENUMPRIVSACCOUNT", LSA_ENUMPRIVSACCOUNT, api_lsa_enum_privsaccount},
- { "LSA_GETSYSTEMACCOUNT", LSA_GETSYSTEMACCOUNT, api_lsa_getsystemaccount },
- { "LSA_SETSYSTEMACCOUNT", LSA_SETSYSTEMACCOUNT, api_lsa_setsystemaccount },
- { "LSA_ADDPRIVS" , LSA_ADDPRIVS , api_lsa_addprivs },
- { "LSA_REMOVEPRIVS" , LSA_REMOVEPRIVS , api_lsa_removeprivs },
- { "LSA_QUERYSECOBJ" , LSA_QUERYSECOBJ , api_lsa_query_secobj },
- { "LSA_QUERYINFO2" , LSA_QUERYINFO2 , api_lsa_query_info2 },
- { "LSA_ENUMACCTRIGHTS" , LSA_ENUMACCTRIGHTS , api_lsa_enum_acct_rights },
- { "LSA_ENUMACCTWITHRIGHT", LSA_ENUMACCTWITHRIGHT, api_lsa_enum_acct_with_right },
- { "LSA_ADDACCTRIGHTS" , LSA_ADDACCTRIGHTS , api_lsa_add_acct_rights },
- { "LSA_REMOVEACCTRIGHTS", LSA_REMOVEACCTRIGHTS, api_lsa_remove_acct_rights},
- };
+static const struct api_struct api_lsa_cmds[] =
+{
+ { "LSA_OPENPOLICY2" , LSA_OPENPOLICY2 , api_lsa_open_policy2 },
+ { "LSA_OPENPOLICY" , LSA_OPENPOLICY , api_lsa_open_policy },
+ { "LSA_QUERYINFOPOLICY" , LSA_QUERYINFOPOLICY , api_lsa_query_info },
+ { "LSA_ENUMTRUSTDOM" , LSA_ENUMTRUSTDOM , api_lsa_enum_trust_dom },
+ { "LSA_CLOSE" , LSA_CLOSE , api_lsa_close },
+ { "LSA_OPENSECRET" , LSA_OPENSECRET , api_lsa_open_secret },
+ { "LSA_LOOKUPSIDS" , LSA_LOOKUPSIDS , api_lsa_lookup_sids },
+ { "LSA_LOOKUPNAMES" , LSA_LOOKUPNAMES , api_lsa_lookup_names },
+ { "LSA_ENUM_PRIVS" , LSA_ENUM_PRIVS , api_lsa_enum_privs },
+ { "LSA_PRIV_GET_DISPNAME",LSA_PRIV_GET_DISPNAME,api_lsa_priv_get_dispname},
+ { "LSA_ENUM_ACCOUNTS" , LSA_ENUM_ACCOUNTS , api_lsa_enum_accounts },
+ { "LSA_UNK_GET_CONNUSER", LSA_UNK_GET_CONNUSER, api_lsa_unk_get_connuser },
+ { "LSA_OPENACCOUNT" , LSA_OPENACCOUNT , api_lsa_open_account },
+ { "LSA_ENUMPRIVSACCOUNT", LSA_ENUMPRIVSACCOUNT, api_lsa_enum_privsaccount},
+ { "LSA_GETSYSTEMACCOUNT", LSA_GETSYSTEMACCOUNT, api_lsa_getsystemaccount },
+ { "LSA_SETSYSTEMACCOUNT", LSA_SETSYSTEMACCOUNT, api_lsa_setsystemaccount },
+ { "LSA_ADDPRIVS" , LSA_ADDPRIVS , api_lsa_addprivs },
+ { "LSA_REMOVEPRIVS" , LSA_REMOVEPRIVS , api_lsa_removeprivs },
+ { "LSA_QUERYSECOBJ" , LSA_QUERYSECOBJ , api_lsa_query_secobj },
+ { "LSA_QUERYINFO2" , LSA_QUERYINFO2 , api_lsa_query_info2 }
+};
return rpc_pipe_register_commands("lsarpc", "lsass", api_lsa_cmds,
sizeof(api_lsa_cmds) / sizeof(struct api_struct));
diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index fb6538db39..10c583b70d 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -645,7 +645,7 @@ NTSTATUS _lsa_lookup_sids(pipes_struct *p, LSA_Q_LOOKUP_SIDS *q_u, LSA_R_LOOKUP_
num_entries = MAX_LOOKUP_SIDS;
DEBUG(5,("_lsa_lookup_sids: truncating SID lookup list to %d\n", num_entries));
}
-
+
ref = (DOM_R_REF *)talloc_zero(p->mem_ctx, sizeof(DOM_R_REF));
names = (LSA_TRANS_NAME_ENUM *)talloc_zero(p->mem_ctx, sizeof(LSA_TRANS_NAME_ENUM));
@@ -1265,140 +1265,3 @@ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_I
return r_u->status;
}
-
-
-/***************************************************************************
- For a given SID, enumerate all the privilege this account has.
- ***************************************************************************/
-NTSTATUS _lsa_enum_acct_rights(pipes_struct *p, LSA_Q_ENUM_ACCT_RIGHTS *q_u, LSA_R_ENUM_ACCT_RIGHTS *r_u)
-{
- struct lsa_info *info=NULL;
- char **rights = NULL;
- int num_rights = 0;
- int i;
-
- r_u->status = NT_STATUS_OK;
-
- /* find the connection policy handle. */
- if (!find_policy_by_hnd(p, &q_u->pol, (void **)&info))
- return NT_STATUS_INVALID_HANDLE;
-
- r_u->status = privilege_enum_account_rights(&q_u->sid.sid, &num_rights, &rights);
-
- init_r_enum_acct_rights(r_u, num_rights, (const char **)rights);
-
- for (i=0;i<num_rights;i++) {
- free(rights[i]);
- }
- safe_free(rights);
-
- return r_u->status;
-}
-
-/***************************************************************************
-return a list of SIDs for a particular privilege
- ***************************************************************************/
-NTSTATUS _lsa_enum_acct_with_right(pipes_struct *p,
- LSA_Q_ENUM_ACCT_WITH_RIGHT *q_u,
- LSA_R_ENUM_ACCT_WITH_RIGHT *r_u)
-{
- struct lsa_info *info=NULL;
- char *right;
- DOM_SID *sids = NULL;
- uint32 count = 0;
-
- r_u->status = NT_STATUS_OK;
-
- /* find the connection policy handle. */
- if (!find_policy_by_hnd(p, &q_u->pol, (void **)&info))
- return NT_STATUS_INVALID_HANDLE;
-
- right = unistr2_tdup(p->mem_ctx, &q_u->right);
-
- DEBUG(5,("lsa_enum_acct_with_right on right %s\n", right));
-
- r_u->status = privilege_enum_account_with_right(right, &count, &sids);
-
- init_r_enum_acct_with_right(r_u, count, sids);
-
- safe_free(sids);
-
- return r_u->status;
-}
-
-/***************************************************************************
- add privileges to a acct by SID
- ***************************************************************************/
-NTSTATUS _lsa_add_acct_rights(pipes_struct *p, LSA_Q_ADD_ACCT_RIGHTS *q_u, LSA_R_ADD_ACCT_RIGHTS *r_u)
-{
- struct lsa_info *info=NULL;
- int i;
-
- r_u->status = NT_STATUS_OK;
-
- /* find the connection policy handle. */
- if (!find_policy_by_hnd(p, &q_u->pol, (void **)&info))
- return NT_STATUS_INVALID_HANDLE;
-
- DEBUG(5,("_lsa_add_acct_rights to %s (%d rights)\n",
- sid_string_static(&q_u->sid.sid), q_u->rights.count));
-
- for (i=0;i<q_u->rights.count;i++) {
- DEBUG(5,("\t%s\n", unistr2_static(&q_u->rights.strings[i].string)));
- }
-
-
- for (i=0;i<q_u->rights.count;i++) {
- r_u->status = privilege_add_account_right(unistr2_static(&q_u->rights.strings[i].string),
- &q_u->sid.sid);
- if (!NT_STATUS_IS_OK(r_u->status)) {
- DEBUG(2,("Failed to add right '%s'\n",
- unistr2_static(&q_u->rights.strings[i].string)));
- break;
- }
- }
-
- init_r_add_acct_rights(r_u);
-
- return r_u->status;
-}
-
-
-/***************************************************************************
- remove privileges from a acct by SID
- ***************************************************************************/
-NTSTATUS _lsa_remove_acct_rights(pipes_struct *p, LSA_Q_REMOVE_ACCT_RIGHTS *q_u, LSA_R_REMOVE_ACCT_RIGHTS *r_u)
-{
- struct lsa_info *info=NULL;
- int i;
-
- r_u->status = NT_STATUS_OK;
-
- /* find the connection policy handle. */
- if (!find_policy_by_hnd(p, &q_u->pol, (void **)&info))
- return NT_STATUS_INVALID_HANDLE;
-
-
- DEBUG(5,("_lsa_remove_acct_rights from %s all=%d (%d rights)\n",
- sid_string_static(&q_u->sid.sid),
- q_u->removeall,
- q_u->rights.count));
-
- for (i=0;i<q_u->rights.count;i++) {
- DEBUG(5,("\t%s\n", unistr2_static(&q_u->rights.strings[i].string)));
- }
-
- for (i=0;i<q_u->rights.count;i++) {
- r_u->status = privilege_remove_account_right(unistr2_static(&q_u->rights.strings[i].string),
- &q_u->sid.sid);
- if (!NT_STATUS_IS_OK(r_u->status)) {
- DEBUG(2,("Failed to remove right '%s'\n",
- unistr2_static(&q_u->rights.strings[i].string)));
- break;
- }
- }
-
- init_r_remove_acct_rights(r_u);
-
- return r_u->status;
-}
diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c
index c9e4fc1b1f..f377d3952b 100644
--- a/source3/rpc_server/srv_netlog.c
+++ b/source3/rpc_server/srv_netlog.c
@@ -322,7 +322,7 @@ static BOOL api_net_logon_ctrl(pipes_struct *p)
********************************************************************/
#ifdef RPC_NETLOG_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_net_init(void)
#endif
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
index f6deac68f8..588d6644b1 100644
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -796,21 +796,40 @@ int rpc_pipe_register_commands(const char *clnt, const char *srv, const struct a
*******************************************************************/
int rpc_load_module(const char *module)
{
+#ifdef HAVE_DLOPEN
+ void *handle;
+ int (*module_init)(void);
pstring full_path;
- int status;
+ const char *error;
pstrcpy(full_path, lib_path("rpc"));
pstrcat(full_path, "/librpc_");
pstrcat(full_path, module);
pstrcat(full_path, ".");
pstrcat(full_path, shlib_ext());
-
- if (!(status = smb_load_module(full_path))) {
+
+ handle = sys_dlopen(full_path, RTLD_LAZY);
+ if (!handle) {
DEBUG(0, ("Could not load requested pipe %s as %s\n",
module, full_path));
+ DEBUG(0, (" Error: %s\n", dlerror()));
+ return 0;
}
- return status;
+ DEBUG(3, ("Module '%s' loaded\n", full_path));
+
+ module_init = sys_dlsym(handle, "rpc_pipe_init");
+ if ((error = sys_dlerror()) != NULL) {
+ DEBUG(0, ("Error trying to resolve symbol 'rpc_pipe_init' in %s: %s\n",
+ full_path, error));
+ return 0;
+ }
+
+ return module_init();
+#else
+ DEBUG(0,("Attempting to load a dynamic RPC pipe when dlopen isn't available\n"));
+ return 0;
+#endif
}
/*******************************************************************
diff --git a/source3/rpc_server/srv_reg.c b/source3/rpc_server/srv_reg.c
index 8fc1d42b2f..04960f8e3a 100644
--- a/source3/rpc_server/srv_reg.c
+++ b/source3/rpc_server/srv_reg.c
@@ -374,7 +374,7 @@ static BOOL api_reg_save_key(pipes_struct *p)
********************************************************************/
#ifdef RPC_REG_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_reg_init(void)
#endif
diff --git a/source3/rpc_server/srv_samr.c b/source3/rpc_server/srv_samr.c
index b75195ceef..3a31ec82e1 100644
--- a/source3/rpc_server/srv_samr.c
+++ b/source3/rpc_server/srv_samr.c
@@ -1444,7 +1444,7 @@ static BOOL api_samr_set_dom_info(pipes_struct *p)
********************************************************************/
#ifdef RPC_SAMR_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_samr_init(void)
#endif
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index 3023922a5b..5832ae876b 100755
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -1581,7 +1581,7 @@ static BOOL api_spoolss_replycloseprinter(pipes_struct *p)
********************************************************************/
#ifdef RPC_SPOOLSS_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_spoolss_init(void)
#endif
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 8073e3cf28..5d63f27d23 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -1017,9 +1017,9 @@ static void send_notify2_changes( SPOOLSS_NOTIFY_MSG_CTR *ctr, uint32 idx )
}
if ( sending_msg_count ) {
- cli_spoolss_rrpcn( &notify_cli, mem_ctx, &p->notify.client_hnd,
- data_len, data, p->notify.change, 0 );
- }
+ cli_spoolss_rrpcn( &notify_cli, mem_ctx, &p->notify.client_hnd,
+ data_len, data, p->notify.change, 0 );
+ }
}
done:
diff --git a/source3/rpc_server/srv_srvsvc.c b/source3/rpc_server/srv_srvsvc.c
index 7c5e317c87..983c660965 100644
--- a/source3/rpc_server/srv_srvsvc.c
+++ b/source3/rpc_server/srv_srvsvc.c
@@ -527,7 +527,7 @@ static BOOL api_srv_net_file_set_secdesc(pipes_struct *p)
********************************************************************/
#ifdef RPC_SVC_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_srv_init(void)
#endif
diff --git a/source3/rpc_server/srv_srvsvc_nt.c b/source3/rpc_server/srv_srvsvc_nt.c
index 815dd75d22..6d2320d67d 100644
--- a/source3/rpc_server/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srv_srvsvc_nt.c
@@ -1840,8 +1840,6 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
struct current_user user;
connection_struct *conn = NULL;
BOOL became_user = False;
- fstring dev;
- fstrcpy(dev, "A:");
ZERO_STRUCT(st);
@@ -1855,7 +1853,7 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
get_current_user(&user, p);
become_root();
- conn = make_connection(qualname, null_pw, dev, user.vuid, &nt_status);
+ conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
unbecome_root();
if (conn == NULL) {
@@ -1945,12 +1943,9 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
struct current_user user;
connection_struct *conn = NULL;
BOOL became_user = False;
- fstring dev;
- fstrcpy(dev, "A:");
ZERO_STRUCT(st);
-
r_u->status = WERR_OK;
unistr2_to_ascii(qualname, &q_u->uni_qual_name, sizeof(qualname));
@@ -1961,7 +1956,7 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
get_current_user(&user, p);
become_root();
- conn = make_connection(qualname, null_pw, dev, user.vuid, &nt_status);
+ conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
unbecome_root();
if (conn == NULL) {
diff --git a/source3/rpc_server/srv_wkssvc.c b/source3/rpc_server/srv_wkssvc.c
index e0d662ea80..1fed2cc6db 100644
--- a/source3/rpc_server/srv_wkssvc.c
+++ b/source3/rpc_server/srv_wkssvc.c
@@ -61,7 +61,7 @@ static BOOL api_wks_query_info(pipes_struct *p)
********************************************************************/
#ifdef RPC_WKS_DYNAMIC
-int init_module(void)
+int rpc_pipe_init(void)
#else
int rpc_wks_init(void)
#endif
diff --git a/source3/rpcclient/cmd_lsarpc.c b/source3/rpcclient/cmd_lsarpc.c
index 808ef50a45..db74370bc0 100644
--- a/source3/rpcclient/cmd_lsarpc.c
+++ b/source3/rpcclient/cmd_lsarpc.c
@@ -543,50 +543,6 @@ static NTSTATUS cmd_lsa_enum_acct_rights(struct cli_state *cli,
}
-/* Enumerate the accounts with a specific right */
-
-static NTSTATUS cmd_lsa_enum_acct_with_right(struct cli_state *cli,
- TALLOC_CTX *mem_ctx, int argc,
- const char **argv)
-{
- POLICY_HND dom_pol;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- DOM_SID *sids;
- uint32 count;
- const char *right;
-
- int i;
-
- if (argc != 2 ) {
- printf("Usage: %s <RIGHT>\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- right = argv[1];
-
- result = cli_lsa_open_policy2(cli, mem_ctx, True,
- SEC_RIGHTS_MAXIMUM_ALLOWED,
- &dom_pol);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- result = cli_lsa_enum_account_with_right(cli, mem_ctx, &dom_pol, right, &count, &sids);
-
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- printf("found %d SIDs for '%s'\n", count, right);
-
- for (i = 0; i < count; i++) {
- printf("\t%s\n", sid_string_static(&sids[i]));
- }
-
- done:
- return result;
-}
-
-
/* add some privileges to a SID via LsaAddAccountRights */
static NTSTATUS cmd_lsa_add_acct_rights(struct cli_state *cli,
@@ -750,7 +706,6 @@ struct cmd_set lsarpc_commands[] = {
{ "lsaenumsid", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_sids, NULL, PI_LSARPC, "Enumerate the LSA SIDS", "" },
{ "lsaenumprivsaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privsaccounts, NULL, PI_LSARPC, "Enumerate the privileges of an SID", "" },
{ "lsaenumacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_rights, NULL, PI_LSARPC, "Enumerate the rights of an SID", "" },
- { "lsaenumacctwithright",RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_with_right,NULL, PI_LSARPC,"Enumerate accounts with a right", "" },
{ "lsaaddacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_add_acct_rights, NULL, PI_LSARPC, "Add rights to an account", "" },
{ "lsaremoveacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_remove_acct_rights, NULL, PI_LSARPC, "Remove rights from an account", "" },
{ "lsalookupprivvalue", RPC_RTYPE_NTSTATUS, cmd_lsa_lookupprivvalue, NULL, PI_LSARPC, "Get a privilege value given its name", "" },
diff --git a/source3/rpcclient/display.c b/source3/rpcclient/display.c
new file mode 100644
index 0000000000..d03465206e
--- /dev/null
+++ b/source3/rpcclient/display.c
@@ -0,0 +1,1338 @@
+/*
+ Unix SMB/CIFS implementation.
+ Samba utility functions
+ Copyright (C) Andrew Tridgell 1992-1998
+ Copyright (C) Luke Kenneth Casson Leighton 1996 - 1998
+
+ 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 2 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+
+/****************************************************************************
+convert a share mode to a string
+****************************************************************************/
+char *get_file_mode_str(uint32 share_mode)
+{
+ static fstring mode;
+
+ switch (GET_DENY_MODE(share_mode))
+ {
+ case DENY_NONE : fstrcpy(mode, "DENY_NONE "); break;
+ case DENY_ALL : fstrcpy(mode, "DENY_ALL "); break;
+ case DENY_DOS : fstrcpy(mode, "DENY_DOS "); break;
+ case DENY_READ : fstrcpy(mode, "DENY_READ "); break;
+ case DENY_WRITE: fstrcpy(mode, "DENY_WRITE "); break;
+ case DENY_FCB: fstrcpy(mode, "DENY_FCB "); break;
+ default : fstrcpy(mode, "DENY_???? "); break;
+ }
+
+ switch (share_mode & 0xF)
+ {
+ case 0 : fstrcat(mode, "RDONLY"); break;
+ case 1 : fstrcat(mode, "WRONLY"); break;
+ case 2 : fstrcat(mode, "RDWR "); break;
+ default: fstrcat(mode, "R??W??"); break;
+ }
+
+ return mode;
+}
+
+/****************************************************************************
+convert an oplock mode to a string
+****************************************************************************/
+char *get_file_oplock_str(uint32 op_type)
+{
+ static fstring oplock;
+ BOOL excl = ((op_type & EXCLUSIVE_OPLOCK) != 0);
+ BOOL batch = ((op_type & BATCH_OPLOCK ) != 0);
+
+ oplock[0] = 0;
+
+ if (excl ) fstrcat(oplock, "EXCLUSIVE");
+ if (excl && batch) fstrcat(oplock, "+");
+ if ( batch) fstrcat(oplock, "BATCH");
+ if (!excl && !batch) fstrcat(oplock, "NONE");
+
+ return oplock;
+}
+
+/****************************************************************************
+convert a share type enum to a string
+****************************************************************************/
+char *get_share_type_str(uint32 type)
+{
+ static fstring typestr;
+
+ switch (type)
+ {
+ case STYPE_DISKTREE: fstrcpy(typestr, "Disk" ); break;
+ case STYPE_PRINTQ : fstrcpy(typestr, "Printer"); break;
+ case STYPE_DEVICE : fstrcpy(typestr, "Device" ); break;
+ case STYPE_IPC : fstrcpy(typestr, "IPC" ); break;
+ default : fstrcpy(typestr, "????" ); break;
+ }
+ return typestr;
+}
+
+/****************************************************************************
+convert a server type enum to a string
+****************************************************************************/
+char *get_server_type_str(uint32 type)
+{
+ static fstring typestr;
+
+ if (type == SV_TYPE_ALL)
+ {
+ fstrcpy(typestr, "All");
+ }
+ else
+ {
+ int i;
+ typestr[0] = 0;
+ for (i = 0; i < 32; i++)
+ {
+ if (type & (1 << i))
+ {
+ switch (((unsigned)1) << i)
+ {
+ case SV_TYPE_WORKSTATION : fstrcat(typestr, "Wk " ); break;
+ case SV_TYPE_SERVER : fstrcat(typestr, "Sv " ); break;
+ case SV_TYPE_SQLSERVER : fstrcat(typestr, "Sql "); break;
+ case SV_TYPE_DOMAIN_CTRL : fstrcat(typestr, "PDC "); break;
+ case SV_TYPE_DOMAIN_BAKCTRL : fstrcat(typestr, "BDC "); break;
+ case SV_TYPE_TIME_SOURCE : fstrcat(typestr, "Tim "); break;
+ case SV_TYPE_AFP : fstrcat(typestr, "AFP "); break;
+ case SV_TYPE_NOVELL : fstrcat(typestr, "Nov "); break;
+ case SV_TYPE_DOMAIN_MEMBER : fstrcat(typestr, "Dom "); break;
+ case SV_TYPE_PRINTQ_SERVER : fstrcat(typestr, "PrQ "); break;
+ case SV_TYPE_DIALIN_SERVER : fstrcat(typestr, "Din "); break;
+ case SV_TYPE_SERVER_UNIX : fstrcat(typestr, "Unx "); break;
+ case SV_TYPE_NT : fstrcat(typestr, "NT " ); break;
+ case SV_TYPE_WFW : fstrcat(typestr, "Wfw "); break;
+ case SV_TYPE_SERVER_MFPN : fstrcat(typestr, "Mfp "); break;
+ case SV_TYPE_SERVER_NT : fstrcat(typestr, "SNT "); break;
+ case SV_TYPE_POTENTIAL_BROWSER: fstrcat(typestr, "PtB "); break;
+ case SV_TYPE_BACKUP_BROWSER : fstrcat(typestr, "BMB "); break;
+ case SV_TYPE_MASTER_BROWSER : fstrcat(typestr, "LMB "); break;
+ case SV_TYPE_DOMAIN_MASTER : fstrcat(typestr, "DMB "); break;
+ case SV_TYPE_SERVER_OSF : fstrcat(typestr, "OSF "); break;
+ case SV_TYPE_SERVER_VMS : fstrcat(typestr, "VMS "); break;
+ case SV_TYPE_WIN95_PLUS : fstrcat(typestr, "W95 "); break;
+ case SV_TYPE_ALTERNATE_XPORT : fstrcat(typestr, "Xpt "); break;
+ case SV_TYPE_LOCAL_LIST_ONLY : fstrcat(typestr, "Dom "); break;
+ case SV_TYPE_DOMAIN_ENUM : fstrcat(typestr, "Loc "); break;
+ }
+ }
+ }
+ i = strlen(typestr)-1;
+ if (typestr[i] == ' ') typestr[i] = 0;
+
+ }
+ return typestr;
+}
+
+/****************************************************************************
+server info level 101 display function
+****************************************************************************/
+void display_srv_info_101(FILE *out_hnd, enum action_type action,
+ SRV_INFO_101 *sv101)
+{
+ if (sv101 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Server Info Level 101:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring name;
+ fstring comment;
+
+ rpcstr_pull(name, sv101->uni_name.buffer, sizeof(name), sv101->uni_name.uni_str_len*2, 0);
+ rpcstr_pull(comment, sv101->uni_comment.buffer, sizeof(comment), sv101->uni_comment.uni_str_len*2, 0);
+
+ display_server(out_hnd, action, name, sv101->srv_type, comment);
+
+ fprintf(out_hnd, "\tplatform_id : %d\n" , sv101->platform_id);
+ fprintf(out_hnd, "\tos version : %d.%d\n" , sv101->ver_major, sv101->ver_minor);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+server info level 102 display function
+****************************************************************************/
+void display_srv_info_102(FILE *out_hnd, enum action_type action,SRV_INFO_102 *sv102)
+{
+ if (sv102 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Server Info Level 102:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring name;
+ fstring comment;
+ fstring usr_path;
+
+ rpcstr_pull(name, sv102->uni_name.buffer, sizeof(name), sv102->uni_name.uni_str_len*2, 0);
+ rpcstr_pull(comment, sv102->uni_comment.buffer, sizeof(comment), sv102->uni_comment.uni_str_len*2, 0);
+ rpcstr_pull(usr_path, sv102->uni_usr_path.buffer, sizeof(usr_path), sv102->uni_usr_path.uni_str_len*2, 0);
+
+ display_server(out_hnd, action, name, sv102->srv_type, comment);
+
+ fprintf(out_hnd, "\tplatform_id : %d\n" , sv102->platform_id);
+ fprintf(out_hnd, "\tos version : %d.%d\n" , sv102->ver_major, sv102->ver_minor);
+
+ fprintf(out_hnd, "\tusers : %x\n" , sv102->users );
+ fprintf(out_hnd, "\tdisc, hidden : %x,%x\n" , sv102->disc , sv102->hidden );
+ fprintf(out_hnd, "\tannounce, delta : %d, %d\n", sv102->announce , sv102->ann_delta);
+ fprintf(out_hnd, "\tlicenses : %d\n" , sv102->licenses );
+ fprintf(out_hnd, "\tuser path : %s\n" , usr_path);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+server info container display function
+****************************************************************************/
+void display_srv_info_ctr(FILE *out_hnd, enum action_type action,SRV_INFO_CTR *ctr)
+{
+ if (ctr == NULL || ctr->ptr_srv_ctr == 0)
+ {
+ fprintf(out_hnd, "Server Information: unavailable due to an error\n");
+ return;
+ }
+
+ switch (ctr->switch_value)
+ {
+ case 101:
+ {
+ display_srv_info_101(out_hnd, action, &(ctr->srv.sv101));
+ break;
+ }
+ case 102:
+ {
+ display_srv_info_102(out_hnd, action, &(ctr->srv.sv102));
+ break;
+ }
+ default:
+ {
+ fprintf(out_hnd, "Server Information: Unknown Info Level\n");
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+connection info level 0 display function
+****************************************************************************/
+void display_conn_info_0(FILE *out_hnd, enum action_type action,
+ CONN_INFO_0 *info0)
+{
+ if (info0 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Connection Info Level 0:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\tid: %d\n", info0->id);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+connection info level 1 display function
+****************************************************************************/
+void display_conn_info_1(FILE *out_hnd, enum action_type action,
+ CONN_INFO_1 *info1, CONN_INFO_1_STR *str1)
+{
+ if (info1 == NULL || str1 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Connection Info Level 1:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring usr_name;
+ fstring net_name;
+
+ rpcstr_pull(usr_name, str1->uni_usr_name.buffer, sizeof(usr_name), str1->uni_usr_name.uni_str_len*2,0);
+ rpcstr_pull(net_name, str1->uni_net_name.buffer, sizeof(net_name), str1->uni_net_name.uni_str_len*2,0);
+
+ fprintf(out_hnd, "\tid : %d\n", info1->id);
+ fprintf(out_hnd, "\ttype : %s\n", get_share_type_str(info1->type));
+ fprintf(out_hnd, "\tnum_opens: %d\n", info1->num_opens);
+ fprintf(out_hnd, "\tnum_users: %d\n", info1->num_users);
+ fprintf(out_hnd, "\topen_time: %d\n", info1->open_time);
+
+ fprintf(out_hnd, "\tuser name: %s\n", usr_name);
+ fprintf(out_hnd, "\tnet name: %s\n", net_name);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+connection info level 0 container display function
+****************************************************************************/
+void display_srv_conn_info_0_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_0 *ctr)
+{
+ if (ctr == NULL)
+ {
+ fprintf(out_hnd, "display_srv_conn_info_0_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < ctr->num_entries_read; i++)
+ {
+ display_conn_info_0(out_hnd, ACTION_HEADER , &(ctr->info_0[i]));
+ display_conn_info_0(out_hnd, ACTION_ENUMERATE, &(ctr->info_0[i]));
+ display_conn_info_0(out_hnd, ACTION_FOOTER , &(ctr->info_0[i]));
+ }
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+connection info level 1 container display function
+****************************************************************************/
+void display_srv_conn_info_1_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_1 *ctr)
+{
+ if (ctr == NULL)
+ {
+ fprintf(out_hnd, "display_srv_conn_info_1_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < ctr->num_entries_read; i++)
+ {
+ display_conn_info_1(out_hnd, ACTION_HEADER , &(ctr->info_1[i]), &(ctr->info_1_str[i]));
+ display_conn_info_1(out_hnd, ACTION_ENUMERATE, &(ctr->info_1[i]), &(ctr->info_1_str[i]));
+ display_conn_info_1(out_hnd, ACTION_FOOTER , &(ctr->info_1[i]), &(ctr->info_1_str[i]));
+ }
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+connection info container display function
+****************************************************************************/
+void display_srv_conn_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_CTR *ctr)
+{
+ if (ctr == NULL || ctr->ptr_conn_ctr == 0)
+ {
+ fprintf(out_hnd, "display_srv_conn_info_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (ctr->switch_value)
+ {
+ case 0:
+ {
+ display_srv_conn_info_0_ctr(out_hnd, action,
+ &(ctr->conn.info0));
+ break;
+ }
+ case 1:
+ {
+ display_srv_conn_info_1_ctr(out_hnd, action,
+ &(ctr->conn.info1));
+ break;
+ }
+ default:
+ {
+ fprintf(out_hnd, "display_srv_conn_info_ctr: Unknown Info Level\n");
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+share info level 1 display function
+****************************************************************************/
+void display_share_info_1(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_1 *info1)
+{
+ if (info1 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Share Info Level 1:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring remark ;
+ fstring net_name;
+
+ rpcstr_pull(net_name, info1->info_1_str.uni_netname.buffer, sizeof(net_name), info1->info_1_str.uni_netname.uni_str_len*2, 0);
+ rpcstr_pull(remark, info1->info_1_str.uni_remark.buffer, sizeof(remark), info1->info_1_str.uni_remark.uni_str_len*2, 0);
+
+ display_share(out_hnd, action, net_name, info1->info_1.type, remark);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+share info level 2 display function
+****************************************************************************/
+void display_share_info_2(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_2 *info2)
+{
+ if (info2 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "Share Info Level 2:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring remark ;
+ fstring net_name;
+ fstring path ;
+ fstring passwd ;
+
+ rpcstr_pull(net_name, info2->info_2_str.uni_netname.buffer, sizeof(net_name), info2->info_2_str.uni_netname.uni_str_len*2, 0);
+ rpcstr_pull(remark, info2->info_2_str.uni_remark.buffer, sizeof(remark), info2->info_2_str.uni_remark.uni_str_len*2, 0);
+ rpcstr_pull(path, info2->info_2_str.uni_path.buffer, sizeof(path), info2->info_2_str.uni_path.uni_str_len*2, 0);
+ rpcstr_pull(passwd, info2->info_2_str.uni_passwd.buffer, sizeof(passwd), info2->info_2_str.uni_passwd.uni_str_len*2, 0);
+
+ display_share2(out_hnd, action, net_name,
+ info2->info_2.type, remark, info2->info_2.perms,
+ info2->info_2.max_uses, info2->info_2.num_uses,
+ path, passwd);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+share info container display function
+****************************************************************************/
+void display_srv_share_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_CTR *ctr)
+{
+ if (ctr == NULL)
+ {
+ fprintf(out_hnd, "display_srv_share_info_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < ctr->num_entries; i++)
+ {
+ switch (ctr->info_level) {
+ case 1:
+ display_share_info_1(out_hnd, ACTION_HEADER , &(ctr->share.info1[i]));
+ display_share_info_1(out_hnd, ACTION_ENUMERATE, &(ctr->share.info1[i]));
+ display_share_info_1(out_hnd, ACTION_FOOTER , &(ctr->share.info1[i]));
+ break;
+ case 2:
+ display_share_info_2(out_hnd, ACTION_HEADER , &(ctr->share.info2[i]));
+ display_share_info_2(out_hnd, ACTION_ENUMERATE, &(ctr->share.info2[i]));
+ display_share_info_2(out_hnd, ACTION_FOOTER , &(ctr->share.info2[i]));
+ break;
+ default:
+ fprintf(out_hnd, "display_srv_share_info_ctr: Unknown Info Level\n");
+ break;
+ }
+ }
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+file info level 3 display function
+****************************************************************************/
+void display_file_info_3(FILE *out_hnd, enum action_type action,
+ FILE_INFO_3 *info3, FILE_INFO_3_STR *str3)
+{
+ if (info3 == NULL || str3 == NULL)
+ {
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "File Info Level 3:\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring path_name;
+ fstring user_name;
+
+ rpcstr_pull(path_name, str3->uni_path_name.buffer, sizeof(path_name), str3->uni_path_name.uni_str_len*2, 0);
+ rpcstr_pull(user_name, str3->uni_user_name.buffer, sizeof(user_name), str3->uni_user_name.uni_str_len*2, 0);
+
+ fprintf(out_hnd, "\tid : %d\n", info3->id);
+ fprintf(out_hnd, "\tperms : %s\n", get_file_mode_str(info3->perms));
+ fprintf(out_hnd, "\tnum_locks: %d\n", info3->num_locks);
+
+ fprintf(out_hnd, "\tpath name: %s\n", path_name);
+ fprintf(out_hnd, "\tuser name: %s\n", user_name);
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+
+}
+
+/****************************************************************************
+file info level 3 container display function
+****************************************************************************/
+void display_srv_file_info_3_ctr(FILE *out_hnd, enum action_type action,
+ SRV_FILE_INFO_3 *ctr)
+{
+ if (ctr == NULL)
+ {
+ fprintf(out_hnd, "display_srv_file_info_3_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < ctr->num_entries_read; i++)
+ {
+ display_file_info_3(out_hnd, ACTION_HEADER , &(ctr->info_3[i]), &(ctr->info_3_str[i]));
+ display_file_info_3(out_hnd, ACTION_ENUMERATE, &(ctr->info_3[i]), &(ctr->info_3_str[i]));
+ display_file_info_3(out_hnd, ACTION_FOOTER , &(ctr->info_3[i]), &(ctr->info_3_str[i]));
+ }
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+file info container display function
+****************************************************************************/
+void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_FILE_INFO_CTR *ctr)
+{
+ if (ctr == NULL || ctr->ptr_file_ctr == 0)
+ {
+ fprintf(out_hnd, "display_srv_file_info_ctr: unavailable due to an internal error\n");
+ return;
+ }
+
+ switch (ctr->switch_value)
+ {
+ case 3:
+ {
+ display_srv_file_info_3_ctr(out_hnd, action,
+ &(ctr->file.info3));
+ break;
+ }
+ default:
+ {
+ fprintf(out_hnd, "display_srv_file_info_ctr: Unknown Info Level\n");
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ print browse connection on a host
+ ****************************************************************************/
+void display_server(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t%-15.15s%-20s %s\n",
+ sname, get_server_type_str(type), comment);
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+print shares on a host
+****************************************************************************/
+void display_share(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t%-15.15s%-10.10s%s\n",
+ sname, get_share_type_str(type), comment);
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+print shares on a host, level 2
+****************************************************************************/
+void display_share2(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment,
+ uint32 perms, uint32 max_uses, uint32 num_uses,
+ char *path, char *passwd)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t%-15.15s%-10.10s%s %x %x %x %s %s\n",
+ sname, get_share_type_str(type), comment,
+ perms, max_uses, num_uses, path, passwd);
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+print name info
+****************************************************************************/
+void display_name(FILE *out_hnd, enum action_type action,
+ char *sname)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t%-21.21s\n", sname);
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+ display group rid info
+ ****************************************************************************/
+void display_group_rid_info(FILE *out_hnd, enum action_type action,
+ uint32 num_gids, DOM_GID *gid)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ if (num_gids == 0)
+ {
+ fprintf(out_hnd, "\tNo Groups\n");
+ }
+ else
+ {
+ fprintf(out_hnd, "\tGroup Info\n");
+ fprintf(out_hnd, "\t----------\n");
+ }
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < num_gids; i++)
+ {
+ fprintf(out_hnd, "\tGroup RID: %8x attr: %x\n",
+ gid[i].g_rid, gid[i].attr);
+ }
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+ display alias name info
+ ****************************************************************************/
+void display_alias_name_info(FILE *out_hnd, enum action_type action,
+ uint32 num_aliases, fstring *alias_name, uint32 *num_als_usrs)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ if (num_aliases == 0)
+ {
+ fprintf(out_hnd, "\tNo Aliases\n");
+ }
+ else
+ {
+ fprintf(out_hnd, "\tAlias Names\n");
+ fprintf(out_hnd, "\t----------- \n");
+ }
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ int i;
+
+ for (i = 0; i < num_aliases; i++)
+ {
+ fprintf(out_hnd, "\tAlias Name: %s Attributes: %3d\n",
+ alias_name[i], num_als_usrs[i]);
+ }
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+ display sam_user_info_21 structure
+ ****************************************************************************/
+void display_sam_user_info_21(FILE *out_hnd, enum action_type action, SAM_USER_INFO_21 *usr)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "\tUser Info, Level 0x15\n");
+ fprintf(out_hnd, "\t---------------------\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ pstring tmp;
+ rpcstr_pull(tmp, usr->uni_user_name.buffer, sizeof(tmp),usr->uni_user_name.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tUser Name : %s\n", tmp); /* username unicode string */
+ rpcstr_pull(tmp, usr->uni_full_name.buffer, sizeof(tmp),usr->uni_full_name.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tFull Name : %s\n", tmp); /* user's full name unicode string */
+ rpcstr_pull(tmp, usr->uni_home_dir.buffer, sizeof(tmp),usr->uni_home_dir.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tHome Drive : %s\n", tmp); /* home directory unicode string */
+ rpcstr_pull(tmp, usr->uni_dir_drive.buffer, sizeof(tmp),usr->uni_dir_drive.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tDir Drive : %s\n", tmp); /* home directory drive unicode string */
+ rpcstr_pull(tmp, usr->uni_profile_path.buffer, sizeof(tmp),usr->uni_profile_path.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tProfile Path: %s\n", tmp); /* profile path unicode string */
+ rpcstr_pull(tmp, usr->uni_logon_script.buffer, sizeof(tmp),usr->uni_logon_script.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tLogon Script: %s\n", tmp); /* logon script unicode string */
+ rpcstr_pull(tmp, usr->uni_acct_desc.buffer, sizeof(tmp),usr->uni_acct_desc.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tDescription : %s\n", tmp); /* user description unicode string */
+ rpcstr_pull(tmp, usr->uni_workstations.buffer, sizeof(tmp),usr->uni_workstations.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tWorkstations: %s\n", tmp); /* workstaions unicode string */
+ rpcstr_pull(tmp, usr->uni_unknows_str.buffer, sizeof(tmp),usr->uni_unknown_str.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tUnknown Str : %s\n", tmp); /* unknown string unicode string */
+ rpcstr_pull(tmp, usr->uni_munged_dial.buffer, sizeof(tmp),usr->uni_munged_dial.uni_str_len*2, 0);
+ fprintf(out_hnd, "\t\tRemote Dial : %s\n", tmp); /* munged remote access unicode string */
+
+ fprintf(out_hnd, "\t\tLogon Time : %s\n", http_timestring(nt_time_to_unix(&(usr->logon_time ))));
+ fprintf(out_hnd, "\t\tLogoff Time : %s\n", http_timestring(nt_time_to_unix(&(usr->logoff_time ))));
+ fprintf(out_hnd, "\t\tKickoff Time : %s\n", http_timestring(nt_time_to_unix(&(usr->kickoff_time ))));
+ fprintf(out_hnd, "\t\tPassword last set Time : %s\n", http_timestring(nt_time_to_unix(&(usr->pass_last_set_time ))));
+ fprintf(out_hnd, "\t\tPassword can change Time : %s\n", http_timestring(nt_time_to_unix(&(usr->pass_can_change_time ))));
+ fprintf(out_hnd, "\t\tPassword must change Time: %s\n", http_timestring(nt_time_to_unix(&(usr->pass_must_change_time))));
+
+ fprintf(out_hnd, "\t\tunknown_2[0..31]...\n"); /* user passwords? */
+
+ fprintf(out_hnd, "\t\tuser_rid : %x\n" , usr->user_rid ); /* User ID */
+ fprintf(out_hnd, "\t\tgroup_rid: %x\n" , usr->group_rid); /* Group ID */
+ fprintf(out_hnd, "\t\tacb_info : %04x\n", usr->acb_info ); /* Account Control Info */
+
+ fprintf(out_hnd, "\t\tunknown_3: %08x\n", usr->unknown_3); /* 0x00ff ffff */
+ fprintf(out_hnd, "\t\tlogon_divs: %d\n", usr->logon_divs); /* 0x0000 00a8 which is 168 which is num hrs in a week */
+ fprintf(out_hnd, "\t\tunknown_5: %08x\n", usr->unknown_5); /* 0x0002 0000 */
+
+ fprintf(out_hnd, "\t\tpadding1[0..7]...\n");
+
+ if (usr->ptr_logon_hrs)
+ {
+ fprintf(out_hnd, "\t\tlogon_hrs[0..%d]...\n", usr->logon_hrs.len);
+ }
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+
+/****************************************************************************
+convert a security permissions into a string
+****************************************************************************/
+char *get_sec_mask_str(uint32 type)
+{
+ static fstring typestr;
+ int i;
+
+ switch (type)
+ {
+ case SEC_RIGHTS_FULL_CONTROL:
+ {
+ fstrcpy(typestr, "Full Control");
+ return typestr;
+ }
+
+ case SEC_RIGHTS_READ:
+ {
+ fstrcpy(typestr, "Read");
+ return typestr;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ typestr[0] = 0;
+ for (i = 0; i < 32; i++)
+ {
+ if (type & (1 << i))
+ {
+ switch (((unsigned)1) << i)
+ {
+ case SEC_RIGHTS_QUERY_VALUE : fstrcat(typestr, "Query " ); break;
+ case SEC_RIGHTS_SET_VALUE : fstrcat(typestr, "Set " ); break;
+ case SEC_RIGHTS_CREATE_SUBKEY : fstrcat(typestr, "Create "); break;
+ case SEC_RIGHTS_ENUM_SUBKEYS : fstrcat(typestr, "Enum "); break;
+ case SEC_RIGHTS_NOTIFY : fstrcat(typestr, "Notify "); break;
+ case SEC_RIGHTS_CREATE_LINK : fstrcat(typestr, "CreateLink "); break;
+ case SEC_RIGHTS_DELETE : fstrcat(typestr, "Delete "); break;
+ case SEC_RIGHTS_READ_CONTROL : fstrcat(typestr, "ReadControl "); break;
+ case SEC_RIGHTS_WRITE_DAC : fstrcat(typestr, "WriteDAC "); break;
+ case SEC_RIGHTS_WRITE_OWNER : fstrcat(typestr, "WriteOwner "); break;
+ }
+ type &= ~(1 << i);
+ }
+ }
+
+ /* remaining bits get added on as-is */
+ if (type != 0)
+ {
+ fstring tmp;
+ slprintf(tmp, sizeof(tmp)-1, "[%08x]", type);
+ fstrcat(typestr, tmp);
+ }
+
+ /* remove last space */
+ i = strlen(typestr)-1;
+ if (typestr[i] == ' ') typestr[i] = 0;
+
+ return typestr;
+}
+
+/****************************************************************************
+ display sec_access structure
+ ****************************************************************************/
+void display_sec_access(FILE *out_hnd, enum action_type action, SEC_ACCESS *info)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t\tPermissions: %s\n",
+ get_sec_mask_str(info->mask));
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ display sec_ace structure
+ ****************************************************************************/
+void display_sec_ace(FILE *out_hnd, enum action_type action, SEC_ACE *ace)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "\tACE\n");
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring sid_str;
+
+ display_sec_access(out_hnd, ACTION_HEADER , &ace->info);
+ display_sec_access(out_hnd, ACTION_ENUMERATE, &ace->info);
+ display_sec_access(out_hnd, ACTION_FOOTER , &ace->info);
+
+ sid_to_string(sid_str, &ace->sid);
+ fprintf(out_hnd, "\t\tSID: %s\n", sid_str);
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ display sec_acl structure
+ ****************************************************************************/
+void display_sec_acl(FILE *out_hnd, enum action_type action, SEC_ACL *sec_acl)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "\tACL\tNum ACEs:\t%d\trevision:\t%x\n",
+ sec_acl->num_aces, sec_acl->revision);
+ fprintf(out_hnd, "\t---\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ if (sec_acl->size != 0 && sec_acl->num_aces != 0)
+ {
+ int i;
+ for (i = 0; i < sec_acl->num_aces; i++)
+ {
+ display_sec_ace(out_hnd, ACTION_HEADER , &sec_acl->ace[i]);
+ display_sec_ace(out_hnd, ACTION_ENUMERATE, &sec_acl->ace[i]);
+ display_sec_ace(out_hnd, ACTION_FOOTER , &sec_acl->ace[i]);
+ }
+ }
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ display sec_desc structure
+ ****************************************************************************/
+void display_sec_desc(FILE *out_hnd, enum action_type action, SEC_DESC *sec)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "\tSecurity Descriptor\trevision:\t%x\ttype:\t%x\n",
+ sec->revision, sec->type);
+ fprintf(out_hnd, "\t-------------------\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fstring sid_str;
+
+ if (sec->off_sacl != 0)
+ {
+ display_sec_acl(out_hnd, ACTION_HEADER , sec->sacl);
+ display_sec_acl(out_hnd, ACTION_ENUMERATE, sec->sacl);
+ display_sec_acl(out_hnd, ACTION_FOOTER , sec->sacl);
+ }
+ if (sec->off_dacl != 0)
+ {
+ display_sec_acl(out_hnd, ACTION_HEADER , sec->dacl);
+ display_sec_acl(out_hnd, ACTION_ENUMERATE, sec->dacl);
+ display_sec_acl(out_hnd, ACTION_FOOTER , sec->dacl);
+ }
+ if (sec->off_owner_sid != 0)
+ {
+ sid_to_string(sid_str, sec->owner_sid);
+ fprintf(out_hnd, "\tOwner SID:\t%s\n", sid_str);
+ }
+ if (sec->off_grp_sid != 0)
+ {
+ sid_to_string(sid_str, sec->grp_sid);
+ fprintf(out_hnd, "\tParent SID:\t%s\n", sid_str);
+ }
+
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+convert a security permissions into a string
+****************************************************************************/
+char *get_reg_val_type_str(uint32 type)
+{
+ static fstring typestr;
+
+ switch (type)
+ {
+ case 0x01:
+ {
+ fstrcpy(typestr, "string");
+ return typestr;
+ }
+
+ case 0x03:
+ {
+ fstrcpy(typestr, "bytes");
+ return typestr;
+ }
+
+ case 0x04:
+ {
+ fstrcpy(typestr, "uint32");
+ return typestr;
+ }
+
+ case 0x07:
+ {
+ fstrcpy(typestr, "multi");
+ return typestr;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ slprintf(typestr, sizeof(typestr)-1, "[%d]", type);
+ return typestr;
+}
+
+
+static void print_reg_value(FILE *out_hnd, char *val_name, uint32 val_type, BUFFER2 *value)
+{
+ fstring type;
+ pstring intvalue;
+ fstrcpy(type, get_reg_val_type_str(val_type));
+
+ switch (val_type)
+ {
+ case 0x01: /* unistr */
+ {
+ rpcstr_pull(intvalue, value->buffer, sizeof(intvalue), value->buf_len, 0);
+ /*fprintf(out_hnd,"\t%s:\t%s:\t%s\n", val_name, type, dos_buffer2_to_str(value));*/
+ fprintf(out_hnd,"\t%s:\t%s:\t%s\n", val_name, type, value);
+ break;
+ }
+
+ default: /* unknown */
+ case 0x03: /* bytes */
+ {
+ if (value->buf_len <= 8)
+ {
+ fprintf(out_hnd,"\t%s:\t%s:\t", val_name, type);
+ out_data(out_hnd, (char*)value->buffer, value->buf_len, 8);
+ }
+ else
+ {
+ fprintf(out_hnd,"\t%s:\t%s:\n", val_name, type);
+ out_data(out_hnd, (char*)value->buffer, value->buf_len, 16);
+ }
+ break;
+ }
+
+ case 0x04: /* uint32 */
+ {
+ fprintf(out_hnd,"\t%s:\t%s: 0x%08x\n", val_name, type, buffer2_to_uint32(value));
+ break;
+ }
+
+ case 0x07: /* multiunistr */
+ {
+ fprintf(out_hnd,"\t%s:\t%s:\t%s\n", val_name, type, dos_buffer2_to_multistr(value));
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ display structure
+ ****************************************************************************/
+void display_reg_value_info(FILE *out_hnd, enum action_type action,
+ char *val_name, uint32 val_type, BUFFER2 *value)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ print_reg_value(out_hnd, val_name, val_type, value);
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+/****************************************************************************
+ display structure
+ ****************************************************************************/
+void display_reg_key_info(FILE *out_hnd, enum action_type action,
+ char *key_name, time_t key_mod_time)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ fprintf(out_hnd, "\t%s\t(%s)\n",
+ key_name, http_timestring(key_mod_time));
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ break;
+ }
+ }
+}
+
+#if COPY_THIS_TEMPLATE
+/****************************************************************************
+ display structure
+ ****************************************************************************/
+ void display_(FILE *out_hnd, enum action_type action, *)
+{
+ switch (action)
+ {
+ case ACTION_HEADER:
+ {
+ fprintf(out_hnd, "\t\n");
+ fprintf(out_hnd, "\t-------------------\n");
+
+ break;
+ }
+ case ACTION_ENUMERATE:
+ {
+ break;
+ }
+ case ACTION_FOOTER:
+ {
+ fprintf(out_hnd, "\n");
+ break;
+ }
+ }
+}
+
+#endif
diff --git a/source3/sam/SAM-interface_handles.txt b/source3/sam/SAM-interface_handles.txt
deleted file mode 100644
index 1c164bd198..0000000000
--- a/source3/sam/SAM-interface_handles.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-SAM API
-
-NTSTATUS sam_get_sec_obj(NT_USER_TOKEN *access, DOM_SID *sid, SEC_DESC **sd)
-NTSTATUS sam_set_sec_obj(NT_USER_TOKEN *access, DOM_SID *sid, SEC_DESC *sd)
-
-NTSTATUS sam_lookup_name(NT_USER_TOKEN *access, DOM_SID *domain, char *name, DOM_SID **sid, uint32 *type)
-NTSTATUS sam_lookup_sid(NT_USER_TOKEN *access, DOM_SID *sid, char **name, uint32 *type)
-
-
-Domain API
-
-NTSTATUS sam_update_domain(SAM_DOMAIN_HANDLE *domain)
-
-NTSTATUS sam_enum_domains(NT_USER_TOKEN *access, int32 *domain_count, DOM_SID **domains, char **domain_names)
-NTSTATUS sam_lookup_domain(NT_USER_TOKEN *access, char *domain, DOM_SID **domainsid)
-
-NTSTATUS sam_get_domain_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *domainsid, SAM_DOMAIN_HANDLE **domain)
-
-
-User API
-
-NTSTATUS sam_create_user(NT_USER_TOKEN *access, uint32 access_desired, SAM_USER_HANDLE **user)
-NTSTATUS sam_add_user(SAM_USER_HANDLE *user)
-NTSTATUS sam_update_user(SAM_USER_HANDLE *user)
-NTSTATUS sam_delete_user(SAM_USER_HANDLE * user)
-
-NTSTATUS sam_enum_users(NT_USER_TOKEN *access, DOM_SID *domain, int32 *user_count, SAM_USER_ENUM **users)
-
-NTSTATUS sam_get_user_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *usersid, SAM_USER_HANDLE **user)
-NTSTATUS sam_get_user_by_name(NT_USER_TOKEN *access, uint32 access_desired, char *domain, char *name, SAM_USER_HANDLE **user)
-
-
-Group API
-
-NTSTATUS sam_create_group(NT_USER_TOKEN *access, uint32 access_desired, uint32 typ, SAM_GROUP_HANDLE **group)
-NTSTATUS sam_add_group(SAM_GROUP_HANDLE *samgroup)
-NTSTATUS sam_update_group(SAM_GROUP_HANDLE *samgroup)
-NTSTATUS sam_delete_group(SAM_GROUP_HANDLE *groupsid)
-
-NTSTATUS sam_enum_groups(NT_USER_TOKEN *access, DOM_SID *domainsid, uint32 typ, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-
-NTSTATUS sam_get_group_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-NTSTATUS sam_get_group_by_name(NT_USER_TOKEN *access, uint32 access_desired, char *domain, char *name, SAM_GROUP_HANDLE **group)
-
-NTSTATUS sam_add_member_to_group(SAM_GROUP_HANDLE *group, SAM_GROUP_MEMBER *member)
-NTSTATUS sam_delete_member_from_group(SAM_GROUP_HANDLE *group, SAM_GROUP_MEMBER *member)
-NTSTATUS sam_enum_groupmembers(SAM_GROUP_HANLDE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-
-NTSTATUS sam_get_groups_of_user(SAM_USER_HANDLE *user, uint32 typ, uint32 *group_count, SAM_GROUP_ENUM **groups)
-
-
-
-structures
-
-typedef _SAM_GROUP_MEMBER {
- DOM_SID sid;
- BOOL group; /* specifies if it is a group or a user */
-
-} SAM_GROUP_MEMBER
-
-typedef struct sam_user_enum {
- DOM_SID sid;
- char *username;
- char *full_name;
- char *user_desc;
- uint16 acc_ctrl;
-} SAM_USER_ENUM;
-
-typedef struct sam_group_enum {
- DOM_SID sid;
- char *groupname;
- char *comment;
-} SAM_GROUP_ENUM
-
-NTSTATUS sam_get_domain_sid(SAM_DOMAIN_HANDLE *domain, DOM_SID **sid)
-NTSTATUS sam_get_domain_num_users(SAM_DOMAIN_HANDLE *domain, uint32 *num_users)
-NTSTATUS sam_get_domain_num_groups(SAM_DOMAIN_HANDLE *domain, uint32 *num_groups)
-NTSTATUS sam_get_domain_num_aliases(SAM_DOMAIN_HANDLE *domain, uint32 *num_aliases)
-NTSTATUS sam_{get,set}_domain_name(SAM_DOMAIN_HANDLE *domain, char **domain_name)
-NTSTATUS sam_{get,set}_domain_server(SAM_DOMAIN_HANDLE *domain, char **server_name)
-NTSTATUS sam_{get,set}_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *max_passwordage)
-NTSTATUS sam_{get,set}_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *min_passwordage)
-NTSTATUS sam_{get,set}_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME *lockout_duration)
-NTSTATUS sam_{get,set}_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME *reset_lockout_count)
-NTSTATUS sam_{get,set}_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 *min_passwordlength)
-NTSTATUS sam_{get,set}_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uin16 *password_history)
-NTSTATUS sam_{get,set}_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 *lockout_count)
-NTSTATUS sam_{get,set}_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL *force_logoff)
-NTSTATUS sam_{get,set}_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL *login_pwdchange)
-
-NTSTATUS sam_get_user_sid(SAM_USER_HANDLE *user, DOM_SID **sid)
-NTSTATUS sam_{get,set}_user_pgroup(SAM_USER_HANDLE *user, DOM_SID **pgroup)
-NTSTATUS sam_{get,set}_user_name(SAM_USER_HANDLE *user, char **username)
-NTSTATUS sam_{get,set}_user_fullname(SAM_USER_HANDLE *user, char** fullname)
-NTSTATUS sam_{get,set}_user_description(SAM_USER_HANDLE *user, char **description)
-NTSTATUS sam_{get,set}_user_home_dir(SAM_USER_HANDLE *user, char **home_dir)
-NTSTATUS sam_{get,set}_user_dir_drive(SAM_USER_HANDLE *user, char **dir_drive)
-NTSTATUS sam_{get,set}_user_logon_script(SAM_USER_HANDLE *user, char **logon_script)
-NTSTATUS sam_{get,set}_user_profile_path(SAM_USER_HANDLE *user, char **profile_path)
-NTSTATUS sam_{get,set}_user_workstations(SAM_USER_HANDLE *user, char **workstations)
-NTSTATUS sam_{get,set}_user_munged_dial(SAM_USER_HANDLE *user, char **munged_dial)
-NTSTATUS sam_{get,set}_user_lm_pwd(SAM_USER_HANDLE *user, DATA_BLOB *lm_pwd)
-NTSTATUS sam_{get,set}_user_nt_pwd(SAM_USER_HANDLE *user, DATA_BLOB *nt_pwd)
-NTSTATUS sam_{get,set}_user_plain_pwd(SAM_USER_HANDLE *user, DATA_BLOB *plaintext_pwd)
-NTSTATUS sam_{get,set}_user_acct_ctrl(SAM_USER_HANDLE *user, uint16 *acct_ctrl)
-NTSTATUS sam_{get,set}_user_logon_divs(SAM_USER_HANDLE *user, uint16 *logon_divs)
-NTSTATUS sam_{get,set}_user_hours(SAM_USER_HANDLE *user, uint32 *hours_len, uint8 **hours)
-NTSTATUS sam_{get,set}_user_logon_time(SAM_USER_HANDLE *user, NTTIME *logon_time)
-NTSTATUS sam_{get,set}_user_logoff_time(SAM_USER_HANDLE *user, NTTIME *logoff_time)
-NTSTATUS sam_{get,set}_user_kickoff_time(SAM_USER_HANDLE *user, NTTIME kickoff_time)
-NTSTATUS sam_{get,set}_user_pwd_last_set(SAM_USER_HANDLE *user, NTTIME pwd_last_set)
-NTSTATUS sam_{get,set}_user_pwd_can_change(SAM_USER_HANDLE *user, NTTIME pwd_can_change)
-NTSTATUS sam_{get,set}_user_pwd_must_change(SAM_USER_HANDLE *user, NTTIME pwd_must_change)
-NTSTATUS sam_{get,set}_user_unknown_1(SAM_USER_HANDLE *user, char **unknown_1)
-NTSTATUS sam_{get,set}_user_unknown_2(SAM_USER_HANDLE *user, uint32 *unknown_2)
-NTSTATUS sam_{get,set}_user_unknown_3(SAM_USER_HANDLE *user, uint32 *unknown_3)
-NTSTATUS sam_{get,set}_user_unknown_4(SAM_USER_HANDLE *user, uint32 *unknown_4)
-
-NTSTATUS sam_get_group_sid(SAM_GROUP_HANDLE *group, DOM_SID **sid)
-NTSTATUS sam_get_group_typ(SAM_GROUP_HANDLE *group, uint32 *typ)
-NTSTATUS sam_{get,set}_group_name(SAM_GROUP_HANDLE *group, char **group_name)
-NTSTATUS sam_{get,set}_group_comment(SAM_GROUP_HANDLE *group, char **comment)
-NTSTATUS sam_{get,set}_group_priv_set(SAM_GROUP_HANDLE *group, PRIVILEGE_SET *priv_set) \ No newline at end of file
diff --git a/source3/sam/account.c b/source3/sam/account.c
deleted file mode 100644
index b8336146cd..0000000000
--- a/source3/sam/account.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Password and authentication handling
- Copyright (C) Jeremy Allison 1996-2001
- Copyright (C) Luke Kenneth Casson Leighton 1996-1998
- Copyright (C) Gerald (Jerry) Carter 2000-2001
- Copyright (C) Andrew Bartlett 2001-2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/************************************************************
- Fill the SAM_ACCOUNT_HANDLE with default values.
- ***********************************************************/
-
-static void sam_fill_default_account(SAM_ACCOUNT_HANDLE *account)
-{
- ZERO_STRUCT(account->private); /* Don't touch the talloc context */
-
- /* Don't change these timestamp settings without a good reason.
- They are important for NT member server compatibility. */
-
- /* FIXME: We should actually call get_nt_time_max() or sthng
- * here */
- unix_to_nt_time(&(account->private.logoff_time),get_time_t_max());
- unix_to_nt_time(&(account->private.kickoff_time),get_time_t_max());
- unix_to_nt_time(&(account->private.pass_must_change_time),get_time_t_max());
- account->private.unknown_1 = 0x00ffffff; /* don't know */
- account->private.logon_divs = 168; /* hours per week */
- account->private.hours_len = 21; /* 21 times 8 bits = 168 */
- memset(account->private.hours, 0xff, account->private.hours_len); /* available at all hours */
- account->private.unknown_2 = 0x00000000; /* don't know */
- account->private.unknown_3 = 0x000004ec; /* don't know */
-}
-
-static void destroy_sam_talloc(SAM_ACCOUNT_HANDLE **account)
-{
- if (*account) {
- data_blob_clear_free(&((*account)->private.lm_pw));
- data_blob_clear_free(&((*account)->private.nt_pw));
- if((*account)->private.plaintext_pw!=NULL)
- memset((*account)->private.plaintext_pw,'\0',strlen((*account)->private.plaintext_pw));
-
- talloc_destroy((*account)->mem_ctx);
- *account = NULL;
- }
-}
-
-
-/**********************************************************************
- Alloc memory and initialises a SAM_ACCOUNT_HANDLE on supplied mem_ctx.
-***********************************************************************/
-
-NTSTATUS sam_init_account_talloc(TALLOC_CTX *mem_ctx, SAM_ACCOUNT_HANDLE **account)
-{
- SMB_ASSERT(*account != NULL);
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_account_talloc: mem_ctx was NULL!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- *account=(SAM_ACCOUNT_HANDLE *)talloc(mem_ctx, sizeof(SAM_ACCOUNT_HANDLE));
-
- if (*account==NULL) {
- DEBUG(0,("sam_init_account_talloc: error while allocating memory\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*account)->mem_ctx = mem_ctx;
-
- (*account)->free_fn = NULL;
-
- sam_fill_default_account(*account);
-
- return NT_STATUS_OK;
-}
-
-
-/*************************************************************
- Alloc memory and initialises a struct sam_passwd.
- ************************************************************/
-
-NTSTATUS sam_init_account(SAM_ACCOUNT_HANDLE **account)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS nt_status;
-
- mem_ctx = talloc_init("sam internal SAM_ACCOUNT_HANDLE allocation");
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_account: error while doing talloc_init()\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_init_account_talloc(mem_ctx, account))) {
- talloc_destroy(mem_ctx);
- return nt_status;
- }
-
- (*account)->free_fn = destroy_sam_talloc;
-
- return NT_STATUS_OK;
-}
-
-/**
- * Free the contents of the SAM_ACCOUNT_HANDLE, but not the structure.
- *
- * Also wipes the LM and NT hashes and plaintext password from
- * memory.
- *
- * @param account SAM_ACCOUNT_HANDLE to free members of.
- **/
-
-static void sam_free_account_contents(SAM_ACCOUNT_HANDLE *account)
-{
-
- /* Kill off sensitive data. Free()ed by the
- talloc mechinism */
-
- data_blob_clear_free(&(account->private.lm_pw));
- data_blob_clear_free(&(account->private.nt_pw));
- if (account->private.plaintext_pw)
- memset(account->private.plaintext_pw,'\0',strlen(account->private.plaintext_pw));
-}
-
-
-/************************************************************
- Reset the SAM_ACCOUNT_HANDLE and free the NT/LM hashes.
- ***********************************************************/
-
-NTSTATUS sam_reset_sam(SAM_ACCOUNT_HANDLE *account)
-{
- SMB_ASSERT(account != NULL);
-
- sam_free_account_contents(account);
-
- sam_fill_default_account(account);
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Free the SAM_ACCOUNT_HANDLE and the member pointers.
- ***********************************************************/
-
-NTSTATUS sam_free_account(SAM_ACCOUNT_HANDLE **account)
-{
- SMB_ASSERT(*account != NULL);
-
- sam_free_account_contents(*account);
-
- if ((*account)->free_fn) {
- (*account)->free_fn(account);
- }
-
- return NT_STATUS_OK;
-}
-
-
-/**********************************************************
- Encode the account control bits into a string.
- length = length of string to encode into (including terminating
- null). length *MUST BE MORE THAN 2* !
- **********************************************************/
-
-char *sam_encode_acct_ctrl(uint16 acct_ctrl, size_t length)
-{
- static fstring acct_str;
- size_t i = 0;
-
- acct_str[i++] = '[';
-
- if (acct_ctrl & ACB_PWNOTREQ ) acct_str[i++] = 'N';
- if (acct_ctrl & ACB_DISABLED ) acct_str[i++] = 'D';
- if (acct_ctrl & ACB_HOMDIRREQ) acct_str[i++] = 'H';
- if (acct_ctrl & ACB_TEMPDUP ) acct_str[i++] = 'T';
- if (acct_ctrl & ACB_NORMAL ) acct_str[i++] = 'U';
- if (acct_ctrl & ACB_MNS ) acct_str[i++] = 'M';
- if (acct_ctrl & ACB_WSTRUST ) acct_str[i++] = 'W';
- if (acct_ctrl & ACB_SVRTRUST ) acct_str[i++] = 'S';
- if (acct_ctrl & ACB_AUTOLOCK ) acct_str[i++] = 'L';
- if (acct_ctrl & ACB_PWNOEXP ) acct_str[i++] = 'X';
- if (acct_ctrl & ACB_DOMTRUST ) acct_str[i++] = 'I';
-
- for ( ; i < length - 2 ; i++ )
- acct_str[i] = ' ';
-
- i = length - 2;
- acct_str[i++] = ']';
- acct_str[i++] = '\0';
-
- return acct_str;
-}
-
-/**********************************************************
- Decode the account control bits from a string.
- **********************************************************/
-
-uint16 sam_decode_acct_ctrl(const char *p)
-{
- uint16 acct_ctrl = 0;
- BOOL finished = False;
-
- /*
- * Check if the account type bits have been encoded after the
- * NT password (in the form [NDHTUWSLXI]).
- */
-
- if (*p != '[')
- return 0;
-
- for (p++; *p && !finished; p++) {
- switch (*p) {
- case 'N': { acct_ctrl |= ACB_PWNOTREQ ; break; /* 'N'o password. */ }
- case 'D': { acct_ctrl |= ACB_DISABLED ; break; /* 'D'isabled. */ }
- case 'H': { acct_ctrl |= ACB_HOMDIRREQ; break; /* 'H'omedir required. */ }
- case 'T': { acct_ctrl |= ACB_TEMPDUP ; break; /* 'T'emp account. */ }
- case 'U': { acct_ctrl |= ACB_NORMAL ; break; /* 'U'ser account (normal). */ }
- case 'M': { acct_ctrl |= ACB_MNS ; break; /* 'M'NS logon user account. What is this ? */ }
- case 'W': { acct_ctrl |= ACB_WSTRUST ; break; /* 'W'orkstation account. */ }
- case 'S': { acct_ctrl |= ACB_SVRTRUST ; break; /* 'S'erver account. */ }
- case 'L': { acct_ctrl |= ACB_AUTOLOCK ; break; /* 'L'ocked account. */ }
- case 'X': { acct_ctrl |= ACB_PWNOEXP ; break; /* No 'X'piry on password */ }
- case 'I': { acct_ctrl |= ACB_DOMTRUST ; break; /* 'I'nterdomain trust account. */ }
- case ' ': { break; }
- case ':':
- case '\n':
- case '\0':
- case ']':
- default: { finished = True; }
- }
- }
-
- return acct_ctrl;
-}
-
-/*************************************************************
- Routine to set 32 hex password characters from a 16 byte array.
-**************************************************************/
-
-void sam_sethexpwd(char *p, const unsigned char *pwd, uint16 acct_ctrl)
-{
- if (pwd != NULL) {
- int i;
- for (i = 0; i < 16; i++)
- slprintf(&p[i*2], 3, "%02X", pwd[i]);
- } else {
- if (acct_ctrl & ACB_PWNOTREQ)
- safe_strcpy(p, "NO PASSWORDXXXXXXXXXXXXXXXXXXXXX", 33);
- else
- safe_strcpy(p, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 33);
- }
-}
-
-/*************************************************************
- Routine to get the 32 hex characters and turn them
- into a 16 byte array.
-**************************************************************/
-
-BOOL sam_gethexpwd(const char *p, unsigned char *pwd)
-{
- int i;
- unsigned char lonybble, hinybble;
- char *hexchars = "0123456789ABCDEF";
- char *p1, *p2;
-
- if (!p)
- return (False);
-
- for (i = 0; i < 32; i += 2) {
- hinybble = toupper(p[i]);
- lonybble = toupper(p[i + 1]);
-
- p1 = strchr(hexchars, hinybble);
- p2 = strchr(hexchars, lonybble);
-
- if (!p1 || !p2)
- return (False);
-
- hinybble = PTR_DIFF(p1, hexchars);
- lonybble = PTR_DIFF(p2, hexchars);
-
- pwd[i / 2] = (hinybble << 4) | lonybble;
- }
- return (True);
-}
diff --git a/source3/sam/get_set_account.c b/source3/sam/get_set_account.c
deleted file mode 100644
index acac281d21..0000000000
--- a/source3/sam/get_set_account.c
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_ACCOUNT_HANDLE access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-NTSTATUS sam_get_account_domain_sid(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- NTSTATUS status;
- SAM_DOMAIN_HANDLE *domain;
- SAM_ASSERT(!sampass || !sid);
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_domain(sampass, &domain))){
- DEBUG(0, ("sam_get_account_domain_sid: Can't get domain for account\n"));
- return status;
- }
-
- return sam_get_domain_sid(domain, sid);
-}
-
-NTSTATUS sam_get_account_domain_name(const SAM_ACCOUNT_HANDLE *sampass, const char **domain_name)
-{
- NTSTATUS status;
- SAM_DOMAIN_HANDLE *domain;
- SAM_ASSERT(sampass && domain_name);
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_domain(sampass, &domain))){
- DEBUG(0, ("sam_get_account_domain_name: Can't get domain for account\n"));
- return status;
- }
-
- return sam_get_domain_name(domain, domain_name);
-}
-
-NTSTATUS sam_get_account_acct_ctrl(const SAM_ACCOUNT_HANDLE *sampass, uint16 *acct_ctrl)
-{
- SAM_ASSERT(sampass && acct_ctrl);
-
- *acct_ctrl = sampass->private.acct_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *logon_time)
-{
- SAM_ASSERT(sampass && logon_time) ;
-
- *logon_time = sampass->private.logon_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logoff_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *logoff_time)
-{
- SAM_ASSERT(sampass && logoff_time) ;
-
- *logoff_time = sampass->private.logoff_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_kickoff_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *kickoff_time)
-{
- SAM_ASSERT(sampass && kickoff_time);
-
- *kickoff_time = sampass->private.kickoff_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_last_set_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_last_set_time)
-{
- SAM_ASSERT(sampass && pass_last_set_time);
-
- *pass_last_set_time = sampass->private.pass_last_set_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_can_change_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_can_change_time)
-{
- SAM_ASSERT(sampass && pass_can_change_time);
-
- *pass_can_change_time = sampass->private.pass_can_change_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_must_change_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_must_change_time)
-{
- SAM_ASSERT(sampass && pass_must_change_time);
-
- *pass_must_change_time = sampass->private.pass_must_change_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_divs(const SAM_ACCOUNT_HANDLE *sampass, uint16 *logon_divs)
-{
- SAM_ASSERT(sampass && logon_divs);
-
- *logon_divs = sampass->private.logon_divs;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_hours_len(const SAM_ACCOUNT_HANDLE *sampass, uint32 *hours_len)
-{
- SAM_ASSERT(sampass && hours_len);
-
- *hours_len = sampass->private.hours_len;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_hours(const SAM_ACCOUNT_HANDLE *sampass, const uint8 **hours)
-{
- SAM_ASSERT(sampass && hours);
-
- *hours = sampass->private.hours;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_nt_pwd(const SAM_ACCOUNT_HANDLE *sampass, DATA_BLOB *nt_pwd)
-{
- SAM_ASSERT(sampass);
-
- SMB_ASSERT((!sampass->private.nt_pw.data)
- || sampass->private.nt_pw.length == NT_HASH_LEN);
-
- *nt_pwd = sampass->private.nt_pw;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_lm_pwd(const SAM_ACCOUNT_HANDLE *sampass, DATA_BLOB *lm_pwd)
-{
- SAM_ASSERT(sampass);
-
- SMB_ASSERT((!sampass->private.lm_pw.data)
- || sampass->private.lm_pw.length == LM_HASH_LEN);
-
- *lm_pwd = sampass->private.lm_pw;
-
- return NT_STATUS_OK;
-}
-
-/* Return the plaintext password if known. Most of the time
- it isn't, so don't assume anything magic about this function.
-
- Used to pass the plaintext to sam backends that might
- want to store more than just the NTLM hashes.
-*/
-
-NTSTATUS sam_get_account_plaintext_pwd(const SAM_ACCOUNT_HANDLE *sampass, char **plain_pwd)
-{
- SAM_ASSERT(sampass && plain_pwd);
-
- *plain_pwd = sampass->private.plaintext_pw;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_sid(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- SAM_ASSERT(sampass);
-
- *sid = &(sampass->private.account_sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pgroup(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- SAM_ASSERT(sampass);
-
- *sid = &(sampass->private.group_sid);
-
- return NT_STATUS_OK;
-}
-
-/**
- * Get flags showing what is initalised in the SAM_ACCOUNT_HANDLE
- * @param sampass the SAM_ACCOUNT_HANDLE in question
- * @return the flags indicating the members initialised in the struct.
- **/
-
-NTSTATUS sam_get_account_init_flag(const SAM_ACCOUNT_HANDLE *sampass, uint32 *initflag)
-{
- SAM_ASSERT(sampass);
-
- *initflag = sampass->private.init_flag;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_name(const SAM_ACCOUNT_HANDLE *sampass, char **account_name)
-{
- SAM_ASSERT(sampass);
-
- *account_name = sampass->private.account_name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_domain(const SAM_ACCOUNT_HANDLE *sampass, SAM_DOMAIN_HANDLE **domain)
-{
- SAM_ASSERT(sampass);
-
- *domain = sampass->private.domain;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_fullname(const SAM_ACCOUNT_HANDLE *sampass, char **fullname)
-{
- SAM_ASSERT(sampass);
-
- *fullname = sampass->private.full_name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_homedir(const SAM_ACCOUNT_HANDLE *sampass, char **homedir)
-{
- SAM_ASSERT(sampass);
-
- *homedir = sampass->private.home_dir;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unix_home_dir(const SAM_ACCOUNT_HANDLE *sampass, char **uhomedir)
-{
- SAM_ASSERT(sampass);
-
- *uhomedir = sampass->private.unix_home_dir;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_dir_drive(const SAM_ACCOUNT_HANDLE *sampass, char **dirdrive)
-{
- SAM_ASSERT(sampass);
-
- *dirdrive = sampass->private.dir_drive;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_script(const SAM_ACCOUNT_HANDLE *sampass, char **logon_script)
-{
- SAM_ASSERT(sampass);
-
- *logon_script = sampass->private.logon_script;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_profile_path(const SAM_ACCOUNT_HANDLE *sampass, char **profile_path)
-{
- SAM_ASSERT(sampass);
-
- *profile_path = sampass->private.profile_path;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_description(const SAM_ACCOUNT_HANDLE *sampass, char **description)
-{
- SAM_ASSERT(sampass);
-
- *description = sampass->private.acct_desc;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_workstations(const SAM_ACCOUNT_HANDLE *sampass, char **workstations)
-{
- SAM_ASSERT(sampass);
-
- *workstations = sampass->private.workstations;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_str(const SAM_ACCOUNT_HANDLE *sampass, char **unknown_str)
-{
- SAM_ASSERT(sampass);
-
- *unknown_str = sampass->private.unknown_str;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_munged_dial(const SAM_ACCOUNT_HANDLE *sampass, char **munged_dial)
-{
- SAM_ASSERT(sampass);
-
- *munged_dial = sampass->private.munged_dial;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_1(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown1)
-{
- SAM_ASSERT(sampass && unknown1);
-
- *unknown1 = sampass->private.unknown_1;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_2(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown2)
-{
- SAM_ASSERT(sampass && unknown2);
-
- *unknown2 = sampass->private.unknown_2;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_3(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown3)
-{
- SAM_ASSERT(sampass && unknown3);
-
- *unknown3 = sampass->private.unknown_3;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Collection of set...() functions for SAM_ACCOUNT_HANDLE_INFO.
- ********************************************************************/
-
-NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, uint16 acct_ctrl)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.acct_ctrl = acct_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logon_time = mytime;
-
-
- return NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS sam_set_account_logoff_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logoff_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_kickoff_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.kickoff_time = mytime;
-
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_can_change_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_can_change_time = mytime;
-
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_must_change_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_must_change_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_last_set_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_last_set_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_hours_len(SAM_ACCOUNT_HANDLE *sampass, uint32 len)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.hours_len = len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_logon_divs(SAM_ACCOUNT_HANDLE *sampass, uint16 hours)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logon_divs = hours;
- return NT_STATUS_OK;
-}
-
-/**
- * Set flags showing what is initalised in the SAM_ACCOUNT_HANDLE
- * @param sampass the SAM_ACCOUNT_HANDLE in question
- * @param flag The *new* flag to be set. Old flags preserved
- * this flag is only added.
- **/
-
-NTSTATUS sam_set_account_init_flag(SAM_ACCOUNT_HANDLE *sampass, uint32 flag)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.init_flag |= flag;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_sid(SAM_ACCOUNT_HANDLE *sampass, const DOM_SID *u_sid)
-{
- SAM_ASSERT(sampass && u_sid);
-
- sid_copy(&sampass->private.account_sid, u_sid);
-
- DEBUG(10, ("sam_set_account_sid: setting account sid %s\n",
- sid_string_static(&sampass->private.account_sid)));
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_sid_from_string(SAM_ACCOUNT_HANDLE *sampass, const char *u_sid)
-{
- DOM_SID new_sid;
- SAM_ASSERT(sampass && u_sid);
-
- DEBUG(10, ("sam_set_account_sid_from_string: setting account sid %s\n",
- u_sid));
-
- if (!string_to_sid(&new_sid, u_sid)) {
- DEBUG(1, ("sam_set_account_sid_from_string: %s isn't a valid SID!\n", u_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(sam_set_account_sid(sampass, &new_sid))) {
- DEBUG(1, ("sam_set_account_sid_from_string: could not set sid %s on SAM_ACCOUNT_HANDLE!\n", u_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pgroup_sid(SAM_ACCOUNT_HANDLE *sampass, const DOM_SID *g_sid)
-{
- SAM_ASSERT(sampass && g_sid);
-
- sid_copy(&sampass->private.group_sid, g_sid);
-
- DEBUG(10, ("sam_set_group_sid: setting group sid %s\n",
- sid_string_static(&sampass->private.group_sid)));
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pgroup_string(SAM_ACCOUNT_HANDLE *sampass, const char *g_sid)
-{
- DOM_SID new_sid;
- SAM_ASSERT(sampass && g_sid);
-
- DEBUG(10, ("sam_set_group_sid_from_string: setting group sid %s\n",
- g_sid));
-
- if (!string_to_sid(&new_sid, g_sid)) {
- DEBUG(1, ("sam_set_group_sid_from_string: %s isn't a valid SID!\n", g_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(sam_set_account_pgroup_sid(sampass, &new_sid))) {
- DEBUG(1, ("sam_set_group_sid_from_string: could not set sid %s on SAM_ACCOUNT_HANDLE!\n", g_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the domain name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_domain(SAM_ACCOUNT_HANDLE *sampass, SAM_DOMAIN_HANDLE *domain)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.domain = domain;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's NT name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_name(SAM_ACCOUNT_HANDLE *sampass, const char *account_name)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_account_name: setting nt account_name %s, was %s\n", account_name, sampass->private.account_name));
-
- sampass->private.account_name = talloc_strdup(sampass->mem_ctx, account_name);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's full name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_fullname(SAM_ACCOUNT_HANDLE *sampass, const char *full_name)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_account_fullname: setting full name %s, was %s\n", full_name, sampass->private.full_name));
-
- sampass->private.full_name = talloc_strdup(sampass->mem_ctx, full_name);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's logon script.
- ********************************************************************/
-
-NTSTATUS sam_set_account_logon_script(SAM_ACCOUNT_HANDLE *sampass, const char *logon_script, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_logon_script: from %s to %s\n", logon_script, sampass->private.logon_script));
-
- sampass->private.logon_script = talloc_strdup(sampass->mem_ctx, logon_script);
-
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's profile path.
- ********************************************************************/
-
-NTSTATUS sam_set_account_profile_path(SAM_ACCOUNT_HANDLE *sampass, const char *profile_path, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_profile_path: setting profile path %s, was %s\n", profile_path, sampass->private.profile_path));
-
- sampass->private.profile_path = talloc_strdup(sampass->mem_ctx, profile_path);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's directory drive.
- ********************************************************************/
-
-NTSTATUS sam_set_account_dir_drive(SAM_ACCOUNT_HANDLE *sampass, const char *dir_drive, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_dir_drive: setting dir drive %s, was %s\n", dir_drive,
- sampass->private.dir_drive));
-
- sampass->private.dir_drive = talloc_strdup(sampass->mem_ctx, dir_drive);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's home directory.
- ********************************************************************/
-
-NTSTATUS sam_set_account_homedir(SAM_ACCOUNT_HANDLE *sampass, const char *home_dir, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_homedir: setting home dir %s, was %s\n", home_dir,
- sampass->private.home_dir));
-
- sampass->private.home_dir = talloc_strdup(sampass->mem_ctx, home_dir);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's unix home directory.
- ********************************************************************/
-
-NTSTATUS sam_set_account_unix_homedir(SAM_ACCOUNT_HANDLE *sampass, const char *unix_home_dir)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_unix_homedir: setting home dir %s, was %s\n", unix_home_dir,
- sampass->private.unix_home_dir));
-
- sampass->private.unix_home_dir = talloc_strdup(sampass->mem_ctx, unix_home_dir);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's account description.
- ********************************************************************/
-
-NTSTATUS sam_set_account_acct_desc(SAM_ACCOUNT_HANDLE *sampass, const char *acct_desc)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.acct_desc = talloc_strdup(sampass->mem_ctx, acct_desc);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's workstation allowed list.
- ********************************************************************/
-
-NTSTATUS sam_set_account_workstations(SAM_ACCOUNT_HANDLE *sampass, const char *workstations)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_workstations: setting workstations %s, was %s\n", workstations,
- sampass->private.workstations));
-
- sampass->private.workstations = talloc_strdup(sampass->mem_ctx, workstations);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's 'unknown_str', whatever the heck this actually is...
- ********************************************************************/
-
-NTSTATUS sam_set_account_unknown_str(SAM_ACCOUNT_HANDLE *sampass, const char *unknown_str)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_str = talloc_strdup(sampass->mem_ctx, unknown_str);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's dial string.
- ********************************************************************/
-
-NTSTATUS sam_set_account_munged_dial(SAM_ACCOUNT_HANDLE *sampass, const char *munged_dial)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.munged_dial = talloc_strdup(sampass->mem_ctx, munged_dial);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's NT hash.
- ********************************************************************/
-
-NTSTATUS sam_set_account_nt_pwd(SAM_ACCOUNT_HANDLE *sampass, const DATA_BLOB data)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.nt_pw = data;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's LM hash.
- ********************************************************************/
-
-NTSTATUS sam_set_account_lm_pwd(SAM_ACCOUNT_HANDLE *sampass, const DATA_BLOB data)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.lm_pw = data;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's plaintext password only (base procedure, see helper
- below)
- ********************************************************************/
-
-NTSTATUS sam_set_account_plaintext_pwd(SAM_ACCOUNT_HANDLE *sampass, const char *plain_pwd)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.plaintext_pw = talloc_strdup(sampass->mem_ctx, plain_pwd);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_1(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_1 = unkn;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_2(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_2 = unkn;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_3(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_3 = unkn;
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_hours(SAM_ACCOUNT_HANDLE *sampass, const uint8 *hours)
-{
- SAM_ASSERT(sampass);
-
- if (!hours) {
- memset ((char *)sampass->private.hours, 0, MAX_HOURS_LEN);
- return NT_STATUS_OK;
- }
-
- memcpy(sampass->private.hours, hours, MAX_HOURS_LEN);
-
- return NT_STATUS_OK;
-}
-
-/* Helpful interfaces to the above */
-
-/*********************************************************************
- Sets the last changed times and must change times for a normal
- password change.
- ********************************************************************/
-
-NTSTATUS sam_set_account_pass_changed_now(SAM_ACCOUNT_HANDLE *sampass)
-{
- uint32 expire;
- NTTIME temptime;
-
- SAM_ASSERT(sampass);
-
- unix_to_nt_time(&temptime, time(NULL));
- if (!NT_STATUS_IS_OK(sam_set_account_pass_last_set_time(sampass, temptime)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!account_policy_get(AP_MAX_PASSWORD_AGE, &expire)
- || (expire==(uint32)-1)) {
-
- get_nttime_max(&temptime);
- if (!NT_STATUS_IS_OK(sam_set_account_pass_must_change_time(sampass, temptime, False)))
- return NT_STATUS_UNSUCCESSFUL;
-
- } else {
- /* FIXME: Add expire to temptime */
-
- if (!NT_STATUS_IS_OK(sam_get_account_pass_last_set_time(sampass,&temptime)) || !NT_STATUS_IS_OK(sam_set_account_pass_must_change_time(sampass, temptime,True)))
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's PLAINTEXT password. Used as an interface to the above.
- Also sets the last change time to NOW.
- ********************************************************************/
-
-NTSTATUS sam_set_account_passwd(SAM_ACCOUNT_HANDLE *sampass, const char *plaintext)
-{
- DATA_BLOB data;
- uchar new_lanman_p16[16];
- uchar new_nt_p16[16];
-
- SAM_ASSERT(sampass && plaintext);
-
- nt_lm_owf_gen(plaintext, new_nt_p16, new_lanman_p16);
-
- data = data_blob(new_nt_p16, 16);
- if (!NT_STATUS_IS_OK(sam_set_account_nt_pwd(sampass, data)))
- return NT_STATUS_UNSUCCESSFUL;
-
- data = data_blob(new_lanman_p16, 16);
-
- if (!NT_STATUS_IS_OK(sam_set_account_lm_pwd(sampass, data)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!NT_STATUS_IS_OK(sam_set_account_plaintext_pwd(sampass, plaintext)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!NT_STATUS_IS_OK(sam_set_account_pass_changed_now(sampass)))
- return NT_STATUS_UNSUCCESSFUL;
-
- return NT_STATUS_OK;
-}
-
diff --git a/source3/sam/get_set_domain.c b/source3/sam/get_set_domain.c
deleted file mode 100644
index c70a4a3f09..0000000000
--- a/source3/sam/get_set_domain.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_DOMAIN access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-NTSTATUS sam_get_domain_sid(SAM_DOMAIN_HANDLE *domain, const DOM_SID **sid)
-{
- SAM_ASSERT(domain &&sid);
-
- *sid = &(domain->private.sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_accounts(SAM_DOMAIN_HANDLE *domain, uint32 *num_accounts)
-{
- SAM_ASSERT(domain &&num_accounts);
-
- *num_accounts = domain->private.num_accounts;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_groups(SAM_DOMAIN_HANDLE *domain, uint32 *num_groups)
-{
- SAM_ASSERT(domain &&num_groups);
-
- *num_groups = domain->private.num_groups;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_aliases(SAM_DOMAIN_HANDLE *domain, uint32 *num_aliases)
-{
- SAM_ASSERT(domain &&num_aliases);
-
- *num_aliases = domain->private.num_aliases;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_name(SAM_DOMAIN_HANDLE *domain, const char **domain_name)
-{
- SAM_ASSERT(domain &&domain_name);
-
- *domain_name = domain->private.name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_server(SAM_DOMAIN_HANDLE *domain, const char **server_name)
-{
- SAM_ASSERT(domain &&server_name);
-
- *server_name = domain->private.servername;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *max_passwordage)
-{
- SAM_ASSERT(domain &&max_passwordage);
-
- *max_passwordage = domain->private.max_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *min_passwordage)
-{
- SAM_ASSERT(domain &&min_passwordage);
-
- *min_passwordage = domain->private.min_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME *lockout_duration)
-{
- SAM_ASSERT(domain &&lockout_duration);
-
- *lockout_duration = domain->private.lockout_duration;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME *reset_lockout_count)
-{
- SAM_ASSERT(domain &&reset_lockout_count);
-
- *reset_lockout_count = domain->private.reset_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 *min_passwordlength)
-{
- SAM_ASSERT(domain &&min_passwordlength);
-
- *min_passwordlength = domain->private.min_passwordlength;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 *password_history)
-{
- SAM_ASSERT(domain &&password_history);
-
- *password_history = domain->private.password_history;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 *lockout_count)
-{
- SAM_ASSERT(domain &&lockout_count);
-
- *lockout_count = domain->private.lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL *force_logoff)
-{
- SAM_ASSERT(domain &&force_logoff);
-
- *force_logoff = domain->private.force_logoff;
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_get_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL *login_pwdchange)
-{
- SAM_ASSERT(domain && login_pwdchange);
-
- *login_pwdchange = domain->private.login_pwdchange;
-
- return NT_STATUS_OK;
-}
-
-/* Set */
-
-NTSTATUS sam_set_domain_name(SAM_DOMAIN_HANDLE *domain, const char *domain_name)
-{
- SAM_ASSERT(domain);
-
- domain->private.name = talloc_strdup(domain->mem_ctx, domain_name);
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_set_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME max_passwordage)
-{
- SAM_ASSERT(domain);
-
- domain->private.max_passwordage = max_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME min_passwordage)
-{
- SAM_ASSERT(domain);
-
- domain->private.min_passwordage = min_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME lockout_duration)
-{
- SAM_ASSERT(domain);
-
- domain->private.lockout_duration = lockout_duration;
-
- return NT_STATUS_OK;
-}
-NTSTATUS sam_set_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME reset_lockout_count)
-{
- SAM_ASSERT(domain);
-
- domain->private.reset_count = reset_lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 min_passwordlength)
-{
- SAM_ASSERT(domain);
-
- domain->private.min_passwordlength = min_passwordlength;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 password_history)
-{
- SAM_ASSERT(domain);
-
- domain->private.password_history = password_history;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 lockout_count)
-{
- SAM_ASSERT(domain);
-
- domain->private.lockout_count = lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL force_logoff)
-{
- SAM_ASSERT(domain);
-
- domain->private.force_logoff = force_logoff;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL login_pwdchange)
-{
- SAM_ASSERT(domain);
-
- domain->private.login_pwdchange = login_pwdchange;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_server(SAM_DOMAIN_HANDLE *domain, const char *server_name)
-{
- SAM_ASSERT(domain);
-
- domain->private.servername = talloc_strdup(domain->mem_ctx, server_name);
-
- return NT_STATUS_OK;
-}
diff --git a/source3/sam/get_set_group.c b/source3/sam/get_set_group.c
deleted file mode 100644
index 11ea9258a7..0000000000
--- a/source3/sam/get_set_group.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_USER_HANDLE access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/* sam group get functions */
-
-NTSTATUS sam_get_group_sid(const SAM_GROUP_HANDLE *group, const DOM_SID **sid)
-{
- SAM_ASSERT(group && sid);
-
- *sid = &(group->private.sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_ctrl(const SAM_GROUP_HANDLE *group, uint32 *group_ctrl)
-{
- SAM_ASSERT(group && group_ctrl);
-
- *group_ctrl = group->private.group_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_name(const SAM_GROUP_HANDLE *group, const char **group_name)
-{
- SAM_ASSERT(group);
-
- *group_name = group->private.group_name;
-
- return NT_STATUS_OK;
-
-}
-NTSTATUS sam_get_group_comment(const SAM_GROUP_HANDLE *group, const char **group_desc)
-{
- SAM_ASSERT(group);
-
- *group_desc = group->private.group_desc;
-
- return NT_STATUS_OK;
-}
-
-/* sam group set functions */
-
-NTSTATUS sam_set_group_sid(SAM_GROUP_HANDLE *group, const DOM_SID *sid)
-{
- SAM_ASSERT(group);
-
- if (!sid)
- ZERO_STRUCT(group->private.sid);
- else
- sid_copy(&(group->private.sid), sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_group_ctrl(SAM_GROUP_HANDLE *group, uint32 group_ctrl)
-{
- SAM_ASSERT(group);
-
- group->private.group_ctrl = group_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_name(SAM_GROUP_HANDLE *group, const char *group_name)
-{
- SAM_ASSERT(group);
-
- group->private.group_name = talloc_strdup(group->mem_ctx, group_name);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_description(SAM_GROUP_HANDLE *group, const char *group_desc)
-{
- SAM_ASSERT(group);
-
- group->private.group_desc = talloc_strdup(group->mem_ctx, group_desc);
-
- return NT_STATUS_OK;
-
-}
diff --git a/source3/sam/group.c b/source3/sam/group.c
deleted file mode 100644
index 101e3dd7ce..0000000000
--- a/source3/sam/group.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_GROUP_HANDLE /SAM_GROUP_ENUM helpers
-
- Copyright (C) Stefan (metze) Metzmacher 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/************************************************************
- Fill the SAM_GROUP_HANDLE with default values.
- ***********************************************************/
-
-static void sam_fill_default_group(SAM_GROUP_HANDLE *group)
-{
- ZERO_STRUCT(group->private); /* Don't touch the talloc context */
-
-}
-
-static void destroy_sam_group_handle_talloc(SAM_GROUP_HANDLE **group)
-{
- if (*group) {
-
- talloc_destroy((*group)->mem_ctx);
- *group = NULL;
- }
-}
-
-
-/**********************************************************************
- Alloc memory and initialises a SAM_GROUP_HANDLE on supplied mem_ctx.
-***********************************************************************/
-
-NTSTATUS sam_init_group_talloc(TALLOC_CTX *mem_ctx, SAM_GROUP_HANDLE **group)
-{
- SMB_ASSERT(*group != NULL);
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_group_talloc: mem_ctx was NULL!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- *group=(SAM_GROUP_HANDLE *)talloc(mem_ctx, sizeof(SAM_GROUP_HANDLE));
-
- if (*group==NULL) {
- DEBUG(0,("sam_init_group_talloc: error while allocating memory\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*group)->mem_ctx = mem_ctx;
-
- (*group)->free_fn = NULL;
-
- sam_fill_default_group(*group);
-
- return NT_STATUS_OK;
-}
-
-
-/*************************************************************
- Alloc memory and initialises a struct SAM_GROUP_HANDLE.
- ************************************************************/
-
-NTSTATUS sam_init_group(SAM_GROUP_HANDLE **group)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS nt_status;
-
- mem_ctx = talloc_init("sam internal SAM_GROUP_HANDLE allocation");
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_group: error while doing talloc_init()\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_init_group_talloc(mem_ctx, group))) {
- talloc_destroy(mem_ctx);
- return nt_status;
- }
-
- (*group)->free_fn = destroy_sam_group_handle_talloc;
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Reset the SAM_GROUP_HANDLE.
- ***********************************************************/
-
-NTSTATUS sam_reset_group(SAM_GROUP_HANDLE *group)
-{
- SMB_ASSERT(group != NULL);
-
- sam_fill_default_group(group);
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Free the SAM_GROUP_HANDLE and the member pointers.
- ***********************************************************/
-
-NTSTATUS sam_free_group(SAM_ACCOUNT_HANDLE **group)
-{
- SMB_ASSERT(*group != NULL);
-
- if ((*group)->free_fn) {
- (*group)->free_fn(group);
- }
-
- return NT_STATUS_OK;
-}
-
-
-/**********************************************************
- Encode the group control bits into a string.
- length = length of string to encode into (including terminating
- null). length *MUST BE MORE THAN 2* !
- **********************************************************/
-
-char *sam_encode_acct_ctrl(uint16 group_ctrl, size_t length)
-{
- static fstring group_str;
- size_t i = 0;
-
- group_str[i++] = '[';
-
- if (group_ctrl & GCB_LOCAL_GROUP ) group_str[i++] = 'L';
- if (group_ctrl & GCB_GLOBAL_GROUP ) group_str[i++] = 'G';
-
- for ( ; i < length - 2 ; i++ )
- group_str[i] = ' ';
-
- i = length - 2;
- group_str[i++] = ']';
- group_str[i++] = '\0';
-
- return group_str;
-}
-
-/**********************************************************
- Decode the group control bits from a string.
- **********************************************************/
-
-uint16 sam_decode_group_ctrl(const char *p)
-{
- uint16 group_ctrl = 0;
- BOOL finished = False;
-
- /*
- * Check if the account type bits have been encoded after the
- * NT password (in the form [NDHTUWSLXI]).
- */
-
- if (*p != '[')
- return 0;
-
- for (p++; *p && !finished; p++) {
- switch (*p) {
- case 'L': { group_ctrl |= GCB_LOCAL_GROUP; break; /* 'L'ocal Aliases Group. */ }
- case 'G': { group_ctrl |= GCB_GLOBAL_GROUP; break; /* 'G'lobal Domain Group. */ }
-
- case ' ': { break; }
- case ':':
- case '\n':
- case '\0':
- case ']':
- default: { finished = True; }
- }
- }
-
- return group_ctrl;
-}
-
diff --git a/source3/sam/gumm_tdb.c b/source3/sam/gumm_tdb.c
deleted file mode 100644
index 53ea872a11..0000000000
--- a/source3/sam/gumm_tdb.c
+++ /dev/null
@@ -1,1193 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * SMB parameters and setup
- * Copyright (C) Andrew Tridgell 1992-1998
- * Copyright (C) Simo Sorce 2000-2002
- * Copyright (C) Gerald Carter 2000
- * Copyright (C) Jeremy Allison 2001
- * Copyright (C) Andrew Bartlett 2002
- *
- * 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 2 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, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-#include "tdbsam2.h"
-#include "tdbsam2_parse_info.h"
-
-static int tdbgumm_debug_level = DBGC_ALL;
-#undef DBGC_CLASS
-#define DBGC_CLASS tdbgumm_debug_level
-
-#define TDBSAM_VERSION 20021215
-#define TDB_FILE_NAME "tdbsam2.tdb"
-#define NAMEPREFIX "NAME_"
-#define SIDPREFIX "SID_"
-#define PRIVILEGEPREFIX "PRIV_"
-
-#define TDB_FORMAT_STRING "ddB"
-
-#define TALLOC_CHECK(ptr, err, label) do { if ((ptr) == NULL) { DEBUG(0, ("%s: Out of memory!\n", __FUNCTION__)); err = NT_STATUS_NO_MEMORY; goto label; } } while(0)
-#define SET_OR_FAIL(func, label) do { if (NT_STATUS_IS_ERR(func)) { DEBUG(0, ("%s: Setting gums object data failed!\n", __FUNCTION__)); goto label; } } while(0)
-
-struct tdbsam2_enum_objs {
- uint32 type;
- fstring dom_sid;
- TDB_CONTEXT *db;
- TDB_DATA key;
- struct tdbsam2_enum_objs *next;
-};
-
-union tdbsam2_data {
- struct tdbsam2_domain_data *domain;
- struct tdbsam2_user_data *user;
- struct tdbsam2_group_data *group;
-};
-
-struct tdbsam2_object {
- uint32 type;
- uint32 version;
- union tdbsam2_data data;
-};
-
-static TDB_CONTEXT *tdbsam2_db;
-
-struct tdbsam2_enum_objs **teo_handlers;
-
-static NTSTATUS init_tdbsam2_object_from_buffer(struct tdbsam2_object *object, TALLOC_CTX *mem_ctx, char *buffer, int size)
-{
-
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
- int iret;
- char *obj_data;
- int data_size = 0;
- int len;
-
- len = tdb_unpack (buffer, size, TDB_FORMAT_STRING,
- &(object->version),
- &(object->type),
- &data_size, &obj_data);
-
- if (len == -1)
- goto done;
-
- /* version is checked inside this function so that backward compatibility code can be
- called eventually.
- this way we can easily handle database format upgrades */
- if (object->version != TDBSAM_VERSION) {
- DEBUG(3,("init_tdbsam2_object_from_buffer: Error, db object has wrong tdbsam version!\n"));
- goto done;
- }
-
- /* be sure the string is terminated before trying to parse it */
- if (obj_data[data_size - 1] != '\0')
- obj_data[data_size - 1] = '\0';
-
- switch (object->type) {
- case GUMS_OBJ_DOMAIN:
- object->data.domain = (struct tdbsam2_domain_data *)talloc(mem_ctx, sizeof(struct tdbsam2_domain_data));
- TALLOC_CHECK(object->data.domain, ret, done);
- memset(object->data.domain, 0, sizeof(struct tdbsam2_domain_data));
-
- iret = gen_parse(mem_ctx, pinfo_tdbsam2_domain_data, (char *)(object->data.domain), obj_data);
- break;
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- object->data.group = (struct tdbsam2_group_data *)talloc(mem_ctx, sizeof(struct tdbsam2_group_data));
- TALLOC_CHECK(object->data.group, ret, done);
- memset(object->data.group, 0, sizeof(struct tdbsam2_group_data));
-
- iret = gen_parse(mem_ctx, pinfo_tdbsam2_group_data, (char *)(object->data.group), obj_data);
- break;
- case GUMS_OBJ_NORMAL_USER:
- object->data.user = (struct tdbsam2_user_data *)talloc(mem_ctx, sizeof(struct tdbsam2_user_data));
- TALLOC_CHECK(object->data.user, ret, done);
- memset(object->data.user, 0, sizeof(struct tdbsam2_user_data));
-
- iret = gen_parse(mem_ctx, pinfo_tdbsam2_user_data, (char *)(object->data.user), obj_data);
- break;
- default:
- DEBUG(3,("init_tdbsam2_object_from_buffer: Error, wrong object type number!\n"));
- goto done;
- }
-
- if (iret != 0) {
- DEBUG(0,("init_tdbsam2_object_from_buffer: Fatal Error! Unable to parse object!\n"));
- DEBUG(0,("init_tdbsam2_object_from_buffer: DB Corrupted ?"));
- goto done;
- }
-
- ret = NT_STATUS_OK;
-done:
- SAFE_FREE(obj_data);
- return ret;
-}
-
-static NTSTATUS init_buffer_from_tdbsam2_object(char **buffer, size_t *len, TALLOC_CTX *mem_ctx, struct tdbsam2_object *object)
-{
-
- NTSTATUS ret;
- char *buf1 = NULL;
- size_t buflen;
-
- if (!buffer)
- return NT_STATUS_INVALID_PARAMETER;
-
- switch (object->type) {
- case GUMS_OBJ_DOMAIN:
- buf1 = gen_dump(mem_ctx, pinfo_tdbsam2_domain_data, (char *)(object->data.domain), 0);
- break;
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- buf1 = gen_dump(mem_ctx, pinfo_tdbsam2_group_data, (char *)(object->data.group), 0);
- break;
- case GUMS_OBJ_NORMAL_USER:
- buf1 = gen_dump(mem_ctx, pinfo_tdbsam2_user_data, (char *)(object->data.user), 0);
- break;
- default:
- DEBUG(3,("init_buffer_from_tdbsam2_object: Error, wrong object type number!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (buf1 == NULL) {
- DEBUG(0, ("init_buffer_from_tdbsam2_object: Fatal Error! Unable to dump object!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- buflen = tdb_pack(NULL, 0, TDB_FORMAT_STRING,
- TDBSAM_VERSION,
- object->type,
- strlen(buf1) + 1, buf1);
-
- *buffer = talloc(mem_ctx, buflen);
- TALLOC_CHECK(*buffer, ret, done);
-
- *len = tdb_pack(*buffer, buflen, TDB_FORMAT_STRING,
- TDBSAM_VERSION,
- object->type,
- strlen(buf1) + 1, buf1);
-
- if (*len != buflen) {
- DEBUG(0, ("init_tdb_data_from_tdbsam2_object: somthing odd is going on here: bufflen (%d) != len (%d) in tdb_pack operations!\n",
- buflen, *len));
- *buffer = NULL;
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- ret = NT_STATUS_OK;
-done:
- return ret;
-}
-
-static NTSTATUS opentdb(void)
-{
- if (!tdbsam2_db) {
- pstring tdbfile;
- get_private_directory(tdbfile);
- pstrcat(tdbfile, "/");
- pstrcat(tdbfile, TDB_FILE_NAME);
-
- tdbsam2_db = tdb_open_log(tdbfile, 0, TDB_DEFAULT, O_RDWR | O_CREAT, 0600);
- if (!tdbsam2_db)
- {
- DEBUG(0, ("opentdb: Unable to open database (%s)!\n", tdbfile));
- return NT_STATUS_UNSUCCESSFUL;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS get_object_by_sid(TALLOC_CTX *mem_ctx, struct tdbsam2_object *obj, const DOM_SID *sid)
-{
- NTSTATUS ret;
- TDB_DATA data, key;
- fstring keystr;
-
- if (!obj || !mem_ctx || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- return ret;
- }
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", SIDPREFIX, sid_string_static(sid));
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("get_object_by_sid: Error fetching database, domain entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (NT_STATUS_IS_ERR(init_tdbsam2_object_from_buffer(obj, mem_ctx, data.dptr, data.dsize))) {
- SAFE_FREE(data.dptr);
- DEBUG(0, ("get_object_by_sid: Error fetching database, malformed entry!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- SAFE_FREE(data.dptr);
-
- return NT_STATUS_OK;
-
-}
-
-static NTSTATUS get_object_by_name(TALLOC_CTX *mem_ctx, struct tdbsam2_object *obj, const char* name)
-{
-
- NTSTATUS ret;
- TDB_DATA data, key;
- fstring keystr;
- fstring objname;
- DOM_SID sid;
- char *obj_sidstr;
- int obj_version, obj_type, obj_sidstr_len, len;
-
- if (!obj || !mem_ctx || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- return ret;
- }
-
- unix_strlower(name, -1, objname, sizeof(objname));
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", NAMEPREFIX, objname);
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("get_object_by_name: Error fetching database, domain entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- len = tdb_unpack(data.dptr, data.dsize, TDB_FORMAT_STRING,
- &obj_version,
- &obj_type,
- &obj_sidstr_len, &obj_sidstr);
-
- SAFE_FREE(data.dptr);
-
- if (len == -1 || obj_version != TDBSAM_VERSION || obj_sidstr_len <= 0) {
- DEBUG(5, ("get_object_by_name: Error unpacking database object!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!string_to_sid(&sid, obj_sidstr)) {
- DEBUG(5, ("get_object_by_name: Error invalid sid string found in database object!\n"));
- SAFE_FREE(obj_sidstr);
- return NT_STATUS_UNSUCCESSFUL;
- }
- SAFE_FREE(obj_sidstr);
-
- return get_object_by_sid(mem_ctx, obj, &sid);
-}
-
-static NTSTATUS store_object(TALLOC_CTX *mem_ctx, struct tdbsam2_object *object, BOOL new_obj)
-{
-
- NTSTATUS ret;
- TDB_DATA data, key, key2;
- fstring keystr;
- fstring namestr;
- int flag, r;
-
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- return ret;
- }
-
- if (new_obj) {
- flag = TDB_INSERT;
- } else {
- flag = TDB_MODIFY;
- }
-
- ret = init_buffer_from_tdbsam2_object(&(data.dptr), &(data.dsize), mem_ctx, object);
- if (NT_STATUS_IS_ERR(ret))
- return ret;
-
- switch (object->type) {
- case GUMS_OBJ_DOMAIN:
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", SIDPREFIX, sid_string_static(object->data.domain->dom_sid));
- slprintf(namestr, sizeof(namestr) - 1, "%s%s", NAMEPREFIX, object->data.domain->name);
- break;
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", SIDPREFIX, sid_string_static(object->data.group->group_sid));
- slprintf(namestr, sizeof(namestr) - 1, "%s%s", NAMEPREFIX, object->data.group->name);
- break;
- case GUMS_OBJ_NORMAL_USER:
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", SIDPREFIX, sid_string_static(object->data.user->user_sid));
- slprintf(namestr, sizeof(namestr) - 1, "%s%s", NAMEPREFIX, object->data.user->name);
- break;
- default:
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- if ((r = tdb_store(tdbsam2_db, key, data, flag)) != TDB_SUCCESS) {
- DEBUG(0, ("store_object: Unable to modify SAM!\n"));
- DEBUGADD(0, (" Error: %s", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(0, (" occured while storing the main record (%s)\n", keystr));
- if (r == TDB_ERR_EXISTS) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
-
- key2.dptr = namestr;
- key2.dsize = strlen(namestr) + 1;
-
- if ((r = tdb_store(tdbsam2_db, key2, key, flag)) != TDB_SUCCESS) {
- DEBUG(0, ("store_object: Unable to modify SAM!\n"));
- DEBUGADD(0, (" Error: %s", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(0, (" occured while storing the main record (%s)\n", keystr));
- if (r == TDB_ERR_EXISTS) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
-/* TODO: update the general database counter */
-/* TODO: update this entry counter too */
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS get_next_sid(TALLOC_CTX *mem_ctx, DOM_SID **sid)
-{
- NTSTATUS ret;
- struct tdbsam2_object obj;
- DOM_SID *dom_sid = get_global_sam_sid();
- uint32 new_rid;
-
-/* TODO: LOCK DOMAIN OBJECT */
- ret = get_object_by_sid(mem_ctx, &obj, dom_sid);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("get_next_sid: unable to get root Domain object!\n"));
- ret = NT_STATUS_INTERNAL_DB_ERROR;
- goto error;
- }
-
- new_rid = obj.data.domain->next_rid;
-
- /* Increment the RID Counter */
- obj.data.domain->next_rid++;
-
- /* Store back Domain object */
- ret = store_object(mem_ctx, &obj, False);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("get_next_sid: unable to update root Domain object!\n"));
- ret = NT_STATUS_INTERNAL_DB_ERROR;
- goto error;
- }
-/* TODO: UNLOCK DOMAIN OBJECT */
-
- *sid = sid_dup_talloc(mem_ctx, dom_sid);
- TALLOC_CHECK(*sid, ret, error);
-
- if (!sid_append_rid(*sid, new_rid)) {
- DEBUG(0, ("get_next_sid: unable to build new SID !?!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto error;
- }
-
- return NT_STATUS_OK;
-
-error:
- return ret;
-}
-
-static NTSTATUS user_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_user_data *userdata)
-{
- NTSTATUS ret;
-
- if (!object || !userdata) {
- DEBUG(0, ("tdbsam2_user_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* userdata->xcounter */
- /* userdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, userdata->user_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, userdata->name), error);
-
- SET_OR_FAIL(gums_set_user_pri_group(*object, userdata->group_sid), error);
-
- if (userdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, userdata->description), error);
-
- if (userdata->full_name)
- SET_OR_FAIL(gums_set_user_fullname(*object, userdata->full_name), error);
-
- if (userdata->home_dir)
- SET_OR_FAIL(gums_set_user_homedir(*object, userdata->home_dir), error);
-
- if (userdata->dir_drive)
- SET_OR_FAIL(gums_set_user_dir_drive(*object, userdata->dir_drive), error);
-
- if (userdata->logon_script)
- SET_OR_FAIL(gums_set_user_logon_script(*object, userdata->logon_script), error);
-
- if (userdata->profile_path)
- SET_OR_FAIL(gums_set_user_profile_path(*object, userdata->profile_path), error);
-
- if (userdata->workstations)
- SET_OR_FAIL(gums_set_user_workstations(*object, userdata->workstations), error);
-
- if (userdata->unknown_str)
- SET_OR_FAIL(gums_set_user_unknown_str(*object, userdata->unknown_str), error);
-
- if (userdata->munged_dial)
- SET_OR_FAIL(gums_set_user_munged_dial(*object, userdata->munged_dial), error);
-
- SET_OR_FAIL(gums_set_user_logon_divs(*object, userdata->logon_divs), error);
- SET_OR_FAIL(gums_set_user_hours_len(*object, userdata->hours_len), error);
-
- if (userdata->hours)
- SET_OR_FAIL(gums_set_user_hours(*object, userdata->hours), error);
-
- SET_OR_FAIL(gums_set_user_unknown_3(*object, userdata->unknown_3), error);
- SET_OR_FAIL(gums_set_user_unknown_5(*object, userdata->unknown_5), error);
- SET_OR_FAIL(gums_set_user_unknown_6(*object, userdata->unknown_6), error);
-
- SET_OR_FAIL(gums_set_user_logon_time(*object, *(userdata->logon_time)), error);
- SET_OR_FAIL(gums_set_user_logoff_time(*object, *(userdata->logoff_time)), error);
- SET_OR_FAIL(gums_set_user_kickoff_time(*object, *(userdata->kickoff_time)), error);
- SET_OR_FAIL(gums_set_user_pass_last_set_time(*object, *(userdata->pass_last_set_time)), error);
- SET_OR_FAIL(gums_set_user_pass_can_change_time(*object, *(userdata->pass_can_change_time)), error);
- SET_OR_FAIL(gums_set_user_pass_must_change_time(*object, *(userdata->pass_must_change_time)), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS group_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_group_data *groupdata)
-{
- NTSTATUS ret;
-
- if (!object || !groupdata) {
- DEBUG(0, ("tdbsam2_group_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* groupdata->xcounter */
- /* groupdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, groupdata->group_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, groupdata->name), error);
-
- if (groupdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, groupdata->description), error);
-
- if (groupdata->count)
- SET_OR_FAIL(gums_set_group_members(*object, groupdata->count, groupdata->members), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS domain_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_domain_data *domdata)
-{
-
- NTSTATUS ret;
-
- if (!object || !*object || !domdata) {
- DEBUG(0, ("tdbsam2_domain_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* domdata->xcounter */
- /* domdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, domdata->dom_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, domdata->name), error);
-
- if (domdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, domdata->description), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_object *data)
-{
-
- NTSTATUS ret;
-
- if (!object || !data) {
- DEBUG(0, ("tdbsam2_user_data_to_gums_object: no NULL structure pointers are accepted here!\n"));
- ret = NT_STATUS_INVALID_PARAMETER;
- goto done;
- }
-
- ret = gums_create_object(object, data->type);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(5, ("tdbsam2_user_data_to_gums_object: error creating gums object!\n"));
- goto done;
- }
-
- switch (data->type) {
- case GUMS_OBJ_DOMAIN:
- ret = domain_data_to_gums_object(object, data->data.domain);
- break;
-
- case GUMS_OBJ_NORMAL_USER:
- ret = user_data_to_gums_object(object, data->data.user);
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- ret = group_data_to_gums_object(object, data->data.group);
- break;
-
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- }
-
-done:
- return ret;
-}
-
-
-/* GUMM object functions */
-
-static NTSTATUS tdbsam2_get_domain_sid(DOM_SID *sid, const char* name)
-{
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- fstring domname;
-
- if (!sid || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- mem_ctx = talloc_init("tdbsam2_get_domain_sid");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- goto done;
- }
-
- unix_strlower(name, -1, domname, sizeof(domname));
-
- ret = get_object_by_name(mem_ctx, &obj, domname);
-
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("tdbsam2_get_domain_sid: Error fetching database!\n"));
- goto done;
- }
-
- if (obj.type != GUMS_OBJ_DOMAIN) {
- DEBUG(5, ("tdbsam2_get_domain_sid: Requested object is not a domain!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- sid_copy(sid, obj.data.domain->dom_sid);
-
- ret = NT_STATUS_OK;
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_set_domain_sid (const DOM_SID *sid, const char *name)
-{
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- fstring domname;
-
- if (!sid || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- mem_ctx = talloc_init("tdbsam2_set_domain_sid");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (tdbsam2_db == NULL) {
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- goto done;
- }
- }
-
- unix_strlower(name, -1, domname, sizeof(domname));
-
-/* TODO: we need to lock this entry until updated! */
-
- ret = get_object_by_name(mem_ctx, &obj, domname);
-
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("tdbsam2_get_domain_sid: Error fetching database!\n"));
- goto done;
- }
-
- if (obj.type != GUMS_OBJ_DOMAIN) {
- DEBUG(5, ("tdbsam2_get_domain_sid: Requested object is not a domain!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- sid_copy(obj.data.domain->dom_sid, sid);
-
- ret = store_object(mem_ctx, &obj, False);
-
-done:
-/* TODO: unlock here */
- if (mem_ctx) talloc_destroy(mem_ctx);
- return ret;
-}
-
-/* TODO */
- NTSTATUS (*get_sequence_number) (void);
-
-
-extern DOM_SID global_sid_NULL;
-
-static NTSTATUS tdbsam2_new_object(DOM_SID *sid, const char *name, const int obj_type)
-{
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- NTTIME zero_time = {0,0};
- const char *defpw = "NOPASSWORDXXXXXX";
- uint8 defhours[21] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
-
- if (!sid || !name) {
- DEBUG(0, ("tdbsam2_new_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_new_object");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- obj.type = obj_type;
- obj.version = TDBSAM_VERSION;
-
- switch (obj_type) {
- case GUMS_OBJ_NORMAL_USER:
- obj.data.user = (struct tdbsam2_user_data *)talloc_zero(mem_ctx, sizeof(struct tdbsam2_user_data));
- TALLOC_CHECK(obj.data.user, ret, done);
-
- get_next_sid(mem_ctx, &(obj.data.user->user_sid));
- TALLOC_CHECK(obj.data.user->user_sid, ret, done);
- sid_copy(sid, obj.data.user->user_sid);
-
- obj.data.user->name = talloc_strdup(mem_ctx, name);
- TALLOC_CHECK(obj.data.user, ret, done);
-
- obj.data.user->xcounter = 1;
- /*obj.data.user->sec_desc*/
- obj.data.user->description = "";
- obj.data.user->group_sid = &global_sid_NULL;
- obj.data.user->logon_time = &zero_time;
- obj.data.user->logoff_time = &zero_time;
- obj.data.user->kickoff_time = &zero_time;
- obj.data.user->pass_last_set_time = &zero_time;
- obj.data.user->pass_can_change_time = &zero_time;
- obj.data.user->pass_must_change_time = &zero_time;
-
- obj.data.user->full_name = "";
- obj.data.user->home_dir = "";
- obj.data.user->dir_drive = "";
- obj.data.user->logon_script = "";
- obj.data.user->profile_path = "";
- obj.data.user->workstations = "";
- obj.data.user->unknown_str = "";
- obj.data.user->munged_dial = "";
-
- obj.data.user->lm_pw_ptr = defpw;
- obj.data.user->nt_pw_ptr = defpw;
-
- obj.data.user->logon_divs = 168;
- obj.data.user->hours_len = 21;
- obj.data.user->hours = &defhours;
-
- obj.data.user->unknown_3 = 0x00ffffff;
- obj.data.user->unknown_5 = 0x00020000;
- obj.data.user->unknown_6 = 0x000004ec;
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- obj.data.group = (struct tdbsam2_group_data *)talloc_zero(mem_ctx, sizeof(struct tdbsam2_group_data));
- TALLOC_CHECK(obj.data.group, ret, done);
-
- get_next_sid(mem_ctx, &(obj.data.group->group_sid));
- TALLOC_CHECK(obj.data.group->group_sid, ret, done);
- sid_copy(sid, obj.data.group->group_sid);
-
- obj.data.group->name = talloc_strdup(mem_ctx, name);
- TALLOC_CHECK(obj.data.group, ret, done);
-
- obj.data.group->xcounter = 1;
- /*obj.data.group->sec_desc*/
- obj.data.group->description = "";
-
- break;
-
- case GUMS_OBJ_DOMAIN:
-
- /* FIXME: should we check against global_sam_sid to make it impossible
- to store more than one domain ? */
-
- obj.data.domain = (struct tdbsam2_domain_data *)talloc_zero(mem_ctx, sizeof(struct tdbsam2_domain_data));
- TALLOC_CHECK(obj.data.domain, ret, done);
-
- obj.data.domain->dom_sid = sid_dup_talloc(mem_ctx, get_global_sam_sid());
- TALLOC_CHECK(obj.data.domain->dom_sid, ret, done);
- sid_copy(sid, obj.data.domain->dom_sid);
-
- obj.data.domain->name = talloc_strdup(mem_ctx, name);
- TALLOC_CHECK(obj.data.domain, ret, done);
-
- obj.data.domain->xcounter = 1;
- /*obj.data.domain->sec_desc*/
- obj.data.domain->next_rid = 0x3e9;
- obj.data.domain->description = "";
-
- ret = NT_STATUS_OK;
- break;
-
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- ret = store_object(mem_ctx, &obj, True);
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_delete_object(const DOM_SID *sid)
-{
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- TDB_DATA data, key;
- fstring keystr;
-
- if (!sid) {
- DEBUG(0, ("tdbsam2_delete_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_delete_object");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_delete_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (tdbsam2_db == NULL) {
- if (NT_STATUS_IS_ERR(ret = opentdb())) {
- goto done;
- }
- }
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", SIDPREFIX, sid_string_static(sid));
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("tdbsam2_delete_object: Error fetching database, SID entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- if (tdb_delete(tdbsam2_db, key) != TDB_SUCCESS) {
- DEBUG(5, ("tdbsam2_delete_object: Error deleting object!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- if (NT_STATUS_IS_ERR(init_tdbsam2_object_from_buffer(&obj, mem_ctx, data.dptr, data.dsize))) {
- SAFE_FREE(data.dptr);
- DEBUG(0, ("tdbsam2_delete_object: Error fetching database, malformed entry!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- switch (obj.type) {
- case GUMS_OBJ_DOMAIN:
- /* TODO: SHOULD WE ALLOW TO DELETE DOMAINS ? */
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", NAMEPREFIX, obj.data.domain->name);
- break;
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", NAMEPREFIX, obj.data.group->name);
- break;
- case GUMS_OBJ_NORMAL_USER:
- slprintf(keystr, sizeof(keystr) - 1, "%s%s", NAMEPREFIX, obj.data.user->name);
- break;
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- if (tdb_delete(tdbsam2_db, key) != TDB_SUCCESS) {
- DEBUG(5, ("tdbsam2_delete_object: Error deleting object!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
-/* TODO: update the general database counter */
-
-done:
- SAFE_FREE(data.dptr);
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_get_object_from_sid(GUMS_OBJECT **object, const DOM_SID *sid, const int obj_type)
-{
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
-
- if (!object || !sid) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_get_object_from_sid");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- ret = get_object_by_sid(mem_ctx, &obj, sid);
- if (NT_STATUS_IS_ERR(ret) || (obj_type && obj.type != obj_type)) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: error fetching object or wrong object type!\n"));
- goto done;
- }
-
- ret = data_to_gums_object(object, &obj);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: error setting object data!\n"));
- goto done;
- }
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_get_object_from_name(GUMS_OBJECT **object, const char *name, const int obj_type)
-{
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
-
- if (!object || !name) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_get_object_from_sid");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- ret = get_object_by_name(mem_ctx, &obj, name);
- if (NT_STATUS_IS_ERR(ret) || (obj_type && obj.type != obj_type)) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: error fetching object or wrong object type!\n"));
- goto done;
- }
-
- ret = data_to_gums_object(object, &obj);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: error setting object data!\n"));
- goto done;
- }
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
- /* This function is used to get the list of all objects changed since base_time, it is
- used to support PDC<->BDC synchronization */
- NTSTATUS (*get_updated_objects) (GUMS_OBJECT **objects, const NTTIME base_time);
-
-static NTSTATUS tdbsam2_enumerate_objects_start(void *handle, const DOM_SID *sid, const int obj_type)
-{
- struct tdbsam2_enum_objs *teo, *t;
- pstring tdbfile;
-
- teo = (struct tdbsam2_enum_objs *)calloc(1, sizeof(struct tdbsam2_enum_objs));
- if (!teo) {
- DEBUG(0, ("tdbsam2_enumerate_objects_start: Out of Memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- teo->type = obj_type;
- if (sid) {
- sid_to_string(teo->dom_sid, sid);
- }
-
- get_private_directory(tdbfile);
- pstrcat(tdbfile, "/");
- pstrcat(tdbfile, TDB_FILE_NAME);
-
- teo->db = tdb_open_log(tdbfile, 0, TDB_DEFAULT, O_RDONLY, 0600);
- if (!teo->db)
- {
- DEBUG(0, ("tdbsam2_enumerate_objects_start: Unable to open database (%s)!\n", tdbfile));
- SAFE_FREE(teo);
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!teo_handlers) {
- *teo_handlers = teo;
- } else {
- t = *teo_handlers;
- while (t->next) {
- t = t->next;
- }
- t->next = teo;
- }
-
- handle = teo;
-
- teo->key = tdb_firstkey(teo->db);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS tdbsam2_enumerate_objects_get_next(GUMS_OBJECT **object, void *handle)
-{
- NTSTATUS ret;
- TALLOC_CTX *mem_ctx;
- TDB_DATA data;
- struct tdbsam2_enum_objs *teo;
- struct tdbsam2_object obj;
- const char *prefix = SIDPREFIX;
- const int preflen = strlen(prefix);
-
- if (!object || !handle) {
- DEBUG(0, ("tdbsam2_get_object_from_sid: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- teo = (struct tdbsam2_enum_objs *)handle;
-
- mem_ctx = talloc_init("tdbsam2_enumerate_objects_get_next");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_enumerate_objects_get_next: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- while ((teo->key.dsize != 0)) {
- int len, version, type, size;
- char *ptr;
-
- if (strncmp(teo->key.dptr, prefix, preflen)) {
- teo->key = tdb_nextkey(teo->db, teo->key);
- continue;
- }
-
- if (teo->dom_sid) {
- if (strncmp(&(teo->key.dptr[preflen]), teo->dom_sid, strlen(teo->dom_sid))) {
- teo->key = tdb_nextkey(teo->db, teo->key);
- continue;
- }
- }
-
- data = tdb_fetch(teo->db, teo->key);
- if (!data.dptr) {
- DEBUG(5, ("tdbsam2_enumerate_objects_get_next: Error fetching database, SID entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(teo->db)));
- DEBUGADD(5, (" Key: %s\n", teo->key.dptr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- len = tdb_unpack (data.dptr, data.dsize, TDB_FORMAT_STRING,
- &version,
- &type,
- &size, &ptr);
-
- if (len == -1) {
- DEBUG(5, ("tdbsam2_enumerate_objects_get_next: Error unable to unpack data!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- SAFE_FREE(ptr);
-
- if (teo->type && type != teo->type) {
- SAFE_FREE(data.dptr);
- data.dsize = 0;
- teo->key = tdb_nextkey(teo->db, teo->key);
- continue;
- }
-
- break;
- }
-
- if (data.dsize != 0) {
- if (NT_STATUS_IS_ERR(init_tdbsam2_object_from_buffer(&obj, mem_ctx, data.dptr, data.dsize))) {
- SAFE_FREE(data.dptr);
- DEBUG(0, ("tdbsam2_enumerate_objects_get_next: Error fetching database, malformed entry!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- SAFE_FREE(data.dptr);
- }
-
- ret = data_to_gums_object(object, &obj);
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_enumerate_objects_stop(void *handle)
-{
- struct tdbsam2_enum_objs *teo, *t, *p;
-
- teo = (struct tdbsam2_enum_objs *)handle;
-
- if (*teo_handlers == teo) {
- *teo_handlers = teo->next;
- } else {
- t = *teo_handlers;
- while (t != teo) {
- p = t;
- t = t->next;
- if (t == NULL) {
- DEBUG(0, ("tdbsam2_enumerate_objects_stop: Error, handle not found!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
- }
- p = t->next;
- }
-
- tdb_close(teo->db);
- SAFE_FREE(teo);
-
- return NT_STATUS_OK;
-}
-
- /* This function MUST be used ONLY by PDC<->BDC replication code or recovery tools.
- Never use this function to update an object in the database, use set_object_values() */
- NTSTATUS (*set_object) (const GUMS_OBJECT *object);
-
- /* set object values function */
- NTSTATUS (*set_object_values) (DOM_SID *sid, uint32 count, GUMS_DATA_SET *data_set);
-
- /* Group related functions */
- NTSTATUS (*add_memberss_to_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*delete_members_from_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*enumerate_group_members) (DOM_SID **members, const DOM_SID *sid, const int type);
-
- NTSTATUS (*get_sid_groups) (DOM_SID **groups, const DOM_SID *sid);
-
- NTSTATUS (*lock_sid) (const DOM_SID *sid);
- NTSTATUS (*unlock_sid) (const DOM_SID *sid);
-
- /* privileges related functions */
-
- NTSTATUS (*add_members_to_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*delete_members_from_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*enumerate_privilege_members) (DOM_SID **members, const LUID_ATTR *priv);
- NTSTATUS (*get_sid_privileges) (DOM_SID **privs, const DOM_SID *sid);
- /* warning!: set_privilege will overwrite a prior existing privilege if such exist */
- NTSTATUS (*set_privilege) (GUMS_PRIVILEGE *priv);
-
-
-int gumm_init(GUMS_FUNCTIONS **storage)
-{
- tdbsam2_db = NULL;
- teo_handlers = 0;
-
- return 0;
-}
-
-#if 0
-int main(int argc, char *argv[])
-{
- NTSTATUS ret;
- DOM_SID dsid;
-
- if (argc < 2) {
- printf ("not enough arguments!\n");
- exit(0);
- }
-
- if (!lp_load(dyn_CONFIGFILE,True,False,False)) {
- fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE);
- exit(1);
- }
-
- ret = tdbsam2_new_object(&dsid, "_domain_", GUMS_OBJ_DOMAIN);
- if (NT_STATUS_IS_OK(ret)) {
- printf ("_domain_ created, sid=%s\n", sid_string_static(&dsid));
- } else {
- printf ("_domain_ creation error n. 0x%08x\n", ret.v);
- }
- ret = tdbsam2_new_object(&dsid, argv[1], GUMS_OBJ_NORMAL_USER);
- if (NT_STATUS_IS_OK(ret)) {
- printf ("%s user created, sid=%s\n", argv[1], sid_string_static(&dsid));
- } else {
- printf ("%s user creation error n. 0x%08x\n", argv[1], ret.v);
- }
-
- exit(0);
-}
-#endif
diff --git a/source3/sam/gums.c b/source3/sam/gums.c
deleted file mode 100644
index a118740637..0000000000
--- a/source3/sam/gums.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Grops and Users Management System initializations.
- Copyright (C) Simo Sorce 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/*#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_GUMS*/
-
-#define GMV_MAJOR 0
-#define GMV_MINOR 1
-
-#define PRIV_NONE 0
-#define PRIV_CREATE_TOKEN 1
-#define PRIV_ASSIGNPRIMARYTOKEN 2
-#define PRIV_LOCK_MEMORY 3
-#define PRIV_INCREASE_QUOTA 4
-#define PRIV_MACHINE_ACCOUNT 5
-#define PRIV_TCB 6
-#define PRIV_SECURITY 7
-#define PRIV_TAKE_OWNERSHIP 8
-#define PRIV_LOAD_DRIVER 9
-#define PRIV_SYSTEM_PROFILE 10
-#define PRIV_SYSTEMTIME 11
-#define PRIV_PROF_SINGLE_PROCESS 12
-#define PRIV_INC_BASE_PRIORITY 13
-#define PRIV_CREATE_PAGEFILE 14
-#define PRIV_CREATE_PERMANENT 15
-#define PRIV_BACKUP 16
-#define PRIV_RESTORE 17
-#define PRIV_SHUTDOWN 18
-#define PRIV_DEBUG 19
-#define PRIV_AUDIT 20
-#define PRIV_SYSTEM_ENVIRONMENT 21
-#define PRIV_CHANGE_NOTIFY 22
-#define PRIV_REMOTE_SHUTDOWN 23
-#define PRIV_UNDOCK 24
-#define PRIV_SYNC_AGENT 25
-#define PRIV_ENABLE_DELEGATION 26
-#define PRIV_ALL 255
-
-
-GUMS_FUNCTIONS *gums_storage;
-static void *dl_handle;
-
-static PRIVS gums_privs[] = {
- {PRIV_NONE, "no_privs", "No privilege"}, /* this one MUST be first */
- {PRIV_CREATE_TOKEN, "SeCreateToken", "Create Token"},
- {PRIV_ASSIGNPRIMARYTOKEN, "SeAssignPrimaryToken", "Assign Primary Token"},
- {PRIV_LOCK_MEMORY, "SeLockMemory", "Lock Memory"},
- {PRIV_INCREASE_QUOTA, "SeIncreaseQuotaPrivilege", "Increase Quota Privilege"},
- {PRIV_MACHINE_ACCOUNT, "SeMachineAccount", "Machine Account"},
- {PRIV_TCB, "SeTCB", "TCB"},
- {PRIV_SECURITY, "SeSecurityPrivilege", "Security Privilege"},
- {PRIV_TAKE_OWNERSHIP, "SeTakeOwnershipPrivilege", "Take Ownership Privilege"},
- {PRIV_LOAD_DRIVER, "SeLocalDriverPrivilege", "Local Driver Privilege"},
- {PRIV_SYSTEM_PROFILE, "SeSystemProfilePrivilege", "System Profile Privilege"},
- {PRIV_SYSTEMTIME, "SeSystemtimePrivilege", "System Time"},
- {PRIV_PROF_SINGLE_PROCESS, "SeProfileSingleProcessPrivilege", "Profile Single Process Privilege"},
- {PRIV_INC_BASE_PRIORITY, "SeIncreaseBasePriorityPrivilege", "Increase Base Priority Privilege"},
- {PRIV_CREATE_PAGEFILE, "SeCreatePagefilePrivilege", "Create Pagefile Privilege"},
- {PRIV_CREATE_PERMANENT, "SeCreatePermanent", "Create Permanent"},
- {PRIV_BACKUP, "SeBackupPrivilege", "Backup Privilege"},
- {PRIV_RESTORE, "SeRestorePrivilege", "Restore Privilege"},
- {PRIV_SHUTDOWN, "SeShutdownPrivilege", "Shutdown Privilege"},
- {PRIV_DEBUG, "SeDebugPrivilege", "Debug Privilege"},
- {PRIV_AUDIT, "SeAudit", "Audit"},
- {PRIV_SYSTEM_ENVIRONMENT, "SeSystemEnvironmentPrivilege", "System Environment Privilege"},
- {PRIV_CHANGE_NOTIFY, "SeChangeNotify", "Change Notify"},
- {PRIV_REMOTE_SHUTDOWN, "SeRemoteShutdownPrivilege", "Remote Shutdown Privilege"},
- {PRIV_UNDOCK, "SeUndock", "Undock"},
- {PRIV_SYNC_AGENT, "SeSynchronizationAgent", "Synchronization Agent"},
- {PRIV_ENABLE_DELEGATION, "SeEnableDelegation", "Enable Delegation"},
- {PRIV_ALL, "SaAllPrivs", "All Privileges"}
-};
-
-NTSTATUS gums_init(const char *module_name)
-{
- int (*module_version)(int);
- NTSTATUS (*module_init)();
-/* gums_module_init module_init;*/
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(5, ("Opening gums module %s\n", module_name));
- dl_handle = sys_dlopen(module_name, RTLD_NOW);
- if (!dl_handle) {
- DEBUG(0, ("ERROR: Failed to load gums module %s, error: %s\n", module_name, sys_dlerror()));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- module_version = sys_dlsym(dl_handle, "gumm_version");
- if (!module_version) {
- DEBUG(0, ("ERROR: Failed to find gums module version!\n"));
- goto error;
- }
-
- if (module_version(GMV_MAJOR) != GUMS_VERSION_MAJOR) {
- DEBUG(0, ("ERROR: Module's major version does not match gums version!\n"));
- goto error;
- }
-
- if (module_version(GMV_MINOR) != GUMS_VERSION_MINOR) {
- DEBUG(1, ("WARNING: Module's minor version does not match gums version!\n"));
- }
-
- module_init = sys_dlsym(dl_handle, "gumm_init");
- if (!module_init) {
- DEBUG(0, ("ERROR: Failed to find gums module's init function!\n"));
- goto error;
- }
-
- DEBUG(5, ("Initializing module %s\n", module_name));
-
- ret = module_init(&gums_storage);
- goto done;
-
-error:
- ret = NT_STATUS_UNSUCCESSFUL;
- sys_dlclose(dl_handle);
-
-done:
- return ret;
-}
-
-NTSTATUS gums_unload(void)
-{
- NTSTATUS ret;
- NTSTATUS (*module_finalize)();
-
- if (!dl_handle)
- return NT_STATUS_UNSUCCESSFUL;
-
- module_finalize = sys_dlsym(dl_handle, "gumm_finalize");
- if (!module_finalize) {
- DEBUG(0, ("ERROR: Failed to find gums module's init function!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- DEBUG(5, ("Finalizing module"));
-
- ret = module_finalize();
- sys_dlclose(dl_handle);
-
- return ret;
-}
diff --git a/source3/sam/gums_api.c b/source3/sam/gums_api.c
deleted file mode 100644
index 2e5dcd143a..0000000000
--- a/source3/sam/gums_api.c
+++ /dev/null
@@ -1,1470 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS structures
- Copyright (C) Simo Sorce 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-
-/*******************************************************************
- Create a SEC_ACL structure.
-********************************************************************/
-
-static SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, uint16 revision, int num_aces, SEC_ACE *ace_list)
-{
- SEC_ACL *dst;
- int i;
-
- if((dst = (SEC_ACL *)talloc_zero(ctx,sizeof(SEC_ACL))) == NULL)
- return NULL;
-
- dst->revision = revision;
- dst->num_aces = num_aces;
- dst->size = SEC_ACL_HEADER_SIZE;
-
- /* Now we need to return a non-NULL address for the ace list even
- if the number of aces required is zero. This is because there
- is a distinct difference between a NULL ace and an ace with zero
- entries in it. This is achieved by checking that num_aces is a
- positive number. */
-
- if ((num_aces) &&
- ((dst->ace = (SEC_ACE *)talloc(ctx, sizeof(SEC_ACE) * num_aces))
- == NULL)) {
- return NULL;
- }
-
- for (i = 0; i < num_aces; i++) {
- dst->ace[i] = ace_list[i]; /* Structure copy. */
- dst->size += ace_list[i].size;
- }
-
- return dst;
-}
-
-
-
-/*******************************************************************
- Duplicate a SEC_ACL structure.
-********************************************************************/
-
-static SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src)
-{
- if(src == NULL)
- return NULL;
-
- return make_sec_acl(ctx, src->revision, src->num_aces, src->ace);
-}
-
-
-
-/*******************************************************************
- Creates a SEC_DESC structure
-********************************************************************/
-
-static SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, uint16 revision,
- DOM_SID *owner_sid, DOM_SID *grp_sid,
- SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size)
-{
- SEC_DESC *dst;
- uint32 offset = 0;
- uint32 offset_sid = SEC_DESC_HEADER_SIZE;
- uint32 offset_acl = 0;
-
- *sd_size = 0;
-
- if(( dst = (SEC_DESC *)talloc_zero(ctx, sizeof(SEC_DESC))) == NULL)
- return NULL;
-
- dst->revision = revision;
- dst->type = SEC_DESC_SELF_RELATIVE;
-
- if (sacl) dst->type |= SEC_DESC_SACL_PRESENT;
- if (dacl) dst->type |= SEC_DESC_DACL_PRESENT;
-
- dst->off_owner_sid = 0;
- dst->off_grp_sid = 0;
- dst->off_sacl = 0;
- dst->off_dacl = 0;
-
- if(owner_sid && ((dst->owner_sid = sid_dup_talloc(ctx,owner_sid)) == NULL))
- goto error_exit;
-
- if(grp_sid && ((dst->grp_sid = sid_dup_talloc(ctx,grp_sid)) == NULL))
- goto error_exit;
-
- if(sacl && ((dst->sacl = dup_sec_acl(ctx, sacl)) == NULL))
- goto error_exit;
-
- if(dacl && ((dst->dacl = dup_sec_acl(ctx, dacl)) == NULL))
- goto error_exit;
-
- offset = 0;
-
- /*
- * Work out the linearization sizes.
- */
- if (dst->owner_sid != NULL) {
-
- if (offset == 0)
- offset = SEC_DESC_HEADER_SIZE;
-
- offset += sid_size(dst->owner_sid);
- }
-
- if (dst->grp_sid != NULL) {
-
- if (offset == 0)
- offset = SEC_DESC_HEADER_SIZE;
-
- offset += sid_size(dst->grp_sid);
- }
-
- if (dst->sacl != NULL) {
-
- offset_acl = SEC_DESC_HEADER_SIZE;
-
- dst->off_sacl = offset_acl;
- offset_acl += dst->sacl->size;
- offset += dst->sacl->size;
- offset_sid += dst->sacl->size;
- }
-
- if (dst->dacl != NULL) {
-
- if (offset_acl == 0)
- offset_acl = SEC_DESC_HEADER_SIZE;
-
- dst->off_dacl = offset_acl;
- offset_acl += dst->dacl->size;
- offset += dst->dacl->size;
- offset_sid += dst->dacl->size;
- }
-
- *sd_size = (size_t)((offset == 0) ? SEC_DESC_HEADER_SIZE : offset);
-
- if (dst->owner_sid != NULL)
- dst->off_owner_sid = offset_sid;
-
- /* sid_size() returns 0 if the sid is NULL so this is ok */
-
- if (dst->grp_sid != NULL)
- dst->off_grp_sid = offset_sid + sid_size(dst->owner_sid);
-
- return dst;
-
-error_exit:
-
- *sd_size = 0;
- return NULL;
-}
-
-/*******************************************************************
- Duplicate a SEC_DESC structure.
-********************************************************************/
-
-static SEC_DESC *dup_sec_desc( TALLOC_CTX *ctx, SEC_DESC *src)
-{
- size_t dummy;
-
- if(src == NULL)
- return NULL;
-
- return make_sec_desc( ctx, src->revision,
- src->owner_sid, src->grp_sid, src->sacl,
- src->dacl, &dummy);
-}
-
-
-
-
-
-
-
-extern GUMS_FUNCTIONS *gums_storage;
-
-/* Functions to get/set info from a GUMS object */
-
-NTSTATUS gums_get_object_type(uint32 *type, const GUMS_OBJECT *obj)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *type = obj->type;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_create_object(GUMS_OBJECT **obj, uint32 type)
-{
- TALLOC_CTX *mem_ctx = talloc_init("gums_create_object");
- GUMS_OBJECT *go;
- NTSTATUS ret;
-
- go = talloc_zero(mem_ctx, sizeof(GUMS_OBJECT));
- go->mem_ctx = mem_ctx;
- go->type = type;
- go->version = GUMS_OBJECT_VERSION;
-
- switch(type) {
- case GUMS_OBJ_DOMAIN:
- break;
-
-/*
- case GUMS_OBJ_WORKSTATION_TRUST:
- case GUMS_OBJ_SERVER_TRUST:
- case GUMS_OBJ_DOMAIN_TRUST:
-*/
- case GUMS_OBJ_NORMAL_USER:
- go->data.user = (GUMS_USER *)talloc_zero(mem_ctx, sizeof(GUMS_USER));
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- go->data.group = (GUMS_GROUP *)talloc_zero(mem_ctx, sizeof(GUMS_GROUP));
- break;
-
- default:
- /* TODO: throw error */
- ret = NT_STATUS_OBJECT_TYPE_MISMATCH;
- goto error;
- }
-
- if (!(go->data.user)) {
- ret = NT_STATUS_NO_MEMORY;
- DEBUG(0, ("gums_create_object: Out of memory!\n"));
- goto error;
- }
-
- *obj = go;
- return NT_STATUS_OK;
-
-error:
- talloc_destroy(go->mem_ctx);
- *obj = NULL;
- return ret;
-}
-
-NTSTATUS gums_get_object_seq_num(uint32 *version, const GUMS_OBJECT *obj)
-{
- if (!version || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *version = obj->version;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_seq_num(GUMS_OBJECT *obj, uint32 version)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->version = version;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_sec_desc(SEC_DESC **sec_desc, const GUMS_OBJECT *obj)
-{
- if (!sec_desc || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *sec_desc = obj->sec_desc;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_sec_desc(GUMS_OBJECT *obj, const SEC_DESC *sec_desc)
-{
- if (!obj || !sec_desc)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->sec_desc = dup_sec_desc(obj->mem_ctx, sec_desc);
- if (!(obj->sec_desc)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_sid(DOM_SID **sid, const GUMS_OBJECT *obj)
-{
- if (!sid || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *sid = obj->sid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_sid(GUMS_OBJECT *obj, const DOM_SID *sid)
-{
- if (!obj || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->sid = sid_dup_talloc(obj->mem_ctx, sid);
- if (!(obj->sid)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_name(char **name, const GUMS_OBJECT *obj)
-{
- if (!name || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *name = obj->name;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_name(GUMS_OBJECT *obj, const char *name)
-{
- if (!obj || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->name = (char *)talloc_strdup(obj->mem_ctx, name);
- if (!(obj->name)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_description(char **description, const GUMS_OBJECT *obj)
-{
- if (!description || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *description = obj->description;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_description(GUMS_OBJECT *obj, const char *description)
-{
- if (!obj || !description)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->description = (char *)talloc_strdup(obj->mem_ctx, description);
- if (!(obj->description)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-/* User specific functions */
-
-/*
-NTSTATUS gums_get_object_privileges(PRIVILEGE_SET **priv_set, const GUMS_OBJECT *obj)
-{
- if (!priv_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- *priv_set = obj->priv_set;
- return NT_STATUS_OK;
-}
-*/
-
-NTSTATUS gums_get_domain_next_rid(uint32 *rid, const GUMS_OBJECT *obj)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_DOMAIN)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *rid = obj->data.domain->next_rid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_domain_next_rid(GUMS_OBJECT *obj, uint32 rid)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_DOMAIN)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.domain->next_rid = rid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pri_group(DOM_SID **sid, const GUMS_OBJECT *obj)
-{
- if (!sid || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *sid = obj->data.user->group_sid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pri_group(GUMS_OBJECT *obj, const DOM_SID *sid)
-{
- if (!obj || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->group_sid = sid_dup_talloc(obj->mem_ctx, sid);
- if (!(obj->data.user->group_sid)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_nt_pwd(DATA_BLOB **nt_pwd, const GUMS_OBJECT *obj)
-{
- if (!nt_pwd || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *nt_pwd = &(obj->data.user->nt_pw);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_nt_pwd(GUMS_OBJECT *obj, const DATA_BLOB nt_pwd)
-{
- if (!obj || nt_pwd.length != NT_HASH_LEN)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->nt_pw = data_blob_talloc(obj->mem_ctx, nt_pwd.data, nt_pwd.length);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_lm_pwd(DATA_BLOB **lm_pwd, const GUMS_OBJECT *obj)
-{
- if (!lm_pwd || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *lm_pwd = &(obj->data.user->lm_pw);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_lm_pwd(GUMS_OBJECT *obj, const DATA_BLOB lm_pwd)
-{
- if (!obj || lm_pwd.length != LM_HASH_LEN)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->lm_pw = data_blob_talloc(obj->mem_ctx, lm_pwd.data, lm_pwd.length);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_fullname(char **fullname, const GUMS_OBJECT *obj)
-{
- if (!fullname || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *fullname = obj->data.user->full_name;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_fullname(GUMS_OBJECT *obj, const char *fullname)
-{
- if (!obj || !fullname)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->full_name = (char *)talloc_strdup(obj->mem_ctx, fullname);
- if (!(obj->data.user->full_name)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_homedir(char **homedir, const GUMS_OBJECT *obj)
-{
- if (!homedir || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *homedir = obj->data.user->home_dir;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_homedir(GUMS_OBJECT *obj, const char *homedir)
-{
- if (!obj || !homedir)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->home_dir = (char *)talloc_strdup(obj->mem_ctx, homedir);
- if (!(obj->data.user->home_dir)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_dir_drive(char **dirdrive, const GUMS_OBJECT *obj)
-{
- if (!dirdrive || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *dirdrive = obj->data.user->dir_drive;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_dir_drive(GUMS_OBJECT *obj, const char *dir_drive)
-{
- if (!obj || !dir_drive)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->dir_drive = (char *)talloc_strdup(obj->mem_ctx, dir_drive);
- if (!(obj->data.user->dir_drive)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_script(char **logon_script, const GUMS_OBJECT *obj)
-{
- if (!logon_script || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_script = obj->data.user->logon_script;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_script(GUMS_OBJECT *obj, const char *logon_script)
-{
- if (!obj || !logon_script)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_script = (char *)talloc_strdup(obj->mem_ctx, logon_script);
- if (!(obj->data.user->logon_script)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_profile_path(char **profile_path, const GUMS_OBJECT *obj)
-{
- if (!profile_path || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *profile_path = obj->data.user->profile_path;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_profile_path(GUMS_OBJECT *obj, const char *profile_path)
-{
- if (!obj || !profile_path)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->profile_path = (char *)talloc_strdup(obj->mem_ctx, profile_path);
- if (!(obj->data.user->profile_path)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_workstations(char **workstations, const GUMS_OBJECT *obj)
-{
- if (!workstations || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *workstations = obj->data.user->workstations;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_workstations(GUMS_OBJECT *obj, const char *workstations)
-{
- if (!obj || !workstations)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->workstations = (char *)talloc_strdup(obj->mem_ctx, workstations);
- if (!(obj->data.user->workstations)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_str(char **unknown_str, const GUMS_OBJECT *obj)
-{
- if (!unknown_str || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_str = obj->data.user->unknown_str;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_str(GUMS_OBJECT *obj, const char *unknown_str)
-{
- if (!obj || !unknown_str)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_str = (char *)talloc_strdup(obj->mem_ctx, unknown_str);
- if (!(obj->data.user->unknown_str)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_munged_dial(char **munged_dial, const GUMS_OBJECT *obj)
-{
- if (!munged_dial || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *munged_dial = obj->data.user->munged_dial;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_munged_dial(GUMS_OBJECT *obj, const char *munged_dial)
-{
- if (!obj || !munged_dial)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->munged_dial = (char *)talloc_strdup(obj->mem_ctx, munged_dial);
- if (!(obj->data.user->munged_dial)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_time(NTTIME *logon_time, const GUMS_OBJECT *obj)
-{
- if (!logon_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_time = obj->data.user->logon_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_time(GUMS_OBJECT *obj, NTTIME logon_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_time = logon_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logoff_time(NTTIME *logoff_time, const GUMS_OBJECT *obj)
-{
- if (!logoff_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logoff_time = obj->data.user->logoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logoff_time(GUMS_OBJECT *obj, NTTIME logoff_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logoff_time = logoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_kickoff_time(NTTIME *kickoff_time, const GUMS_OBJECT *obj)
-{
- if (!kickoff_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *kickoff_time = obj->data.user->kickoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_kickoff_time(GUMS_OBJECT *obj, NTTIME kickoff_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->kickoff_time = kickoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_last_set_time(NTTIME *pass_last_set_time, const GUMS_OBJECT *obj)
-{
- if (!pass_last_set_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_last_set_time = obj->data.user->pass_last_set_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_last_set_time(GUMS_OBJECT *obj, NTTIME pass_last_set_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_last_set_time = pass_last_set_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_can_change_time(NTTIME *pass_can_change_time, const GUMS_OBJECT *obj)
-{
- if (!pass_can_change_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_can_change_time = obj->data.user->pass_can_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_can_change_time(GUMS_OBJECT *obj, NTTIME pass_can_change_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_can_change_time = pass_can_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_must_change_time(NTTIME *pass_must_change_time, const GUMS_OBJECT *obj)
-{
- if (!pass_must_change_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_must_change_time = obj->data.user->pass_must_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_must_change_time(GUMS_OBJECT *obj, NTTIME pass_must_change_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_must_change_time = pass_must_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_divs(uint16 *logon_divs, const GUMS_OBJECT *obj)
-{
- if (!logon_divs || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_divs = obj->data.user->logon_divs;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_divs(GUMS_OBJECT *obj, uint16 logon_divs)
-{
- if (!obj || !logon_divs)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_divs = logon_divs;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_hours_len(uint32 *hours_len, const GUMS_OBJECT *obj)
-{
- if (!hours_len || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *hours_len = obj->data.user->hours_len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_hours_len(GUMS_OBJECT *obj, uint32 hours_len)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->hours_len = hours_len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_hours(uint8 **hours, const GUMS_OBJECT *obj)
-{
- if (!hours || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *hours = obj->data.user->hours;
- return NT_STATUS_OK;
-}
-
-/* WARNING: always set hours_len before hours */
-NTSTATUS gums_set_user_hours(GUMS_OBJECT *obj, const uint8 *hours)
-{
- if (!obj || !hours)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- if (obj->data.user->hours_len == 0)
- DEBUG(10, ("gums_set_user_hours: Warning, hours_len is zero!\n"));
-
- obj->data.user->hours = (uint8 *)talloc_memdup(obj->mem_ctx, hours, obj->data.user->hours_len);
- if (!(obj->data.user->hours) & (obj->data.user->hours_len != 0)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_3(uint32 *unknown_3, const GUMS_OBJECT *obj)
-{
- if (!unknown_3 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_3 = obj->data.user->unknown_3;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_3(GUMS_OBJECT *obj, uint32 unknown_3)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_3 = unknown_3;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_5(uint32 *unknown_5, const GUMS_OBJECT *obj)
-{
- if (!unknown_5 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_5 = obj->data.user->unknown_5;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_5(GUMS_OBJECT *obj, uint32 unknown_5)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_5 = unknown_5;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_6(uint32 *unknown_6, const GUMS_OBJECT *obj)
-{
- if (!unknown_6 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_6 = obj->data.user->unknown_6;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_6(GUMS_OBJECT *obj, uint32 unknown_6)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_6 = unknown_6;
- return NT_STATUS_OK;
-}
-
-/* Group specific functions */
-
-NTSTATUS gums_get_group_members(uint32 *count, DOM_SID **members, const GUMS_OBJECT *obj)
-{
- if (!count || !members || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_GROUP &&
- obj->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *count = obj->data.group->count;
- *members = *(obj->data.group->members);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_group_members(GUMS_OBJECT *obj, uint32 count, DOM_SID **members)
-{
- uint32 n;
-
- if (!obj || !members || !members)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_GROUP &&
- obj->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.group->count = count;
- n = 0;
- do {
- obj->data.group->members[n] = sid_dup_talloc(obj->mem_ctx, members[n]);
- if (!(obj->data.group->members[n])) return NT_STATUS_NO_MEMORY;
- n++;
- } while (n < count);
- return NT_STATUS_OK;
-}
-
-/* data_store set functions */
-
-NTSTATUS gums_create_commit_set(GUMS_COMMIT_SET **com_set, TALLOC_CTX *ctx, DOM_SID *sid, uint32 type)
-{
- TALLOC_CTX *mem_ctx;
- GUMS_COMMIT_SET *set;
-
- mem_ctx = talloc_init("commit_set");
- if (mem_ctx == NULL)
- return NT_STATUS_NO_MEMORY;
- set = (GUMS_COMMIT_SET *)talloc(mem_ctx, sizeof(GUMS_COMMIT_SET));
- if (set == NULL) {
- talloc_destroy(mem_ctx);
- return NT_STATUS_NO_MEMORY;
- }
-
- set->mem_ctx = mem_ctx;
- set->type = type;
- sid_copy(&(set->sid), sid);
- set->count = 0;
- set->data = NULL;
- *com_set = set;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_sec_desc(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, SEC_DESC *sec_desc)
-{
- GUMS_DATA_SET *data_set;
- SEC_DESC *new_sec_desc;
-
- if (!mem_ctx || !com_set || !sec_desc)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_SEC_DESC;
- new_sec_desc = dup_sec_desc(mem_ctx, sec_desc);
- if (new_sec_desc == NULL)
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_sec_desc;
-
- return NT_STATUS_OK;
-}
-
-/*
-NTSTATUS gums_cs_add_privilege(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, LUID_ATTR priv)
-{
- GUMS_DATA_SET *data_set;
- LUID_ATTR *new_priv;
-
- if (!mem_ctx || !com_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) {
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_ADD_PRIVILEGE;
- if (NT_STATUS_IS_ERR(dupalloc_luid_attr(mem_ctx, &new_priv, priv)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_del_privilege(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, LUID_ATTR priv)
-{
- GUMS_DATA_SET *data_set;
- LUID_ATTR *new_priv;
-
- if (!mem_ctx || !com_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) {
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_DEL_PRIVILEGE;
- if (NT_STATUS_IS_ERR(dupalloc_luid_attr(mem_ctx, &new_priv, priv)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_privilege_set(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, PRIVILEGE_SET *priv_set)
-{
- GUMS_DATA_SET *data_set;
- PRIVILEGE_SET *new_priv_set;
-
- if (!mem_ctx || !com_set || !priv_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) {
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_PRIVILEGE;
- if (NT_STATUS_IS_ERR(dup_priv_set(&new_priv_set, mem_ctx, priv_set)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv_set;
-
- return NT_STATUS_OK;
-}
-*/
-
-NTSTATUS gums_cs_set_string(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, uint32 type, char *str)
-{
- GUMS_DATA_SET *data_set;
- char *new_str;
-
- if (!mem_ctx || !com_set || !str || type < GUMS_SET_NAME || type > GUMS_SET_MUNGED_DIAL)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = type;
- new_str = talloc_strdup(mem_ctx, str);
- if (new_str == NULL)
- return NT_STATUS_NO_MEMORY;
-
- (char *)(data_set->data) = new_str;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_name(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *name)
-{
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, name);
-}
-
-NTSTATUS gums_cs_set_description(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *desc)
-{
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_DESCRIPTION, desc);
-}
-
-NTSTATUS gums_cs_set_full_name(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *full_name)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, full_name);
-}
-
-NTSTATUS gums_cs_set_home_directory(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *home_dir)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, home_dir);
-}
-
-NTSTATUS gums_cs_set_drive(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *drive)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, drive);
-}
-
-NTSTATUS gums_cs_set_logon_script(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *logon_script)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, logon_script);
-}
-
-NTSTATUS gums_cs_set_profile_path(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *prof_path)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, prof_path);
-}
-
-NTSTATUS gums_cs_set_workstations(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *wks)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, wks);
-}
-
-NTSTATUS gums_cs_set_unknown_string(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *unkn_str)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, unkn_str);
-}
-
-NTSTATUS gums_cs_set_munged_dial(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *munged_dial)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_string(mem_ctx, com_set, GUMS_SET_NAME, munged_dial);
-}
-
-NTSTATUS gums_cs_set_nttime(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, uint32 type, NTTIME *nttime)
-{
- GUMS_DATA_SET *data_set;
- NTTIME *new_time;
-
- if (!mem_ctx || !com_set || !nttime || type < GUMS_SET_LOGON_TIME || type > GUMS_SET_PASS_MUST_CHANGE_TIME)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = type;
- new_time = talloc(mem_ctx, sizeof(NTTIME));
- if (new_time == NULL)
- return NT_STATUS_NO_MEMORY;
-
- new_time->low = nttime->low;
- new_time->high = nttime->high;
- (char *)(data_set->data) = new_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_logon_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *logon_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, logon_time);
-}
-
-NTSTATUS gums_cs_set_logoff_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *logoff_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_LOGOFF_TIME, logoff_time);
-}
-
-NTSTATUS gums_cs_set_kickoff_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *kickoff_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_KICKOFF_TIME, kickoff_time);
-}
-
-NTSTATUS gums_cs_set_pass_last_set_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pls_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pls_time);
-}
-
-NTSTATUS gums_cs_set_pass_can_change_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pcc_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pcc_time);
-}
-
-NTSTATUS gums_cs_set_pass_must_change_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pmc_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pmc_time);
-}
-
-NTSTATUS gums_cs_add_sids_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_ADD_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_add_users_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_add_sids_to_group(mem_ctx, com_set, sids, count);
-}
-
-NTSTATUS gums_cs_add_groups_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_cs_add_sids_to_group(mem_ctx, com_set, sids, count);
-}
-
-NTSTATUS gums_cs_del_sids_from_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_DEL_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_ds_set_sids_in_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data[0] = data_set;
- data_set = ((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS gums_commit_data(GUMS_COMMIT_SET *set)
-{
- return gums_storage->set_object_values(&(set->sid), set->count, set->data);
-}
-
-NTSTATUS gums_destroy_commit_set(GUMS_COMMIT_SET **com_set)
-{
- talloc_destroy((*com_set)->mem_ctx);
- *com_set = NULL;
-
- return NT_STATUS_OK;
-}
-
diff --git a/source3/sam/gums_helper.c b/source3/sam/gums_helper.c
deleted file mode 100644
index c22e6cf7ff..0000000000
--- a/source3/sam/gums_helper.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS backends helper functions
- Copyright (C) Simo Sorce 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-extern GUMS_FUNCTIONS *gums_storage;
-
-extern DOM_SID global_sid_World;
-extern DOM_SID global_sid_Builtin_Administrators;
-extern DOM_SID global_sid_Builtin_Power_Users;
-extern DOM_SID global_sid_Builtin_Account_Operators;
-extern DOM_SID global_sid_Builtin_Server_Operators;
-extern DOM_SID global_sid_Builtin_Print_Operators;
-extern DOM_SID global_sid_Builtin_Backup_Operators;
-extern DOM_SID global_sid_Builtin_Replicator;
-extern DOM_SID global_sid_Builtin_Users;
-extern DOM_SID global_sid_Builtin_Guests;
-
-
-/* defines */
-
-#define ALLOC_CHECK(str, ptr, err, label) do { if ((ptr) == NULL) { DEBUG(0, ("%s: out of memory!\n", str)); err = NT_STATUS_NO_MEMORY; goto label; } } while(0)
-#define NTSTATUS_CHECK(str1, str2, err, label) do { if (NT_STATUS_IS_ERR(err)) { DEBUG(0, ("%s: %s failed!\n", str1, str2)); } } while(0)
-
-/****************************************************************************
- Check if a user is a mapped group.
-
- This function will check if the group SID is mapped onto a
- system managed gid or onto a winbind manged sid.
- In the first case it will be threated like a mapped group
- and the backend should take the member list with a getgrgid
- and ignore any user that have been possibly set into the group
- object.
-
- In the second case, the group is a fully SAM managed group
- served back to the system through winbind. In this case the
- members of a Local group are "unrolled" to cope with the fact
- that unix cannot contain groups inside groups.
- The backend MUST never call any getgr* / getpw* function or
- loops with winbind may happen.
- ****************************************************************************/
-
-#if 0
-NTSTATUS is_mapped_group(BOOL *mapped, const DOM_SID *sid)
-{
- NTSTATUS result;
- gid_t id;
-
- /* look if mapping exist, do not make idmap alloc an uid if SID is not found */
- result = idmap_get_gid_from_sid(&id, sid, False);
- if (NT_STATUS_IS_OK(result)) {
- *mapped = gid_is_in_winbind_range(id);
- } else {
- *mapped = False;
- }
-
- return result;
-}
-#endif
-
-/****************************************************************************
- duplicate alloc luid_attr
- ****************************************************************************/
-NTSTATUS dupalloc_luid_attr(TALLOC_CTX *ctx, LUID_ATTR **new_la, LUID_ATTR old_la)
-{
- *new_la = (LUID_ATTR *)talloc(ctx, sizeof(LUID_ATTR));
- if (*new_la == NULL) {
- DEBUG(0,("dupalloc_luid_attr: could not Alloc memory to duplicate LUID_ATTR\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*new_la)->luid.high = old_la.luid.high;
- (*new_la)->luid.low = old_la.luid.low;
- (*new_la)->attr = old_la.attr;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- initialise a privilege list
- ****************************************************************************/
-void gums_init_privilege(PRIVILEGE_SET *priv_set)
-{
- priv_set->count=0;
- priv_set->control=0;
- priv_set->set=NULL;
-}
-
-/****************************************************************************
- add a privilege to a privilege array
- ****************************************************************************/
-NTSTATUS gums_add_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx, LUID_ATTR set)
-{
- LUID_ATTR *new_set;
-
- /* check if the privilege is not already in the list */
- if (gums_check_priv_in_privilege(priv_set, set))
- return NT_STATUS_UNSUCCESSFUL;
-
- /* we can allocate memory to add the new privilege */
-
- new_set=(LUID_ATTR *)talloc_realloc(ctx, priv_set->set, (priv_set->count+1)*(sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("add_privilege: could not Realloc memory to add a new privilege\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- new_set[priv_set->count].luid.high=set.luid.high;
- new_set[priv_set->count].luid.low=set.luid.low;
- new_set[priv_set->count].attr=set.attr;
-
- priv_set->count++;
- priv_set->set=new_set;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- add all the privileges to a privilege array
- ****************************************************************************/
-NTSTATUS gums_add_all_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx)
-{
- NTSTATUS result = NT_STATUS_OK;
- LUID_ATTR set;
-
- set.attr=0;
- set.luid.high=0;
-
- set.luid.low=SE_PRIV_ADD_USERS;
- result = gums_add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
- set.luid.low=SE_PRIV_ADD_MACHINES;
- result = gums_add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
- set.luid.low=SE_PRIV_PRINT_OPERATOR;
- result = gums_add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
-done:
- return result;
-}
-
-/****************************************************************************
- check if the privilege list is empty
- ****************************************************************************/
-BOOL gums_check_empty_privilege(PRIVILEGE_SET *priv_set)
-{
- return (priv_set->count == 0);
-}
-
-/****************************************************************************
- check if the privilege is in the privilege list
- ****************************************************************************/
-BOOL gums_check_priv_in_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
-{
- int i;
-
- /* if the list is empty, obviously we can't have it */
- if (gums_check_empty_privilege(priv_set))
- return False;
-
- for (i=0; i<priv_set->count; i++) {
- LUID_ATTR *cur_set;
-
- cur_set=&priv_set->set[i];
- /* check only the low and high part. Checking the attr field has no meaning */
- if( (cur_set->luid.low==set.luid.low) && (cur_set->luid.high==set.luid.high) )
- return True;
- }
-
- return False;
-}
-
-/****************************************************************************
- remove a privilege from a privilege array
- ****************************************************************************/
-NTSTATUS gums_remove_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx, LUID_ATTR set)
-{
- LUID_ATTR *new_set;
- LUID_ATTR *old_set;
- int i,j;
-
- /* check if the privilege is in the list */
- if (!gums_check_priv_in_privilege(priv_set, set))
- return NT_STATUS_UNSUCCESSFUL;
-
- /* special case if it's the only privilege in the list */
- if (priv_set->count==1) {
- gums_init_privilege(priv_set);
- return NT_STATUS_OK;
- }
-
- /*
- * the privilege is there, create a new list,
- * and copy the other privileges
- */
-
- old_set = priv_set->set;
-
- new_set=(LUID_ATTR *)talloc(ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("remove_privilege: could not malloc memory for new privilege list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- for (i=0, j=0; i<priv_set->count; i++) {
- if ((old_set[i].luid.low == set.luid.low) &&
- (old_set[i].luid.high == set.luid.high)) {
- continue;
- }
-
- new_set[j].luid.low = old_set[i].luid.low;
- new_set[j].luid.high = old_set[i].luid.high;
- new_set[j].attr = old_set[i].attr;
-
- j++;
- }
-
- if (j != priv_set->count - 1) {
- DEBUG(0,("remove_privilege: mismatch ! difference is not -1\n"));
- DEBUGADD(0,("old count:%d, new count:%d\n", priv_set->count, j));
- return NT_STATUS_INTERNAL_ERROR;
- }
-
- /* ok everything is fine */
-
- priv_set->count--;
- priv_set->set=new_set;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- duplicates a privilege array
- ****************************************************************************/
-NTSTATUS gums_dup_priv_set(PRIVILEGE_SET **new_priv_set, TALLOC_CTX *mem_ctx, PRIVILEGE_SET *priv_set)
-{
- LUID_ATTR *new_set;
- LUID_ATTR *old_set;
- int i;
-
- *new_priv_set = (PRIVILEGE_SET *)talloc(mem_ctx, sizeof(PRIVILEGE_SET));
- gums_init_privilege(*new_priv_set);
-
- /* special case if there are no privileges in the list */
- if (priv_set->count == 0) {
- return NT_STATUS_OK;
- }
-
- /*
- * create a new list,
- * and copy the other privileges
- */
-
- old_set = priv_set->set;
-
- new_set = (LUID_ATTR *)talloc(mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("remove_privilege: could not malloc memory for new privilege list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- for (i=0; i < priv_set->count; i++) {
-
- new_set[i].luid.low = old_set[i].luid.low;
- new_set[i].luid.high = old_set[i].luid.high;
- new_set[i].attr = old_set[i].attr;
- }
-
- (*new_priv_set)->count = priv_set->count;
- (*new_priv_set)->control = priv_set->control;
- (*new_priv_set)->set = new_set;
-
- return NT_STATUS_OK;
-}
-
-#define ALIAS_DEFAULT_SACL_SA_RIGHTS 0x01050013
-#define ALIAS_DEFAULT_DACL_SA_RIGHTS \
- (READ_CONTROL_ACCESS | \
- SA_RIGHT_ALIAS_LOOKUP_INFO | \
- SA_RIGHT_ALIAS_GET_MEMBERS) /* 0x0002000c */
-
-#define ALIAS_DEFAULT_SACL_SEC_ACE_FLAG (SEC_ACE_FLAG_FAILED_ACCESS | SEC_ACE_FLAG_SUCCESSFUL_ACCESS) /* 0xc0 */
-
-
-#if 0
-NTSTATUS create_builtin_alias_default_sec_desc(SEC_DESC **sec_desc, TALLOC_CTX *ctx)
-{
- DOM_SID *world = &global_sid_World;
- DOM_SID *admins = &global_sid_Builtin_Administrators;
- SEC_ACCESS sa;
- SEC_ACE sacl_ace;
- SEC_ACE dacl_aces[2];
- SEC_ACL *sacl = NULL;
- SEC_ACL *dacl = NULL;
- size_t psize;
-
- init_sec_access(&sa, ALIAS_DEFAULT_SACL_SA_RIGHTS);
- init_sec_ace(&sacl_ace, world, SEC_ACE_TYPE_SYSTEM_AUDIT, sa, ALIAS_DEFAULT_SACL_SEC_ACE_FLAG);
-
- sacl = make_sec_acl(ctx, NT4_ACL_REVISION, 1, &sacl_ace);
- if (!sacl) {
- DEBUG(0, ("build_init_sec_desc: Failed to make SEC_ACL.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- init_sec_access(&sa, ALIAS_DEFAULT_DACL_SA_RIGHTS);
- init_sec_ace(&(dacl_aces[0]), world, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0);
- init_sec_access(&sa, SA_RIGHT_ALIAS_ALL_ACCESS);
- init_sec_ace(&(dacl_aces[1]), admins, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0);
-
- dacl = make_sec_acl(ctx, NT4_ACL_REVISION, 2, dacl_aces);
- if (!sacl) {
- DEBUG(0, ("build_init_sec_desc: Failed to make SEC_ACL.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- *sec_desc = make_sec_desc(ctx, SEC_DESC_REVISION, admins, admins, sacl, dacl, &psize);
- if (!(*sec_desc)) {
- DEBUG(0,("get_share_security: Failed to make SEC_DESC.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sec_desc_add_ace_to_dacl(SEC_DESC *sec_desc, TALLOC_CTX *ctx, DOM_SID *sid, uint32 mask)
-{
- NTSTATUS result;
- SEC_ACE *new_aces;
- unsigned num_aces;
- int i;
-
- num_aces = sec_desc->dacl->num_aces + 1;
- result = sec_ace_add_sid(ctx, &new_aces, sec_desc->dacl->ace, &num_aces, sid, mask);
- if (NT_STATUS_IS_OK(result)) {
- sec_desc->dacl->ace = new_aces;
- sec_desc->dacl->num_aces = num_aces;
- sec_desc->dacl->size = SEC_ACL_HEADER_SIZE;
- for (i = 0; i < num_aces; i++) {
- sec_desc->dacl->size += sec_desc->dacl->ace[i].size;
- }
- }
- return result;
-}
-
-NTSTATUS gums_init_builtin_groups(void)
-{
- NTSTATUS result;
- GUMS_OBJECT g_obj;
- GUMS_GROUP *g_grp;
- GUMS_PRIVILEGE g_priv;
-
- /* Build the well known Builtin Local Groups */
- g_obj.type = GUMS_OBJ_GROUP;
- g_obj.version = 1;
- g_obj.seq_num = 0;
- g_obj.mem_ctx = talloc_init("gums_init_backend_acct");
- if (g_obj.mem_ctx == NULL) {
- DEBUG(0, ("gums_init_backend: Out of Memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- /* Administrators * /
-
- /* alloc group structure */
- g_obj.data.group = (GUMS_GROUP *)talloc(g_obj.mem_ctx, sizeof(GUMS_GROUP));
- ALLOC_CHECK("gums_init_backend", g_obj.data.group, result, done);
-
- /* make admins sid */
- g_grp = (GUMS_GROUP *)g_obj.data.group;
- sid_copy(g_obj.sid, &global_sid_Builtin_Administrators);
-
- /* make security descriptor */
- result = create_builtin_alias_default_sec_desc(&(g_obj.sec_desc), g_obj.mem_ctx);
- NTSTATUS_CHECK("gums_init_backend", "create_builtin_alias_default_sec_desc", result, done);
-
- /* make privilege set */
- /* From BDC join trace:
- SeSecurityPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeSystemtimePrivilege
- SeShutdownPrivilege
- SeRemoteShutdownPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
- SeSystemEnvironmentPrivilege
- SeSystemProfilePrivilege
- SeProfileSingleProcessPrivilege
- SeIncreaseBasePriorityPrivilege
- SeLocalDriverPrivilege
- SeCreatePagefilePrivilege
- SeIncreaseQuotaPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Administrators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can fully administer the computer/domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* numebr of group members */
- g_grp->count = 0;
- g_grp->members = NULL;
-
- /* store Administrators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Power Users */
- /* Domain Controllers Does NOT have power Users */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Power_Users);
-
- /* make privilege set */
- /* SE_PRIV_??? */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Power Users");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
-/* > */ g_obj.description = talloc_strdup(g_obj.mem_ctx, "Power Users");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Power Users group */
- result = gums_storage->set_object(&g_obj);
-
- /* Account Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Account_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Account Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain user and group accounts");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Account Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Server Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Server_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeSystemtimePrivilege
- SeShutdownPrivilege
- SeRemoteShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Server Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain servers");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Server Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Print Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Print_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Print Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain printers");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Print Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Backup Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Backup_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Backup Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can bypass file security to backup files");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Backup Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Replicator */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Replicator);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Replicator");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Supports file replication in a domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Replicator group */
- result = gums_storage->set_object(&g_obj);
-
- /* Users */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Users);
-
- /* add ACE to sec dsec dacl */
- sec_desc_add_ace_to_dacl(g_obj.sec_desc, g_obj.mem_ctx, &global_sid_Builtin_Account_Operators, ALIAS_DEFAULT_DACL_SA_RIGHTS);
- sec_desc_add_ace_to_dacl(g_obj.sec_desc, g_obj.mem_ctx, &global_sid_Builtin_Power_Users, ALIAS_DEFAULT_DACL_SA_RIGHTS);
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Users");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Ordinary users");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Users group */
- result = gums_storage->set_object(&g_obj);
-
- /* Guests */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Guests);
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Guests");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Users granted guest access to the computer/domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Guests group */
- result = gums_storage->set_object(&g_obj);
-
- /* set default privileges */
- g_priv.type = GUMS_OBJ_GROUP;
- g_priv.version = 1;
- g_priv.seq_num = 0;
- g_priv.mem_ctx = talloc_init("gums_init_backend_priv");
- if (g_priv.mem_ctx == NULL) {
- DEBUG(0, ("gums_init_backend: Out of Memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
-
-
-done:
- talloc_destroy(g_obj.mem_ctx);
- talloc_destroy(g_priv.mem_ctx);
- return result;
-}
-#endif
-
diff --git a/source3/sam/idmap.c b/source3/sam/idmap.c
deleted file mode 100644
index b18423a13b..0000000000
--- a/source3/sam/idmap.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Winbind ID Mapping
- Copyright (C) Tim Potter 2000
- Copyright (C) Anthony Liguori <aliguor@us.ibm.com> 2003
- Copyright (C) Simo Sorce 2003
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_IDMAP
-
-static struct {
-
- const char *name;
- /* Function to create a member of the idmap_methods list */
- NTSTATUS (*reg_meth)(struct idmap_methods **methods);
- struct idmap_methods *methods;
-
-} remote_idmap_functions[] = {
-
- { "tdb", idmap_reg_tdb, NULL },
- /* { "ldap", idmap_reg_ldap, NULL },*/
- { NULL, NULL, NULL }
-
-};
-
-static struct idmap_methods *local_cache;
-static struct idmap_methods *remote_repo;
-
-static struct idmap_methods *get_methods(const char *name)
-{
- int i = 0;
- struct idmap_methods *ret = NULL;
-
- while (remote_idmap_functions[i].name && strcmp(remote_idmap_functions[i].name, name)) {
- i++;
- }
-
- if (remote_idmap_functions[i].name) {
-
- if (!remote_idmap_functions[i].methods) {
- remote_idmap_functions[i].reg_meth(&remote_idmap_functions[i].methods);
- }
-
- ret = remote_idmap_functions[i].methods;
- }
-
- return ret;
-}
-
-/* Load idmap backend functions */
-BOOL load_methods(void)
-{
- if (!local_cache) {
- idmap_reg_tdb(&local_cache);
- }
-
- if (!remote_repo && lp_idmap_backend()) {
- DEBUG(3, ("load_methods: using '%s' as remote backend\n", lp_idmap_backend()));
-
- remote_repo = get_methods(lp_idmap_backend());
- if (!remote_repo) {
- DEBUG(0, ("load_methods: could not load remote backend '%s'\n", lp_idmap_backend()));
- return False;
- }
- }
-
- idmap_init();
-
- return True;
-}
-
-/* Initialize backend */
-NTSTATUS idmap_init(void)
-{
- NTSTATUS ret;
-
- ret = remote_repo->init("idmap.tdb");
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(3, ("idmap_init: init failed!\n"));
- }
-
- return ret;
-}
-
-static NTSTATUS idmap_set_mapping(DOM_SID *sid, unid_t id, int id_type)
-{
- NTSTATUS ret;
-
- if (!load_methods()) return NT_STATUS_UNSUCCESSFUL;
-
- ret = local_cache->set_mapping(sid, id, id_type);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG (0, ("idmap_set_mapping: Error, unable to modify local cache!\n"));
- return ret;
- }
-
- /* Being able to update the remote cache is seldomly right.
- Generally this is a forbidden operation. */
- if (!(id_type & ID_CACHE) && (remote_repo != NULL)) {
- remote_repo->set_mapping(sid, id, id_type);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG (0, ("idmap_set_mapping: Error, unable to modify remote cache!\n"));
- }
- }
-
- return ret;
-}
-
-/* Get ID from SID */
-NTSTATUS idmap_get_id_from_sid(unid_t *id, int *id_type, DOM_SID *sid)
-{
- NTSTATUS ret;
- int loc_type;
-
- if (!load_methods()) return NT_STATUS_UNSUCCESSFUL;
-
- loc_type = *id_type;
- if (remote_repo) { /* We have a central remote idmap */
- loc_type |= ID_NOMAP;
- }
- ret = local_cache->get_id_from_sid(id, &loc_type, sid);
- if (NT_STATUS_IS_ERR(ret)) {
- if (remote_repo) {
- ret = remote_repo->get_id_from_sid(id, id_type, sid);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(3, ("idmap_get_id_from_sid: error fetching id!\n"));
- } else {
- loc_type |= ID_CACHE;
- idmap_set_mapping(sid, *id, loc_type);
- }
- }
- } else {
- *id_type = loc_type & ID_TYPEMASK;
- }
-
- return ret;
-}
-
-/* Get SID from ID */
-NTSTATUS idmap_get_sid_from_id(DOM_SID *sid, unid_t id, int id_type)
-{
- NTSTATUS ret;
- int loc_type;
-
- if (!load_methods()) return NT_STATUS_UNSUCCESSFUL;
-
- loc_type = id_type;
- if (remote_repo) {
- loc_type = id_type | ID_NOMAP;
- }
- ret = local_cache->get_sid_from_id(sid, id, loc_type);
- if (NT_STATUS_IS_ERR(ret)) {
- if (remote_repo) {
- ret = remote_repo->get_sid_from_id(sid, id, id_type);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(3, ("idmap_get_sid_from_id: unable to fetch sid!\n"));
- } else {
- loc_type |= ID_CACHE;
- idmap_set_mapping(sid, id, loc_type);
- }
- }
- }
-
- return ret;
-}
-
-/* Close backend */
-NTSTATUS idmap_close(void)
-{
- NTSTATUS ret;
-
- if (!load_methods()) return NT_STATUS_UNSUCCESSFUL;
-
- ret = local_cache->close();
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(3, ("idmap_close: failed to close local cache!\n"));
- }
-
- if (remote_repo) {
- ret = remote_repo->close();
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(3, ("idmap_close: failed to close remote idmap repository!\n"));
- }
- }
-
- return ret;
-}
-
-/* Dump backend status */
-void idmap_status(void)
-{
- if (load_methods()) {
- local_cache->status();
- remote_repo->status();
- }
-}
-
diff --git a/source3/sam/idmap_tdb.c b/source3/sam/idmap_tdb.c
deleted file mode 100644
index 4af46ac8d3..0000000000
--- a/source3/sam/idmap_tdb.c
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- idmap TDB backend
-
- Copyright (C) Tim Potter 2000
- Copyright (C) Anthony Liguori 2003
- Copyright (C) Simo Sorce 2003
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_IDMAP
-
-/* High water mark keys */
-#define HWM_GROUP "GROUP HWM"
-#define HWM_USER "USER HWM"
-
-/* idmap version determines auto-conversion */
-#define IDMAP_VERSION 2
-
-/* Globals */
-static TDB_CONTEXT *idmap_tdb;
-
-struct idmap_state {
-
- /* User and group id pool */
-
- uid_t uid_low, uid_high; /* Range of uids to allocate */
- gid_t gid_low, gid_high; /* Range of gids to allocate */
-} idmap_state;
-
-
-/* FIXME: let handle conversions when all things work ok.
- I think it is better to handle the conversion at
- upgrade time and leave the old db intact.
- That would also make easier to go back to 2.2 if needed
- ---SSS */
-#if 0
-
-/* convert one record to the new format */
-static int tdb_convert_fn(TDB_CONTEXT * tdb, TDB_DATA key, TDB_DATA data,
- void *ignored)
-{
- struct winbindd_domain *domain;
- char *p;
- DOM_SID sid;
- uint32 rid;
- fstring keystr;
- fstring dom_name;
- TDB_DATA key2;
-
- p = strchr(key.dptr, '/');
- if (!p)
- return 0;
-
- *p = 0;
- fstrcpy(dom_name, key.dptr);
- *p++ = '/';
-
- domain = find_domain_from_name(dom_name);
- if (!domain) {
- /* We must delete the old record. */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to find domain %s\n",
- dom_name));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : deleting record %s\n",
- key.dptr));
- tdb_delete(idmap_tdb, key);
- return 0;
- }
-
- rid = atoi(p);
-
- sid_copy(&sid, &domain->sid);
- sid_append_rid(&sid, rid);
-
- sid_to_string(keystr, &sid);
- key2.dptr = keystr;
- key2.dsize = strlen(keystr) + 1;
-
- if (tdb_store(idmap_tdb, key2, data, TDB_INSERT) != 0) {
- /* not good! */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to update record %s\n",
- key2.dptr));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : conversion failed - idmap corrupt ?\n"));
- return -1;
- }
-
- if (tdb_store(idmap_tdb, data, key2, TDB_REPLACE) != 0) {
- /* not good! */
- DEBUG(0,
- ("winbindd: tdb_convert_fn : Unable to update record %s\n",
- data.dptr));
- DEBUG(0,
- ("winbindd: tdb_convert_fn : conversion failed - idmap corrupt ?\n"));
- return -1;
- }
-
- tdb_delete(idmap_tdb, key);
-
- return 0;
-}
-
-/*****************************************************************************
- Convert the idmap database from an older version.
-*****************************************************************************/
-static BOOL tdb_idmap_convert(const char *idmap_name)
-{
- int32 vers = tdb_fetch_int32(idmap_tdb, "IDMAP_VERSION");
- BOOL bigendianheader =
- (idmap_tdb->flags & TDB_BIGENDIAN) ? True : False;
-
- if (vers == IDMAP_VERSION)
- return True;
-
- if (((vers == -1) && bigendianheader)
- || (IREV(vers) == IDMAP_VERSION)) {
- /* Arrggghh ! Bytereversed or old big-endian - make order independent ! */
- /*
- * high and low records were created on a
- * big endian machine and will need byte-reversing.
- */
-
- int32 wm;
-
- wm = tdb_fetch_int32(idmap_tdb, HWM_USER);
-
- if (wm != -1) {
- wm = IREV(wm);
- } else
- wm = server_state.uid_low;
-
- if (tdb_store_int32(idmap_tdb, HWM_USER, wm) == -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap user hwm in idmap database\n"));
- return False;
- }
-
- wm = tdb_fetch_int32(idmap_tdb, HWM_GROUP);
- if (wm != -1) {
- wm = IREV(wm);
- } else
- wm = server_state.gid_low;
-
- if (tdb_store_int32(idmap_tdb, HWM_GROUP, wm) == -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap group hwm in idmap database\n"));
- return False;
- }
- }
-
- /* the old format stored as DOMAIN/rid - now we store the SID direct */
- tdb_traverse(idmap_tdb, tdb_convert_fn, NULL);
-
- if (tdb_store_int32(idmap_tdb, "IDMAP_VERSION", IDMAP_VERSION) ==
- -1) {
- DEBUG(0,
- ("tdb_idmap_convert: Unable to byteswap group hwm in idmap database\n"));
- return False;
- }
-
- return True;
-}
-#endif
-
-/* Allocate either a user or group id from the pool */
-static NTSTATUS tdb_allocate_id(unid_t *id, int id_type)
-{
- int hwm;
-
- if (!id) return NT_STATUS_INVALID_PARAMETER;
-
- /* Get current high water mark */
- switch (id_type & ID_TYPEMASK) {
- case ID_USERID:
- if ((hwm = tdb_fetch_int32(idmap_tdb, HWM_USER)) == -1) {
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
-
- if (hwm > idmap_state.uid_high) {
- DEBUG(0, ("idmap Fatal Error: UID range full!!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- (*id).uid = hwm++;
-
- /* Store new high water mark */
- tdb_store_int32(idmap_tdb, HWM_USER, hwm);
- break;
- case ID_GROUPID:
- if ((hwm = tdb_fetch_int32(idmap_tdb, HWM_GROUP)) == -1) {
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
-
- if (hwm > idmap_state.gid_high) {
- DEBUG(0, ("idmap Fatal Error: GID range full!!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- (*id).gid = hwm++;
-
- /* Store new high water mark */
- tdb_store_int32(idmap_tdb, HWM_GROUP, hwm);
- break;
- default:
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- return NT_STATUS_OK;
-}
-
-/* Get a sid from an id */
-static NTSTATUS tdb_get_sid_from_id(DOM_SID *sid, unid_t id, int id_type)
-{
- TDB_DATA key, data;
- fstring keystr;
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- if (!sid) return NT_STATUS_INVALID_PARAMETER;
-
- switch (id_type & ID_TYPEMASK) {
- case ID_USERID:
- slprintf(keystr, sizeof(keystr), "UID %d", id.uid);
- break;
- case ID_GROUPID:
- slprintf(keystr, sizeof(keystr), "GID %d", id.gid);
- break;
- default:
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(idmap_tdb, key);
-
- if (data.dptr) {
- if (string_to_sid(sid, data.dptr)) {
- ret = NT_STATUS_OK;
- }
- SAFE_FREE(data.dptr);
- }
-
- return ret;
-}
-
-/* Get an id from a sid */
-static NTSTATUS tdb_get_id_from_sid(unid_t *id, int *id_type, DOM_SID *sid)
-{
- TDB_DATA data, key;
- fstring keystr;
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- if (!sid || !id || !id_type) return NT_STATUS_INVALID_PARAMETER;
-
- /* Check if sid is present in database */
- sid_to_string(keystr, sid);
-
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(idmap_tdb, key);
-
- if (data.dptr) {
- int type = *id_type & ID_TYPEMASK;
- fstring scanstr;
-
- if (type == ID_EMPTY || type == ID_USERID) {
- /* Parse and return existing uid */
- fstrcpy(scanstr, "UID %d");
-
- if (sscanf(data.dptr, scanstr, (*id).uid) == 1) {
- /* uid ok? */
- if (type == ID_EMPTY) {
- *id_type = ID_USERID;
- }
- ret = NT_STATUS_OK;
- goto idok;
- }
- }
-
- if (type == ID_EMPTY || type == ID_GROUPID) {
- /* Parse and return existing gid */
- fstrcpy(scanstr, "GID %d");
-
- if (sscanf(data.dptr, scanstr, (*id).gid) == 1) {
- /* gid ok? */
- if (type == ID_EMPTY) {
- *id_type = ID_GROUPID;
- }
- ret = NT_STATUS_OK;
- }
- }
-idok:
- SAFE_FREE(data.dptr);
-
- } else if (!(*id_type & ID_NOMAP) &&
- (((*id_type & ID_TYPEMASK) == ID_USERID)
- || (*id_type & ID_TYPEMASK) == ID_GROUPID)) {
-
- /* Allocate a new id for this sid */
- ret = tdb_allocate_id(id, *id_type);
- if (NT_STATUS_IS_OK(ret)) {
- fstring keystr2;
-
- /* Store new id */
- if (*id_type & ID_USERID) {
- slprintf(keystr2, sizeof(keystr2), "UID %d", (*id).uid);
- } else {
- slprintf(keystr2, sizeof(keystr2), "GID %d", (*id).gid);
- }
-
- data.dptr = keystr2;
- data.dsize = strlen(keystr2) + 1;
-
- if (tdb_store(idmap_tdb, key, data, TDB_INSERT) == -1) {
- /* TODO: print tdb error !! */
- return NT_STATUS_UNSUCCESSFUL;
- }
- if (tdb_store(idmap_tdb, data, key, TDB_INSERT) == -1) {
- /* TODO: print tdb error !! */
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- ret = NT_STATUS_OK;
- }
- }
-
- return ret;
-}
-
-static NTSTATUS tdb_set_mapping(DOM_SID *sid, unid_t id, int id_type)
-{
- TDB_DATA ksid, kid;
- fstring ksidstr;
- fstring kidstr;
-
- if (!sid) return NT_STATUS_INVALID_PARAMETER;
-
- sid_to_string(ksidstr, sid);
-
- ksid.dptr = ksidstr;
- ksid.dsize = strlen(ksidstr) + 1;
-
- id_type &= ID_TYPEMASK;
- if (id_type & ID_USERID) {
- slprintf(kidstr, sizeof(kidstr), "UID %d", id.uid);
- } else if (id_type & ID_GROUPID) {
- slprintf(kidstr, sizeof(kidstr), "GID %d", id.gid);
- } else {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- kid.dptr = kidstr;
- kid.dsize = strlen(kidstr) + 1;
-
- if (tdb_store(idmap_tdb, ksid, kid, TDB_INSERT) == -1) {
- /* TODO: print tdb error !! */
- return NT_STATUS_UNSUCCESSFUL;
- }
- if (tdb_store(idmap_tdb, kid, ksid, TDB_INSERT) == -1) {
- /* TODO: print tdb error !! */
- return NT_STATUS_UNSUCCESSFUL;
- }
- return NT_STATUS_OK;
-}
-
-/*****************************************************************************
- Initialise idmap database.
-*****************************************************************************/
-static NTSTATUS tdb_idmap_init(const char *db_name)
-{
- /* Open tdb cache */
- if (!(idmap_tdb = tdb_open_log(lock_path(db_name), 0,
- TDB_DEFAULT, O_RDWR | O_CREAT,
- 0600))) {
- DEBUG(0, ("idmap_init: Unable to open idmap database\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
-#if 0
- /* possibly convert from an earlier version */
- if (!tdb_idmap_convert(lock_path("winbind_idmap.tdb"))) {
- DEBUG(0,
- ("idmap_init: Unable to open old idmap database\n"));
- return False;
- }
-#endif
-
- /* Create high water marks for group and user id */
- if (tdb_fetch_int32(idmap_tdb, HWM_USER) == -1) {
- if (tdb_store_int32(idmap_tdb, HWM_USER, idmap_state.uid_low) == -1) {
- DEBUG(0, ("idmap_init: Unable to initialise user hwm in idmap database\n"));
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
- }
-
- if (tdb_fetch_int32(idmap_tdb, HWM_GROUP) == -1) {
- if (tdb_store_int32(idmap_tdb, HWM_GROUP, idmap_state.gid_low) == -1) {
- DEBUG(0, ("idmap_init: Unable to initialise group hwm in idmap database\n"));
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/* Close the tdb */
-static NTSTATUS tdb_idmap_close(void)
-{
- if (idmap_tdb) {
- if (tdb_close(idmap_tdb) == 0) {
- return NT_STATUS_OK;
- } else {
- return NT_STATUS_UNSUCCESSFUL;
- }
- }
- return NT_STATUS_OK;
-}
-
-
-/* Dump status information to log file. Display different stuff based on
- the debug level:
-
- Debug Level Information Displayed
- =================================================================
- 0 Percentage of [ug]id range allocated
- 0 High water marks (next allocated ids)
-*/
-
-#define DUMP_INFO 0
-
-static void tdb_idmap_status(void)
-{
- int user_hwm, group_hwm;
-
- DEBUG(0, ("winbindd idmap status:\n"));
-
- /* Get current high water marks */
-
- if ((user_hwm = tdb_fetch_int32(idmap_tdb, HWM_USER)) == -1) {
- DEBUG(DUMP_INFO,
- ("\tCould not get userid high water mark!\n"));
- }
-
- if ((group_hwm = tdb_fetch_int32(idmap_tdb, HWM_GROUP)) == -1) {
- DEBUG(DUMP_INFO,
- ("\tCould not get groupid high water mark!\n"));
- }
-
- /* Display next ids to allocate */
-
- if (user_hwm != -1) {
- DEBUG(DUMP_INFO,
- ("\tNext userid to allocate is %d\n", user_hwm));
- }
-
- if (group_hwm != -1) {
- DEBUG(DUMP_INFO,
- ("\tNext groupid to allocate is %d\n", group_hwm));
- }
-
- /* Display percentage of id range already allocated. */
-
- if (user_hwm != -1) {
- int num_users = user_hwm - idmap_state.uid_low;
- int total_users =
- idmap_state.uid_high - idmap_state.uid_low;
-
- DEBUG(DUMP_INFO,
- ("\tUser id range is %d%% full (%d of %d)\n",
- num_users * 100 / total_users, num_users,
- total_users));
- }
-
- if (group_hwm != -1) {
- int num_groups = group_hwm - idmap_state.gid_low;
- int total_groups =
- idmap_state.gid_high - idmap_state.gid_low;
-
- DEBUG(DUMP_INFO,
- ("\tGroup id range is %d%% full (%d of %d)\n",
- num_groups * 100 / total_groups, num_groups,
- total_groups));
- }
-
- /* Display complete mapping of users and groups to rids */
-}
-
-struct idmap_methods tdb_idmap_methods = {
-
- tdb_idmap_init,
- tdb_get_sid_from_id,
- tdb_get_id_from_sid,
- tdb_set_mapping,
- tdb_idmap_close,
- tdb_idmap_status
-
-};
-
-NTSTATUS idmap_reg_tdb(struct idmap_methods **meth)
-{
- *meth = &tdb_idmap_methods;
-
- return NT_STATUS_OK;
-}
-
diff --git a/source3/sam/interface.c b/source3/sam/interface.c
deleted file mode 100644
index 51ae561999..0000000000
--- a/source3/sam/interface.c
+++ /dev/null
@@ -1,1338 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Password and authentication handling
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Kai Krüger 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-extern DOM_SID global_sid_Builtin;
-
-/** List of various built-in sam modules */
-
-const struct sam_init_function_entry builtin_sam_init_functions[] = {
- { "plugin", sam_init_plugin },
-#ifdef HAVE_LDAP
- { "ads", sam_init_ads },
-#endif
- { "skel", sam_init_skel },
- { NULL, NULL}
-};
-
-
-static NTSTATUS sam_get_methods_by_sid(const SAM_CONTEXT *context, SAM_METHODS **sam_method, const DOM_SID *domainsid)
-{
- SAM_METHODS *tmp_methods;
-
- DEBUG(5,("sam_get_methods_by_sid: %d\n", __LINE__));
-
- /* invalid sam_context specified */
- SAM_ASSERT(context && context->methods);
-
- tmp_methods = context->methods;
-
- while (tmp_methods) {
- if (sid_equal(domainsid, &(tmp_methods->domain_sid)))
- {
- (*sam_method) = tmp_methods;
- return NT_STATUS_OK;
- }
- tmp_methods = tmp_methods->next;
- }
-
- DEBUG(3,("sam_get_methods_by_sid: There is no backend specified for domain %s\n", sid_string_static(domainsid)));
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-static NTSTATUS sam_get_methods_by_name(const SAM_CONTEXT *context, SAM_METHODS **sam_method, const char *domainname)
-{
- SAM_METHODS *tmp_methods;
-
- DEBUG(5,("sam_get_methods_by_name: %d\n", __LINE__));
-
- /* invalid sam_context specified */
- SAM_ASSERT(context && context->methods);
-
- tmp_methods = context->methods;
-
- while (tmp_methods) {
- if (strequal(domainname, tmp_methods->domain_name))
- {
- (*sam_method) = tmp_methods;
- return NT_STATUS_OK;
- }
- tmp_methods = tmp_methods->next;
- }
-
- DEBUG(3,("sam_get_methods_by_sid: There is no backend specified for domain %s\n", domainname));
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-static NTSTATUS make_sam_methods(TALLOC_CTX *mem_ctx, SAM_METHODS **methods)
-{
- *methods = talloc(mem_ctx, sizeof(SAM_METHODS));
-
- if (!*methods) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCTP(*methods);
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Free and cleanup a sam context, any associated data and anything
- that the attached modules might have associated.
- *******************************************************************/
-
-void free_sam_context(SAM_CONTEXT **context)
-{
- SAM_METHODS *sam_selected = (*context)->methods;
-
- while (sam_selected) {
- if (sam_selected->free_private_data) {
- sam_selected->free_private_data(&(sam_selected->private_data));
- }
- sam_selected = sam_selected->next;
- }
-
- talloc_destroy((*context)->mem_ctx);
- *context = NULL;
-}
-
-/******************************************************************
- Make a backend_entry from scratch
- *******************************************************************/
-
-static NTSTATUS make_backend_entry(SAM_BACKEND_ENTRY *backend_entry, char *sam_backend_string)
-{
- char *tmp = NULL;
- char *tmp_string = sam_backend_string;
-
- DEBUG(5,("make_backend_entry: %d\n", __LINE__));
-
- SAM_ASSERT(sam_backend_string && backend_entry);
-
- backend_entry->module_name = sam_backend_string;
-
- DEBUG(5,("makeing backend_entry for %s\n", backend_entry->module_name));
-
- if ((tmp = strrchr(tmp_string, '|')) != NULL) {
- DEBUGADD(20,("a domain name has been specified\n"));
- *tmp = 0;
- backend_entry->domain_name = smb_xstrdup(tmp + 1);
- tmp_string = tmp + 1;
- }
-
- if ((tmp = strchr(tmp_string, ':')) != NULL) {
- DEBUG(20,("options for the backend have been specified\n"));
- *tmp = 0;
- backend_entry->module_params = smb_xstrdup(tmp + 1);
- tmp_string = tmp + 1;
- }
-
- if (backend_entry->domain_name == NULL) {
- DEBUG(10,("make_backend_entry: no domain was specified for sam module %s. Using default domain %s\n",
- backend_entry->module_name, lp_workgroup()));
- backend_entry->domain_name = smb_xstrdup(lp_workgroup());
- }
-
- if ((backend_entry->domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID))) == NULL) {
- DEBUG(0,("make_backend_entry: failed to malloc domain_sid\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- DEBUG(10,("looking up sid for domain %s\n", backend_entry->domain_name));
-
- if (!secrets_fetch_domain_sid(backend_entry->domain_name, backend_entry->domain_sid)) {
- DEBUG(2,("make_backend_entry: There is no SID stored for domain %s. Creating a new one.\n",
- backend_entry->domain_name));
- DEBUG(0, ("FIXME in %s:%d\n", __FILE__, __LINE__));
- ZERO_STRUCTP(backend_entry->domain_sid);
- }
-
- DEBUG(5,("make_backend_entry: module name: %s, module parameters: %s, domain name: %s, domain sid: %s\n",
- backend_entry->module_name, backend_entry->module_params, backend_entry->domain_name, sid_string_static(backend_entry->domain_sid)));
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- create sam_methods struct based on sam_backend_entry
- *****************************************************************/
-
-static NTSTATUS make_sam_methods_backend_entry(SAM_CONTEXT *context, SAM_METHODS **methods_ptr, SAM_BACKEND_ENTRY *backend_entry)
-{
- NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- SAM_METHODS *methods;
- int i;
-
- DEBUG(5,("make_sam_methods_backend_entry: %d\n", __LINE__));
-
- if (!NT_STATUS_IS_OK(nt_status = make_sam_methods(context->mem_ctx, methods_ptr))) {
- return nt_status;
- }
-
- methods = *methods_ptr;
- methods->backendname = talloc_strdup(context->mem_ctx, backend_entry->module_name);
- methods->domain_name = talloc_strdup(context->mem_ctx, backend_entry->domain_name);
- sid_copy(&methods->domain_sid, backend_entry->domain_sid);
- methods->parent = context;
-
- DEBUG(5,("Attempting to find sam backend %s\n", backend_entry->module_name));
- for (i = 0; builtin_sam_init_functions[i].module_name; i++)
- {
- if (strequal(builtin_sam_init_functions[i].module_name, backend_entry->module_name))
- {
- DEBUG(5,("Found sam backend %s (at pos %d)\n", backend_entry->module_name, i));
- DEBUGADD(5,("initialising it with options=%s for domain %s\n", backend_entry->module_params, sid_string_static(backend_entry->domain_sid)));
- nt_status = builtin_sam_init_functions[i].init(methods, backend_entry->module_params);
- if (NT_STATUS_IS_OK(nt_status)) {
- DEBUG(5,("sam backend %s has a valid init\n", backend_entry->module_name));
- } else {
- DEBUG(2,("sam backend %s did not correctly init (error was %s)\n",
- backend_entry->module_name, nt_errstr(nt_status)));
- }
- return nt_status;
- }
- }
-
- DEBUG(2,("could not find backend %s\n", backend_entry->module_name));
-
- return NT_STATUS_INVALID_PARAMETER;
-}
-
-static NTSTATUS sam_context_check_default_backends(SAM_CONTEXT *context)
-{
- SAM_BACKEND_ENTRY entry;
- DOM_SID *global_sam_sid = get_global_sam_sid(); /* lp_workgroup doesn't play nicely with multiple domains */
- SAM_METHODS *methods, *tmpmethods;
- NTSTATUS ntstatus;
-
- DEBUG(5,("sam_context_check_default_backends: %d\n", __LINE__));
-
- /* Make sure domain lp_workgroup() is available */
-
- ntstatus = sam_get_methods_by_sid(context, &methods, &global_sid_Builtin);
-
- if (NT_STATUS_EQUAL(ntstatus, NT_STATUS_NO_SUCH_DOMAIN)) {
- DEBUG(4,("There was no backend specified for domain %s(%s); using %s\n",
- lp_workgroup(), sid_string_static(global_sam_sid), SAM_DEFAULT_BACKEND));
-
- SAM_ASSERT(global_sam_sid);
-
- entry.module_name = SAM_DEFAULT_BACKEND;
- entry.module_params = NULL;
- entry.domain_name = lp_workgroup();
- entry.domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy(entry.domain_sid, global_sam_sid);
-
- if (!NT_STATUS_IS_OK(ntstatus = make_sam_methods_backend_entry(context, &methods, &entry))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- return ntstatus;
- }
-
- DLIST_ADD_END(context->methods, methods, tmpmethods);
-
- } else if (!NT_STATUS_IS_OK(ntstatus)) {
- DEBUG(2, ("sam_get_methods_by_sid failed for %s\n", lp_workgroup()));
- return ntstatus;
- }
-
- /* Make sure the BUILTIN domain is available */
-
- ntstatus = sam_get_methods_by_sid(context, &methods, global_sam_sid);
-
- if (NT_STATUS_EQUAL(ntstatus, NT_STATUS_NO_SUCH_DOMAIN)) {
- DEBUG(4,("There was no backend specified for domain BUILTIN; using %s\n",
- SAM_DEFAULT_BACKEND));
- entry.module_name = SAM_DEFAULT_BACKEND;
- entry.module_params = NULL;
- entry.domain_name = "BUILTIN";
- entry.domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy(entry.domain_sid, &global_sid_Builtin);
-
- if (!NT_STATUS_IS_OK(ntstatus = make_sam_methods_backend_entry(context, &methods, &entry))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- return ntstatus;
- }
-
- DLIST_ADD_END(context->methods, methods, tmpmethods);
- } else if (!NT_STATUS_IS_OK(ntstatus)) {
- DEBUG(2, ("sam_get_methods_by_sid failed for BUILTIN\n"));
- return ntstatus;
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS check_duplicate_backend_entries(SAM_BACKEND_ENTRY **backend_entries, int *nBackends)
-{
- int i, j;
-
- DEBUG(5,("check_duplicate_backend_entries: %d\n", __LINE__));
-
- for (i = 0; i < *nBackends; i++) {
- for (j = i + 1; j < *nBackends; j++) {
- if (sid_equal((*backend_entries)[i].domain_sid, (*backend_entries)[j].domain_sid)) {
- DEBUG(0,("two backend modules claim the same domain %s\n",
- sid_string_static((*backend_entries)[j].domain_sid)));
- return NT_STATUS_INVALID_PARAMETER;
- }
- }
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS make_sam_context_list(SAM_CONTEXT **context, char **sam_backends_param)
-{
- int i = 0, j = 0;
- SAM_METHODS *curmethods, *tmpmethods;
- int nBackends = 0;
- SAM_BACKEND_ENTRY *backends = NULL;
- NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(5,("make_sam_context_from_conf: %d\n", __LINE__));
-
- if (!sam_backends_param) {
- DEBUG(1, ("no SAM backeds specified!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = make_sam_context(context))) {
- DEBUG(4,("make_sam_context failed\n"));
- return nt_status;
- }
-
- while (sam_backends_param[nBackends])
- nBackends++;
-
- DEBUG(6,("There are %d domains listed with their backends\n", nBackends));
-
- if ((backends = (SAM_BACKEND_ENTRY *)malloc(sizeof(*backends)*nBackends)) == NULL) {
- DEBUG(0,("make_sam_context_list: failed to allocate backends\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- memset(backends, '\0', sizeof(*backends)*nBackends);
-
- for (i = 0; i < nBackends; i++) {
- DEBUG(8,("processing %s\n",sam_backends_param[i]));
- if (!NT_STATUS_IS_OK(nt_status = make_backend_entry(&backends[i], sam_backends_param[i]))) {
- DEBUG(4,("make_backend_entry failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
- }
-
- if (!NT_STATUS_IS_OK(nt_status = check_duplicate_backend_entries(&backends, &nBackends))) {
- DEBUG(4,("check_duplicate_backend_entries failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
-
- for (i = 0; i < nBackends; i++) {
- if (!NT_STATUS_IS_OK(nt_status = make_sam_methods_backend_entry(*context, &curmethods, &backends[i]))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
- DLIST_ADD_END((*context)->methods, curmethods, tmpmethods);
- }
-
- for (i = 0; i < nBackends; i++) SAFE_FREE(backends[i].domain_sid);
-
- SAFE_FREE(backends);
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Make a sam_context from scratch.
- *******************************************************************/
-
-NTSTATUS make_sam_context(SAM_CONTEXT **context)
-{
- TALLOC_CTX *mem_ctx;
-
- mem_ctx = talloc_init("sam_context internal allocation context");
-
- if (!mem_ctx) {
- DEBUG(0, ("make_sam_context: talloc init failed!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- *context = talloc(mem_ctx, sizeof(**context));
- if (!*context) {
- DEBUG(0, ("make_sam_context: talloc failed!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCTP(*context);
-
- (*context)->mem_ctx = mem_ctx;
-
- (*context)->free_fn = free_sam_context;
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Return an already initialised sam_context, to facilitate backward
- compatibility (see functions below).
- *******************************************************************/
-
-static struct sam_context *sam_get_static_context(BOOL reload)
-{
- static SAM_CONTEXT *sam_context = NULL;
-
- if ((sam_context) && (reload)) {
- sam_context->free_fn(&sam_context);
- sam_context = NULL;
- }
-
- if (!sam_context) {
- if (!NT_STATUS_IS_OK(make_sam_context_list(&sam_context, lp_sam_backend()))) {
- DEBUG(4,("make_sam_context_list failed\n"));
- return NULL;
- }
-
- /* Make sure the required domains (default domain, builtin) are available */
- if (!NT_STATUS_IS_OK(sam_context_check_default_backends(sam_context))) {
- DEBUG(4,("sam_context_check_default_backends failed\n"));
- return NULL;
- }
- }
-
- return sam_context;
-}
-
-/***************************************************************
- Initialize the static context (at smbd startup etc).
-
- If uninitialised, context will auto-init on first use.
- ***************************************************************/
-
-BOOL initialize_sam(BOOL reload)
-{
- return (sam_get_static_context(reload) != NULL);
-}
-
-
-/**************************************************************
- External API. This is what the rest of the world calls...
-***************************************************************/
-
-/******************************************************************
- sam_* functions are used to link the external SAM interface
- with the internal backends. These functions lookup the appropriate
- backends for the domain and pass on to the function in sam_methods
- in the selected backend
-
- When the context parmater is NULL, the default is used.
- *******************************************************************/
-
-#define SAM_SETUP_CONTEXT if (!context) \
- context = sam_get_static_context(False);\
- if (!context) {\
- return NT_STATUS_UNSUCCESSFUL; \
- }\
-
-
-
-NTSTATUS sam_get_sec_desc(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_sec_desc: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, sid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_sec_desc) {
- DEBUG(3, ("sam_get_sec_desc: sam_methods of the domain did not specify sam_get_sec_desc\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_sec_desc(tmp_methods, access_token, sid, sd))) {
- DEBUG(4,("sam_get_sec_desc for %s in backend %s failed\n", sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_sec_desc(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_set_sec_desc: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, sid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_set_sec_desc) {
- DEBUG(3, ("sam_set_sec_desc: sam_methods of the domain did not specify sam_set_sec_desc\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_set_sec_desc(tmp_methods, access_token, sid, sd))) {
- DEBUG(4,("sam_set_sec_desc for %s in backend %s failed\n", sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_lookup_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const char *domain, const char *name, DOM_SID *sid, uint32 *type)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_lookup_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_lookup_name) {
- DEBUG(3, ("sam_lookup_name: sam_methods of the domain did not specify sam_lookup_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_lookup_name(tmp_methods, access_token, name, sid, type))) {
- DEBUG(4,("sam_lookup_name for %s\\%s in backend %s failed\n",
- tmp_methods->domain_name, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_lookup_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
- DOM_SID domainsid;
-
- DEBUG(5,("sam_lookup_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- sid_copy(&domainsid, sid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_lookup_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_lookup_sid) {
- DEBUG(3, ("sam_lookup_sid: sam_methods of the domain did not specify sam_lookup_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_lookup_sid(tmp_methods, access_token, mem_ctx, sid, name, type))) {
- DEBUG(4,("sam_lookup_name for %s in backend %s failed\n",
- sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_update_domain(const SAM_CONTEXT *context, const SAM_DOMAIN_HANDLE *domain)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_domain: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid domain specified */
- SAM_ASSERT(domain && domain->current_sam_methods);
-
- tmp_methods = domain->current_sam_methods;
-
- if (!tmp_methods->sam_update_domain) {
- DEBUG(3, ("sam_update_domain: sam_methods of the domain did not specify sam_update_domain\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_domain(tmp_methods, domain))){
- DEBUG(4,("sam_update_domain in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_domains(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, int32 *domain_count, DOM_SID **domains, char ***domain_names)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SEC_DESC *sd;
- size_t sd_size;
- uint32 acc_granted;
- int i = 0;
-
- DEBUG(5,("sam_enum_domains: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters specified */
- SAM_ASSERT(domain_count && domains && domain_names);
-
- if (!NT_STATUS_IS_OK(nt_status = samr_make_sam_obj_sd(context->mem_ctx, &sd, &sd_size))) {
- DEBUG(4,("samr_make_sam_obj_sd failed\n"));
- return nt_status;
- }
-
- if (!se_access_check(sd, access_token, SA_RIGHT_SAM_ENUM_DOMAINS, &acc_granted, &nt_status)) {
- DEBUG(3,("sam_enum_domains: ACCESS DENIED\n"));
- return nt_status;
- }
-
- tmp_methods= context->methods;
- *domain_count = 0;
-
- while (tmp_methods) {
- (*domain_count)++;
- tmp_methods= tmp_methods->next;
- }
-
- DEBUG(6,("sam_enum_domains: enumerating %d domains\n", (*domain_count)));
-
- tmp_methods = context->methods;
-
- if (((*domains) = malloc( sizeof(DOM_SID) * (*domain_count))) == NULL) {
- DEBUG(0,("sam_enum_domains: Out of memory allocating domain SID list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (((*domain_names) = malloc( sizeof(char*) * (*domain_count))) == NULL) {
- DEBUG(0,("sam_enum_domains: Out of memory allocating domain name list\n"));
- SAFE_FREE((*domains));
- return NT_STATUS_NO_MEMORY;
- }
-
- while (tmp_methods) {
- DEBUGADD(7,(" [%d] %s: %s\n", i, tmp_methods->domain_name, sid_string_static(&tmp_methods->domain_sid)));
- sid_copy(domains[i],&tmp_methods->domain_sid);
- *domain_names[i] = smb_xstrdup(tmp_methods->domain_name);
- i++;
- tmp_methods= tmp_methods->next;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_lookup_domain(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const char *domain, DOM_SID **domainsid)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SEC_DESC *sd;
- size_t sd_size;
- uint32 acc_granted;
-
- DEBUG(5,("sam_lookup_domain: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid paramters */
- SAM_ASSERT(access_token && domain && domainsid);
-
- if (!NT_STATUS_IS_OK(nt_status = samr_make_sam_obj_sd(context->mem_ctx, &sd, &sd_size))) {
- DEBUG(4,("samr_make_sam_obj_sd failed\n"));
- return nt_status;
- }
-
- if (!se_access_check(sd, access_token, SA_RIGHT_SAM_OPEN_DOMAIN, &acc_granted, &nt_status)) {
- DEBUG(3,("sam_lookup_domain: ACCESS DENIED\n"));
- return nt_status;
- }
-
- tmp_methods= context->methods;
-
- while (tmp_methods) {
- if (strcmp(domain, tmp_methods->domain_name) == 0) {
- (*domainsid) = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy((*domainsid), &tmp_methods->domain_sid);
- return NT_STATUS_OK;
- }
- tmp_methods= tmp_methods->next;
- }
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-
-NTSTATUS sam_get_domain_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, SAM_DOMAIN_HANDLE **domain)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_domain_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && domain);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_domain_handle) {
- DEBUG(3, ("sam_get_domain_by_sid: sam_methods of the domain did not specify sam_get_domain_handle\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_domain_handle(tmp_methods, access_token, access_desired, domain))) {
- DEBUG(4,("sam_get_domain_handle for %s in backend %s failed\n",
- sid_string_static(domainsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_create_account(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_create_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters */
- SAM_ASSERT(access_token && domainsid && account_name && account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_create_account) {
- DEBUG(3, ("sam_create_account: sam_methods of the domain did not specify sam_create_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_create_account(tmp_methods, access_token, access_desired, account_name, acct_ctrl, account))) {
- DEBUG(4,("sam_create_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- DOM_SID domainsid;
- const DOM_SID *accountsid;
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_add_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters */
- SAM_ASSERT(account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_account_sid(account, &accountsid))) {
- DEBUG(0,("Can't get account SID\n"));
- return nt_status;
- }
-
- sid_copy(&domainsid, accountsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_account_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_add_account) {
- DEBUG(3, ("sam_add_account: sam_methods of the domain did not specify sam_add_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_account(tmp_methods, account))){
- DEBUG(4,("sam_add_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_update_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid account specified */
- SAM_ASSERT(account && account->current_sam_methods);
-
- tmp_methods = account->current_sam_methods;
-
- if (!tmp_methods->sam_update_account) {
- DEBUG(3, ("sam_update_account: sam_methods of the domain did not specify sam_update_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_account(tmp_methods, account))){
- DEBUG(4,("sam_update_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_delete_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_delete_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid account specified */
- SAM_ASSERT(account && account->current_sam_methods);
-
- tmp_methods = account->current_sam_methods;
-
- if (!tmp_methods->sam_delete_account) {
- DEBUG(3, ("sam_delete_account: sam_methods of the domain did not specify sam_delete_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_account(tmp_methods, account))){
- DEBUG(4,("sam_delete_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_accounts(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, uint16 acct_ctrl, int32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_enum_accounts: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && account_count && accounts);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_enum_accounts) {
- DEBUG(3, ("sam_enum_accounts: sam_methods of the domain did not specify sam_enum_accounts\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_accounts(tmp_methods, access_token, acct_ctrl, account_count, accounts))) {
- DEBUG(4,("sam_enum_accounts for domain %s in backend %s failed\n",
- tmp_methods->domain_name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_get_account_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- DOM_SID domainsid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_account_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && accountsid && account);
-
- sid_copy(&domainsid, accountsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_account_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_account_by_sid) {
- DEBUG(3, ("sam_get_account_by_sid: sam_methods of the domain did not specify sam_get_account_by_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_account_by_sid(tmp_methods, access_token, access_desired, accountsid, account))) {
- DEBUG(4,("sam_get_account_by_sid for %s in backend %s failed\n",
- sid_string_static(accountsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_account_by_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domain && name && account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_account_by_name) {
- DEBUG(3, ("sam_get_account_by_name: sam_methods of the domain did not specify sam_get_account_by_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_account_by_name(tmp_methods, access_token, access_desired, name, account))) {
- DEBUG(4,("sam_get_account_by_name for %s\\%s in backend %s failed\n",
- domain, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_create_group(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_create_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && group_name && group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_create_group) {
- DEBUG(3, ("sam_create_group: sam_methods of the domain did not specify sam_create_group\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_create_group(tmp_methods, access_token, access_desired, group_name, group_ctrl, group))) {
- DEBUG(4,("sam_create_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- DOM_SID domainsid;
- const DOM_SID *groupsid;
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_add_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_group_sid(group, &groupsid))) {
- DEBUG(0,("Can't get group SID\n"));
- return nt_status;
- }
-
- sid_copy(&domainsid, groupsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_group_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_add_group) {
- DEBUG(3, ("sam_add_group: sam_methods of the domain did not specify sam_add_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_group(tmp_methods, group))){
- DEBUG(4,("sam_add_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_update_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_update_group) {
- DEBUG(3, ("sam_update_group: sam_methods of the domain did not specify sam_update_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_group(tmp_methods, group))){
- DEBUG(4,("sam_update_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_delete_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_delete_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_delete_group) {
- DEBUG(3, ("sam_delete_group: sam_methods of the domain did not specify sam_delete_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_group(tmp_methods, group))){
- DEBUG(4,("sam_delete_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_groups(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_enum_groups: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && groups_count && groups);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_enum_accounts) {
- DEBUG(3, ("sam_enum_groups: sam_methods of the domain did not specify sam_enum_groups\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_groups(tmp_methods, access_token, group_ctrl, groups_count, groups))) {
- DEBUG(4,("sam_enum_groups for domain %s in backend %s failed\n",
- tmp_methods->domain_name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
- DOM_SID domainsid;
-
- DEBUG(5,("sam_get_group_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && groupsid && group);
-
- sid_copy(&domainsid, groupsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_group_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_group_by_sid) {
- DEBUG(3, ("sam_get_group_by_sid: sam_methods of the domain did not specify sam_get_group_by_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_group_by_sid(tmp_methods, access_token, access_desired, groupsid, group))) {
- DEBUG(4,("sam_get_group_by_sid for %s in backend %s failed\n",
- sid_string_static(groupsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_by_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain, const char *name, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_group_by_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domain && name && group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_group_by_name) {
- DEBUG(3, ("sam_get_group_by_name: sam_methods of the domain did not specify sam_get_group_by_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_group_by_name(tmp_methods, access_token, access_desired, name, group))) {
- DEBUG(4,("sam_get_group_by_name for %s\\%s in backend %s failed\n",
- domain, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_member_to_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group or member specified */
- SAM_ASSERT(group && group->current_sam_methods && member);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_add_member_to_group) {
- DEBUG(3, ("sam_add_member_to_group: sam_methods of the domain did not specify sam_add_member_to_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_member_to_group(tmp_methods, group, member))) {
- DEBUG(4,("sam_add_member_to_group in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-
-}
-
-NTSTATUS sam_delete_member_from_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group or member specified */
- SAM_ASSERT(group && group->current_sam_methods && member);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_delete_member_from_group) {
- DEBUG(3, ("sam_delete_member_from_group: sam_methods of the domain did not specify sam_delete_member_from_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_member_from_group(tmp_methods, group, member))) {
- DEBUG(4,("sam_delete_member_from_group in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_groupmembers(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods && members_count && members);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_enum_groupmembers) {
- DEBUG(3, ("sam_enum_groupmembers: sam_methods of the domain did not specify sam_enum_group_members\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_groupmembers(tmp_methods, group, members_count, members))) {
- DEBUG(4,("sam_enum_groupmembers in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_groups_of_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- uint32 tmp_group_count;
- SAM_GROUP_ENUM *tmp_groups;
-
- DEBUG(5,("sam_get_groups_of_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid sam_context specified */
- SAM_ASSERT(access_token && sids && context && context->methods);
-
- *group_count = 0;
-
- *groups = NULL;
-
- tmp_methods= context->methods;
-
- while (tmp_methods) {
- DEBUG(5,("getting groups from domain \n"));
- if (!tmp_methods->sam_get_groups_of_sid) {
- DEBUG(3, ("sam_get_groups_of_sid: sam_methods of domain did not specify sam_get_groups_of_sid\n"));
- SAFE_FREE(*groups);
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_groups_of_sid(tmp_methods, access_token, sids, group_ctrl, &tmp_group_count, &tmp_groups))) {
- DEBUG(4,("sam_get_groups_of_sid in backend %s failed\n", tmp_methods->backendname));
- SAFE_FREE(*groups);
- return nt_status;
- }
-
- *groups = Realloc(*groups, ((*group_count) + tmp_group_count) * sizeof(SAM_GROUP_ENUM));
-
- memcpy(&(*groups)[*group_count], tmp_groups, tmp_group_count);
-
- SAFE_FREE(tmp_groups);
-
- *group_count += tmp_group_count;
-
- tmp_methods = tmp_methods->next;
- }
-
- return NT_STATUS_OK;
-}
-
-
diff --git a/source3/sam/sam_ads.c b/source3/sam/sam_ads.c
deleted file mode 100755
index 13e0369004..0000000000
--- a/source3/sam/sam_ads.c
+++ /dev/null
@@ -1,1378 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Active Directory SAM backend, for simulate a W2K DC in mixed mode.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Andrew Bartlett 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-
-#ifdef HAVE_LDAP
-
-static int sam_ads_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_ads_debug_level
-
-#ifndef FIXME
-#define FIXME( body ) { DEBUG(0,("FIXME: "));\
- DEBUGADD(0,(body));}
-#endif
-
-#define ADS_STATUS_OK ADS_ERROR(0)
-#define ADS_STATUS_UNSUCCESSFUL ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL)
-#define ADS_STATUS_NOT_IMPLEMENTED ADS_ERROR_NT(NT_STATUS_NOT_IMPLEMENTED)
-
-
-#define ADS_SUBTREE_BUILTIN "CN=Builtin,"
-#define ADS_SUBTREE_COMPUTERS "CN=Computers,"
-#define ADS_SUBTREE_DC "CN=Domain Controllers,"
-#define ADS_SUBTREE_USERS "CN=Users,"
-#define ADS_ROOT_TREE ""
-/* Here are private module structs and functions */
-
-typedef struct sam_ads_privates {
- ADS_STRUCT *ads_struct;
- TALLOC_CTX *mem_ctx;
- BOOL bind_plaintext;
- char *ads_bind_dn;
- char *ads_bind_pw;
- char *ldap_uri;
- /* did we need something more? */
-}SAM_ADS_PRIVATES;
-
-
-/* get only these LDAP attributes, witch we really need for an account */
-const char *account_attrs[] = { "objectSid",
- "objectGUID",
- "sAMAccountType",
- "sAMAcountName",
- "userPrincipalName",
- "accountExpires",
- "badPasswordTime",
- "badPwdCount",
- "lastLogoff",
- "lastLogon",
- "userWorkstations",
- "dBCSPwd",
- "unicodePwd",
- "pwdLastSet",
- "userAccountControl",
- "profilePath",
- "homeDrive",
- "scriptPath",
- "homeDirectory",
- "cn",
- "primaryGroupID",/* 513 */
- "nsNPAllowDialIn",/* TRUE */
- "userParameters",/* Dial Back number ...*/
- "codePage",/* 0 */
- "countryCode",/* 0 */
- "adminCount",/* 1 or 0 */
- "logonCount",/* 0 */
- "managedObjects",
- "memberOf",/* dn */
- "instanceType",/* 4 */
- "name", /* sync with cn */
- "description",
- /* "nTSecurityDescriptor", */
- NULL};
-
-/* get only these LDAP attributes, witch we really need for a group */
-const char *group_attrs[] = {"objectSid",
- /* "objectGUID", */
- "sAMAccountType",
- "sAMAcountName",
- "groupType",
- /* "member", */
- "description",
- "name", /* sync with cn */
- /* "nTSecurityDescriptor", */
- NULL};
-
-
-/***************************************************
- return our ads connection. We keep the connection
- open to make things faster
-****************************************************/
-static ADS_STATUS sam_ads_cached_connection(SAM_ADS_PRIVATES *privates)
-{
- ADS_STRUCT *ads_struct;
- ADS_STATUS ads_status;
-
- if (!privates->ads_struct) {
- privates->ads_struct = ads_init_simple();
- ads_struct = privates->ads_struct;
- ads_struct->server.ldap_uri = smb_xstrdup(privates->ldap_uri);
- if ((!privates->ads_bind_dn) || (!*privates->ads_bind_dn)) {
- ads_struct->auth.flags |= ADS_AUTH_ANON_BIND;
- } else {
- ads_struct->auth.user_name
- = smb_xstrdup(privates->ads_bind_dn);
- if (privates->ads_bind_pw) {
- ads_struct->auth.password
- = smb_xstrdup(privates->ads_bind_pw);
- }
- }
- if (privates->bind_plaintext) {
- ads_struct->auth.flags |= ADS_AUTH_SIMPLE_BIND;
- }
- } else {
- ads_struct = privates->ads_struct;
- }
-
- if (ads_struct->ld != NULL) {
- /* connection has been opened. ping server. */
- struct sockaddr_un addr;
- socklen_t len;
- int sd;
- if (ldap_get_option(ads_struct->ld, LDAP_OPT_DESC, &sd) == 0 &&
- getpeername(sd, (struct sockaddr *) &addr, &len) < 0) {
- /* the other end has died. reopen. */
- ldap_unbind_ext(ads_struct->ld, NULL, NULL);
- ads_struct->ld = NULL;
- }
- }
-
- if (ads_struct->ld != NULL) {
- DEBUG(5,("sam_ads_cached_connection: allready connected to the LDAP server\n"));
- return ADS_SUCCESS;
- }
-
- ads_status = ads_connect(ads_struct);
-
- ads_status = ads_server_info(ads_struct);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(0,("Can't set server info: %s\n",ads_errstr(ads_status)));
- /* return ads_status; */ FIXME("for now we only warn!\n");
- }
-
- DEBUG(2, ("sam_ads_cached_connection: succesful connection to the LDAP server\n"));
- return ADS_SUCCESS;
-}
-
-static ADS_STATUS sam_ads_do_search(SAM_ADS_PRIVATES *privates, const char *bind_path, int scope, const char *exp, const char **attrs, void **res)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-
- ads_status = sam_ads_cached_connection(privates);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- return ads_do_search_retry(privates->ads_struct, bind_path, scope, exp, attrs, res);
-}
-
-
-/*********************************************
-here we have to check the update serial number
- - this is the core of the ldap cache
-*********************************************/
-static ADS_STATUS sam_ads_usn_is_valid(SAM_ADS_PRIVATES *privates, uint32 usn_in, uint32 *usn_out)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-
- SAM_ASSERT(privates && privates->ads_struct && usn_out);
-
- ads_status = ads_USN(privates->ads_struct, usn_out);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if (*usn_out == usn_in)
- return ADS_SUCCESS;
-
- return ads_status;
-}
-
-/***********************************************
-Initialize SAM_ACCOUNT_HANDLE from an ADS query
-************************************************/
-/* not ready :-( */
-static ADS_STATUS ads_entry2sam_account_handle(SAM_ADS_PRIVATES *privates, SAM_ACCOUNT_HANDLE *account ,void *msg)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_NO_SUCH_USER);
- NTSTATUS nt_status = NT_STATUS_NO_SUCH_USER;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = account->mem_ctx;
- char *tmp_str = NULL;
-
- SAM_ASSERT(privates && ads_struct && account && mem_ctx && msg);
-
- FIXME("should we really use ads_pull_username()(or ads_pull_string())?\n");
- if ((account->private.account_name = ads_pull_username(ads_struct, mem_ctx, msg))==NULL) {
- DEBUG(0,("ads_pull_username failed\n"));
- return ADS_ERROR_NT(NT_STATUS_NO_SUCH_USER);
- }
-
- if ((account->private.full_name = ads_pull_string(ads_struct, mem_ctx, msg,"name"))==NULL) {
- DEBUG(3,("ads_pull_string for 'name' failed - skip\n"));
- }
-
- if ((account->private.acct_desc = ads_pull_string(ads_struct, mem_ctx, msg,"description"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'acct_desc' failed - skip\n"));
- }
-
- if ((account->private.home_dir = ads_pull_string(ads_struct, mem_ctx, msg,"homeDirectory"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'homeDirectory' failed - skip\n"));
- }
-
- if ((account->private.dir_drive = ads_pull_string(ads_struct, mem_ctx, msg,"homeDrive"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'homeDrive' failed - skip\n"));
- }
-
- if ((account->private.profile_path = ads_pull_string(ads_struct, mem_ctx, msg,"profilePath"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'profilePath' failed - skip\n"));
- }
-
- if ((account->private.logon_script = ads_pull_string(ads_struct, mem_ctx, msg,"scriptPath"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'scriptPath' failed - skip\n"));
- }
-
- FIXME("check 'nsNPAllowDialIn' for munged_dial!\n");
- if ((account->private.munged_dial = ads_pull_string(ads_struct, mem_ctx, msg,"userParameters"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'userParameters' failed - skip\n"));
- }
-
- if ((account->private.unix_home_dir = ads_pull_string(ads_struct, mem_ctx, msg,"msSFUHomeDrirectory"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'msSFUHomeDrirectory' failed - skip\n"));
- }
-
-#if 0
- FIXME("use function intern mem_ctx for pwdLastSet\n");
- if ((tmp_str = ads_pull_string(ads_struct, mem_ctx, msg,"pwdLastSet"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'pwdLastSet' failed - skip\n"));
- } else {
- account->private.pass_last_set_time = ads_parse_nttime(tmp_str);
- tmp_str = NULL;
-
- }
-#endif
-
-#if 0
-typedef struct sam_account_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_account_handle **);
- struct sam_account_data {
- uint32 init_flag;
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
- char * account_name; /* account_name string */
- SAM_DOMAIN_HANDLE * domain; /* domain of account */
- char *full_name; /* account's full name string */
- char *unix_home_dir; /* UNIX home directory string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *acct_desc; /* account description string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
- DOM_SID account_sid; /* Primary Account SID */
- DOM_SID group_sid; /* Primary Group SID */
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
- char *plaintext_pw; /* if Null not available */
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- uint32 unknown_1; /* 0x00ff ffff */
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 hours[MAX_HOURS_LEN];
- uint32 unknown_2; /* 0x0002 0000 */
- uint32 unknown_3; /* 0x0000 04ec */
- } private;
-} SAM_ACCOUNT_HANDLE;
-#endif
-
- return ads_status;
-}
-
-
-/***********************************************
-Initialize SAM_GROUP_ENUM from an ads entry
-************************************************/
-/* not ready :-( */
-static ADS_STATUS ads_entry2sam_group_enum(SAM_ADS_PRIVATES *privates, TALLOC_CTX *mem_ctx, SAM_GROUP_ENUM **group_enum,const void *entry)
-{
- ADS_STATUS ads_status = ADS_STATUS_UNSUCCESSFUL;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SAM_GROUP_ENUM __group_enum;
- SAM_GROUP_ENUM *_group_enum = &__group_enum;
-
- SAM_ASSERT(privates && ads_struct && mem_ctx && group_enum && entry);
-
- *group_enum = _group_enum;
-
- DEBUG(3,("sam_ads: ads_entry2sam_account_handle\n"));
-
- if (!ads_pull_sid(ads_struct, &entry, "objectSid", &(_group_enum->sid))) {
- DEBUG(0,("No sid for!?\n"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- if (!(_group_enum->group_name = ads_pull_string(ads_struct, mem_ctx, &entry, "sAMAccountName"))) {
- DEBUG(0,("No groupname found"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- if (!(_group_enum->group_desc = ads_pull_string(ads_struct, mem_ctx, &entry, "desciption"))) {
- DEBUG(0,("No description found"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- DEBUG(0,("sAMAccountName: %s\ndescription: %s\nobjectSid: %s\n",
- _group_enum->group_name,
- _group_enum->group_desc,
- sid_string_static(&(_group_enum->sid))
- ));
-
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_access_check(SAM_ADS_PRIVATES *privates, const SEC_DESC *sd, const NT_USER_TOKEN *access_token, uint32 access_desired, uint32 *acc_granted)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_ACCESS_DENIED);
- NTSTATUS nt_status;
- uint32 my_acc_granted;
-
- SAM_ASSERT(privates && sd && access_token);
- /* acc_granted can be set to NULL */
-
- /* the steps you need are:
- 1. get_sec_desc for sid
- 2. se_map_generic(accessdesired, generic_mapping)
- 3. se_access_check() */
-
- if (!se_access_check(sd, access_token, access_desired, (acc_granted)?acc_granted:&my_acc_granted, &nt_status)) {
- DEBUG(3,("sam_ads_access_check: ACCESS DENIED\n"));
- ads_status = ADS_ERROR_NT(nt_status);
- return ads_status;
- }
- ads_status = ADS_ERROR_NT(nt_status);
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_get_tree_sec_desc(SAM_ADS_PRIVATES *privates, const char *subtree, SEC_DESC **sd)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- char *search_path;
- void *sec_desc_res;
- void *sec_desc_msg;
- const char *sec_desc_attrs[] = {"nTSecurityDescriptor",NULL};
-
- SAM_ASSERT(privates && ads_struct && mem_ctx && sd);
- *sd = NULL;
-
- if (subtree) {
- asprintf(&search_path, "%s%s",subtree,ads_struct->config.bind_path);
- } else {
- asprintf(&search_path, "%s","");
- }
- ads_status = sam_ads_do_search(privates, search_path, LDAP_SCOPE_BASE, "(objectClass=*)", sec_desc_attrs, &sec_desc_res);
- SAFE_FREE(search_path);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if ((sec_desc_msg = ads_first_entry(ads_struct, sec_desc_res))==NULL) {
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- return ads_status;
- }
-
- if (!ads_pull_sd(ads_struct, mem_ctx, sec_desc_msg, sec_desc_attrs[0], sd)) {
- *sd = NULL;
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- return ads_status;
- }
-
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_account_policy_get(SAM_ADS_PRIVATES *privates, int field, uint32 *value)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- ADS_STRUCT *ads_struct = privates->ads_struct;
- void *ap_res;
- void *ap_msg;
- const char *ap_attrs[] = {"minPwdLength",/* AP_MIN_PASSWORD_LEN */
- "pwdHistoryLength",/* AP_PASSWORD_HISTORY */
- "AP_USER_MUST_LOGON_TO_CHG_PASS",/* AP_USER_MUST_LOGON_TO_CHG_PASS */
- "maxPwdAge",/* AP_MAX_PASSWORD_AGE */
- "minPwdAge",/* AP_MIN_PASSWORD_AGE */
- "lockoutDuration",/* AP_LOCK_ACCOUNT_DURATION */
- "AP_RESET_COUNT_TIME",/* AP_RESET_COUNT_TIME */
- "AP_BAD_ATTEMPT_LOCKOUT",/* AP_BAD_ATTEMPT_LOCKOUT */
- "AP_TIME_TO_LOGOUT",/* AP_TIME_TO_LOGOUT */
- NULL};
- /*lockOutObservationWindow
- lockoutThreshold $ pwdProperties*/
- static uint32 ap[9];
- static uint32 ap_usn = 0;
- uint32 tmp_usn = 0;
-
- SAM_ASSERT(privates && ads_struct && value);
-
- FIXME("We need to decode all account_policy attributes!\n");
-
- ads_status = sam_ads_usn_is_valid(privates,ap_usn,&tmp_usn);
- if (!ADS_ERR_OK(ads_status)) {
- ads_status = sam_ads_do_search(privates, ads_struct->config.bind_path, LDAP_SCOPE_BASE, "(objectClass=*)", ap_attrs, &ap_res);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if (ads_count_replies(ads_struct, ap_res) != 1) {
- ads_msgfree(ads_struct, ap_res);
- return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
- }
-
- if (!(ap_msg = ads_first_entry(ads_struct, ap_res))) {
- ads_msgfree(ads_struct, ap_res);
- return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
- }
-
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[0], &ap[0])) {
- /* AP_MIN_PASSWORD_LEN */
- ap[0] = MINPASSWDLENGTH;/* 5 chars minimum */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[1], &ap[1])) {
- /* AP_PASSWORD_HISTORY */
- ap[1] = 0;/* don't keep any old password */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[2], &ap[2])) {
- /* AP_USER_MUST_LOGON_TO_CHG_PASS */
- ap[2] = 0;/* don't force user to logon */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[3], &ap[3])) {
- /* AP_MAX_PASSWORD_AGE */
- ap[3] = MAX_PASSWORD_AGE;/* 21 days */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[4], &ap[4])) {
- /* AP_MIN_PASSWORD_AGE */
- ap[4] = 0;/* 0 days */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[5], &ap[5])) {
- /* AP_LOCK_ACCOUNT_DURATION */
- ap[5] = 0;/* lockout for 0 minutes */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[6], &ap[6])) {
- /* AP_RESET_COUNT_TIME */
- ap[6] = 0;/* reset immediatly */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[7], &ap[7])) {
- /* AP_BAD_ATTEMPT_LOCKOUT */
- ap[7] = 0;/* don't lockout */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[8], &ap[8])) {
- /* AP_TIME_TO_LOGOUT */
- ap[8] = -1;/* don't force logout */
- }
-
- ads_msgfree(ads_struct, ap_res);
- ap_usn = tmp_usn;
- }
-
- switch(field) {
- case AP_MIN_PASSWORD_LEN:
- *value = ap[0];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_PASSWORD_HISTORY:
- *value = ap[1];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_USER_MUST_LOGON_TO_CHG_PASS:
- *value = ap[2];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_MAX_PASSWORD_AGE:
- *value = ap[3];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_MIN_PASSWORD_AGE:
- *value = ap[4];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_LOCK_ACCOUNT_DURATION:
- *value = ap[5];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_RESET_COUNT_TIME:
- *value = ap[6];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_BAD_ATTEMPT_LOCKOUT:
- *value = ap[7];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_TIME_TO_LOGOUT:
- *value = ap[8];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- default: *value = 0; break;
- }
-
- return ads_status;
-}
-
-
-/**********************************
-Now the functions off the SAM API
-***********************************/
-
-/* General API */
-static NTSTATUS sam_ads_get_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const DOM_SID *sid, SEC_DESC **sd)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx;
- char *sidstr,*filter;
- void *sec_desc_res;
- void *sec_desc_msg;
- const char *sec_desc_attrs[] = {"nTSecurityDescriptor",NULL};
- fstring sid_str;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && sid && sd);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
-
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- sidstr = sid_binstring(sid);
- if (asprintf(&filter, "(objectSid=%s)", sidstr) == -1) {
- SAFE_FREE(sidstr);
- return NT_STATUS_NO_MEMORY;
- }
-
- SAFE_FREE(sidstr);
-
- ads_status = sam_ads_do_search(privates,ads_struct->config.bind_path,
- LDAP_SCOPE_SUBTREE, filter, sec_desc_attrs,
- &sec_desc_res);
- SAFE_FREE(filter);
-
- if (!ADS_ERR_OK(ads_status)) {
- return ads_ntstatus(ads_status);
- }
-
- if (!(mem_ctx = talloc_init("sec_desc parse in sam_ads"))) {
- DEBUG(1, ("talloc_init() failed for sec_desc parse context in sam_ads"));
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_NO_MEMORY;
- }
-
- if (ads_count_replies(ads_struct, sec_desc_res) != 1) {
- DEBUG(1,("sam_ads_get_sec_desc: duplicate or 0 results for sid %s\n",
- sid_to_string(sid_str, sid)));
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!(sec_desc_msg = ads_first_entry(ads_struct, sec_desc_res))) {
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!ads_pull_sd(ads_struct, mem_ctx, sec_desc_msg, sec_desc_attrs[0], sd)) {
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return ads_ntstatus(ads_status);
- }
-
- /* now, were we allowed to see the SD we just got? */
-
- ads_msgfree(ads_struct, sec_desc_res);
- talloc_destroy(mem_ctx);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_set_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const DOM_SID *sid, const SEC_DESC *sd)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-
-static NTSTATUS sam_ads_lookup_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name,
- enum SID_NAME_USE *type)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && mem_ctx && sid && name && type);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- return ads_sid_to_name(ads_struct, mem_ctx, sid, name, type);
-}
-
-static NTSTATUS sam_ads_lookup_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const char *name, DOM_SID *sid, enum SID_NAME_USE *type)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && name && sid && type);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- return ads_name_to_sid(ads_struct, name, sid, type);
-}
-
-
-/* Domain API */
-
-static NTSTATUS sam_ads_update_domain(const SAM_METHODS *sam_method, const SAM_DOMAIN_HANDLE *domain)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_domain_handle(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- TALLOC_CTX *mem_ctx = privates->mem_ctx; /*Fix me is this right??? */
- SAM_DOMAIN_HANDLE *dom_handle = NULL;
- SEC_DESC *sd;
- uint32 acc_granted;
- uint32 tmp_value;
-
- DEBUG(5,("sam_ads_get_domain_handle: %d\n",__LINE__));
-
- SAM_ASSERT(sam_method && access_token && domain);
-
- (*domain) = NULL;
-
- if ((dom_handle = talloc(mem_ctx, sizeof(SAM_DOMAIN_HANDLE))) == NULL) {
- DEBUG(0,("failed to talloc dom_handle\n"));
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- return ads_ntstatus(ads_status);
- }
-
- ZERO_STRUCTP(dom_handle);
-
- dom_handle->mem_ctx = mem_ctx; /*Fix me is this right??? */
- dom_handle->free_fn = NULL;
- dom_handle->current_sam_methods = sam_method;
-
- /* check if access can be granted as requested */
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- dom_handle->access_granted = acc_granted;
-
- /* fill all the values of dom_handle */
- sid_copy(&dom_handle->private.sid, &sam_method->domain_sid);
- dom_handle->private.name = smb_xstrdup(sam_method->domain_name);
- dom_handle->private.servername = "WHOKNOWS"; /* what is the servername */
-
- /*Fix me: sam_ads_account_policy_get() return ADS_STATUS! */
- ads_status = sam_ads_account_policy_get(privates, AP_MAX_PASSWORD_AGE, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for max password age. Useing default\n"));
- tmp_value = MAX_PASSWORD_AGE;
- }
- unix_to_nt_time_abs(&dom_handle->private.max_passwordage,tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_MIN_PASSWORD_AGE, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for min password age. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.min_passwordage, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_LOCK_ACCOUNT_DURATION, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for lockout duration. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.lockout_duration, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_RESET_COUNT_TIME, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for time till locout count is reset. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.reset_count, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_MIN_PASSWORD_LEN, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for min password length. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.min_passwordlength = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_PASSWORD_HISTORY, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed password history. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.password_history = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_BAD_ATTEMPT_LOCKOUT, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for bad attempts till lockout. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.lockout_count = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_TIME_TO_LOGOUT, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for force logout. Useing default\n"));
- tmp_value = -1;
- }
-
- ads_status = sam_ads_account_policy_get(privates, AP_USER_MUST_LOGON_TO_CHG_PASS, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for user must login to change password. Useing default\n"));
- tmp_value = 0;
- }
-
- /* should the real values of num_accounts, num_groups and num_aliases be retreved?
- * I think it is to expensive to bother
- */
- dom_handle->private.num_accounts = 3;
- dom_handle->private.num_groups = 4;
- dom_handle->private.num_aliases = 5;
-
- *domain = dom_handle;
-
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- return ads_ntstatus(ads_status);
-}
-
-/* Account API */
-static NTSTATUS sam_ads_create_account(const SAM_METHODS *sam_method,
- const NT_USER_TOKEN *access_token, uint32 access_desired,
- const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && access_token && account_name && account);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_SUBTREE_USERS, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_ERROR(LDAP_NO_MEMORY);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- ADS_MODLIST mods;
- uint16 acct_ctrl;
- char *new_dn;
- SEC_DESC *sd;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && account);
-
- ads_status = ADS_ERROR_NT(sam_get_account_acct_ctrl(account,&acct_ctrl));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if ((acct_ctrl & ACB_WSTRUST)||(acct_ctrl & ACB_SVRTRUST)) {
- /* Computer account */
- char *name,*controlstr;
- char *hostname,*host_upn,*host_spn;
- const char *objectClass[] = {"top", "person", "organizationalPerson",
- "user", "computer", NULL};
-
- ads_status = ADS_ERROR_NT(sam_get_account_name(account,&name));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if (!(host_upn = talloc_asprintf(mem_ctx, "%s@%s", name, ads_struct->config.realm))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(new_dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Computers,%s", hostname,
- ads_struct->config.bind_path))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(controlstr = talloc_asprintf(mem_ctx, "%u", ads_acb2uf(acct_ctrl)))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(mods = ads_init_mods(mem_ctx))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- ads_status = ads_mod_str(mem_ctx, &mods, "cn", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_strlist(mem_ctx, &mods, "objectClass", objectClass);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userPrincipalName", host_upn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "displayName", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "sAMAccountName", name);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- ads_status = ads_mod_str(mem_ctx, &mods, "servicePrincipalName", host_spn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "dNSHostName", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- /* ads_status = ads_mod_str(mem_ctx, &mods, "operatingSystem", "Samba");
- if (!ADS_ERR_OK(ads_status))
- goto done;
- *//* ads_status = ads_mod_str(mem_ctx, &mods, "operatingSystemVersion", VERSION);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- */
- /* End Computer account */
- } else {
- /* User account*/
- char *upn, *controlstr;
- char *name, *fullname;
- const char *objectClass[] = {"top", "person", "organizationalPerson",
- "user", NULL};
-
- ads_status = ADS_ERROR_NT(sam_get_account_name(account,&name));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- ads_status = ADS_ERROR_NT(sam_get_account_fullname(account,&fullname));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if (!(upn = talloc_asprintf(mem_ctx, "%s@%s", name, ads_struct->config.realm))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(new_dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Users,%s", fullname,
- ads_struct->config.bind_path))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(controlstr = talloc_asprintf(mem_ctx, "%u", ads_acb2uf(acct_ctrl)))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(mods = ads_init_mods(mem_ctx))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- ads_status = ads_mod_str(mem_ctx, &mods, "cn", fullname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_strlist(mem_ctx, &mods, "objectClass", objectClass);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userPrincipalName", upn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "displayName", fullname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "sAMAccountName", name);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- }/* End User account */
-
- /* Finally at the account */
- ads_status = ads_gen_add(ads_struct, new_dn, mods);
-
-done:
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_update_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
-
-
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_accounts(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-#if 0
-static NTSTATUS sam_ads_get_account_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *account_sid, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && ads_struct && access_token && account_sid && account);
-
- ads_status = ADS_ERROR_NT(sam_ads_get_sec_desc(sam_method, access_token, account_sid, &my_sd));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-#else
-static NTSTATUS sam_ads_get_account_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *account_sid, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-#endif
-
-#if 0
-static NTSTATUS sam_ads_get_account_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *account_name, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && ads_struct && access_token && account_name && account);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-#else
-static NTSTATUS sam_ads_get_account_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *account_name, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-#endif
-
-/* Group API */
-static NTSTATUS sam_ads_create_group(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_update_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_groups(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- void *res = NULL;
- void *msg = NULL;
- char *filter = NULL;
- int i = 0;
-
- /* get only these LDAP attributes, witch we really need for a group */
- const char *group_enum_attrs[] = {"objectSid",
- "description",
- "sAMAcountName",
- NULL};
-
- SAM_ASSERT(sam_method && access_token && groups_count && groups);
-
- *groups_count = 0;
-
- DEBUG(3,("ads: enum_dom_groups\n"));
-
- FIXME("get only group from the wanted Type!\n");
- asprintf(&filter, "(&(objectClass=group)(groupType=%s))", "*");
- ads_status = sam_ads_do_search(privates, ads_struct->config.bind_path, LDAP_SCOPE_SUBTREE, filter, group_enum_attrs, &res);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(1,("enum_groups ads_search: %s\n", ads_errstr(ads_status)));
- }
-
- *groups_count = ads_count_replies(ads_struct, res);
- if (*groups_count == 0) {
- DEBUG(1,("enum_groups: No groups found\n"));
- }
-
- (*groups) = talloc_zero(mem_ctx, (*groups_count) * sizeof(**groups));
- if (!*groups) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- }
-
- for (msg = ads_first_entry(ads_struct, res); msg; msg = ads_next_entry(ads_struct, msg)) {
- uint32 grouptype;
-
- if (!ads_pull_uint32(ads_struct, msg, "groupType", &grouptype)) {
- ;
- } else {
- (*groups)->group_ctrl = ads_gtype2gcb(grouptype);
- }
-
- if (!((*groups)->group_name = ads_pull_string(ads_struct, mem_ctx, msg, "sAMAccountName"))) {
- ;
- }
-
- if (!((*groups)->group_desc = ads_pull_string(ads_struct, mem_ctx, msg, "description"))) {
- ;
- }
-
- if (!ads_pull_sid(ads_struct, msg, "objectSid", &((*groups)->sid))) {
- DEBUG(1,("No sid for group %s !?\n", (*groups)->group_name));
- continue;
- }
-
- i++;
- }
-
- (*groups_count) = i;
-
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
-
- DEBUG(3,("ads enum_dom_groups gave %d entries\n", (*groups_count)));
-
- if (res) ads_msgfree(ads_struct, res);
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_group_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_group_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_member_to_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_member_from_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_groupmembers(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_groups_of_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-/**********************************
-Free our private data
-***********************************/
-static void sam_ads_free_private_data(void **vp)
-{
- SAM_ADS_PRIVATES **sam_ads_state = (SAM_ADS_PRIVATES **)vp;
-
- if ((*sam_ads_state)->ads_struct->ld) {
- ldap_unbind((*sam_ads_state)->ads_struct->ld);
- }
-
- ads_destroy(&((*sam_ads_state)->ads_struct));
-
- talloc_destroy((*sam_ads_state)->mem_ctx);
- FIXME("maybe we must free some other stuff here\n");
-
- *sam_ads_state = NULL;
-}
-
-
-
-/*****************************************************
-Init the ADS SAM backend
-******************************************************/
-NTSTATUS sam_init_ads(SAM_METHODS *sam_method, const char *module_params)
-{
- ADS_STATUS ads_status;
- SAM_ADS_PRIVATES *sam_ads_state;
- TALLOC_CTX *mem_ctx;
-
- SAM_ASSERT(sam_method && sam_method->parent);
-
- mem_ctx = sam_method->parent->mem_ctx;
-
- /* Here the SAM API functions of the sam_ads module */
-
- /* General API */
-
- sam_method->sam_get_sec_desc = sam_ads_get_sec_desc;
- sam_method->sam_set_sec_desc = sam_ads_set_sec_desc;
-
- sam_method->sam_lookup_sid = sam_ads_lookup_sid;
- sam_method->sam_lookup_name = sam_ads_lookup_name;
-
- /* Domain API */
-
- sam_method->sam_update_domain = sam_ads_update_domain;
- sam_method->sam_get_domain_handle = sam_ads_get_domain_handle;
-
- /* Account API */
-
- sam_method->sam_create_account = sam_ads_create_account;
- sam_method->sam_add_account = sam_ads_add_account;
- sam_method->sam_update_account = sam_ads_update_account;
- sam_method->sam_delete_account = sam_ads_delete_account;
- sam_method->sam_enum_accounts = sam_ads_enum_accounts;
-
- sam_method->sam_get_account_by_sid = sam_ads_get_account_by_sid;
- sam_method->sam_get_account_by_name = sam_ads_get_account_by_name;
-
- /* Group API */
-
- sam_method->sam_create_group = sam_ads_create_group;
- sam_method->sam_add_group = sam_ads_add_group;
- sam_method->sam_update_group = sam_ads_update_group;
- sam_method->sam_delete_group = sam_ads_delete_group;
- sam_method->sam_enum_groups = sam_ads_enum_groups;
- sam_method->sam_get_group_by_sid = sam_ads_get_group_by_sid;
- sam_method->sam_get_group_by_name = sam_ads_get_group_by_name;
-
- sam_method->sam_add_member_to_group = sam_ads_add_member_to_group;
- sam_method->sam_delete_member_from_group = sam_ads_delete_member_from_group;
- sam_method->sam_enum_groupmembers = sam_ads_enum_groupmembers;
-
- sam_method->sam_get_groups_of_sid = sam_ads_get_groups_of_sid;
-
- sam_ads_state = talloc_zero(mem_ctx, sizeof(SAM_ADS_PRIVATES));
- if (!sam_ads_state) {
- DEBUG(0, ("talloc() failed for sam_ads private_data!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!(sam_ads_state->mem_ctx = talloc_init("sam_ads_method"))) {
- DEBUG(0, ("talloc_init() failed for sam_ads_state->mem_ctx\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- sam_ads_state->ads_bind_dn = talloc_strdup(sam_ads_state->mem_ctx, lp_parm_string(NULL,"sam_ads","bind as"));
- sam_ads_state->ads_bind_pw = talloc_strdup(sam_ads_state->mem_ctx, lp_parm_string(NULL,"sam_ads","bind pw"));
-
- sam_ads_state->bind_plaintext = strequal(lp_parm_string(NULL, "sam_ads", "plaintext bind"), "yes");
-
- if (!sam_ads_state->ads_bind_dn || !sam_ads_state->ads_bind_pw) {
- DEBUG(0, ("talloc_strdup() failed for bind dn or password\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- /* Maybe we should not check the result here? Server down on startup? */
-
- if (module_params && *module_params) {
- sam_ads_state->ldap_uri = talloc_strdup(sam_ads_state->mem_ctx, module_params);
- if (!sam_ads_state->ldap_uri) {
- DEBUG(0, ("talloc_strdup() failed for bind dn or password\n"));
- return NT_STATUS_NO_MEMORY;
- }
- } else {
- sam_ads_state->ldap_uri = "ldapi://";
- }
-
- ads_status = sam_ads_cached_connection(sam_ads_state);
- if (!ADS_ERR_OK(ads_status)) {
- return ads_ntstatus(ads_status);
- }
-
- sam_method->private_data = sam_ads_state;
- sam_method->free_private_data = sam_ads_free_private_data;
-
- sam_ads_debug_level = debug_add_class("sam_ads");
- if (sam_ads_debug_level == -1) {
- sam_ads_debug_level = DBGC_ALL;
- DEBUG(0, ("sam_ads: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_ads: Debug class number of 'sam_ads': %d\n", sam_ads_debug_level));
-
- DEBUG(5, ("Initializing sam_ads\n"));
- if (module_params)
- DEBUG(10, ("Module Parameters for Domain %s[%s]: %s\n", sam_method->domain_name, sam_method->domain_name, module_params));
- return NT_STATUS_OK;
-}
-
-#else /* HAVE_LDAP */
-void sam_ads_dummy(void)
-{
- DEBUG(0,("sam_ads: not supported!\n"));
-}
-#endif /* HAVE_LDAP */
diff --git a/source3/sam/sam_skel.c b/source3/sam/sam_skel.c
deleted file mode 100644
index b4d64bb6da..0000000000
--- a/source3/sam/sam_skel.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- this is a skeleton for SAM backend modules.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Andrew Bartlett 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static int sam_skel_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_skel_debug_level
-
-/* define the version of the SAM interface */
-SAM_MODULE_VERSIONING_MAGIC
-
-/* General API */
-
-static NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID *sid, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Domain API */
-
-static NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Account API */
-
-static NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Group API */
-
-static NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_init_skel(SAM_METHODS *sam_methods, const char *module_params)
-{
- /* Functions your SAM module doesn't provide should be set
- * to NULL */
-
- sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
- sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
-
- sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
- sam_methods->sam_lookup_name = sam_skel_lookup_name;
-
- /* Domain API */
-
- sam_methods->sam_update_domain = sam_skel_update_domain;
- sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
-
- /* Account API */
-
- sam_methods->sam_create_account = sam_skel_create_account;
- sam_methods->sam_add_account = sam_skel_add_account;
- sam_methods->sam_update_account = sam_skel_update_account;
- sam_methods->sam_delete_account = sam_skel_delete_account;
- sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
-
- sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
- sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
-
- /* Group API */
-
- sam_methods->sam_create_group = sam_skel_create_group;
- sam_methods->sam_add_group = sam_skel_add_group;
- sam_methods->sam_update_group = sam_skel_update_group;
- sam_methods->sam_delete_group = sam_skel_delete_group;
- sam_methods->sam_enum_groups = sam_skel_enum_groups;
- sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
- sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
-
- sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
- sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
- sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
-
- sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
-
- sam_methods->free_private_data = NULL;
-
-
- sam_skel_debug_level = debug_add_class("sam_skel");
- if (sam_skel_debug_level == -1) {
- sam_skel_debug_level = DBGC_SAM;
- DEBUG(0, ("sam_skel: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
-
- if(module_params)
- DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
- else
- DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
-
- return NT_STATUS_OK;
-}
diff --git a/source3/script/find_missing_doc.pl b/source3/script/find_missing_doc.pl
index b27a405e4d..b582446569 100755
--- a/source3/script/find_missing_doc.pl
+++ b/source3/script/find_missing_doc.pl
@@ -30,7 +30,7 @@ close(IN);
open(IN,$topdir.$doc_file) || die("Can't open $topdir$doc_file");
while(<IN>) {
- if( /<term><anchor id="([^"]*)"\/>([^<]*?)([ ]*)\(.\)([ ]*)<\/term>/g ) {
+ if( /<term><anchor id="([^"]*)">([^<]*?)([ ]*)\(.\)([ ]*)<\/term>/g ) {
$key = $1;
$value = $2;
$doc{$value} = $key;
diff --git a/source3/script/genstruct.pl b/source3/script/genstruct.pl
deleted file mode 100755
index a6abd718c9..0000000000
--- a/source3/script/genstruct.pl
+++ /dev/null
@@ -1,299 +0,0 @@
-#!/usr/bin/perl -w
-# a simple system for generating C parse info
-# this can be used to write generic C structer load/save routines
-# Copyright 2002 Andrew Tridgell <genstruct@tridgell.net>
-# released under the GNU General Public License v2 or later
-
-use strict;
-
-my(%enum_done) = ();
-my(%struct_done) = ();
-
-###################################################
-# general handler
-sub handle_general($$$$$$$$)
-{
- my($name) = shift;
- my($ptr_count) = shift;
- my($size) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($dump_fn) = shift;
- my($parse_fn) = shift;
- my($tflags) = shift;
- my($array_len) = 0;
- my($dynamic_len) = "NULL";
-
- # handle arrays, currently treat multidimensional arrays as 1 dimensional
- while ($element =~ /(.*)\[(.*?)\]$/) {
- $element = $1;
- if ($array_len == 0) {
- $array_len = $2;
- } else {
- $array_len = "$2 * $array_len";
- }
- }
-
- if ($flags =~ /_LEN\((\w*?)\)/) {
- $dynamic_len = "\"$1\"";
- }
-
- if ($flags =~ /_NULLTERM/) {
- $tflags = "FLAG_NULLTERM";
- }
-
- print OFILE "{\"$element\", $ptr_count, $size, offsetof(struct $name, $element), $array_len, $dynamic_len, $tflags, $dump_fn, $parse_fn},\n";
-}
-
-
-####################################################
-# parse one element
-sub parse_one($$$$)
-{
- my($name) = shift;
- my($type) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($ptr_count) = 0;
- my($size) = "sizeof($type)";
- my($tflags) = "0";
-
- # enums get the FLAG_ALWAYS flag
- if ($type =~ /^enum /) {
- $tflags = "FLAG_ALWAYS";
- }
-
-
- # make the pointer part of the base type
- while ($element =~ /^\*(.*)/) {
- $ptr_count++;
- $element = $1;
- }
-
- # convert spaces to _
- $type =~ s/ /_/g;
-
- my($dump_fn) = "gen_dump_$type";
- my($parse_fn) = "gen_parse_$type";
-
- handle_general($name, $ptr_count, $size, $element, $flags, $dump_fn, $parse_fn, $tflags);
-}
-
-####################################################
-# parse one element
-sub parse_element($$$)
-{
- my($name) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($type);
- my($data);
-
- # pull the base type
- if ($element =~ /^struct (\S*) (.*)/) {
- $type = "struct $1";
- $data = $2;
- } elsif ($element =~ /^enum (\S*) (.*)/) {
- $type = "enum $1";
- $data = $2;
- } elsif ($element =~ /^unsigned (\S*) (.*)/) {
- $type = "unsigned $1";
- $data = $2;
- } elsif ($element =~ /^(\S*) (.*)/) {
- $type = $1;
- $data = $2;
- } else {
- die "Can't parse element '$element'";
- }
-
- # handle comma separated lists
- while ($data =~ /(\S*),[\s]?(.*)/) {
- parse_one($name, $type, $1, $flags);
- $data = $2;
- }
- parse_one($name, $type, $data, $flags);
-}
-
-
-my($first_struct) = 1;
-
-####################################################
-# parse the elements of one structure
-sub parse_elements($$)
-{
- my($name) = shift;
- my($elements) = shift;
-
- if ($first_struct) {
- $first_struct = 0;
- print "Parsing structs: $name";
- } else {
- print ", $name";
- }
-
- print OFILE "int gen_dump_struct_$name(TALLOC_CTX *mem_ctx, struct parse_string *, const char *, unsigned);\n";
- print OFILE "int gen_parse_struct_$name(TALLOC_CTX *mem_ctx, char *, const char *);\n";
-
- print OFILE "static const struct parse_struct pinfo_" . $name . "[] = {\n";
-
-
- while ($elements =~ /^.*?([a-z].*?);\s*?(\S*?)\s*?$(.*)/msi) {
- my($element) = $1;
- my($flags) = $2;
- $elements = $3;
- parse_element($name, $element, $flags);
- }
-
- print OFILE "{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};\n";
-
- print OFILE "
-int gen_dump_struct_$name(TALLOC_CTX *mem_ctx, struct parse_string *p, const char *ptr, unsigned indent) {
- return gen_dump_struct(mem_ctx, pinfo_$name, p, ptr, indent);
-}
-int gen_parse_struct_$name(TALLOC_CTX *mem_ctx, char *ptr, const char *str) {
- return gen_parse_struct(mem_ctx, pinfo_$name, ptr, str);
-}
-
-";
-}
-
-my($first_enum) = 1;
-
-####################################################
-# parse out the enum declarations
-sub parse_enum_elements($$)
-{
- my($name) = shift;
- my($elements) = shift;
-
- if ($first_enum) {
- $first_enum = 0;
- print "Parsing enums: $name";
- } else {
- print ", $name";
- }
-
- print OFILE "static const struct enum_struct einfo_" . $name . "[] = {\n";
-
- my(@enums) = split(/,/s, $elements);
- for (my($i)=0; $i <= $#{@enums}; $i++) {
- my($enum) = $enums[$i];
- if ($enum =~ /\s*(\w*)/) {
- my($e) = $1;
- print OFILE "{\"$e\", $e},\n";
- }
- }
-
- print OFILE "{NULL, 0}};\n";
-
- print OFILE "
-int gen_dump_enum_$name(struct parse_string *p, const char *ptr, unsigned indent) {
- return gen_dump_enum(einfo_$name, p, ptr, indent);
-}
-
-int gen_parse_enum_$name(char *ptr, const char *str) {
- return gen_parse_enum(einfo_$name, ptr, str);
-}
-
-";
-}
-
-####################################################
-# parse out the enum declarations
-sub parse_enums($)
-{
- my($data) = shift;
-
- while ($data =~ /^GENSTRUCT\s+enum\s+(\w*?)\s*{(.*?)}\s*;(.*)/ms) {
- my($name) = $1;
- my($elements) = $2;
- $data = $3;
-
- if (!defined($enum_done{$name})) {
- $enum_done{$name} = 1;
- parse_enum_elements($name, $elements);
- }
- }
-
- if (! $first_enum) {
- print "\n";
- }
-}
-
-####################################################
-# parse all the structures
-sub parse_structs($)
-{
- my($data) = shift;
-
- # parse into structures
- while ($data =~ /^GENSTRUCT\s+struct\s+(\w+?)\s*{\s*(.*?)\s*}\s*;(.*)/ms) {
- my($name) = $1;
- my($elements) = $2;
- $data = $3;
- if (!defined($struct_done{$name})) {
- $struct_done{$name} = 1;
- parse_elements($name, $elements);
- }
- }
-
- if (! $first_struct) {
- print "\n";
- } else {
- print "No GENSTRUCT structures found?\n";
- }
-}
-
-
-####################################################
-# parse a header file, generating a dumper structure
-sub parse_data($)
-{
- my($data) = shift;
-
- # collapse spaces
- $data =~ s/[\t ]+/ /sg;
- $data =~ s/\s*\n\s+/\n/sg;
- # strip debug lines
- $data =~ s/^\#.*?\n//smg;
-
- parse_enums($data);
- parse_structs($data);
-}
-
-
-#########################################
-# display help text
-sub ShowHelp()
-{
- print "
-generator for C structure dumpers
-Copyright Andrew Tridgell <genstruct\@tridgell.net>
-
-Sample usage:
- genstruct -o output.h gcc -E -O2 -g test.h
-
-Options:
- --help this help page
- -o OUTPUT place output in OUTPUT
-";
- exit(0);
-}
-
-########################################
-# main program
-if ($ARGV[0] ne "-o" || $#ARGV < 2) {
- ShowHelp();
-}
-
-shift;
-my($opt_ofile)=shift;
-
-print "creating $opt_ofile\n";
-
-open(OFILE, ">$opt_ofile") || die "can't open $opt_ofile";
-
-print OFILE "/* This is an automatically generated file - DO NOT EDIT! */\n\n";
-
-parse_data(`@ARGV -DGENSTRUCT=GENSTRUCT`);
-exit(0);
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index 6cf56fd373..3f29ac892c 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -627,8 +627,8 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype, pstring fname
see masktest for a demo
*/
if ((strcmp(mask,"*.*") == 0) ||
- mask_match(filename,mask,False) ||
- mangle_mask_match(conn,filename,mask)) {
+ mask_match(filename,mask,False) ||
+ mangle_mask_match(conn,filename,mask)) {
if (isrootdir && (strequal(filename,"..") || strequal(filename,".")))
continue;
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index 85e28f5d17..c8bb0c2505 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -138,9 +138,9 @@ void send_trans_reply(char *outbuf,
set_message(outbuf,10,1+this_ldata+this_lparam+align,False);
copy_trans_params_and_data(outbuf, align,
- rparam, tot_param_sent, this_lparam,
- rdata, tot_data_sent, this_ldata);
-
+ rparam, tot_param_sent, this_lparam,
+ rdata, tot_data_sent, this_ldata);
+
SSVAL(outbuf,smb_vwv3,this_lparam);
SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf)+1,outbuf));
SSVAL(outbuf,smb_vwv5,tot_param_sent);
@@ -410,7 +410,7 @@ int reply_trans(connection_struct *conn, char *inbuf,char *outbuf, int size, int
}
if (suwcnt) {
- unsigned int i;
+ int i;
if((setup = (uint16 *)malloc(suwcnt*sizeof(uint16))) == NULL) {
DEBUG(0,("reply_trans: setup malloc fail for %u bytes !\n", (unsigned int)(suwcnt * sizeof(uint16))));
SAFE_FREE(data);
diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c
index db0694a840..c8f023514e 100644
--- a/source3/smbd/negprot.c
+++ b/source3/smbd/negprot.c
@@ -167,7 +167,7 @@ static int reply_lanman2(char *inbuf, char *outbuf)
static int negprot_spnego(char *p)
{
DATA_BLOB blob;
- uint8 guid[17];
+ uint8 guid[16];
const char *OIDs_krb5[] = {OID_KERBEROS5,
OID_KERBEROS5_OLD,
OID_NTLMSSP,
@@ -178,8 +178,8 @@ static int negprot_spnego(char *p)
global_spnego_negotiated = True;
- ZERO_STRUCT(guid);
- safe_strcpy((char *)guid, global_myname(), sizeof(guid)-1);
+ memset(guid, 0, 16);
+ safe_strcpy((char *)guid, global_myname(), 16);
strlower((char *)guid);
#if 0
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 138870453d..ff1c0e5a52 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -87,8 +87,8 @@ int reply_special(char *inbuf,char *outbuf)
name2[15] = 0;
}
- set_local_machine_name(name1, True);
- set_remote_machine_name(name2, True);
+ set_local_machine_name(name1);
+ set_remote_machine_name(name2);
DEBUG(2,("netbios connect: local=%s remote=%s\n",
get_local_machine_name(), get_remote_machine_name() ));
@@ -148,7 +148,7 @@ int reply_tcon(connection_struct *conn,
const char *service;
pstring service_buf;
pstring password;
- fstring dev;
+ pstring dev;
int outsize = 0;
uint16 vuid = SVAL(inbuf,smb_uid);
int pwlen=0;
@@ -161,7 +161,7 @@ int reply_tcon(connection_struct *conn,
*service_buf = *password = *dev = 0;
p = smb_buf(inbuf)+1;
- p += srvstr_pull_buf(inbuf, service_buf, p, sizeof(service_buf), STR_TERMINATE) + 1;
+ p += srvstr_pull_buf(inbuf, service_buf, p, sizeof(service), STR_TERMINATE) + 1;
pwlen = srvstr_pull_buf(inbuf, password, p, sizeof(password), STR_TERMINATE) + 1;
p += pwlen;
p += srvstr_pull_buf(inbuf, dev, p, sizeof(dev), STR_TERMINATE) + 1;
@@ -204,7 +204,7 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt
{
fstring service;
DATA_BLOB password;
- fstring devicename;
+ pstring devicename;
NTSTATUS nt_status;
uint16 vuid = SVAL(inbuf,smb_uid);
int passlen = SVAL(inbuf,smb_vwv3);
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index aff402df66..f8bfe90ea9 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -398,7 +398,7 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_
/* this is needed so that we get decent entries
in smbstatus for port 445 connects */
- set_remote_machine_name(get_socket_addr(smbd_server_fd()), False);
+ set_remote_machine_name(get_socket_addr(smbd_server_fd()));
/* Reset global variables in util.c so
that client substitutions will be
@@ -411,9 +411,6 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_
return False;
}
- /* Load DSO's */
- init_modules();
-
return True;
}
/* The parent doesn't need this socket */
@@ -706,7 +703,7 @@ static BOOL init_structs(void )
load_case_tables();
- set_remote_machine_name("smbd", False);
+ set_remote_machine_name("smbd");
if (interactive) {
Fork = False;
@@ -894,10 +891,6 @@ static BOOL init_structs(void )
if (!init_change_notify())
exit(1);
- /* Setup privileges database */
- if (!privilege_init())
- exit(1);
-
/* re-initialise the timezone */
TimeInit();
@@ -907,7 +900,6 @@ static BOOL init_structs(void )
smbd_process();
uni_group_cache_shutdown();
- namecache_shutdown();
exit_server("normal exit");
return(0);
}
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index dc471ab87e..1c7e4017b0 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -218,7 +218,7 @@ int find_service(fstring service)
do some basic sainity checks on the share.
This function modifies dev, ecode.
****************************************************************************/
-static NTSTATUS share_sanity_checks(int snum, fstring dev)
+static NTSTATUS share_sanity_checks(int snum, pstring dev)
{
if (!lp_snum_ok(snum) ||
@@ -229,13 +229,13 @@ static NTSTATUS share_sanity_checks(int snum, fstring dev)
/* you can only connect to the IPC$ service as an ipc device */
if (strequal(lp_fstype(snum), "IPC"))
- fstrcpy(dev,"IPC");
+ pstrcpy(dev,"IPC");
if (dev[0] == '?' || !dev[0]) {
if (lp_print_ok(snum)) {
- fstrcpy(dev,"LPT1:");
+ pstrcpy(dev,"LPT1:");
} else {
- fstrcpy(dev,"A:");
+ pstrcpy(dev,"A:");
}
}
@@ -248,7 +248,7 @@ static NTSTATUS share_sanity_checks(int snum, fstring dev)
/* Behave as a printer if we are supposed to */
if (lp_print_ok(snum) && (strcmp(dev, "A:") == 0)) {
- fstrcpy(dev, "LPT1:");
+ pstrcpy(dev, "LPT1:");
}
return NT_STATUS_OK;
@@ -326,7 +326,7 @@ static void set_admin_user(connection_struct *conn, gid_t *groups, size_t n_grou
static connection_struct *make_connection_snum(int snum, user_struct *vuser,
DATA_BLOB password,
- fstring dev, NTSTATUS *status)
+ char *dev, NTSTATUS *status)
{
struct passwd *pass = NULL;
BOOL guest = False;
@@ -747,7 +747,7 @@ connection_struct *make_connection_with_chdir(const char *service_in, DATA_BLOB
****************************************************************************/
connection_struct *make_connection(const char *service_in, DATA_BLOB password,
- fstring dev, uint16 vuid, NTSTATUS *status)
+ char *dev, uint16 vuid, NTSTATUS *status)
{
uid_t euid;
user_struct *vuser = NULL;
diff --git a/source3/smbd/srvstr.c b/source3/smbd/srvstr.c
new file mode 100644
index 0000000000..36fecf5bd2
--- /dev/null
+++ b/source3/smbd/srvstr.c
@@ -0,0 +1,41 @@
+/*
+ Unix SMB/CIFS implementation.
+ server specific string routines
+ Copyright (C) Andrew Tridgell 2001
+
+ 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 2 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+int srvstr_push(void *base_ptr, void *dest, const char *src, int dest_len, int flags)
+{
+ return push_string(base_ptr, dest, src, dest_len, flags);
+}
+
+int srvstr_pull(void *base_ptr, char *dest, const void *src, int dest_len, int src_len,
+ int flags)
+{
+ return pull_string(base_ptr, dest, src, dest_len, src_len, flags);
+}
+
+/* pull a string from the smb_buf part of a packet. In this case the
+ string can either be null terminated or it can be terminated by the
+ end of the smbbuf area
+*/
+int srvstr_pull_buf(void *inbuf, char *dest, const void *src, int dest_len, int flags)
+{
+ return pull_string(inbuf, dest, src, dest_len, smb_bufrem(inbuf, src), flags);
+}
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 4129852f77..5d85cae907 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -1183,25 +1183,25 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
SeekDir(dirptr, current_pos);
dname = ReadDirName(dirptr);
if (dname) {
- /*
- * Remember, mangle_map is called by
- * get_lanman2_dir_entry(), so the resume name
- * could be mangled. Ensure we do the same
- * here.
- */
-
+ /*
+ * Remember, mangle_map is called by
+ * get_lanman2_dir_entry(), so the resume name
+ * could be mangled. Ensure we do the same
+ * here.
+ */
+
/* make sure we get a copy that mangle_map can modify */
pstrcpy(dname_pstring, dname);
mangle_map( dname_pstring, False, True, SNUM(conn));
-
+
if(strcsequal( resume_name, dname_pstring)) {
- SeekDir(dirptr, current_pos+1);
- DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
- break;
- }
+ SeekDir(dirptr, current_pos+1);
+ DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
+ break;
}
}
+ }
/*
* Scan forward from start if not found going backwards.
@@ -1221,15 +1221,15 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
if(dname) {
/* make sure we get a copy that mangle_map can modify */
-
+
pstrcpy(dname_pstring, dname);
mangle_map(dname_pstring, False, True, SNUM(conn));
if(strcsequal( resume_name, dname_pstring)) {
- SeekDir(dirptr, current_pos+1);
- DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
- break;
- }
+ SeekDir(dirptr, current_pos+1);
+ DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
+ break;
+ }
}
} /* end for */
} /* end if current_pos */
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index 3bbe8a737a..533c64b229 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -215,48 +215,54 @@ Proceeding in compatibility mode, new operations (since version #%d) will fallba
BOOL smbd_vfs_init(connection_struct *conn)
{
- const char **vfs_objects;
- char *vfs_module, *vfs_path;
- unsigned int i;
- unsigned int j = 0;
+ char **vfs_objects, *vfsobj, *vfs_module, *vfs_path;
+ int nobj, i;
struct smb_vfs_handle_struct *handle;
/* Normal share - initialise with disk access functions */
vfs_init_default(conn);
- vfs_objects = lp_vfsobj(SNUM(conn));
/* Override VFS functions if 'vfs object' was specified*/
- if (!vfs_objects)
- return True;
-
- for(i=0; i<SMB_VFS_OP_LAST; i++) {
- vfs_opaque_ops[i].op = ((void**)&default_vfs_ops)[i];
- vfs_opaque_ops[i].type = i;
- vfs_opaque_ops[i].layer = SMB_VFS_LAYER_OPAQUE;
- }
-
- vfs_path = lp_vfs_path(SNUM(conn));
-
- for (j=0; vfs_objects[j]; j++) {
- conn->vfs_private = NULL;
- handle = (struct smb_vfs_handle_struct *) smb_xmalloc(sizeof(smb_vfs_handle_struct));
- /* Loadable object file */
- handle->handle = NULL;
- DLIST_ADD(conn->vfs_private, handle);
- vfs_module = NULL;
- if (vfs_path) {
- asprintf(&vfs_module, "%s/%s", vfs_path, vfs_objects[j]);
- } else {
- asprintf(&vfs_module, "%s", vfs_objects[j]);
+ if (*lp_vfsobj(SNUM(conn))) {
+ vfsobj = NULL;
+ for(i=0; i<SMB_VFS_OP_LAST; i++) {
+ vfs_opaque_ops[i].op = ((void**)&default_vfs_ops)[i];
+ vfs_opaque_ops[i].type = i;
+ vfs_opaque_ops[i].layer = SMB_VFS_LAYER_OPAQUE;
}
- if (!vfs_init_custom(conn, vfs_module)) {
- DEBUG(0, ("smbd_vfs_init: vfs_init_custom failed for %s\n", vfs_module));
- SAFE_FREE(vfs_module);
- DLIST_REMOVE(conn->vfs_private, handle);
- SAFE_FREE(handle);
- return False;
+ if (string_set(&vfsobj, lp_vfsobj(SNUM(conn)))) {
+ /* Parse passed modules specification to array of modules */
+ set_first_token(vfsobj);
+ /* We are using default separators: ' \t\r\n' */
+ vfs_objects = toktocliplist(&nobj, NULL);
+ if (vfs_objects) {
+ vfs_path = lp_vfs_path(SNUM(conn));
+ conn->vfs_private = NULL;
+ for(i=nobj-1; i>=0; i--) {
+ handle = (struct smb_vfs_handle_struct *) smb_xmalloc(sizeof(smb_vfs_handle_struct));
+ /* Loadable object file */
+ handle->handle = NULL;
+ DLIST_ADD(conn->vfs_private, handle)
+ vfs_module = NULL;
+ if (vfs_path) {
+ asprintf(&vfs_module, "%s/%s", vfs_path, vfs_objects[i]);
+ } else {
+ asprintf(&vfs_module, "%s", vfs_objects[i]);
+ }
+ if (!vfs_init_custom(conn, vfs_module)) {
+ DEBUG(0, ("smbd_vfs_init: vfs_init_custom failed for %s\n", vfs_module));
+ string_free(&vfsobj);
+ SAFE_FREE(vfs_module);
+ DLIST_REMOVE(conn->vfs_private, handle);
+ SAFE_FREE(handle);
+ return False;
+ }
+ SAFE_FREE(vfs_module);
+ }
+ }
+ string_free(&vfsobj);
+ return True;
}
- SAFE_FREE(vfs_module);
}
return True;
}
diff --git a/source3/stf/comfychair.py b/source3/stf/comfychair.py
deleted file mode 100644
index 8ff7726955..0000000000
--- a/source3/stf/comfychair.py
+++ /dev/null
@@ -1,333 +0,0 @@
-#! /usr/bin/env python
-
-# Copyright (C) 2002, 2003 by Martin Pool <mbp@samba.org>
-# Copyright (C) 2003 by Tim Potter <tpot@samba.org>
-#
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-"""comfychair: a Python-based instrument of software torture.
-
-Copyright (C) 2002, 2003 by Martin Pool <mbp@samba.org>
-Copyright (C) 2003 by Tim Potter <tpot@samba.org>
-
-This is a test framework designed for testing programs written in
-Python, or (through a fork/exec interface) any other language.
-
-For more information, see the file README.comfychair.
-
-To run a test suite based on ComfyChair, just run it as a program.
-"""
-
-# TODO: Put everything into a temporary directory?
-
-# TODO: Have a means for tests to customize the display of their
-# failure messages. In particular, if a shell command failed, then
-# give its stderr.
-
-import sys, re
-
-class TestCase:
- """A base class for tests. This class defines required functions which
- can optionally be overridden by subclasses. It also provides some
- utility functions for"""
-
- def __init__(self):
- self.test_log = ""
- self.background_pids = []
-
- def setup(self):
- """Set up test fixture."""
- pass
-
- def teardown(self):
- """Tear down test fixture."""
- pass
-
- def runtest(self):
- """Run the test."""
- pass
-
- def fail(self, reason = ""):
- """Say the test failed."""
- raise AssertionError(reason)
-
-
- #############################################################
- # Requisition methods
-
- def require(self, predicate, message):
- """Check a predicate for running this test.
-
-If the predicate value is not true, the test is skipped with a message explaining
-why."""
- if not predicate:
- raise NotRunError, message
-
- def require_root(self):
- """Skip this test unless run by root."""
- import os
- self.require(os.getuid() == 0,
- "must be root to run this test")
-
- #############################################################
- # Assertion methods
-
- def assert_(self, expr, reason = ""):
- if not expr:
- raise AssertionError(reason)
-
- def assert_equal(self, a, b):
- if not a == b:
- raise AssertionError("assertEquals failed: %s" % `(a, b)`)
-
- def assert_notequal(self, a, b):
- if a == b:
- raise AssertionError("assertNotEqual failed: %s" % `(a, b)`)
-
- def assert_re_match(self, pattern, s):
- """Assert that a string matches a particular pattern
-
- Inputs:
- pattern string: regular expression
- s string: to be matched
-
- Raises:
- AssertionError if not matched
- """
- if not re.match(pattern, s):
- raise AssertionError("string does not match regexp\n"
- " string: %s\n"
- " re: %s" % (`s`, `pattern`))
-
- def assert_re_search(self, pattern, s):
- """Assert that a string *contains* a particular pattern
-
- Inputs:
- pattern string: regular expression
- s string: to be searched
-
- Raises:
- AssertionError if not matched
- """
- if not re.search(pattern, s):
- raise AssertionError("string does not contain regexp\n"
- " string: %s\n"
- " re: %s" % (`s`, `pattern`))
-
-
- def assert_no_file(self, filename):
- import os.path
- assert not os.path.exists(filename), ("file exists but should not: %s" % filename)
-
-
- #############################################################
- # Methods for running programs
-
- def runcmd_background(self, cmd):
- import os
- name = cmd[0]
- self.test_log = self.test_log + "Run in background:\n" + `cmd` + "\n"
- pid = os.spawnvp(os.P_NOWAIT, name, cmd)
- self.test_log = self.test_log + "pid: %d\n" % pid
- return pid
-
-
- def runcmd(self, cmd, expectedResult = 0):
- """Run a command, fail if the command returns an unexpected exit
- code. Return the output produced."""
- rc, output = self.runcmd_unchecked(cmd)
- if rc != expectedResult:
- raise AssertionError("command returned %d; expected %s: \"%s\"" %
- (rc, expectedResult, cmd))
-
- return output
-
- def runcmd_unchecked(self, cmd, skip_on_noexec = 0):
- """Invoke a command; return (exitcode, stdout)"""
- import os, popen2
- pobj = popen2.Popen4(cmd)
- output = pobj.fromchild.read()
- waitstatus = pobj.wait()
- assert not os.WIFSIGNALED(waitstatus), \
- ("%s terminated with signal %d", cmd, os.WTERMSIG(waitstatus))
- rc = os.WEXITSTATUS(waitstatus)
- self.test_log = self.test_log + ("""Run command: %s
-Wait status: %#x (exit code %d, signal %d)
-Output:
-%s""" % (cmd, waitstatus, os.WEXITSTATUS(waitstatus), os.WTERMSIG(waitstatus),
- output))
- if skip_on_noexec and rc == 127:
- # Either we could not execute the command or the command
- # returned exit code 127. According to system(3) we can't
- # tell the difference.
- raise NotRunError, "could not execute %s" % `cmd`
- return rc, output
-
- def explain_failure(self, exc_info = None):
- import traceback
- # Move along, nothing to see here
- if not exc_info and self.test_log == "":
- return
- print "-----------------------------------------------------------------"
- if exc_info:
- traceback.print_exc(file=sys.stdout)
- print self.test_log
- print "-----------------------------------------------------------------"
-
-
- def log(self, msg):
- """Log a message to the test log. This message is displayed if
- the test fails, or when the runtests function is invoked with
- the verbose option."""
- self.test_log = self.test_log + msg + "\n"
-
-
-class NotRunError(Exception):
- """Raised if a test must be skipped because of missing resources"""
- def __init__(self, value = None):
- self.value = value
-
-
-def runtests(test_list, verbose = 0):
- """Run a series of tests.
-
- Eventually, this routine will also examine sys.argv[] to handle
- extra options.
-
- Inputs:
- test_list sequence of callable test objects
-
- Returns:
- unix return code: 0 for success, 1 for failures, 2 for test failure
- """
- import traceback
- ret = 0
- for test_class in test_list:
- print "%-30s" % _test_name(test_class),
- # flush now so that long running tests are easier to follow
- sys.stdout.flush()
-
- try:
- try: # run test and show result
- obj = test_class()
- if hasattr(obj, "setup"):
- obj.setup()
- obj.runtest()
- print "OK"
- except KeyboardInterrupt:
- print "INTERRUPT"
- obj.explain_failure(sys.exc_info())
- ret = 2
- break
- except NotRunError, msg:
- print "NOTRUN, %s" % msg.value
- except:
- print "FAIL"
- obj.explain_failure(sys.exc_info())
- ret = 1
- finally:
- try:
- if hasattr(obj, "teardown"):
- obj.teardown()
- except KeyboardInterrupt:
- print "interrupted during teardown"
- obj.explain_failure(sys.exc_info())
- ret = 2
- break
- except:
- print "error during teardown"
- obj.explain_failure(sys.exc_info())
- ret = 1
- # Display log file if we're verbose
- if ret == 0 and verbose:
- obj.explain_failure()
-
- return ret
-
-
-def _test_name(test_class):
- """Return a human-readable name for a test class.
- """
- try:
- return test_class.__name__
- except:
- return `test_class`
-
-
-def print_help():
- """Help for people running tests"""
- import sys
- print """%s: software test suite based on ComfyChair
-
-usage:
- To run all tests, just run this program. To run particular tests,
- list them on the command line.
-
-options:
- --help show usage message
- --list list available tests
- --verbose show more information while running tests
-""" % sys.argv[0]
-
-
-def print_list(test_list):
- """Show list of available tests"""
- for test_class in test_list:
- print " %s" % _test_name(test_class)
-
-
-def main(tests):
- """Main entry point for test suites based on ComfyChair.
-
-Test suites should contain this boilerplate:
-
- if __name__ == '__main__':
- comfychair.main(tests)
-
-This function handles standard options such as --help and --list, and
-by default runs all tests in the suggested order.
-
-Calls sys.exit() on completion.
-"""
- from sys import argv
- import getopt, sys
-
- verbose = 0
-
- opts, args = getopt.getopt(argv[1:], '', ['help', 'list', 'verbose'])
- if ('--help', '') in opts:
- print_help()
- return
- elif ('--list', '') in opts:
- print_list(tests)
- return
-
- if ('--verbose', '') in opts:
- verbose = 1
-
- if args:
- by_name = {}
- for t in tests:
- by_name[_test_name(t)] = t
- which_tests = [by_name[name] for name in args]
- else:
- which_tests = tests
-
- sys.exit(runtests(which_tests, verbose))
-
-
-if __name__ == '__main__':
- print __doc__
diff --git a/source3/stf/example.py b/source3/stf/example.py
deleted file mode 100755
index 1f121fd9af..0000000000
--- a/source3/stf/example.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /usr/bin/env python
-
-# Copyright (C) 2003 by Martin Pool <mbp@samba.org>
-#
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-
-"""example of using ComfyChair"""
-
-import comfychair
-
-class OnePlusOne(comfychair.TestCase):
- def runtest(self):
- self.assert_(1 + 1 == 2)
-
-tests = [OnePlusOne]
-
-if __name__ == '__main__':
- comfychair.main(tests)
-
diff --git a/source3/tdb/spinlock.h b/source3/tdb/spinlock.h
index 8b0e833ff5..d6a2ac6eb8 100644
--- a/source3/tdb/spinlock.h
+++ b/source3/tdb/spinlock.h
@@ -1,7 +1,7 @@
#ifndef __SPINLOCK_H__
#define __SPINLOCK_H__
-#ifdef HAVE_CONFIG_H
+#if HAVE_CONFIG_H
#include <config.h>
#endif
diff --git a/source3/tdb/tdb.c b/source3/tdb/tdb.c
index c414ae0d31..442baed936 100644
--- a/source3/tdb/tdb.c
+++ b/source3/tdb/tdb.c
@@ -20,27 +20,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-
-
-/* NOTE: If you use tdbs under valgrind, and in particular if you run
- * tdbtorture, you may get spurious "uninitialized value" warnings. I
- * think this is because valgrind doesn't understand that the mmap'd
- * area may be written to by other processes. Memory can, from the
- * point of view of the grinded process, spontaneously become
- * initialized.
- *
- * I can think of a few solutions. [mbp 20030311]
- *
- * 1 - Write suppressions for Valgrind so that it doesn't complain
- * about this. Probably the most reasonable but people need to
- * remember to use them.
- *
- * 2 - Use IO not mmap when running under valgrind. Not so nice.
- *
- * 3 - Use the special valgrind macros to mark memory as valid at the
- * right time. Probably too hard -- the process just doesn't know.
- */
-
#ifdef STANDALONE
#if HAVE_CONFIG_H
#include <config.h>
diff --git a/source3/tdb/tdbbackup.c b/source3/tdb/tdbbackup.c
index 36ba7db918..7b344de6c4 100644
--- a/source3/tdb/tdbbackup.c
+++ b/source3/tdb/tdbbackup.c
@@ -303,3 +303,13 @@ static void usage(void)
return ret;
}
+
+#ifdef VALGRIND
+size_t valgrind_strlen(const char *s)
+{
+ size_t count;
+ for(count = 0; *s++; count++)
+ ;
+ return count;
+}
+#endif
diff --git a/source3/tdb/tdbutil.c b/source3/tdb/tdbutil.c
index b153d442bd..0d8f6128cc 100644
--- a/source3/tdb/tdbutil.c
+++ b/source3/tdb/tdbutil.c
@@ -42,7 +42,7 @@ static void gotalarm_sig(void)
static TDB_DATA make_tdb_data(const char *dptr, size_t dsize)
{
TDB_DATA ret;
- ret.dptr = smb_xstrdup(dptr);
+ ret.dptr = dptr;
ret.dsize = dsize;
return ret;
}
@@ -387,7 +387,6 @@ BOOL tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr, uint32 *oldv
size_t tdb_pack(char *buf, int bufsize, const char *fmt, ...)
{
va_list ap;
- uint8 bt;
uint16 w;
uint32 d;
int i;
@@ -403,46 +402,40 @@ size_t tdb_pack(char *buf, int bufsize, const char *fmt, ...)
while (*fmt) {
switch ((c = *fmt++)) {
- case 'b': /* unsigned 8-bit integer */
- len = 1;
- bt = (uint8)va_arg(ap, int);
- if (bufsize >= len)
- SSVAL(buf, 0, bt);
- break;
- case 'w': /* unsigned 16-bit integer */
+ case 'w':
len = 2;
w = (uint16)va_arg(ap, int);
if (bufsize >= len)
SSVAL(buf, 0, w);
break;
- case 'd': /* signed 32-bit integer (standard int in most systems) */
+ case 'd':
len = 4;
d = va_arg(ap, uint32);
if (bufsize >= len)
SIVAL(buf, 0, d);
break;
- case 'p': /* pointer */
+ case 'p':
len = 4;
p = va_arg(ap, void *);
d = p?1:0;
if (bufsize >= len)
SIVAL(buf, 0, d);
break;
- case 'P': /* null-terminated string */
+ case 'P':
s = va_arg(ap,char *);
w = strlen(s);
len = w + 1;
if (bufsize >= len)
memcpy(buf, s, len);
break;
- case 'f': /* null-terminated string */
+ case 'f':
s = va_arg(ap,char *);
w = strlen(s);
len = w + 1;
if (bufsize >= len)
memcpy(buf, s, len);
break;
- case 'B': /* fixed-length string */
+ case 'B':
i = va_arg(ap, int);
s = va_arg(ap, char *);
len = 4+i;
@@ -478,7 +471,6 @@ size_t tdb_pack(char *buf, int bufsize, const char *fmt, ...)
int tdb_unpack(char *buf, int bufsize, const char *fmt, ...)
{
va_list ap;
- uint8 *bt;
uint16 *w;
uint32 *d;
int len;
@@ -494,13 +486,6 @@ int tdb_unpack(char *buf, int bufsize, const char *fmt, ...)
while (*fmt) {
switch ((c=*fmt++)) {
- case 'b':
- len = 1;
- bt = va_arg(ap, uint8 *);
- if (bufsize < len)
- goto no_space;
- *bt = SVAL(buf, 0);
- break;
case 'w':
len = 2;
w = va_arg(ap, uint16 *);
@@ -578,130 +563,6 @@ int tdb_unpack(char *buf, int bufsize, const char *fmt, ...)
return -1;
}
-
-/**
- * Pack SID passed by pointer
- *
- * @param pack_buf pointer to buffer which is to be filled with packed data
- * @param bufsize size of packing buffer
- * @param sid pointer to sid to be packed
- *
- * @return length of the packed representation of the whole structure
- **/
-size_t tdb_sid_pack(char* pack_buf, int bufsize, DOM_SID* sid)
-{
- int idx;
- size_t len = 0;
-
- if (!sid || !pack_buf) return -1;
-
- len += tdb_pack(pack_buf + len, bufsize - len, "bb", sid->sid_rev_num,
- sid->num_auths);
-
- for (idx = 0; idx < 6; idx++) {
- len += tdb_pack(pack_buf + len, bufsize - len, "b", sid->id_auth[idx]);
- }
-
- for (idx = 0; idx < MAXSUBAUTHS; idx++) {
- len += tdb_pack(pack_buf + len, bufsize - len, "d", sid->sub_auths[idx]);
- }
-
- return len;
-}
-
-
-/**
- * Unpack SID into a pointer
- *
- * @param pack_buf pointer to buffer with packed representation
- * @param bufsize size of the buffer
- * @param sid pointer to sid structure to be filled with unpacked data
- *
- * @return size of structure unpacked from buffer
- **/
-size_t tdb_sid_unpack(char* pack_buf, int bufsize, DOM_SID* sid)
-{
- int idx, len = 0;
-
- if (!sid || !pack_buf) return -1;
-
- len += tdb_unpack(pack_buf + len, bufsize - len, "bb",
- &sid->sid_rev_num, &sid->num_auths);
-
- for (idx = 0; idx < 6; idx++) {
- len += tdb_unpack(pack_buf + len, bufsize - len, "b", &sid->id_auth[idx]);
- }
-
- for (idx = 0; idx < MAXSUBAUTHS; idx++) {
- len += tdb_unpack(pack_buf + len, bufsize - len, "d", &sid->sub_auths[idx]);
- }
-
- return len;
-}
-
-
-/**
- * Pack TRUSTED_DOM_PASS passed by pointer
- *
- * @param pack_buf pointer to buffer which is to be filled with packed data
- * @param bufsize size of the buffer
- * @param pass pointer to trusted domain password to be packed
- *
- * @return length of the packed representation of the whole structure
- **/
-size_t tdb_trusted_dom_pass_pack(char* pack_buf, int bufsize, TRUSTED_DOM_PASS* pass)
-{
- int idx, len = 0;
-
- if (!pack_buf || !pass) return -1;
-
- /* packing unicode domain name and password */
- len += tdb_pack(pack_buf + len, bufsize - len, "d", pass->uni_name_len);
-
- for (idx = 0; idx < 32; idx++)
- len += tdb_pack(pack_buf + len, bufsize - len, "w", pass->uni_name[idx]);
-
- len += tdb_pack(pack_buf + len, bufsize - len, "dPd", pass->pass_len,
- pass->pass, pass->mod_time);
-
- /* packing SID structure */
- len += tdb_sid_pack(pack_buf + len, bufsize - len, &pass->domain_sid);
-
- return len;
-}
-
-
-/**
- * Unpack TRUSTED_DOM_PASS passed by pointer
- *
- * @param pack_buf pointer to buffer with packed representation
- * @param bufsize size of the buffer
- * @param pass pointer to trusted domain password to be filled with unpacked data
- *
- * @return size of structure unpacked from buffer
- **/
-size_t tdb_trusted_dom_pass_unpack(char* pack_buf, int bufsize, TRUSTED_DOM_PASS* pass)
-{
- int idx, len = 0;
-
- if (!pack_buf || !pass) return -1;
-
- /* unpack unicode domain name and plaintext password */
- len += tdb_unpack(pack_buf, bufsize - len, "d", &pass->uni_name_len);
-
- for (idx = 0; idx < 32; idx++)
- len += tdb_unpack(pack_buf + len, bufsize - len, "w", &pass->uni_name[idx]);
-
- len += tdb_unpack(pack_buf + len, bufsize - len, "dPd", &pass->pass_len, &pass->pass,
- &pass->mod_time);
-
- /* unpack domain sid */
- len += tdb_sid_unpack(pack_buf + len, bufsize - len, &pass->domain_sid);
-
- return len;
-}
-
-
/****************************************************************************
Log tdb messages via DEBUG().
****************************************************************************/
diff --git a/source3/torture/cmd_sam.c b/source3/torture/cmd_sam.c
deleted file mode 100644
index 3f7f7dfe27..0000000000
--- a/source3/torture/cmd_sam.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM module functions
-
- Copyright (C) Jelmer Vernooij 2002
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "samtest.h"
-
-static void print_account(SAM_ACCOUNT_HANDLE *a)
-{
- /* FIXME */
-}
-
-static NTSTATUS cmd_context(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- char **plugins;
- int i;
-
- plugins = malloc(argc * sizeof(char *));
-
- for(i = 1; i < argc; i++)
- plugins[i-1] = argv[i];
-
- plugins[argc-1] = NULL;
-
- if(!NT_STATUS_IS_OK(status = make_sam_context_list(&st->context, plugins))) {
- printf("make_sam_context_list failed: %s\n", nt_errstr(status));
- SAFE_FREE(plugins);
- return status;
- }
-
- SAFE_FREE(plugins);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_load_module(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- char *plugin_arg[2];
- NTSTATUS status;
- if (argc != 2 && argc != 3) {
- printf("Usage: load <module path> [domain-name]\n");
- return NT_STATUS_OK;
- }
-
- if (argc == 3)
- asprintf(&plugin_arg[0], "plugin:%s|%s", argv[1], argv[2]);
- else
- asprintf(&plugin_arg[0], "plugin:%s", argv[1]);
-
- plugin_arg[1] = NULL;
-
- if(!NT_STATUS_IS_OK(status = make_sam_context_list(&st->context, plugin_arg))) {
- free(plugin_arg[0]);
- return status;
- }
-
- free(plugin_arg[0]);
-
- printf("load: ok\n");
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_get_sec_desc(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_set_sec_desc(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- char *name;
- uint32 type;
- NTSTATUS status;
- DOM_SID sid;
- if (argc != 2) {
- printf("Usage: lookup_sid <sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_sid(st->context, st->token, mem_ctx, &sid, &name, &type))) {
- printf("sam_lookup_sid failed!\n");
- return status;
- }
-
- printf("Name: %s\n", name);
- printf("Type: %d\n", type); /* FIXME: What kind of an integer is type ? */
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- DOM_SID sid;
- uint32 type;
- NTSTATUS status;
- if (argc != 3) {
- printf("Usage: lookup_name <domain> <name>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_name(st->context, st->token, argv[1], argv[2], &sid, &type))) {
- printf("sam_lookup_name failed!\n");
- return status;
- }
-
- printf("SID: %s\n", sid_string_static(&sid));
- printf("Type: %d\n", type);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- DOM_SID *sid;
- NTSTATUS status;
- if (argc != 2) {
- printf("Usage: lookup_domain <domain>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_domain(st->context, st->token, argv[1], &sid))) {
- printf("sam_lookup_name failed!\n");
- return status;
- }
-
- printf("SID: %s\n", sid_string_static(sid));
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_enum_domains(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- int32 domain_count, i;
- DOM_SID *domain_sids;
- char **domain_names;
- NTSTATUS status;
-
- if (!NT_STATUS_IS_OK(status = sam_enum_domains(st->context, st->token, &domain_count, &domain_sids, &domain_names))) {
- printf("sam_enum_domains failed!\n");
- return status;
- }
-
- if (domain_count == 0) {
- printf("No domains found!\n");
- return NT_STATUS_OK;
- }
-
- for (i = 0; i < domain_count; i++) {
- printf("%s %s\n", domain_names[i], sid_string_static(&domain_sids[i]));
- }
-
- SAFE_FREE(domain_sids);
- SAFE_FREE(domain_names);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_update_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_show_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- SAM_DOMAIN_HANDLE *domain;
- uint32 tmp_uint32;
- uint16 tmp_uint16;
- NTTIME tmp_nttime;
- BOOL tmp_bool;
- const char *tmp_string;
-
- if (argc != 2) {
- printf("Usage: show_domain <sid>\n");
- return status;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_by_sid(st->context, st->token, GENERIC_RIGHTS_DOMAIN_ALL_ACCESS, &sid, &domain))) {
- printf("sam_get_domain_by_sid failed\n");
- return status;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_accounts(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_accounts failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of accounts: %d\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_groups(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_groups failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of groups: %u\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_aliases(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_aliases failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of aliases: %u\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_name(domain, &tmp_string))) {
- printf("sam_get_domain_name failed: %s\n", nt_errstr(status));
- } else {
- printf("Domain Name: %s\n", tmp_string);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_lockout_count(domain, &tmp_uint16))) {
- printf("sam_get_domain_lockout_count failed: %s\n", nt_errstr(status));
- } else {
- printf("Lockout Count: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_force_logoff(domain, &tmp_bool))) {
- printf("sam_get_domain_force_logoff failed: %s\n", nt_errstr(status));
- } else {
- printf("Force Logoff: %s\n", (tmp_bool?"Yes":"No"));
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_lockout_duration(domain, &tmp_nttime))) {
- printf("sam_get_domain_lockout_duration failed: %s\n", nt_errstr(status));
- } else {
- printf("Lockout duration: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_login_pwdchange(domain, &tmp_bool))) {
- printf("sam_get_domain_login_pwdchange failed: %s\n", nt_errstr(status));
- } else {
- printf("Password changing allowed: %s\n", (tmp_bool?"Yes":"No"));
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_max_pwdage(domain, &tmp_nttime))) {
- printf("sam_get_domain_max_pwdage failed: %s\n", nt_errstr(status));
- } else {
- printf("Maximum password age: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_min_pwdage(domain, &tmp_nttime))) {
- printf("sam_get_domain_min_pwdage failed: %s\n", nt_errstr(status));
- } else {
- printf("Minimal password age: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_min_pwdlength(domain, &tmp_uint16))) {
- printf("sam_get_domain_min_pwdlength: %s\n", nt_errstr(status));
- } else {
- printf("Minimal Password Length: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_pwd_history(domain, &tmp_uint16))) {
- printf("sam_get_domain_pwd_history failed: %s\n", nt_errstr(status));
- } else {
- printf("Password history: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_reset_count(domain, &tmp_nttime))) {
- printf("sam_get_domain_reset_count failed: %s\n", nt_errstr(status));
- } else {
- printf("Reset count: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_server(domain, &tmp_string))) {
- printf("sam_get_domain_server failed: %s\n", nt_errstr(status));
- } else {
- printf("Server: %s\n", tmp_string);
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_create_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_update_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_delete_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_enum_accounts(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- int32 account_count, i;
- SAM_ACCOUNT_ENUM *accounts;
-
- if (argc != 2) {
- printf("Usage: enum_accounts <domain-sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_enum_accounts(st->context, st->token, &sid, 0, &account_count, &accounts))) {
- printf("sam_enum_accounts failed: %s\n", nt_errstr(status));
- return status;
- }
-
- if (account_count == 0) {
- printf("No accounts found!\n");
- return NT_STATUS_OK;
- }
-
- for (i = 0; i < account_count; i++)
- printf("SID: %s\nName: %s\nFullname: %s\nDescription: %s\nACB_BITS: %08X\n\n",
- sid_string_static(&accounts[i].sid), accounts[i].account_name,
- accounts[i].full_name, accounts[i].account_desc,
- accounts[i].acct_ctrl);
-
- SAFE_FREE(accounts);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- SAM_ACCOUNT_HANDLE *account;
-
- if (argc != 2) {
- printf("Usage: lookup_account_sid <account-sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_by_sid(st->context, st->token, GENERIC_RIGHTS_USER_ALL_ACCESS, &sid, &account))) {
- printf("context_sam_get_account_by_sid failed: %s\n", nt_errstr(status));
- return status;
- }
-
- print_account(account);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- SAM_ACCOUNT_HANDLE *account;
-
- if (argc != 3) {
- printf("Usage: lookup_account_name <domain-name> <account-name>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_by_name(st->context, st->token, GENERIC_RIGHTS_USER_ALL_ACCESS, argv[1], argv[2], &account))) {
- printf("context_sam_get_account_by_sid failed: %s\n", nt_errstr(status));
- return status;
- }
-
- print_account(account);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_create_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_update_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_delete_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_enum_groups(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_group_add_member(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_group_del_member(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS cmd_group_enum(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS cmd_get_sid_groups(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-struct cmd_set sam_general_commands[] = {
-
- { "General SAM Commands" },
-
- { "load", cmd_load_module, "Load a module", "load <module.so> [domain-sid]" },
- { "context", cmd_context, "Load specified context", "context [DOMAIN|]backend1[:options] [DOMAIN|]backend2[:options]" },
- { "get_sec_desc", cmd_get_sec_desc, "Get security descriptor info", "get_sec_desc <access-token> <sid>" },
- { "set_sec_desc", cmd_set_sec_desc, "Set security descriptor info", "set_sec_desc <access-token> <sid>" },
- { "lookup_sid", cmd_lookup_sid, "Lookup type of specified SID", "lookup_sid <sid>" },
- { "lookup_name", cmd_lookup_name, "Lookup type of specified name", "lookup_name <sid>" },
- { NULL }
-};
-
-struct cmd_set sam_domain_commands[] = {
- { "Domain Commands" },
- { "update_domain", cmd_update_domain, "Update domain information", "update_domain [domain-options] domain-name | domain-sid" },
- { "show_domain", cmd_show_domain, "Show domain information", "show_domain domain-sid | domain-name" },
- { "enum_domains", cmd_enum_domains, "Enumerate all domains", "enum_domains <token> <acct-ctrl>" },
- { "lookup_domain", cmd_lookup_domain, "Lookup a domain by name", "lookup_domain domain-name" },
- { NULL }
-};
-
-struct cmd_set sam_account_commands[] = {
- { "Account Commands" },
- { "create_account", cmd_create_account, "Create a new account with specified properties", "create_account [account-options]" },
- { "update_account", cmd_update_account, "Update an existing account", "update_account [account-options] account-sid | account-name" },
- { "delete_account", cmd_delete_account, "Delete an account", "delete_account account-sid | account-name" },
- { "enum_accounts", cmd_enum_accounts, "Enumerate all accounts", "enum_accounts <token> <acct-ctrl>" },
- { "lookup_account", cmd_lookup_account, "Lookup an account by either sid or name", "lookup_account account-sid | account-name" },
- { "lookup_account_sid", cmd_lookup_account_sid, "Lookup an account by sid", "lookup_account_sid account-sid" },
- { "lookup_account_name", cmd_lookup_account_name, "Lookup an account by name", "lookup_account_name account-name" },
- { NULL }
-};
-
-struct cmd_set sam_group_commands[] = {
- { "Group Commands" },
- { "create_group", cmd_create_group, "Create a new group", "create_group [group-opts]" },
- { "update_group", cmd_update_group, "Update an existing group", "update_group [group-opts] group-name | group-sid" },
- { "delete_group", cmd_delete_group, "Delete an existing group", "delete_group group-name | group-sid" },
- { "enum_groups", cmd_enum_groups, "Enumerate all groups", "enum_groups <token> <group-ctrl>" },
- { "lookup_group", cmd_lookup_group, "Lookup a group by SID or name", "lookup_group group-sid | group-name" },
- { "lookup_group_sid", cmd_lookup_group_sid, "Lookup a group by SID", "lookup_group_sid <sid>" },
- { "lookup_group_name", cmd_lookup_group_name, "Lookup a group by name", "lookup_group_name <name>" },
- { "group_add_member", cmd_group_add_member, "Add group member to group", "group_add_member <group-name | group-sid> <member-name | member-sid>" },
- { "group_del_member", cmd_group_del_member, "Delete group member from group", "group_del_member <group-name | group-sid> <member-name | member-sid>" },
- { "group_enum", cmd_group_enum, "Enumerate all members of specified group", "group_enum group-sid | group-name" },
-
- { "get_sid_groups", cmd_get_sid_groups, "Get a list of groups specified sid is a member of", "group_enum <group-sid | group-name>" },
- { NULL }
-};
diff --git a/source3/torture/denytest.c b/source3/torture/denytest.c
index 3a7906fb33..017bb1c06d 100644
--- a/source3/torture/denytest.c
+++ b/source3/torture/denytest.c
@@ -1408,7 +1408,7 @@ static void progress_bar(unsigned i, unsigned total)
*/
BOOL torture_denytest1(int dummy)
{
- struct cli_state *cli1;
+ static struct cli_state cli1;
int fnum1, fnum2;
int i;
BOOL correct = True;
@@ -1421,10 +1421,10 @@ BOOL torture_denytest1(int dummy)
printf("starting denytest1\n");
for (i=0;i<2;i++) {
- cli_unlink(cli1, fnames[i]);
- fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
- cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
- cli_close(cli1, fnum1);
+ cli_unlink(&cli1, fnames[i]);
+ fnum1 = cli_open(&cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
+ cli_write(&cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
+ cli_close(&cli1, fnum1);
}
printf("testing %d entries\n", ARRAY_SIZE(denytable1));
@@ -1435,10 +1435,10 @@ BOOL torture_denytest1(int dummy)
progress_bar(i, ARRAY_SIZE(denytable1));
- fnum1 = cli_open(cli1, fname,
+ fnum1 = cli_open(&cli1, fname,
denytable1[i].mode1,
denytable1[i].deny1);
- fnum2 = cli_open(cli1, fname,
+ fnum2 = cli_open(&cli1, fname,
denytable1[i].mode2,
denytable1[i].deny2);
@@ -1449,10 +1449,10 @@ BOOL torture_denytest1(int dummy)
} else {
char x = 1;
res = A_0;
- if (cli_read(cli1, fnum2, (void *)&x, 0, 1) == 1) {
+ if (cli_read(&cli1, fnum2, (void *)&x, 0, 1) == 1) {
res += A_R;
}
- if (cli_write(cli1, fnum2, 0, (void *)&x, 0, 1) == 1) {
+ if (cli_write(&cli1, fnum2, 0, (void *)&x, 0, 1) == 1) {
res += A_W;
}
}
@@ -1472,15 +1472,15 @@ BOOL torture_denytest1(int dummy)
resultstr(denytable1[i].result));
}
- cli_close(cli1, fnum1);
- cli_close(cli1, fnum2);
+ cli_close(&cli1, fnum1);
+ cli_close(&cli1, fnum2);
}
for (i=0;i<2;i++) {
- cli_unlink(cli1, fnames[i]);
+ cli_unlink(&cli1, fnames[i]);
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
@@ -1494,7 +1494,7 @@ BOOL torture_denytest1(int dummy)
*/
BOOL torture_denytest2(int dummy)
{
- static struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
int fnum1, fnum2;
int i;
BOOL correct = True;
@@ -1507,10 +1507,10 @@ BOOL torture_denytest2(int dummy)
printf("starting denytest2\n");
for (i=0;i<2;i++) {
- cli_unlink(cli1, fnames[i]);
- fnum1 = cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
- cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
- cli_close(cli1, fnum1);
+ cli_unlink(&cli1, fnames[i]);
+ fnum1 = cli_open(&cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE);
+ cli_write(&cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
+ cli_close(&cli1, fnum1);
}
for (i=0; i<ARRAY_SIZE(denytable2); i++) {
@@ -1519,10 +1519,10 @@ BOOL torture_denytest2(int dummy)
progress_bar(i, ARRAY_SIZE(denytable1));
- fnum1 = cli_open(cli1, fname,
+ fnum1 = cli_open(&cli1, fname,
denytable2[i].mode1,
denytable2[i].deny1);
- fnum2 = cli_open(cli2, fname,
+ fnum2 = cli_open(&cli2, fname,
denytable2[i].mode2,
denytable2[i].deny2);
@@ -1533,10 +1533,10 @@ BOOL torture_denytest2(int dummy)
} else {
char x = 1;
res = A_0;
- if (cli_read(cli2, fnum2, (void *)&x, 0, 1) == 1) {
+ if (cli_read(&cli2, fnum2, (void *)&x, 0, 1) == 1) {
res += A_R;
}
- if (cli_write(cli2, fnum2, 0, (void *)&x, 0, 1) == 1) {
+ if (cli_write(&cli2, fnum2, 0, (void *)&x, 0, 1) == 1) {
res += A_W;
}
}
@@ -1556,18 +1556,18 @@ BOOL torture_denytest2(int dummy)
resultstr(denytable2[i].result));
}
- cli_close(cli1, fnum1);
- cli_close(cli2, fnum2);
+ cli_close(&cli1, fnum1);
+ cli_close(&cli2, fnum2);
}
for (i=0;i<2;i++) {
- cli_unlink(cli1, fnames[i]);
+ cli_unlink(&cli1, fnames[i]);
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
correct = False;
}
diff --git a/source3/torture/mangle_test.c b/source3/torture/mangle_test.c
index d1475eb64e..6d127a918e 100644
--- a/source3/torture/mangle_test.c
+++ b/source3/torture/mangle_test.c
@@ -135,7 +135,7 @@ static void gen_name(char *name)
/* and a medium probability of a common lead string */
if (random() % 10 == 0) {
- strncpy(p, "ABCDE", 6);
+ strncpy(p, "ABCDE", 5);
}
/* and a high probability of a good extension length */
@@ -151,7 +151,7 @@ static void gen_name(char *name)
BOOL torture_mangle(int dummy)
{
extern int torture_numops;
- static struct cli_state *cli;
+ static struct cli_state cli;
int i;
printf("starting mangle test\n");
@@ -167,10 +167,10 @@ BOOL torture_mangle(int dummy)
return False;
}
- cli_unlink(cli, "\\mangle_test\\*");
- cli_rmdir(cli, "\\mangle_test");
+ cli_unlink(&cli, "\\mangle_test\\*");
+ cli_rmdir(&cli, "\\mangle_test");
- if (!cli_mkdir(cli, "\\mangle_test")) {
+ if (!cli_mkdir(&cli, "\\mangle_test")) {
printf("ERROR: Failed to make directory\n");
return False;
}
@@ -180,7 +180,7 @@ BOOL torture_mangle(int dummy)
gen_name(name);
- if (!test_one(cli, name)) {
+ if (!test_one(&cli, name)) {
break;
}
if (total && total % 100 == 0) {
@@ -189,8 +189,8 @@ BOOL torture_mangle(int dummy)
}
}
- cli_unlink(cli, "\\mangle_test\\*");
- if (!cli_rmdir(cli, "\\mangle_test")) {
+ cli_unlink(&cli, "\\mangle_test\\*");
+ if (!cli_rmdir(&cli, "\\mangle_test")) {
printf("ERROR: Failed to remove directory\n");
return False;
}
@@ -198,7 +198,7 @@ BOOL torture_mangle(int dummy)
printf("\nTotal collisions %u/%u - %.2f%% (%u failures)\n",
collisions, total, (100.0*collisions) / total, failures);
- torture_close_connection(cli);
+ torture_close_connection(&cli);
printf("mangle test finished\n");
return (failures == 0);
diff --git a/source3/torture/masktest.c b/source3/torture/masktest.c
index 06dead3f16..7d751fb789 100644
--- a/source3/torture/masktest.c
+++ b/source3/torture/masktest.c
@@ -33,7 +33,6 @@ static const char *filechars = "abcdefghijklm.";
static int verbose;
static int die_on_error;
static int NumLoops = 0;
-static int ignore_dot_errors = 0;
/* a test fn for LANMAN mask support */
int ms_fnmatch_lanman_core(const char *pattern, const char *string)
@@ -325,9 +324,7 @@ static void testpair(struct cli_state *cli, char *mask, char *file)
res2 = reg_test(cli, mask, long_name, short_name);
- if (showall ||
- ((strcmp(res1, res2) && !ignore_dot_errors) ||
- (strcmp(res1+2, res2+2) && ignore_dot_errors))) {
+ if (showall || strcmp(res1, res2)) {
DEBUG(0,("%s %s %d mask=[%s] file=[%s] rfile=[%s/%s]\n",
res1, res2, count, mask, file, long_name, short_name));
if (die_on_error) exit(1);
@@ -412,7 +409,6 @@ static void usage(void)
-v verbose mode\n\
-E die on error\n\
-a show all tests\n\
- -i ignore . and .. errors\n\
\n\
This program tests wildcard matching between two servers. It generates\n\
random pairs of filenames/masks and tests that they match in the same\n\
@@ -465,7 +461,7 @@ static void usage(void)
seed = time(NULL);
- while ((opt = getopt(argc, argv, "n:d:U:s:hm:f:aoW:M:vEi")) != EOF) {
+ while ((opt = getopt(argc, argv, "n:d:U:s:hm:f:aoW:M:vE")) != EOF) {
switch (opt) {
case 'n':
NumLoops = atoi(optarg);
@@ -476,9 +472,6 @@ static void usage(void)
case 'E':
die_on_error = 1;
break;
- case 'i':
- ignore_dot_errors = 1;
- break;
case 'v':
verbose++;
break;
diff --git a/source3/torture/samtest.c b/source3/torture/samtest.c
deleted file mode 100644
index 0de2e5d288..0000000000
--- a/source3/torture/samtest.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM module tester
-
- Copyright (C) 2002 Jelmer Vernooij
-
- Parts of the code stolen from vfstest by Simo Sorce and Eric Lorimer
- Parts of the code stolen from rpcclient by Tim Potter
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "samtest.h"
-
-struct func_entry {
- char *name;
- int (*fn)(struct connection_struct *conn, const char *path);
-};
-
-/* List to hold groups of commands */
-static struct cmd_list {
- struct cmd_list *prev, *next;
- struct cmd_set *cmd_set;
-} *cmd_list;
-
-static char* next_command (char** cmdstr)
-{
- static pstring command;
- char *p;
-
- if (!cmdstr || !(*cmdstr))
- return NULL;
-
- p = strchr_m(*cmdstr, ';');
- if (p)
- *p = '\0';
- pstrcpy(command, *cmdstr);
- *cmdstr = p;
-
- return command;
-}
-
-/* Load specified configuration file */
-static NTSTATUS cmd_conf(struct samtest_state *sam, TALLOC_CTX *mem_ctx,
- int argc, char **argv)
-{
- if (argc != 2) {
- printf("Usage: %s <smb.conf>\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (!lp_load(argv[1], False, True, False)) {
- printf("Error loading \"%s\"\n", argv[1]);
- return NT_STATUS_OK;
- }
-
- printf("\"%s\" successfully loaded\n", argv[1]);
- return NT_STATUS_OK;
-}
-
-/* Display help on commands */
-static NTSTATUS cmd_help(struct samtest_state *st, TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- struct cmd_list *tmp;
- struct cmd_set *tmp_set;
-
- /* Usage */
- if (argc > 2) {
- printf("Usage: %s [command]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- /* Help on one command */
-
- if (argc == 2) {
- for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
- tmp_set = tmp->cmd_set;
-
- while(tmp_set->name) {
- if (strequal(argv[1], tmp_set->name)) {
- if (tmp_set->usage &&
- tmp_set->usage[0])
- printf("%s\n", tmp_set->usage);
- else
- printf("No help for %s\n", tmp_set->name);
-
- return NT_STATUS_OK;
- }
-
- tmp_set++;
- }
- }
-
- printf("No such command: %s\n", argv[1]);
- return NT_STATUS_OK;
- }
-
- /* List all commands */
-
- for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
- tmp_set = tmp->cmd_set;
-
- while(tmp_set->name) {
-
- printf("%20s\t%s\n", tmp_set->name,
- tmp_set->description ? tmp_set->description:
- "");
-
- tmp_set++;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/* Change the debug level */
-static NTSTATUS cmd_debuglevel(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- if (argc > 2) {
- printf("Usage: %s [debuglevel]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc == 2) {
- DEBUGLEVEL = atoi(argv[1]);
- }
-
- printf("debuglevel is %d\n", DEBUGLEVEL);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_quit(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- /* Cleanup */
- talloc_destroy(mem_ctx);
-
- exit(0);
- return NT_STATUS_OK; /* NOTREACHED */
-}
-
-static struct cmd_set samtest_commands[] = {
-
- { "GENERAL OPTIONS" },
-
- { "help", cmd_help, "Get help on commands", "" },
- { "?", cmd_help, "Get help on commands", "" },
- { "conf", cmd_conf, "Load smb configuration file", "conf <smb.conf>" },
- { "debuglevel", cmd_debuglevel, "Set debug level", "" },
- { "exit", cmd_quit, "Exit program", "" },
- { "quit", cmd_quit, "Exit program", "" },
-
- { NULL }
-};
-
-static struct cmd_set separator_command[] = {
- { "---------------", NULL, "----------------------" },
- { NULL }
-};
-
-
-/*extern struct cmd_set sam_commands[];*/
-extern struct cmd_set sam_general_commands[];
-extern struct cmd_set sam_domain_commands[];
-extern struct cmd_set sam_account_commands[];
-extern struct cmd_set sam_group_commands[];
-static struct cmd_set *samtest_command_list[] = {
- samtest_commands,
- sam_general_commands,
- sam_domain_commands,
- sam_account_commands,
- sam_group_commands,
- NULL
-};
-
-static void add_command_set(struct cmd_set *cmd_set)
-{
- struct cmd_list *entry;
-
- if (!(entry = (struct cmd_list *)malloc(sizeof(struct cmd_list)))) {
- DEBUG(0, ("out of memory\n"));
- return;
- }
-
- ZERO_STRUCTP(entry);
-
- entry->cmd_set = cmd_set;
- DLIST_ADD(cmd_list, entry);
-}
-
-static NTSTATUS do_cmd(struct samtest_state *st, struct cmd_set *cmd_entry, char *cmd)
-{
- char *p = cmd, **argv = NULL;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- TALLOC_CTX *mem_ctx = NULL;
- pstring buf;
- int argc = 0, i;
-
- /* Count number of arguments first time through the loop then
- allocate memory and strdup them. */
-
- again:
- while(next_token(&p, buf, " ", sizeof(buf))) {
- if (argv) {
- argv[argc] = strdup(buf);
- }
-
- argc++;
- }
-
- if (!argv) {
-
- /* Create argument list */
-
- argv = (char **)malloc(sizeof(char *) * argc);
- memset(argv, 0, sizeof(char *) * argc);
-
- if (!argv) {
- fprintf(stderr, "out of memory\n");
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- p = cmd;
- argc = 0;
-
- goto again;
- }
-
- /* Call the function */
-
- if (cmd_entry->fn) {
-
- if (mem_ctx == NULL) {
- /* Create mem_ctx */
- if (!(mem_ctx = talloc_init("do_cmd"))) {
- DEBUG(0, ("talloc_init() failed\n"));
- goto done;
- }
- }
-
- /* Run command */
- result = cmd_entry->fn(st, mem_ctx, argc, argv);
-
- } else {
- fprintf (stderr, "Invalid command\n");
- goto done;
- }
-
- done:
-
- /* Cleanup */
-
- if (argv) {
- for (i = 0; i < argc; i++)
- SAFE_FREE(argv[i]);
-
- SAFE_FREE(argv);
- }
-
- return result;
-}
-
-/* Process a command entered at the prompt or as part of -c */
-static NTSTATUS process_cmd(struct samtest_state *st, char *cmd)
-{
- struct cmd_list *temp_list;
- BOOL found = False;
- pstring buf;
- char *p = cmd;
- NTSTATUS result = NT_STATUS_OK;
- int len = 0;
-
- if (cmd[strlen(cmd) - 1] == '\n')
- cmd[strlen(cmd) - 1] = '\0';
-
- if (!next_token(&p, buf, " ", sizeof(buf))) {
- return NT_STATUS_OK;
- }
-
- /* strip the trainly \n if it exsists */
- len = strlen(buf);
- if (buf[len-1] == '\n')
- buf[len-1] = '\0';
-
- /* Search for matching commands */
-
- for (temp_list = cmd_list; temp_list; temp_list = temp_list->next) {
- struct cmd_set *temp_set = temp_list->cmd_set;
-
- while(temp_set->name) {
- if (strequal(buf, temp_set->name)) {
- found = True;
- result = do_cmd(st, temp_set, cmd);
-
- goto done;
- }
- temp_set++;
- }
- }
-
- done:
- if (!found && buf[0]) {
- printf("command not found: %s\n", buf);
- return NT_STATUS_OK;
- }
-
- if (!NT_STATUS_IS_OK(result)) {
- printf("result was %s\n", nt_errstr(result));
- }
-
- return result;
-}
-
-void exit_server(char *reason)
-{
- DEBUG(3,("Server exit (%s)\n", (reason ? reason : "")));
- exit(0);
-}
-
-static int server_fd = -1;
-int last_message = -1;
-
-int smbd_server_fd(void)
-{
- return server_fd;
-}
-
-BOOL reload_services(BOOL test)
-{
- return True;
-}
-
-/* Main function */
-
-int main(int argc, char *argv[])
-{
- BOOL interactive = True;
- int opt;
- static char *cmdstr = "";
- static char *opt_logfile=NULL;
- static char *config_file = dyn_CONFIGFILE;
- pstring logfile;
- struct cmd_set **cmd_set;
- struct samtest_state st;
-
- /* make sure the vars that get altered (4th field) are in
- a fixed location or certain compilers complain */
- poptContext pc;
- struct poptOption long_options[] = {
- POPT_AUTOHELP
- { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
- {"command", 'e', POPT_ARG_STRING, &cmdstr, 'e', "Execute semicolon seperated cmds"},
- {"logfile", 'l', POPT_ARG_STRING, &opt_logfile, 'l', "Logfile to use instead of stdout"},
- {"configfile", 'c', POPT_ARG_STRING, &config_file, 0,"use different configuration file",NULL},
- { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_version},
- { 0, 0, 0, 0}
- };
-
- ZERO_STRUCT(st);
-
- st.token = get_system_token();
-
- setlinebuf(stdout);
-
- DEBUGLEVEL = 1;
-
- pc = poptGetContext("samtest", argc, (const char **) argv,
- long_options, 0);
-
- while((opt = poptGetNextOpt(pc)) != -1) {
- switch (opt) {
- case 'l':
- slprintf(logfile, sizeof(logfile) - 1, "%s.client",
- opt_logfile);
- lp_set_logfile(logfile);
- interactive = False;
- break;
- }
- }
-
- if (!lp_load(config_file,True,False,False)) {
- fprintf(stderr, "Can't load %s - run testparm to debug it\n", config_file);
- exit(1);
- }
-
- poptFreeContext(pc);
-
- /* the following functions are part of the Samba debugging
- facilities. See lib/debug.c */
- setup_logging("samtest", interactive);
- if (!interactive)
- reopen_logs();
-
- /* Load command lists */
-
- cmd_set = samtest_command_list;
-
- while(*cmd_set) {
- add_command_set(*cmd_set);
- add_command_set(separator_command);
- cmd_set++;
- }
-
- /* Do anything specified with -c */
- if (cmdstr[0]) {
- char *cmd;
- char *p = cmdstr;
-
- while((cmd=next_command(&p)) != NULL) {
- process_cmd(&st, cmd);
- }
-
- return 0;
- }
-
- /* Loop around accepting commands */
-
- while(1) {
- pstring prompt;
- char *line;
-
- slprintf(prompt, sizeof(prompt) - 1, "samtest $> ");
-
- line = smb_readline(prompt, NULL, NULL);
-
- if (line == NULL)
- break;
-
- if (line[0] != '\n')
- process_cmd(&st, line);
- }
-
- return 0;
-}
diff --git a/source3/torture/t_strcmp.c b/source3/torture/t_strcmp.c
deleted file mode 100644
index b510d64cf0..0000000000
--- a/source3/torture/t_strcmp.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2003 by Martin Pool
- *
- * Test harness for StrCaseCmp
- */
-
-#include "includes.h"
-
-int main(int argc, char *argv[])
-{
- if (argc != 3) {
- fprintf(stderr, "usage: %s STRING1 STRING2\n"
- "Compares two strings, prints the results of StrCaseCmp\n",
- argv[0]);
- return 2;
- }
-
- printf("%d\n", StrCaseCmp(argv[1], argv[2]));
-
- return 0;
-}
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 327212c6be..3fd0d7aa66 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -26,10 +26,9 @@ static fstring host, workgroup, share, password, username, myname;
static int max_protocol = PROTOCOL_NT1;
static const char *sockops="TCP_NODELAY";
static int nprocs=1;
-static int port_to_use=0;
int torture_numops=100;
static int procnum; /* records process count number when forking */
-static struct cli_state *current_cli;
+static struct cli_state current_cli;
static fstring randomfname;
static BOOL use_oplocks;
static BOOL use_level_II_oplocks;
@@ -105,14 +104,7 @@ static BOOL open_nbt_connection(struct cli_state *c)
zero_ip(&ip);
- if (!cli_initialise(c)) {
- printf("Failed initialize cli_struct to connect with %s\n", host);
- return False;
- }
-
- c->port = port_to_use;
-
- if (!cli_connect(c, host, &ip)) {
+ if (!cli_initialise(c) || !cli_connect(c, host, &ip)) {
printf("Failed to connect with %s\n", host);
return False;
}
@@ -124,49 +116,43 @@ static BOOL open_nbt_connection(struct cli_state *c)
if (use_level_II_oplocks) c->use_level_II_oplocks = True;
if (!cli_session_request(c, &calling, &called)) {
- /*
- * Well, that failed, try *SMBSERVER ...
- * However, we must reconnect as well ...
- */
- if (!cli_connect(c, host, &ip)) {
- printf("Failed to connect with %s\n", host);
- return False;
- }
-
- make_nmb_name(&called, "*SMBSERVER", 0x20);
- if (!cli_session_request(c, &calling, &called)) {
- printf("%s rejected the session\n",host);
- printf("We tried with a called name of %s & %s\n",
- host, "*SMBSERVER");
- cli_shutdown(c);
- return False;
- }
+ printf("%s rejected the session\n",host);
+ cli_shutdown(c);
+ return False;
}
return True;
}
-BOOL torture_open_connection(struct cli_state **c)
+BOOL torture_open_connection(struct cli_state *c)
{
- BOOL retry;
- int flags = 0;
- NTSTATUS status;
+ ZERO_STRUCTP(c);
- if (use_kerberos)
- flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
-
- status = cli_full_connection(c, myname,
- host, NULL, port_to_use,
- share, "?????",
- username, workgroup,
- password, flags, &retry);
- if (!NT_STATUS_IS_OK(status)) {
+ if (!open_nbt_connection(c)) {
+ return False;
+ }
+
+ if (!cli_negprot(c)) {
+ printf("%s rejected the negprot (%s)\n",host, cli_errstr(c));
+ cli_shutdown(c);
return False;
}
- if (use_oplocks) (*c)->use_oplocks = True;
- if (use_level_II_oplocks) (*c)->use_level_II_oplocks = True;
- (*c)->timeout = 120000; /* set a really long timeout (2 minutes) */
+ if (!cli_session_setup(c, username,
+ password, strlen(password),
+ password, strlen(password),
+ workgroup)) {
+ printf("%s rejected the sessionsetup (%s)\n", host, cli_errstr(c));
+ cli_shutdown(c);
+ return False;
+ }
+
+ if (!cli_send_tconX(c, share, "?????",
+ password, strlen(password)+1)) {
+ printf("%s refused tree connect (%s)\n", host, cli_errstr(c));
+ cli_shutdown(c);
+ return False;
+ }
return True;
}
@@ -324,16 +310,16 @@ static BOOL rw_torture(struct cli_state *c)
static BOOL run_torture(int dummy)
{
- struct cli_state *cli;
+ struct cli_state cli;
BOOL ret;
cli = current_cli;
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
- ret = rw_torture(cli);
+ ret = rw_torture(&cli);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
ret = False;
}
@@ -343,7 +329,7 @@ static BOOL run_torture(int dummy)
static BOOL rw_torture3(struct cli_state *c, char *lockfname)
{
int fnum = -1;
- unsigned int i = 0;
+ int i = 0;
char buf[131072];
char buf_rd[131072];
unsigned count;
@@ -517,28 +503,28 @@ static BOOL rw_torture2(struct cli_state *c1, struct cli_state *c2)
static BOOL run_readwritetest(int dummy)
{
- static struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
BOOL test1, test2;
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting readwritetest\n");
- test1 = rw_torture2(cli1, cli2);
+ test1 = rw_torture2(&cli1, &cli2);
printf("Passed readwritetest v1: %s\n", BOOLSTR(test1));
- test2 = rw_torture2(cli1, cli1);
+ test2 = rw_torture2(&cli1, &cli1);
printf("Passed readwritetest v2: %s\n", BOOLSTR(test2));
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
test1 = False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
test2 = False;
}
@@ -547,7 +533,7 @@ static BOOL run_readwritetest(int dummy)
static BOOL run_readwritemulti(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
BOOL test;
cli = current_cli;
@@ -566,7 +552,7 @@ static BOOL run_readwritemulti(int dummy)
static BOOL run_readwritelarge(int dummy)
{
- static struct cli_state *cli1;
+ static struct cli_state cli1;
int fnum1;
const char *lockfname = "\\large.dat";
size_t fsize;
@@ -576,25 +562,25 @@ static BOOL run_readwritelarge(int dummy)
if (!torture_open_connection(&cli1)) {
return False;
}
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
memset(buf,'\0',sizeof(buf));
- cli1->max_xmit = 128*1024;
+ cli1.max_xmit = 128*1024;
printf("starting readwritelarge\n");
- cli_unlink(cli1, lockfname);
+ cli_unlink(&cli1, lockfname);
- fnum1 = cli_open(cli1, lockfname, O_RDWR | O_CREAT | O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, lockfname, O_RDWR | O_CREAT | O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open read/write of %s failed (%s)\n", lockfname, cli_errstr(cli1));
+ printf("open read/write of %s failed (%s)\n", lockfname, cli_errstr(&cli1));
return False;
}
- cli_write(cli1, fnum1, 0, buf, 0, sizeof(buf));
+ cli_write(&cli1, fnum1, 0, buf, 0, sizeof(buf));
- if (!cli_qfileinfo(cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
- printf("qfileinfo failed (%s)\n", cli_errstr(cli1));
+ if (!cli_qfileinfo(&cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
+ printf("qfileinfo failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
@@ -605,28 +591,28 @@ static BOOL run_readwritelarge(int dummy)
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- if (!cli_unlink(cli1, lockfname)) {
- printf("unlink failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, lockfname)) {
+ printf("unlink failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- fnum1 = cli_open(cli1, lockfname, O_RDWR | O_CREAT | O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, lockfname, O_RDWR | O_CREAT | O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open read/write of %s failed (%s)\n", lockfname, cli_errstr(cli1));
+ printf("open read/write of %s failed (%s)\n", lockfname, cli_errstr(&cli1));
return False;
}
- cli1->max_xmit = 4*1024;
+ cli1.max_xmit = 4*1024;
- cli_smbwrite(cli1, fnum1, buf, 0, sizeof(buf));
+ cli_smbwrite(&cli1, fnum1, buf, 0, sizeof(buf));
- if (!cli_qfileinfo(cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
- printf("qfileinfo failed (%s)\n", cli_errstr(cli1));
+ if (!cli_qfileinfo(&cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
+ printf("qfileinfo failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
@@ -639,28 +625,28 @@ static BOOL run_readwritelarge(int dummy)
#if 0
/* ToDo - set allocation. JRA */
- if(!cli_set_allocation_size(cli1, fnum1, 0)) {
+ if(!cli_set_allocation_size(&cli1, fnum1, 0)) {
printf("set allocation size to zero failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_qfileinfo(cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
- printf("qfileinfo failed (%s)\n", cli_errstr(cli1));
+ if (!cli_qfileinfo(&cli1, fnum1, NULL, &fsize, NULL, NULL, NULL, NULL, NULL)) {
+ printf("qfileinfo failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
if (fsize != 0)
printf("readwritelarge test 3 (truncate test) succeeded (size = %x)\n", fsize);
#endif
- if (!cli_close(cli1, fnum1)) {
- printf("close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
return correct;
-}
+ }
int line_count = 0;
int nbio_id;
@@ -670,7 +656,7 @@ int nbio_id;
/* run a test that simulates an approximate netbench client load */
static BOOL run_netbench(int client)
{
- struct cli_state *cli;
+ struct cli_state cli;
int i;
fstring fname;
pstring line;
@@ -683,9 +669,9 @@ static BOOL run_netbench(int client)
nbio_id = client;
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
- nb_setup(cli);
+ nb_setup(&cli);
slprintf(cname,sizeof(fname), "client%d", client);
@@ -757,7 +743,7 @@ static BOOL run_netbench(int client)
nb_cleanup();
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -795,7 +781,7 @@ static BOOL run_nbench(int dummy)
*/
static BOOL run_locktest1(int dummy)
{
- struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
const char *fname = "\\lockt1.lck";
int fnum1, fnum2, fnum3;
time_t t1, t2;
@@ -804,40 +790,40 @@ static BOOL run_locktest1(int dummy)
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting locktest1\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
+ fnum2 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
if (fnum2 == -1) {
- printf("open2 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum3 = cli_open(cli2, fname, O_RDWR, DENY_NONE);
+ fnum3 = cli_open(&cli2, fname, O_RDWR, DENY_NONE);
if (fnum3 == -1) {
- printf("open3 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("open3 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_lock(cli1, fnum1, 0, 4, 0, WRITE_LOCK)) {
- printf("lock1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_lock(&cli1, fnum1, 0, 4, 0, WRITE_LOCK)) {
+ printf("lock1 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (cli_lock(cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
printf("lock2 succeeded! This is a locking bug\n");
return False;
} else {
- if (!check_error(__LINE__, cli2, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli2, ERRDOS, ERRlock,
NT_STATUS_LOCK_NOT_GRANTED)) return False;
}
@@ -845,11 +831,11 @@ static BOOL run_locktest1(int dummy)
lock_timeout = (1 + (random() % 20));
printf("Testing lock timeout with timeout=%u\n", lock_timeout);
t1 = time(NULL);
- if (cli_lock(cli2, fnum3, 0, 4, lock_timeout * 1000, WRITE_LOCK)) {
+ if (cli_lock(&cli2, fnum3, 0, 4, lock_timeout * 1000, WRITE_LOCK)) {
printf("lock3 succeeded! This is a locking bug\n");
return False;
} else {
- if (!check_error(__LINE__, cli2, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli2, ERRDOS, ERRlock,
NT_STATUS_FILE_LOCK_CONFLICT)) return False;
}
t2 = time(NULL);
@@ -860,40 +846,40 @@ static BOOL run_locktest1(int dummy)
printf("server slept for %u seconds for a %u second timeout\n",
(unsigned int)(t2-t1), lock_timeout);
- if (!cli_close(cli1, fnum2)) {
- printf("close1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum2)) {
+ printf("close1 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (cli_lock(cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli2, fnum3, 0, 4, 0, WRITE_LOCK)) {
printf("lock4 succeeded! This is a locking bug\n");
return False;
} else {
- if (!check_error(__LINE__, cli2, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli2, ERRDOS, ERRlock,
NT_STATUS_FILE_LOCK_CONFLICT)) return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum3)) {
- printf("close3 failed (%s)\n", cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum3)) {
+ printf("close3 failed (%s)\n", cli_errstr(&cli2));
return False;
}
- if (!cli_unlink(cli1, fname)) {
- printf("unlink failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, fname)) {
+ printf("unlink failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
return False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
return False;
}
@@ -906,7 +892,7 @@ static BOOL run_locktest1(int dummy)
*/
static BOOL run_tcon_test(int dummy)
{
- static struct cli_state *cli1;
+ static struct cli_state cli1;
const char *fname = "\\tcontest.tmp";
int fnum1;
uint16 cnum;
@@ -915,59 +901,59 @@ static BOOL run_tcon_test(int dummy)
if (!torture_open_connection(&cli1)) {
return False;
}
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
printf("starting tcontest\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1)
{
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- cnum = cli1->cnum;
+ cnum = cli1.cnum;
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) != 4)
+ if (cli_write(&cli1, fnum1, 0, buf, 130, 4) != 4)
{
- printf("write failed (%s)", cli_errstr(cli1));
+ printf("write failed (%s)", cli_errstr(&cli1));
return False;
}
- if (!cli_send_tconX(cli1, share, "?????",
+ if (!cli_send_tconX(&cli1, share, "?????",
password, strlen(password)+1)) {
printf("%s refused 2nd tree connect (%s)\n", host,
- cli_errstr(cli1));
- cli_shutdown(cli1);
+ cli_errstr(&cli1));
+ cli_shutdown(&cli1);
return False;
}
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) == 4)
+ if (cli_write(&cli1, fnum1, 0, buf, 130, 4) == 4)
{
- printf("write succeeded (%s)", cli_errstr(cli1));
+ printf("write succeeded (%s)", cli_errstr(&cli1));
return False;
}
- if (cli_close(cli1, fnum1)) {
- printf("close2 succeeded (%s)\n", cli_errstr(cli1));
+ if (cli_close(&cli1, fnum1)) {
+ printf("close2 succeeded (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_tdis(cli1)) {
- printf("tdis failed (%s)\n", cli_errstr(cli1));
+ if (!cli_tdis(&cli1)) {
+ printf("tdis failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli1->cnum = cnum;
+ cli1.cnum = cnum;
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
return False;
}
@@ -989,7 +975,7 @@ static BOOL run_tcon_test(int dummy)
*/
static BOOL run_locktest2(int dummy)
{
- static struct cli_state *cli;
+ static struct cli_state cli;
const char *fname = "\\lockt2.lck";
int fnum1, fnum2, fnum3;
BOOL correct = True;
@@ -998,117 +984,117 @@ static BOOL run_locktest2(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
printf("starting locktest2\n");
- cli_unlink(cli, fname);
+ cli_unlink(&cli, fname);
- cli_setpid(cli, 1);
+ cli_setpid(&cli, 1);
- fnum1 = cli_open(cli, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli));
return False;
}
- fnum2 = cli_open(cli, fname, O_RDWR, DENY_NONE);
+ fnum2 = cli_open(&cli, fname, O_RDWR, DENY_NONE);
if (fnum2 == -1) {
- printf("open2 of %s failed (%s)\n", fname, cli_errstr(cli));
+ printf("open2 of %s failed (%s)\n", fname, cli_errstr(&cli));
return False;
}
- cli_setpid(cli, 2);
+ cli_setpid(&cli, 2);
- fnum3 = cli_open(cli, fname, O_RDWR, DENY_NONE);
+ fnum3 = cli_open(&cli, fname, O_RDWR, DENY_NONE);
if (fnum3 == -1) {
- printf("open3 of %s failed (%s)\n", fname, cli_errstr(cli));
+ printf("open3 of %s failed (%s)\n", fname, cli_errstr(&cli));
return False;
}
- cli_setpid(cli, 1);
+ cli_setpid(&cli, 1);
- if (!cli_lock(cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
- printf("lock1 failed (%s)\n", cli_errstr(cli));
+ if (!cli_lock(&cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
+ printf("lock1 failed (%s)\n", cli_errstr(&cli));
return False;
}
- if (cli_lock(cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli, fnum1, 0, 4, 0, WRITE_LOCK)) {
printf("WRITE lock1 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli, ERRDOS, ERRlock,
NT_STATUS_LOCK_NOT_GRANTED)) return False;
}
- if (cli_lock(cli, fnum2, 0, 4, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli, fnum2, 0, 4, 0, WRITE_LOCK)) {
printf("WRITE lock2 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli, ERRDOS, ERRlock,
NT_STATUS_LOCK_NOT_GRANTED)) return False;
}
- if (cli_lock(cli, fnum2, 0, 4, 0, READ_LOCK)) {
+ if (cli_lock(&cli, fnum2, 0, 4, 0, READ_LOCK)) {
printf("READ lock2 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli, ERRDOS, ERRlock,
+ if (!check_error(__LINE__, &cli, ERRDOS, ERRlock,
NT_STATUS_FILE_LOCK_CONFLICT)) return False;
}
- if (!cli_lock(cli, fnum1, 100, 4, 0, WRITE_LOCK)) {
- printf("lock at 100 failed (%s)\n", cli_errstr(cli));
+ if (!cli_lock(&cli, fnum1, 100, 4, 0, WRITE_LOCK)) {
+ printf("lock at 100 failed (%s)\n", cli_errstr(&cli));
}
- cli_setpid(cli, 2);
- if (cli_unlock(cli, fnum1, 100, 4)) {
+ cli_setpid(&cli, 2);
+ if (cli_unlock(&cli, fnum1, 100, 4)) {
printf("unlock at 100 succeeded! This is a locking bug\n");
correct = False;
}
- if (cli_unlock(cli, fnum1, 0, 4)) {
+ if (cli_unlock(&cli, fnum1, 0, 4)) {
printf("unlock1 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli,
+ if (!check_error(__LINE__, &cli,
ERRDOS, ERRlock,
NT_STATUS_RANGE_NOT_LOCKED)) return False;
}
- if (cli_unlock(cli, fnum1, 0, 8)) {
+ if (cli_unlock(&cli, fnum1, 0, 8)) {
printf("unlock2 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli,
+ if (!check_error(__LINE__, &cli,
ERRDOS, ERRlock,
NT_STATUS_RANGE_NOT_LOCKED)) return False;
}
- if (cli_lock(cli, fnum3, 0, 4, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli, fnum3, 0, 4, 0, WRITE_LOCK)) {
printf("lock3 succeeded! This is a locking bug\n");
correct = False;
} else {
- if (!check_error(__LINE__, cli, ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED)) return False;
+ if (!check_error(__LINE__, &cli, ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED)) return False;
}
- cli_setpid(cli, 1);
+ cli_setpid(&cli, 1);
- if (!cli_close(cli, fnum1)) {
- printf("close1 failed (%s)\n", cli_errstr(cli));
+ if (!cli_close(&cli, fnum1)) {
+ printf("close1 failed (%s)\n", cli_errstr(&cli));
return False;
}
- if (!cli_close(cli, fnum2)) {
- printf("close2 failed (%s)\n", cli_errstr(cli));
+ if (!cli_close(&cli, fnum2)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli));
return False;
}
- if (!cli_close(cli, fnum3)) {
- printf("close3 failed (%s)\n", cli_errstr(cli));
+ if (!cli_close(&cli, fnum3)) {
+ printf("close3 failed (%s)\n", cli_errstr(&cli));
return False;
}
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -1125,7 +1111,7 @@ static BOOL run_locktest2(int dummy)
*/
static BOOL run_locktest3(int dummy)
{
- static struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
const char *fname = "\\lockt3.lck";
int fnum1, fnum2, i;
uint32 offset;
@@ -1136,37 +1122,37 @@ static BOOL run_locktest3(int dummy)
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting locktest3\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_open(cli2, fname, O_RDWR, DENY_NONE);
+ fnum2 = cli_open(&cli2, fname, O_RDWR, DENY_NONE);
if (fnum2 == -1) {
- printf("open2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("open2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
for (offset=i=0;i<torture_numops;i++) {
NEXT_OFFSET;
- if (!cli_lock(cli1, fnum1, offset-1, 1, 0, WRITE_LOCK)) {
+ if (!cli_lock(&cli1, fnum1, offset-1, 1, 0, WRITE_LOCK)) {
printf("lock1 %d failed (%s)\n",
i,
- cli_errstr(cli1));
+ cli_errstr(&cli1));
return False;
}
- if (!cli_lock(cli2, fnum2, offset-2, 1, 0, WRITE_LOCK)) {
+ if (!cli_lock(&cli2, fnum2, offset-2, 1, 0, WRITE_LOCK)) {
printf("lock2 %d failed (%s)\n",
i,
- cli_errstr(cli1));
+ cli_errstr(&cli1));
return False;
}
}
@@ -1174,22 +1160,22 @@ static BOOL run_locktest3(int dummy)
for (offset=i=0;i<torture_numops;i++) {
NEXT_OFFSET;
- if (cli_lock(cli1, fnum1, offset-2, 1, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli1, fnum1, offset-2, 1, 0, WRITE_LOCK)) {
printf("error: lock1 %d succeeded!\n", i);
return False;
}
- if (cli_lock(cli2, fnum2, offset-1, 1, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli2, fnum2, offset-1, 1, 0, WRITE_LOCK)) {
printf("error: lock2 %d succeeded!\n", i);
return False;
}
- if (cli_lock(cli1, fnum1, offset-1, 1, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli1, fnum1, offset-1, 1, 0, WRITE_LOCK)) {
printf("error: lock3 %d succeeded!\n", i);
return False;
}
- if (cli_lock(cli2, fnum2, offset-2, 1, 0, WRITE_LOCK)) {
+ if (cli_lock(&cli2, fnum2, offset-2, 1, 0, WRITE_LOCK)) {
printf("error: lock4 %d succeeded!\n", i);
return False;
}
@@ -1198,41 +1184,41 @@ static BOOL run_locktest3(int dummy)
for (offset=i=0;i<torture_numops;i++) {
NEXT_OFFSET;
- if (!cli_unlock(cli1, fnum1, offset-1, 1)) {
+ if (!cli_unlock(&cli1, fnum1, offset-1, 1)) {
printf("unlock1 %d failed (%s)\n",
i,
- cli_errstr(cli1));
+ cli_errstr(&cli1));
return False;
}
- if (!cli_unlock(cli2, fnum2, offset-2, 1)) {
+ if (!cli_unlock(&cli2, fnum2, offset-2, 1)) {
printf("unlock2 %d failed (%s)\n",
i,
- cli_errstr(cli1));
+ cli_errstr(&cli1));
return False;
}
}
- if (!cli_close(cli1, fnum1)) {
- printf("close1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close1 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("close2 failed (%s)\n", cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli2));
return False;
}
- if (!cli_unlink(cli1, fname)) {
- printf("unlink failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, fname)) {
+ printf("unlink failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
correct = False;
}
@@ -1250,7 +1236,7 @@ static BOOL run_locktest3(int dummy)
*/
static BOOL run_locktest4(int dummy)
{
- static struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
const char *fname = "\\lockt4.lck";
int fnum1, fnum2, f;
BOOL ret;
@@ -1261,156 +1247,156 @@ static BOOL run_locktest4(int dummy)
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting locktest4\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
- fnum2 = cli_open(cli2, fname, O_RDWR, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum2 = cli_open(&cli2, fname, O_RDWR, DENY_NONE);
memset(buf, 0, sizeof(buf));
- if (cli_write(cli1, fnum1, 0, buf, 0, sizeof(buf)) != sizeof(buf)) {
+ if (cli_write(&cli1, fnum1, 0, buf, 0, sizeof(buf)) != sizeof(buf)) {
printf("Failed to create file\n");
correct = False;
goto fail;
}
- ret = cli_lock(cli1, fnum1, 0, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 2, 4, 0, WRITE_LOCK);
+ ret = cli_lock(&cli1, fnum1, 0, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 2, 4, 0, WRITE_LOCK);
EXPECTED(ret, False);
printf("the same process %s set overlapping write locks\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 10, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 12, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 10, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 12, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the same process %s set overlapping read locks\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 20, 4, 0, WRITE_LOCK) &&
- cli_lock(cli2, fnum2, 22, 4, 0, WRITE_LOCK);
+ ret = cli_lock(&cli1, fnum1, 20, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli2, fnum2, 22, 4, 0, WRITE_LOCK);
EXPECTED(ret, False);
printf("a different connection %s set overlapping write locks\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 30, 4, 0, READ_LOCK) &&
- cli_lock(cli2, fnum2, 32, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 30, 4, 0, READ_LOCK) &&
+ cli_lock(&cli2, fnum2, 32, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("a different connection %s set overlapping read locks\n", ret?"can":"cannot");
- ret = (cli_setpid(cli1, 1), cli_lock(cli1, fnum1, 40, 4, 0, WRITE_LOCK)) &&
- (cli_setpid(cli1, 2), cli_lock(cli1, fnum1, 42, 4, 0, WRITE_LOCK));
+ ret = (cli_setpid(&cli1, 1), cli_lock(&cli1, fnum1, 40, 4, 0, WRITE_LOCK)) &&
+ (cli_setpid(&cli1, 2), cli_lock(&cli1, fnum1, 42, 4, 0, WRITE_LOCK));
EXPECTED(ret, False);
printf("a different pid %s set overlapping write locks\n", ret?"can":"cannot");
- ret = (cli_setpid(cli1, 1), cli_lock(cli1, fnum1, 50, 4, 0, READ_LOCK)) &&
- (cli_setpid(cli1, 2), cli_lock(cli1, fnum1, 52, 4, 0, READ_LOCK));
+ ret = (cli_setpid(&cli1, 1), cli_lock(&cli1, fnum1, 50, 4, 0, READ_LOCK)) &&
+ (cli_setpid(&cli1, 2), cli_lock(&cli1, fnum1, 52, 4, 0, READ_LOCK));
EXPECTED(ret, True);
printf("a different pid %s set overlapping read locks\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 60, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 60, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 60, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 60, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the same process %s set the same read lock twice\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 70, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 70, 4, 0, WRITE_LOCK);
+ ret = cli_lock(&cli1, fnum1, 70, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 70, 4, 0, WRITE_LOCK);
EXPECTED(ret, False);
printf("the same process %s set the same write lock twice\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 80, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 80, 4, 0, WRITE_LOCK);
+ ret = cli_lock(&cli1, fnum1, 80, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 80, 4, 0, WRITE_LOCK);
EXPECTED(ret, False);
printf("the same process %s overlay a read lock with a write lock\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 90, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 90, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 90, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 90, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the same process %s overlay a write lock with a read lock\n", ret?"can":"cannot");
- ret = (cli_setpid(cli1, 1), cli_lock(cli1, fnum1, 100, 4, 0, WRITE_LOCK)) &&
- (cli_setpid(cli1, 2), cli_lock(cli1, fnum1, 100, 4, 0, READ_LOCK));
+ ret = (cli_setpid(&cli1, 1), cli_lock(&cli1, fnum1, 100, 4, 0, WRITE_LOCK)) &&
+ (cli_setpid(&cli1, 2), cli_lock(&cli1, fnum1, 100, 4, 0, READ_LOCK));
EXPECTED(ret, False);
printf("a different pid %s overlay a write lock with a read lock\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 110, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 112, 4, 0, READ_LOCK) &&
- cli_unlock(cli1, fnum1, 110, 6);
+ ret = cli_lock(&cli1, fnum1, 110, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 112, 4, 0, READ_LOCK) &&
+ cli_unlock(&cli1, fnum1, 110, 6);
EXPECTED(ret, False);
printf("the same process %s coalesce read locks\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 120, 4, 0, WRITE_LOCK) &&
- (cli_read(cli2, fnum2, buf, 120, 4) == 4);
+ ret = cli_lock(&cli1, fnum1, 120, 4, 0, WRITE_LOCK) &&
+ (cli_read(&cli2, fnum2, buf, 120, 4) == 4);
EXPECTED(ret, False);
printf("this server %s strict write locking\n", ret?"doesn't do":"does");
- ret = cli_lock(cli1, fnum1, 130, 4, 0, READ_LOCK) &&
- (cli_write(cli2, fnum2, 0, buf, 130, 4) == 4);
+ ret = cli_lock(&cli1, fnum1, 130, 4, 0, READ_LOCK) &&
+ (cli_write(&cli2, fnum2, 0, buf, 130, 4) == 4);
EXPECTED(ret, False);
printf("this server %s strict read locking\n", ret?"doesn't do":"does");
- ret = cli_lock(cli1, fnum1, 140, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 140, 4, 0, READ_LOCK) &&
- cli_unlock(cli1, fnum1, 140, 4) &&
- cli_unlock(cli1, fnum1, 140, 4);
+ ret = cli_lock(&cli1, fnum1, 140, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 140, 4, 0, READ_LOCK) &&
+ cli_unlock(&cli1, fnum1, 140, 4) &&
+ cli_unlock(&cli1, fnum1, 140, 4);
EXPECTED(ret, True);
printf("this server %s do recursive read locking\n", ret?"does":"doesn't");
- ret = cli_lock(cli1, fnum1, 150, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 150, 4, 0, READ_LOCK) &&
- cli_unlock(cli1, fnum1, 150, 4) &&
- (cli_read(cli2, fnum2, buf, 150, 4) == 4) &&
- !(cli_write(cli2, fnum2, 0, buf, 150, 4) == 4) &&
- cli_unlock(cli1, fnum1, 150, 4);
+ ret = cli_lock(&cli1, fnum1, 150, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 150, 4, 0, READ_LOCK) &&
+ cli_unlock(&cli1, fnum1, 150, 4) &&
+ (cli_read(&cli2, fnum2, buf, 150, 4) == 4) &&
+ !(cli_write(&cli2, fnum2, 0, buf, 150, 4) == 4) &&
+ cli_unlock(&cli1, fnum1, 150, 4);
EXPECTED(ret, True);
printf("this server %s do recursive lock overlays\n", ret?"does":"doesn't");
- ret = cli_lock(cli1, fnum1, 160, 4, 0, READ_LOCK) &&
- cli_unlock(cli1, fnum1, 160, 4) &&
- (cli_write(cli2, fnum2, 0, buf, 160, 4) == 4) &&
- (cli_read(cli2, fnum2, buf, 160, 4) == 4);
+ ret = cli_lock(&cli1, fnum1, 160, 4, 0, READ_LOCK) &&
+ cli_unlock(&cli1, fnum1, 160, 4) &&
+ (cli_write(&cli2, fnum2, 0, buf, 160, 4) == 4) &&
+ (cli_read(&cli2, fnum2, buf, 160, 4) == 4);
EXPECTED(ret, True);
printf("the same process %s remove a read lock using write locking\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 170, 4, 0, WRITE_LOCK) &&
- cli_unlock(cli1, fnum1, 170, 4) &&
- (cli_write(cli2, fnum2, 0, buf, 170, 4) == 4) &&
- (cli_read(cli2, fnum2, buf, 170, 4) == 4);
+ ret = cli_lock(&cli1, fnum1, 170, 4, 0, WRITE_LOCK) &&
+ cli_unlock(&cli1, fnum1, 170, 4) &&
+ (cli_write(&cli2, fnum2, 0, buf, 170, 4) == 4) &&
+ (cli_read(&cli2, fnum2, buf, 170, 4) == 4);
EXPECTED(ret, True);
printf("the same process %s remove a write lock using read locking\n", ret?"can":"cannot");
- ret = cli_lock(cli1, fnum1, 190, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 190, 4, 0, READ_LOCK) &&
- cli_unlock(cli1, fnum1, 190, 4) &&
- !(cli_write(cli2, fnum2, 0, buf, 190, 4) == 4) &&
- (cli_read(cli2, fnum2, buf, 190, 4) == 4);
+ ret = cli_lock(&cli1, fnum1, 190, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 190, 4, 0, READ_LOCK) &&
+ cli_unlock(&cli1, fnum1, 190, 4) &&
+ !(cli_write(&cli2, fnum2, 0, buf, 190, 4) == 4) &&
+ (cli_read(&cli2, fnum2, buf, 190, 4) == 4);
EXPECTED(ret, True);
printf("the same process %s remove the first lock first\n", ret?"does":"doesn't");
- cli_close(cli1, fnum1);
- cli_close(cli2, fnum2);
- fnum1 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
- f = cli_open(cli1, fname, O_RDWR, DENY_NONE);
- ret = cli_lock(cli1, fnum1, 0, 8, 0, READ_LOCK) &&
- cli_lock(cli1, f, 0, 1, 0, READ_LOCK) &&
- cli_close(cli1, fnum1) &&
- ((fnum1 = cli_open(cli1, fname, O_RDWR, DENY_NONE)) != -1) &&
- cli_lock(cli1, fnum1, 7, 1, 0, WRITE_LOCK);
- cli_close(cli1, f);
- cli_close(cli1, fnum1);
+ cli_close(&cli1, fnum1);
+ cli_close(&cli2, fnum2);
+ fnum1 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
+ f = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
+ ret = cli_lock(&cli1, fnum1, 0, 8, 0, READ_LOCK) &&
+ cli_lock(&cli1, f, 0, 1, 0, READ_LOCK) &&
+ cli_close(&cli1, fnum1) &&
+ ((fnum1 = cli_open(&cli1, fname, O_RDWR, DENY_NONE)) != -1) &&
+ cli_lock(&cli1, fnum1, 7, 1, 0, WRITE_LOCK);
+ cli_close(&cli1, f);
+ cli_close(&cli1, fnum1);
EXPECTED(ret, True);
printf("the server %s have the NT byte range lock bug\n", !ret?"does":"doesn't");
fail:
- cli_close(cli1, fnum1);
- cli_close(cli2, fnum2);
- cli_unlink(cli1, fname);
- torture_close_connection(cli1);
- torture_close_connection(cli2);
+ cli_close(&cli1, fnum1);
+ cli_close(&cli2, fnum2);
+ cli_unlink(&cli1, fname);
+ torture_close_connection(&cli1);
+ torture_close_connection(&cli2);
printf("finished locktest4\n");
return correct;
@@ -1421,7 +1407,7 @@ static BOOL run_locktest4(int dummy)
*/
static BOOL run_locktest5(int dummy)
{
- static struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
const char *fname = "\\lockt5.lck";
int fnum1, fnum2, fnum3;
BOOL ret;
@@ -1432,61 +1418,61 @@ static BOOL run_locktest5(int dummy)
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting locktest5\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
- fnum2 = cli_open(cli2, fname, O_RDWR, DENY_NONE);
- fnum3 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum2 = cli_open(&cli2, fname, O_RDWR, DENY_NONE);
+ fnum3 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
memset(buf, 0, sizeof(buf));
- if (cli_write(cli1, fnum1, 0, buf, 0, sizeof(buf)) != sizeof(buf)) {
+ if (cli_write(&cli1, fnum1, 0, buf, 0, sizeof(buf)) != sizeof(buf)) {
printf("Failed to create file\n");
correct = False;
goto fail;
}
/* Check for NT bug... */
- ret = cli_lock(cli1, fnum1, 0, 8, 0, READ_LOCK) &&
- cli_lock(cli1, fnum3, 0, 1, 0, READ_LOCK);
- cli_close(cli1, fnum1);
- fnum1 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
- ret = cli_lock(cli1, fnum1, 7, 1, 0, WRITE_LOCK);
+ ret = cli_lock(&cli1, fnum1, 0, 8, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum3, 0, 1, 0, READ_LOCK);
+ cli_close(&cli1, fnum1);
+ fnum1 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
+ ret = cli_lock(&cli1, fnum1, 7, 1, 0, WRITE_LOCK);
EXPECTED(ret, True);
printf("this server %s the NT locking bug\n", ret ? "doesn't have" : "has");
- cli_close(cli1, fnum1);
- fnum1 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
- cli_unlock(cli1, fnum3, 0, 1);
+ cli_close(&cli1, fnum1);
+ fnum1 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
+ cli_unlock(&cli1, fnum3, 0, 1);
- ret = cli_lock(cli1, fnum1, 0, 4, 0, WRITE_LOCK) &&
- cli_lock(cli1, fnum1, 1, 1, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 0, 4, 0, WRITE_LOCK) &&
+ cli_lock(&cli1, fnum1, 1, 1, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the same process %s overlay a write with a read lock\n", ret?"can":"cannot");
- ret = cli_lock(cli2, fnum2, 0, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli2, fnum2, 0, 4, 0, READ_LOCK);
EXPECTED(ret, False);
printf("a different processs %s get a read lock on the first process lock stack\n", ret?"can":"cannot");
/* Unlock the process 2 lock. */
- cli_unlock(cli2, fnum2, 0, 4);
+ cli_unlock(&cli2, fnum2, 0, 4);
- ret = cli_lock(cli1, fnum3, 0, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum3, 0, 4, 0, READ_LOCK);
EXPECTED(ret, False);
printf("the same processs on a different fnum %s get a read lock\n", ret?"can":"cannot");
/* Unlock the process 1 fnum3 lock. */
- cli_unlock(cli1, fnum3, 0, 4);
+ cli_unlock(&cli1, fnum3, 0, 4);
/* Stack 2 more locks here. */
- ret = cli_lock(cli1, fnum1, 0, 4, 0, READ_LOCK) &&
- cli_lock(cli1, fnum1, 0, 4, 0, READ_LOCK);
+ ret = cli_lock(&cli1, fnum1, 0, 4, 0, READ_LOCK) &&
+ cli_lock(&cli1, fnum1, 0, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the same process %s stack read locks\n", ret?"can":"cannot");
@@ -1494,44 +1480,44 @@ static BOOL run_locktest5(int dummy)
/* Unlock the first process lock, then check this was the WRITE lock that was
removed. */
- ret = cli_unlock(cli1, fnum1, 0, 4) &&
- cli_lock(cli2, fnum2, 0, 4, 0, READ_LOCK);
+ ret = cli_unlock(&cli1, fnum1, 0, 4) &&
+ cli_lock(&cli2, fnum2, 0, 4, 0, READ_LOCK);
EXPECTED(ret, True);
printf("the first unlock removes the %s lock\n", ret?"WRITE":"READ");
/* Unlock the process 2 lock. */
- cli_unlock(cli2, fnum2, 0, 4);
+ cli_unlock(&cli2, fnum2, 0, 4);
/* We should have 3 stacked locks here. Ensure we need to do 3 unlocks. */
- ret = cli_unlock(cli1, fnum1, 1, 1) &&
- cli_unlock(cli1, fnum1, 0, 4) &&
- cli_unlock(cli1, fnum1, 0, 4);
+ ret = cli_unlock(&cli1, fnum1, 1, 1) &&
+ cli_unlock(&cli1, fnum1, 0, 4) &&
+ cli_unlock(&cli1, fnum1, 0, 4);
EXPECTED(ret, True);
printf("the same process %s unlock the stack of 4 locks\n", ret?"can":"cannot");
/* Ensure the next unlock fails. */
- ret = cli_unlock(cli1, fnum1, 0, 4);
+ ret = cli_unlock(&cli1, fnum1, 0, 4);
EXPECTED(ret, False);
printf("the same process %s count the lock stack\n", !ret?"can":"cannot");
/* Ensure connection 2 can get a write lock. */
- ret = cli_lock(cli2, fnum2, 0, 4, 0, WRITE_LOCK);
+ ret = cli_lock(&cli2, fnum2, 0, 4, 0, WRITE_LOCK);
EXPECTED(ret, True);
printf("a different processs %s get a write lock on the unlocked stack\n", ret?"can":"cannot");
fail:
- cli_close(cli1, fnum1);
- cli_close(cli2, fnum2);
- cli_unlink(cli1, fname);
- if (!torture_close_connection(cli1)) {
+ cli_close(&cli1, fnum1);
+ cli_close(&cli2, fnum2);
+ cli_unlink(&cli1, fname);
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
correct = False;
}
@@ -1545,7 +1531,7 @@ static BOOL run_locktest5(int dummy)
*/
static BOOL run_locktest6(int dummy)
{
- static struct cli_state *cli;
+ static struct cli_state cli;
const char *fname[1] = { "\\lock6.txt" };
int i;
int fnum;
@@ -1555,174 +1541,41 @@ static BOOL run_locktest6(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
printf("starting locktest6\n");
for (i=0;i<1;i++) {
printf("Testing %s\n", fname[i]);
- cli_unlink(cli, fname[i]);
+ cli_unlink(&cli, fname[i]);
- fnum = cli_open(cli, fname[i], O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
- status = cli_locktype(cli, fnum, 0, 8, 0, LOCKING_ANDX_CHANGE_LOCKTYPE);
- cli_close(cli, fnum);
+ fnum = cli_open(&cli, fname[i], O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ status = cli_locktype(&cli, fnum, 0, 8, 0, LOCKING_ANDX_CHANGE_LOCKTYPE);
+ cli_close(&cli, fnum);
printf("CHANGE_LOCKTYPE gave %s\n", nt_errstr(status));
- fnum = cli_open(cli, fname[i], O_RDWR, DENY_NONE);
- status = cli_locktype(cli, fnum, 0, 8, 0, LOCKING_ANDX_CANCEL_LOCK);
- cli_close(cli, fnum);
+ fnum = cli_open(&cli, fname[i], O_RDWR, DENY_NONE);
+ status = cli_locktype(&cli, fnum, 0, 8, 0, LOCKING_ANDX_CANCEL_LOCK);
+ cli_close(&cli, fnum);
printf("CANCEL_LOCK gave %s\n", nt_errstr(status));
- cli_unlink(cli, fname[i]);
+ cli_unlink(&cli, fname[i]);
}
- torture_close_connection(cli);
+ torture_close_connection(&cli);
printf("finished locktest6\n");
return True;
}
-static BOOL run_locktest7(int dummy)
-{
- struct cli_state *cli1;
- const char *fname = "\\lockt7.lck";
- int fnum1;
- char buf[200];
- BOOL correct = False;
-
- if (!torture_open_connection(&cli1)) {
- return False;
- }
-
- cli_sockopt(cli1, sockops);
-
- printf("starting locktest7\n");
-
- cli_unlink(cli1, fname);
-
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
-
- memset(buf, 0, sizeof(buf));
-
- if (cli_write(cli1, fnum1, 0, buf, 0, sizeof(buf)) != sizeof(buf)) {
- printf("Failed to create file\n");
- goto fail;
- }
-
- cli_setpid(cli1, 1);
-
- if (!cli_lock(cli1, fnum1, 130, 4, 0, READ_LOCK)) {
- printf("Unable to apply read lock on range 130:4, error was %s\n", cli_errstr(cli1));
- goto fail;
- } else {
- printf("pid1 successfully locked range 130:4 for READ\n");
- }
-
- if (cli_read(cli1, fnum1, buf, 130, 4) != 4) {
- printf("pid1 unable to read the range 130:4, error was %s\n", cli_errstr(cli1));
- goto fail;
- } else {
- printf("pid1 successfully read the range 130:4\n");
- }
-
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) != 4) {
- printf("pid1 unable to write to the range 130:4, error was %s\n", cli_errstr(cli1));
- if (NT_STATUS_V(cli_nt_error(cli1)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
- printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT)\n");
- goto fail;
- }
- } else {
- printf("pid1 successfully wrote to the range 130:4 (should be denied)\n");
- goto fail;
- }
-
- cli_setpid(cli1, 2);
-
- if (cli_read(cli1, fnum1, buf, 130, 4) != 4) {
- printf("pid2 unable to read the range 130:4, error was %s\n", cli_errstr(cli1));
- } else {
- printf("pid2 successfully read the range 130:4\n");
- }
-
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) != 4) {
- printf("pid2 unable to write to the range 130:4, error was %s\n", cli_errstr(cli1));
- if (NT_STATUS_V(cli_nt_error(cli1)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
- printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT)\n");
- goto fail;
- }
- } else {
- printf("pid2 successfully wrote to the range 130:4 (should be denied)\n");
- goto fail;
- }
-
- cli_setpid(cli1, 1);
- cli_unlock(cli1, fnum1, 130, 4);
-
- if (!cli_lock(cli1, fnum1, 130, 4, 0, WRITE_LOCK)) {
- printf("Unable to apply write lock on range 130:4, error was %s\n", cli_errstr(cli1));
- goto fail;
- } else {
- printf("pid1 successfully locked range 130:4 for WRITE\n");
- }
-
- if (cli_read(cli1, fnum1, buf, 130, 4) != 4) {
- printf("pid1 unable to read the range 130:4, error was %s\n", cli_errstr(cli1));
- goto fail;
- } else {
- printf("pid1 successfully read the range 130:4\n");
- }
-
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) != 4) {
- printf("pid1 unable to write to the range 130:4, error was %s\n", cli_errstr(cli1));
- goto fail;
- } else {
- printf("pid1 successfully wrote to the range 130:4\n");
- }
-
- cli_setpid(cli1, 2);
-
- if (cli_read(cli1, fnum1, buf, 130, 4) != 4) {
- printf("pid2 unable to read the range 130:4, error was %s\n", cli_errstr(cli1));
- if (NT_STATUS_V(cli_nt_error(cli1)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
- printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT)\n");
- goto fail;
- }
- } else {
- printf("pid2 successfully read the range 130:4 (should be denied)\n");
- goto fail;
- }
-
- if (cli_write(cli1, fnum1, 0, buf, 130, 4) != 4) {
- printf("pid2 unable to write to the range 130:4, error was %s\n", cli_errstr(cli1));
- if (NT_STATUS_V(cli_nt_error(cli1)) != NT_STATUS_V(NT_STATUS_FILE_LOCK_CONFLICT)) {
- printf("Incorrect error (should be NT_STATUS_FILE_LOCK_CONFLICT)\n");
- goto fail;
- }
- } else {
- printf("pid2 successfully wrote to the range 130:4 (should be denied)\n");
- goto fail;
- }
-
- cli_unlock(cli1, fnum1, 130, 0);
- correct = True;
-
-fail:
- cli_close(cli1, fnum1);
- cli_unlink(cli1, fname);
- torture_close_connection(cli1);
-
- printf("finished locktest7\n");
- return correct;
-}
-
/*
test whether fnums and tids open on one VC are available on another (a major
security hole)
*/
static BOOL run_fdpasstest(int dummy)
{
- struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2, cli3;
const char *fname = "\\fdpass.tst";
int fnum1;
pstring buf;
@@ -1730,39 +1583,40 @@ static BOOL run_fdpasstest(int dummy)
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
}
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
printf("starting fdpasstest\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (cli_write(cli1, fnum1, 0, "hello world\n", 0, 13) != 13) {
- printf("write failed (%s)\n", cli_errstr(cli1));
+ if (cli_write(&cli1, fnum1, 0, "hello world\n", 0, 13) != 13) {
+ printf("write failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli2->vuid = cli1->vuid;
- cli2->cnum = cli1->cnum;
- cli2->pid = cli1->pid;
+ cli3 = cli2;
+ cli3.vuid = cli1.vuid;
+ cli3.cnum = cli1.cnum;
+ cli3.pid = cli1.pid;
- if (cli_read(cli2, fnum1, buf, 0, 13) == 13) {
+ if (cli_read(&cli3, fnum1, buf, 0, 13) == 13) {
printf("read succeeded! nasty security hole [%s]\n",
buf);
return False;
}
- cli_close(cli1, fnum1);
- cli_unlink(cli1, fname);
+ cli_close(&cli1, fnum1);
+ cli_unlink(&cli1, fname);
- torture_close_connection(cli1);
- torture_close_connection(cli2);
+ torture_close_connection(&cli1);
+ torture_close_connection(&cli2);
printf("finished fdpasstest\n");
return True;
@@ -1776,7 +1630,7 @@ static BOOL run_fdpasstest(int dummy)
*/
static BOOL run_unlinktest(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
const char *fname = "\\unlink.tst";
int fnum;
BOOL correct = True;
@@ -1785,32 +1639,32 @@ static BOOL run_unlinktest(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
printf("starting unlink test\n");
- cli_unlink(cli, fname);
+ cli_unlink(&cli, fname);
- cli_setpid(cli, 1);
+ cli_setpid(&cli, 1);
- fnum = cli_open(cli, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum = cli_open(&cli, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli));
return False;
}
- if (cli_unlink(cli, fname)) {
+ if (cli_unlink(&cli, fname)) {
printf("error: server allowed unlink on an open file\n");
correct = False;
} else {
- correct = check_error(__LINE__, cli, ERRDOS, ERRbadshare,
+ correct = check_error(__LINE__, &cli, ERRDOS, ERRbadshare,
NT_STATUS_SHARING_VIOLATION);
}
- cli_close(cli, fnum);
- cli_unlink(cli, fname);
+ cli_close(&cli, fnum);
+ cli_unlink(&cli, fname);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -1825,7 +1679,7 @@ test how many open files this server supports on the one socket
*/
static BOOL run_maxfidtest(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
const char *template = "\\maxfid.%d.%d";
fstring fname;
int fnums[0x11000], i;
@@ -1839,15 +1693,15 @@ static BOOL run_maxfidtest(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
for (i=0; i<0x11000; i++) {
slprintf(fname,sizeof(fname)-1,template, i,(int)getpid());
- if ((fnums[i] = cli_open(cli, fname,
+ if ((fnums[i] = cli_open(&cli, fname,
O_RDWR|O_CREAT|O_TRUNC, DENY_NONE)) ==
-1) {
printf("open of %s failed (%s)\n",
- fname, cli_errstr(cli));
+ fname, cli_errstr(&cli));
printf("maximum fnum is %d\n", i);
break;
}
@@ -1859,10 +1713,10 @@ static BOOL run_maxfidtest(int dummy)
printf("cleaning up\n");
for (;i>=0;i--) {
slprintf(fname,sizeof(fname)-1,template, i,(int)getpid());
- cli_close(cli, fnums[i]);
- if (!cli_unlink(cli, fname)) {
+ cli_close(&cli, fnums[i]);
+ if (!cli_unlink(&cli, fname)) {
printf("unlink of %s failed (%s)\n",
- fname, cli_errstr(cli));
+ fname, cli_errstr(&cli));
correct = False;
}
printf("%6d\r", i);
@@ -1870,7 +1724,7 @@ static BOOL run_maxfidtest(int dummy)
printf("%6d\n", 0);
printf("maxfid test finished\n");
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
return correct;
@@ -1920,7 +1774,7 @@ static BOOL run_randomipc(int dummy)
int rdrcnt,rprcnt;
pstring param;
int api, param_len, i;
- struct cli_state *cli;
+ static struct cli_state cli;
BOOL correct = True;
int count = 50000;
@@ -1938,7 +1792,7 @@ static BOOL run_randomipc(int dummy)
SSVAL(param,0,api);
- cli_api(cli,
+ cli_api(&cli,
param, param_len, 8,
NULL, 0, BUFFER_SIZE,
&rparam, &rprcnt,
@@ -1949,7 +1803,7 @@ static BOOL run_randomipc(int dummy)
}
printf("%d/%d\n", i, count);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -1974,7 +1828,7 @@ static void browse_callback(const char *sname, uint32 stype,
*/
static BOOL run_browsetest(int dummy)
{
- static struct cli_state *cli;
+ static struct cli_state cli;
BOOL correct = True;
printf("starting browse test\n");
@@ -1984,16 +1838,16 @@ static BOOL run_browsetest(int dummy)
}
printf("domain list:\n");
- cli_NetServerEnum(cli, cli->server_domain,
+ cli_NetServerEnum(&cli, cli.server_domain,
SV_TYPE_DOMAIN_ENUM,
browse_callback, NULL);
printf("machine list:\n");
- cli_NetServerEnum(cli, cli->server_domain,
+ cli_NetServerEnum(&cli, cli.server_domain,
SV_TYPE_ALL,
browse_callback, NULL);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -2009,7 +1863,7 @@ static BOOL run_browsetest(int dummy)
*/
static BOOL run_attrtest(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
int fnum;
time_t t, t2;
const char *fname = "\\attrib.tst";
@@ -2021,12 +1875,12 @@ static BOOL run_attrtest(int dummy)
return False;
}
- cli_unlink(cli, fname);
- fnum = cli_open(cli, fname,
+ cli_unlink(&cli, fname);
+ fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
- cli_close(cli, fnum);
- if (!cli_getatr(cli, fname, NULL, NULL, &t)) {
- printf("getatr failed (%s)\n", cli_errstr(cli));
+ cli_close(&cli, fnum);
+ if (!cli_getatr(&cli, fname, NULL, NULL, &t)) {
+ printf("getatr failed (%s)\n", cli_errstr(&cli));
correct = False;
}
@@ -2039,13 +1893,13 @@ static BOOL run_attrtest(int dummy)
t2 = t-60*60*24; /* 1 day ago */
- if (!cli_setatr(cli, fname, 0, t2)) {
- printf("setatr failed (%s)\n", cli_errstr(cli));
+ if (!cli_setatr(&cli, fname, 0, t2)) {
+ printf("setatr failed (%s)\n", cli_errstr(&cli));
correct = True;
}
- if (!cli_getatr(cli, fname, NULL, NULL, &t)) {
- printf("getatr failed (%s)\n", cli_errstr(cli));
+ if (!cli_getatr(&cli, fname, NULL, NULL, &t)) {
+ printf("getatr failed (%s)\n", cli_errstr(&cli));
correct = True;
}
@@ -2056,9 +1910,9 @@ static BOOL run_attrtest(int dummy)
correct = True;
}
- cli_unlink(cli, fname);
+ cli_unlink(&cli, fname);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -2073,7 +1927,7 @@ static BOOL run_attrtest(int dummy)
*/
static BOOL run_trans2test(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
int fnum;
size_t size;
time_t c_time, a_time, m_time, w_time, m_time2;
@@ -2089,17 +1943,17 @@ static BOOL run_trans2test(int dummy)
return False;
}
- cli_unlink(cli, fname);
- fnum = cli_open(cli, fname,
+ cli_unlink(&cli, fname);
+ fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
- if (!cli_qfileinfo(cli, fnum, NULL, &size, &c_time, &a_time, &m_time,
+ if (!cli_qfileinfo(&cli, fnum, NULL, &size, &c_time, &a_time, &m_time,
NULL, NULL)) {
- printf("ERROR: qfileinfo failed (%s)\n", cli_errstr(cli));
+ printf("ERROR: qfileinfo failed (%s)\n", cli_errstr(&cli));
correct = False;
}
- if (!cli_qfilename(cli, fnum, pname)) {
- printf("ERROR: qfilename failed (%s)\n", cli_errstr(cli));
+ if (!cli_qfilename(&cli, fnum, pname)) {
+ printf("ERROR: qfilename failed (%s)\n", cli_errstr(&cli));
correct = False;
}
@@ -2109,27 +1963,28 @@ static BOOL run_trans2test(int dummy)
correct = False;
}
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
sleep(2);
- cli_unlink(cli, fname);
- fnum = cli_open(cli, fname,
+ cli_unlink(&cli, fname);
+ fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
if (fnum == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli));
return False;
}
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
- if (!cli_qpathinfo(cli, fname, &c_time, &a_time, &m_time, &size, NULL)) {
- printf("ERROR: qpathinfo failed (%s)\n", cli_errstr(cli));
+ if (!cli_qpathinfo(&cli, fname, &c_time, &a_time, &m_time, &size, NULL)) {
+ printf("ERROR: qpathinfo failed (%s)\n", cli_errstr(&cli));
correct = False;
} else {
if (c_time != m_time) {
printf("create time=%s", ctime(&c_time));
printf("modify time=%s", ctime(&m_time));
printf("This system appears to have sticky create times\n");
+ correct = False;
}
if (a_time % (60*60) == 0) {
printf("access time=%s", ctime(&a_time));
@@ -2144,13 +1999,13 @@ static BOOL run_trans2test(int dummy)
}
- cli_unlink(cli, fname);
- fnum = cli_open(cli, fname,
+ cli_unlink(&cli, fname);
+ fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
- cli_close(cli, fnum);
- if (!cli_qpathinfo2(cli, fname, &c_time, &a_time, &m_time,
+ cli_close(&cli, fnum);
+ if (!cli_qpathinfo2(&cli, fname, &c_time, &a_time, &m_time,
&w_time, &size, NULL, NULL)) {
- printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(cli));
+ printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
correct = False;
} else {
if (w_time < 60*60*24*2) {
@@ -2160,29 +2015,29 @@ static BOOL run_trans2test(int dummy)
}
}
- cli_unlink(cli, fname);
+ cli_unlink(&cli, fname);
/* check if the server updates the directory modification time
when creating a new file */
- if (!cli_mkdir(cli, dname)) {
- printf("ERROR: mkdir failed (%s)\n", cli_errstr(cli));
+ if (!cli_mkdir(&cli, dname)) {
+ printf("ERROR: mkdir failed (%s)\n", cli_errstr(&cli));
correct = False;
}
sleep(3);
- if (!cli_qpathinfo2(cli, "\\trans2\\", &c_time, &a_time, &m_time,
+ if (!cli_qpathinfo2(&cli, "\\trans2\\", &c_time, &a_time, &m_time,
&w_time, &size, NULL, NULL)) {
- printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(cli));
+ printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
correct = False;
}
- fnum = cli_open(cli, fname2,
+ fnum = cli_open(&cli, fname2,
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
- cli_write(cli, fnum, 0, (char *)&fnum, 0, sizeof(fnum));
- cli_close(cli, fnum);
- if (!cli_qpathinfo2(cli, "\\trans2\\", &c_time, &a_time, &m_time2,
+ cli_write(&cli, fnum, 0, (char *)&fnum, 0, sizeof(fnum));
+ cli_close(&cli, fnum);
+ if (!cli_qpathinfo2(&cli, "\\trans2\\", &c_time, &a_time, &m_time2,
&w_time, &size, NULL, NULL)) {
- printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(cli));
+ printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
correct = False;
} else {
if (m_time2 == m_time) {
@@ -2190,10 +2045,10 @@ static BOOL run_trans2test(int dummy)
correct = False;
}
}
- cli_unlink(cli, fname2);
- cli_rmdir(cli, dname);
+ cli_unlink(&cli, fname2);
+ cli_rmdir(&cli, dname);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -2226,7 +2081,7 @@ static BOOL new_trans(struct cli_state *pcli, int fnum, int level)
static BOOL run_w2ktest(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
int fnum;
const char *fname = "\\w2ktest\\w2k.tst";
int level;
@@ -2238,16 +2093,16 @@ static BOOL run_w2ktest(int dummy)
return False;
}
- fnum = cli_open(cli, fname,
+ fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT , DENY_NONE);
for (level = 1004; level < 1040; level++) {
- new_trans(cli, fnum, level);
+ new_trans(&cli, fnum, level);
}
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -2262,7 +2117,7 @@ static BOOL run_w2ktest(int dummy)
*/
static BOOL run_oplock1(int dummy)
{
- struct cli_state *cli1;
+ static struct cli_state cli1;
const char *fname = "\\lockt1.lck";
int fnum1;
BOOL correct = True;
@@ -2273,34 +2128,34 @@ static BOOL run_oplock1(int dummy)
return False;
}
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
- cli1->use_oplocks = True;
+ cli1.use_oplocks = True;
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- cli1->use_oplocks = False;
+ cli1.use_oplocks = False;
- cli_unlink(cli1, fname);
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
+ cli_unlink(&cli1, fname);
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_unlink(cli1, fname)) {
- printf("unlink failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, fname)) {
+ printf("unlink failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
@@ -2311,7 +2166,7 @@ static BOOL run_oplock1(int dummy)
static BOOL run_oplock2(int dummy)
{
- struct cli_state *cli1, *cli2;
+ static struct cli_state cli1, cli2;
const char *fname = "\\lockt2.lck";
int fnum1, fnum2;
int saved_use_oplocks = use_oplocks;
@@ -2333,8 +2188,8 @@ static BOOL run_oplock2(int dummy)
return False;
}
- cli1->use_oplocks = True;
- cli1->use_level_II_oplocks = True;
+ cli1.use_oplocks = True;
+ cli1.use_level_II_oplocks = True;
if (!torture_open_connection(&cli2)) {
use_level_II_oplocks = False;
@@ -2342,17 +2197,17 @@ static BOOL run_oplock2(int dummy)
return False;
}
- cli2->use_oplocks = True;
- cli2->use_level_II_oplocks = True;
+ cli2.use_oplocks = True;
+ cli2.use_level_II_oplocks = True;
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- cli_sockopt(cli1, sockops);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli1, sockops);
+ cli_sockopt(&cli2, sockops);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
@@ -2362,17 +2217,17 @@ static BOOL run_oplock2(int dummy)
if (fork() == 0) {
/* Child code */
- fnum2 = cli_open(cli2, fname, O_RDWR, DENY_NONE);
+ fnum2 = cli_open(&cli2, fname, O_RDWR, DENY_NONE);
if (fnum2 == -1) {
- printf("second open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("second open of %s failed (%s)\n", fname, cli_errstr(&cli1));
*shared_correct = False;
exit(0);
}
sleep(2);
- if (!cli_close(cli2, fnum2)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
*shared_correct = False;
}
@@ -2383,54 +2238,54 @@ static BOOL run_oplock2(int dummy)
/* Ensure cli1 processes the break. */
- if (cli_read(cli1, fnum1, buf, 0, 4) != 4) {
- printf("read on fnum1 failed (%s)\n", cli_errstr(cli1));
+ if (cli_read(&cli1, fnum1, buf, 0, 4) != 4) {
+ printf("read on fnum1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
/* Should now be at level II. */
/* Test if sending a write locks causes a break to none. */
- if (!cli_lock(cli1, fnum1, 0, 4, 0, READ_LOCK)) {
- printf("lock failed (%s)\n", cli_errstr(cli1));
+ if (!cli_lock(&cli1, fnum1, 0, 4, 0, READ_LOCK)) {
+ printf("lock failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- cli_unlock(cli1, fnum1, 0, 4);
+ cli_unlock(&cli1, fnum1, 0, 4);
sleep(2);
- if (!cli_lock(cli1, fnum1, 0, 4, 0, WRITE_LOCK)) {
- printf("lock failed (%s)\n", cli_errstr(cli1));
+ if (!cli_lock(&cli1, fnum1, 0, 4, 0, WRITE_LOCK)) {
+ printf("lock failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- cli_unlock(cli1, fnum1, 0, 4);
+ cli_unlock(&cli1, fnum1, 0, 4);
sleep(2);
- cli_read(cli1, fnum1, buf, 0, 4);
+ cli_read(&cli1, fnum1, buf, 0, 4);
#if 0
- if (cli_write(cli1, fnum1, 0, buf, 0, 4) != 4) {
- printf("write on fnum1 failed (%s)\n", cli_errstr(cli1));
+ if (cli_write(&cli1, fnum1, 0, buf, 0, 4) != 4) {
+ printf("write on fnum1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
#endif
- if (!cli_close(cli1, fnum1)) {
- printf("close1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
sleep(4);
- if (!cli_unlink(cli1, fname)) {
- printf("unlink failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, fname)) {
+ printf("unlink failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
@@ -2453,7 +2308,7 @@ static BOOL oplock3_handler(struct cli_state *cli, int fnum, unsigned char level
static BOOL run_oplock3(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
const char *fname = "\\oplockt3.dat";
int fnum;
char buf[4] = "abcd";
@@ -2475,8 +2330,8 @@ static BOOL run_oplock3(int dummy)
}
sleep(2);
/* try to trigger a oplock break in parent */
- fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
- cli_write(cli, fnum, 0, buf, 0, 4);
+ fnum = cli_open(&cli, fname, O_RDWR, DENY_NONE);
+ cli_write(&cli, fnum, 0, buf, 0, 4);
exit(0);
}
@@ -2486,13 +2341,13 @@ static BOOL run_oplock3(int dummy)
if (!torture_open_connection(&cli)) {
return False;
}
- cli_oplock_handler(cli, oplock3_handler);
- fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
- cli_write(cli, fnum, 0, buf, 0, 4);
- cli_close(cli, fnum);
- fnum = cli_open(cli, fname, O_RDWR, DENY_NONE);
- cli->timeout = 20000;
- cli_receive_smb(cli);
+ cli_oplock_handler(&cli, oplock3_handler);
+ fnum = cli_open(&cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+ cli_write(&cli, fnum, 0, buf, 0, 4);
+ cli_close(&cli, fnum);
+ fnum = cli_open(&cli, fname, O_RDWR, DENY_NONE);
+ cli.timeout = 20000;
+ cli_receive_smb(&cli);
printf("finished oplock test 3\n");
return (correct && *shared_correct);
@@ -2507,8 +2362,8 @@ static BOOL run_oplock3(int dummy)
*/
static BOOL run_deletetest(int dummy)
{
- struct cli_state *cli1;
- struct cli_state *cli2;
+ static struct cli_state cli1;
+ static struct cli_state cli2;
const char *fname = "\\delete.file";
int fnum1 = -1;
int fnum2 = -1;
@@ -2516,36 +2371,45 @@ static BOOL run_deletetest(int dummy)
printf("starting delete test\n");
+ ZERO_STRUCT(cli1);
+ ZERO_STRUCT(cli2);
+
if (!torture_open_connection(&cli1)) {
return False;
}
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
- /* Test 1 - this should delete the file on close. */
+ /* Test 1 - this should *NOT* delete the file on close. */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_DELETE, FILE_OVERWRITE_IF,
- FILE_DELETE_ON_CLOSE);
+ DELETE_ON_CLOSE_FLAG);
if (fnum1 == -1) {
- printf("[1] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[1] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[1] close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[1] close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- fnum1 = cli_open(cli1, fname, O_RDWR, DENY_NONE);
- if (fnum1 != -1) {
- printf("[1] open of %s succeeded (should fail)\n", fname);
+ fnum1 = cli_open(&cli1, fname, O_RDWR, DENY_NONE);
+ if (fnum1 == -1) {
+ printf("[1] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ correct = False;
+ goto fail;
+ }
+
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[1] close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
@@ -2554,52 +2418,52 @@ static BOOL run_deletetest(int dummy)
/* Test 2 - this should delete the file on close. */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, GENERIC_ALL_ACCESS,
+ fnum1 = cli_nt_create_full(&cli1, fname, GENERIC_ALL_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_NONE,
FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[2] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[2] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, True)) {
- printf("[2] setting delete_on_close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_nt_delete_on_close(&cli1, fnum1, True)) {
+ printf("[2] setting delete_on_close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[2] close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[2] close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_NONE);
if (fnum1 != -1) {
printf("[2] open of %s succeeded should have been deleted on close !\n", fname);
- if (!cli_close(cli1, fnum1)) {
- printf("[2] close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[2] close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
} else
printf("second delete on close test succeeded.\n");
/* Test 3 - ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[3] open - 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[3] open - 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
@@ -2607,7 +2471,7 @@ static BOOL run_deletetest(int dummy)
/* This should fail with a sharing violation - open for delete is only compatible
with SHARE_DELETE. */
- fnum2 = cli_nt_create_full(cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0);
if (fnum2 != -1) {
@@ -2618,83 +2482,83 @@ static BOOL run_deletetest(int dummy)
/* This should succeed. */
- fnum2 = cli_nt_create_full(cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, 0);
if (fnum2 == -1) {
- printf("[3] open - 2 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[3] open - 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, True)) {
- printf("[3] setting delete_on_close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_nt_delete_on_close(&cli1, fnum1, True)) {
+ printf("[3] setting delete_on_close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[3] close 1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[3] close 1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum2)) {
- printf("[3] close 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum2)) {
+ printf("[3] close 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should fail - file should no longer be there. */
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_NONE);
if (fnum1 != -1) {
printf("[3] open of %s succeeded should have been deleted on close !\n", fname);
- if (!cli_close(cli1, fnum1)) {
- printf("[3] close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[3] close failed (%s)\n", cli_errstr(&cli1));
}
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
correct = False;
goto fail;
} else
printf("third delete on close test succeeded.\n");
/* Test 4 ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[4] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[4] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should succeed. */
- fnum2 = cli_nt_create_full(cli1, fname, GENERIC_READ_ACCESS,
+ fnum2 = cli_nt_create_full(&cli1, fname, GENERIC_READ_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, 0);
if (fnum2 == -1) {
- printf("[4] open - 2 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[4] open - 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum2)) {
- printf("[4] close - 1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum2)) {
+ printf("[4] close - 1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, True)) {
- printf("[4] setting delete_on_close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_nt_delete_on_close(&cli1, fnum1, True)) {
+ printf("[4] setting delete_on_close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should fail - no more opens once delete on close set. */
- fnum2 = cli_nt_create_full(cli1, fname, GENERIC_READ_ACCESS,
+ fnum2 = cli_nt_create_full(&cli1, fname, GENERIC_READ_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, 0);
if (fnum2 != -1) {
printf("[4] open - 3 of %s succeeded ! Should have failed.\n", fname );
@@ -2703,33 +2567,33 @@ static BOOL run_deletetest(int dummy)
} else
printf("fourth delete on close test succeeded.\n");
- if (!cli_close(cli1, fnum1)) {
- printf("[4] close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[4] close - 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
/* Test 5 ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT, DENY_NONE);
if (fnum1 == -1) {
- printf("[5] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[5] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should fail - only allowed on NT opens with DELETE access. */
- if (cli_nt_delete_on_close(cli1, fnum1, True)) {
+ if (cli_nt_delete_on_close(&cli1, fnum1, True)) {
printf("[5] setting delete_on_close on OpenX file succeeded - should fail !\n");
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[5] close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[5] close - 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
@@ -2737,29 +2601,29 @@ static BOOL run_deletetest(int dummy)
printf("fifth delete on close test succeeded.\n");
/* Test 6 ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[6] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[6] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should fail - only allowed on NT opens with DELETE access. */
- if (cli_nt_delete_on_close(cli1, fnum1, True)) {
+ if (cli_nt_delete_on_close(&cli1, fnum1, True)) {
printf("[6] setting delete_on_close on file with no delete access succeeded - should fail !\n");
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[6] close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[6] close - 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
@@ -2767,47 +2631,47 @@ static BOOL run_deletetest(int dummy)
printf("sixth delete on close test succeeded.\n");
/* Test 7 ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[7] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[7] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, True)) {
+ if (!cli_nt_delete_on_close(&cli1, fnum1, True)) {
printf("[7] setting delete_on_close on file failed !\n");
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, False)) {
+ if (!cli_nt_delete_on_close(&cli1, fnum1, False)) {
printf("[7] unsetting delete_on_close on file failed !\n");
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[7] close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[7] close - 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This next open should succeed - we reset the flag. */
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_NONE);
if (fnum1 == -1) {
- printf("[5] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[5] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[7] close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[7] close - 2 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
@@ -2815,8 +2679,8 @@ static BOOL run_deletetest(int dummy)
printf("seventh delete on close test succeeded.\n");
/* Test 7 ... */
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
if (!torture_open_connection(&cli2)) {
printf("[8] failed to open second connection.\n");
@@ -2824,46 +2688,46 @@ static BOOL run_deletetest(int dummy)
goto fail;
}
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("[8] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[8] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- fnum2 = cli_nt_create_full(cli2, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
+ fnum2 = cli_nt_create_full(&cli2, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, 0);
if (fnum2 == -1) {
- printf("[8] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[8] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_nt_delete_on_close(cli1, fnum1, True)) {
+ if (!cli_nt_delete_on_close(&cli1, fnum1, True)) {
printf("[8] setting delete_on_close on file failed !\n");
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
- printf("[8] close - 1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[8] close - 1 failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli2, fnum2)) {
- printf("[8] close - 2 failed (%s)\n", cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("[8] close - 2 failed (%s)\n", cli_errstr(&cli2));
correct = False;
goto fail;
}
/* This should fail.. */
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_NONE);
if (fnum1 != -1) {
printf("[8] open of %s succeeded should have been deleted on close !\n", fname);
goto fail;
@@ -2872,7 +2736,7 @@ static BOOL run_deletetest(int dummy)
printf("eighth delete on close test succeeded.\n");
/* This should fail - we need to set DELETE_ACCESS. */
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_NONE, FILE_OVERWRITE_IF, FILE_DELETE_ON_CLOSE);
if (fnum1 != -1) {
@@ -2883,23 +2747,23 @@ static BOOL run_deletetest(int dummy)
printf("ninth delete on close test succeeded.\n");
- fnum1 = cli_nt_create_full(cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
+ fnum1 = cli_nt_create_full(&cli1, fname, FILE_READ_DATA|FILE_WRITE_DATA|DELETE_ACCESS,
FILE_ATTRIBUTE_NORMAL, FILE_SHARE_NONE, FILE_OVERWRITE_IF, FILE_DELETE_ON_CLOSE);
if (fnum1 == -1) {
- printf("[10] open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("[10] open of %s failed (%s)\n", fname, cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should delete the file. */
- if (!cli_close(cli1, fnum1)) {
- printf("[10] close failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("[10] close failed (%s)\n", cli_errstr(&cli1));
correct = False;
goto fail;
}
/* This should fail.. */
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_NONE);
if (fnum1 != -1) {
printf("[10] open of %s succeeded should have been deleted on close !\n", fname);
goto fail;
@@ -2909,19 +2773,16 @@ static BOOL run_deletetest(int dummy)
printf("finished delete test\n");
fail:
- /* FIXME: This will crash if we aborted before cli2 got
- * intialized, because these functions don't handle
- * uninitialized connections. */
-
- cli_close(cli1, fnum1);
- cli_close(cli1, fnum2);
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
-
- if (!torture_close_connection(cli1)) {
+
+ cli_close(&cli1, fnum1);
+ cli_close(&cli1, fnum2);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
+
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
- if (!torture_close_connection(cli2)) {
+ if (!torture_close_connection(&cli2)) {
correct = False;
}
return correct;
@@ -2933,7 +2794,7 @@ static BOOL run_deletetest(int dummy)
*/
static BOOL run_properties(int dummy)
{
- static struct cli_state *cli;
+ static struct cli_state cli;
BOOL correct = True;
printf("starting properties test\n");
@@ -2944,11 +2805,11 @@ static BOOL run_properties(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
- d_printf("Capabilities 0x%08x\n", cli->capabilities);
+ d_printf("Capabilities 0x%08x\n", cli.capabilities);
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -2981,7 +2842,7 @@ static BOOL run_properties(int dummy)
*/
static BOOL run_xcopy(int dummy)
{
- static struct cli_state *cli1;
+ static struct cli_state cli1;
const char *fname = "\\test.txt";
BOOL correct = True;
int fnum1, fnum2;
@@ -2992,26 +2853,26 @@ static BOOL run_xcopy(int dummy)
return False;
}
- fnum1 = cli_nt_create_full(cli1, fname,
+ fnum1 = cli_nt_create_full(&cli1, fname,
FIRST_DESIRED_ACCESS, FILE_ATTRIBUTE_ARCHIVE,
FILE_SHARE_NONE, FILE_OVERWRITE_IF,
0x4044);
if (fnum1 == -1) {
- printf("First open failed - %s\n", cli_errstr(cli1));
+ printf("First open failed - %s\n", cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli1, fname,
+ fnum2 = cli_nt_create_full(&cli1, fname,
SECOND_DESIRED_ACCESS, 0,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN,
0x200000);
if (fnum2 == -1) {
- printf("second open failed - %s\n", cli_errstr(cli1));
+ printf("second open failed - %s\n", cli_errstr(&cli1));
return False;
}
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
@@ -3023,7 +2884,7 @@ static BOOL run_xcopy(int dummy)
*/
static BOOL run_rename(int dummy)
{
- static struct cli_state *cli1;
+ static struct cli_state cli1;
const char *fname = "\\test.txt";
const char *fname1 = "\\test1.txt";
BOOL correct = True;
@@ -3035,31 +2896,31 @@ static BOOL run_rename(int dummy)
return False;
}
- cli_unlink(cli1, fname);
- cli_unlink(cli1, fname1);
- fnum1 = cli_nt_create_full(cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ cli_unlink(&cli1, fname);
+ cli_unlink(&cli1, fname1);
+ fnum1 = cli_nt_create_full(&cli1, fname, GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("First open failed - %s\n", cli_errstr(cli1));
+ printf("First open failed - %s\n", cli_errstr(&cli1));
return False;
}
- if (!cli_rename(cli1, fname, fname1)) {
- printf("First rename failed (this is correct) - %s\n", cli_errstr(cli1));
+ if (!cli_rename(&cli1, fname, fname1)) {
+ printf("First rename failed (this is correct) - %s\n", cli_errstr(&cli1));
} else {
printf("First rename succeeded - this should have failed !\n");
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("close - 1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close - 1 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli_unlink(cli1, fname);
- cli_unlink(cli1, fname1);
- fnum1 = cli_nt_create_full(cli1, fname,GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ cli_unlink(&cli1, fname);
+ cli_unlink(&cli1, fname1);
+ fnum1 = cli_nt_create_full(&cli1, fname,GENERIC_READ_ACCESS, FILE_ATTRIBUTE_NORMAL,
#if 0
FILE_SHARE_DELETE|FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
#else
@@ -3067,30 +2928,30 @@ static BOOL run_rename(int dummy)
#endif
if (fnum1 == -1) {
- printf("Second open failed - %s\n", cli_errstr(cli1));
+ printf("Second open failed - %s\n", cli_errstr(&cli1));
return False;
}
- if (!cli_rename(cli1, fname, fname1)) {
- printf("Second rename failed - this should have succeeded - %s\n", cli_errstr(cli1));
+ if (!cli_rename(&cli1, fname, fname1)) {
+ printf("Second rename failed - this should have succeeded - %s\n", cli_errstr(&cli1));
correct = False;
} else {
printf("Second rename succeeded\n");
}
- if (!cli_close(cli1, fnum1)) {
- printf("close - 2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close - 2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli_unlink(cli1, fname);
- cli_unlink(cli1, fname1);
+ cli_unlink(&cli1, fname);
+ cli_unlink(&cli1, fname1);
- fnum1 = cli_nt_create_full(cli1, fname,READ_CONTROL_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,READ_CONTROL_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("Third open failed - %s\n", cli_errstr(cli1));
+ printf("Third open failed - %s\n", cli_errstr(&cli1));
return False;
}
@@ -3099,41 +2960,41 @@ static BOOL run_rename(int dummy)
{
int fnum2;
- fnum2 = cli_nt_create_full(cli1, fname,DELETE_ACCESS, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli1, fname,DELETE_ACCESS, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum2 == -1) {
- printf("Fourth open failed - %s\n", cli_errstr(cli1));
+ printf("Fourth open failed - %s\n", cli_errstr(&cli1));
return False;
}
- if (!cli_nt_delete_on_close(cli1, fnum2, True)) {
+ if (!cli_nt_delete_on_close(&cli1, fnum2, True)) {
printf("[8] setting delete_on_close on file failed !\n");
return False;
}
- if (!cli_close(cli1, fnum2)) {
- printf("close - 4 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum2)) {
+ printf("close - 4 failed (%s)\n", cli_errstr(&cli1));
return False;
}
}
#endif
- if (!cli_rename(cli1, fname, fname1)) {
- printf("Third rename failed - this should have succeeded - %s\n", cli_errstr(cli1));
+ if (!cli_rename(&cli1, fname, fname1)) {
+ printf("Third rename failed - this should have succeeded - %s\n", cli_errstr(&cli1));
correct = False;
} else {
printf("Third rename succeeded\n");
}
- if (!cli_close(cli1, fnum1)) {
- printf("close - 3 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close - 3 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli_unlink(cli1, fname);
- cli_unlink(cli1, fname1);
+ cli_unlink(&cli1, fname);
+ cli_unlink(&cli1, fname1);
- if (!torture_close_connection(cli1)) {
+ if (!torture_close_connection(&cli1)) {
correct = False;
}
@@ -3142,7 +3003,7 @@ static BOOL run_rename(int dummy)
static BOOL run_pipe_number(int dummy)
{
- struct cli_state *cli1;
+ static struct cli_state cli1;
const char *pipe_name = "\\SPOOLSS";
int fnum;
int num_pipes = 0;
@@ -3152,20 +3013,20 @@ static BOOL run_pipe_number(int dummy)
return False;
}
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
while(1) {
- fnum = cli_nt_create_full(cli1, pipe_name,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
+ fnum = cli_nt_create_full(&cli1, pipe_name,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN_IF, 0);
if (fnum == -1) {
- printf("Open of pipe %s failed with error (%s)\n", pipe_name, cli_errstr(cli1));
+ printf("Open of pipe %s failed with error (%s)\n", pipe_name, cli_errstr(&cli1));
break;
}
num_pipes++;
}
printf("pipe_number test - we can open %d %s pipes.\n", num_pipes, pipe_name );
- torture_close_connection(cli1);
+ torture_close_connection(&cli1);
return True;
}
@@ -3174,14 +3035,15 @@ static BOOL run_pipe_number(int dummy)
*/
static BOOL run_opentest(int dummy)
{
- static struct cli_state *cli1;
- static struct cli_state *cli2;
+ static struct cli_state cli1;
+ static struct cli_state cli2;
const char *fname = "\\readonly.file";
int fnum1, fnum2;
char buf[20];
size_t fsize;
BOOL correct = True;
char *tmp_path;
+ uint16 attr;
printf("starting open test\n");
@@ -3189,77 +3051,77 @@ static BOOL run_opentest(int dummy)
return False;
}
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ cli_setatr(&cli1, fname, 0, 0);
+ cli_unlink(&cli1, fname);
- cli_sockopt(cli1, sockops);
+ cli_sockopt(&cli1, sockops);
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- if (!cli_setatr(cli1, fname, aRONLY, 0)) {
- printf("cli_setatr failed (%s)\n", cli_errstr(cli1));
+ if (!cli_setatr(&cli1, fname, aRONLY, 0)) {
+ printf("cli_setatr failed (%s)\n", cli_errstr(&cli1));
return False;
}
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_WRITE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_WRITE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
/* This will fail - but the error should be ERRnoaccess, not ERRbadshare. */
- fnum2 = cli_open(cli1, fname, O_RDWR, DENY_ALL);
+ fnum2 = cli_open(&cli1, fname, O_RDWR, DENY_ALL);
- if (check_error(__LINE__, cli1, ERRDOS, ERRnoaccess,
+ if (check_error(__LINE__, &cli1, ERRDOS, ERRnoaccess,
NT_STATUS_ACCESS_DENIED)) {
printf("correct error code ERRDOS/ERRnoaccess returned\n");
}
printf("finished open test 1\n");
- cli_close(cli1, fnum1);
+ cli_close(&cli1, fnum1);
/* Now try not readonly and ensure ERRbadshare is returned. */
- cli_setatr(cli1, fname, 0, 0);
+ cli_setatr(&cli1, fname, 0, 0);
- fnum1 = cli_open(cli1, fname, O_RDONLY, DENY_WRITE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY, DENY_WRITE);
if (fnum1 == -1) {
- printf("open of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("open of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
/* This will fail - but the error should be ERRshare. */
- fnum2 = cli_open(cli1, fname, O_RDWR, DENY_ALL);
+ fnum2 = cli_open(&cli1, fname, O_RDWR, DENY_ALL);
- if (check_error(__LINE__, cli1, ERRDOS, ERRbadshare,
+ if (check_error(__LINE__, &cli1, ERRDOS, ERRbadshare,
NT_STATUS_SHARING_VIOLATION)) {
printf("correct error code ERRDOS/ERRbadshare returned\n");
}
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("finished open test 2\n");
/* Test truncate open disposition on file opened for read. */
- fnum1 = cli_open(cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDWR|O_CREAT|O_EXCL, DENY_NONE);
if (fnum1 == -1) {
- printf("(3) open (1) of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("(3) open (1) of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
@@ -3267,19 +3129,19 @@ static BOOL run_opentest(int dummy)
memset(buf, '\0', 20);
- if (cli_write(cli1, fnum1, 0, buf, 0, 20) != 20) {
- printf("write failed (%s)\n", cli_errstr(cli1));
+ if (cli_write(&cli1, fnum1, 0, buf, 0, 20) != 20) {
+ printf("write failed (%s)\n", cli_errstr(&cli1));
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("(3) close1 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("(3) close1 failed (%s)\n", cli_errstr(&cli1));
return False;
}
/* Ensure size == 20. */
- if (!cli_getatr(cli1, fname, NULL, &fsize, NULL)) {
- printf("(3) getatr failed (%s)\n", cli_errstr(cli1));
+ if (!cli_getatr(&cli1, fname, NULL, &fsize, NULL)) {
+ printf("(3) getatr failed (%s)\n", cli_errstr(&cli1));
return False;
}
@@ -3290,20 +3152,20 @@ static BOOL run_opentest(int dummy)
/* Now test if we can truncate a file opened for readonly. */
- fnum1 = cli_open(cli1, fname, O_RDONLY|O_TRUNC, DENY_NONE);
+ fnum1 = cli_open(&cli1, fname, O_RDONLY|O_TRUNC, DENY_NONE);
if (fnum1 == -1) {
- printf("(3) open (2) of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("(3) open (2) of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("close2 failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close2 failed (%s)\n", cli_errstr(&cli1));
return False;
}
/* Ensure size == 0. */
- if (!cli_getatr(cli1, fname, NULL, &fsize, NULL)) {
- printf("(3) getatr failed (%s)\n", cli_errstr(cli1));
+ if (!cli_getatr(&cli1, fname, NULL, &fsize, NULL)) {
+ printf("(3) getatr failed (%s)\n", cli_errstr(&cli1));
return False;
}
@@ -3313,21 +3175,21 @@ static BOOL run_opentest(int dummy)
}
printf("finished open test 3\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("testing ctemp\n");
- fnum1 = cli_ctemp(cli1, "\\", &tmp_path);
+ fnum1 = cli_ctemp(&cli1, "\\", &tmp_path);
if (fnum1 == -1) {
- printf("ctemp failed (%s)\n", cli_errstr(cli1));
+ printf("ctemp failed (%s)\n", cli_errstr(&cli1));
return False;
}
printf("ctemp gave path %s\n", tmp_path);
- if (!cli_close(cli1, fnum1)) {
- printf("close of temp failed (%s)\n", cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("close of temp failed (%s)\n", cli_errstr(&cli1));
}
- if (!cli_unlink(cli1, tmp_path)) {
- printf("unlink of temp failed (%s)\n", cli_errstr(cli1));
+ if (!cli_unlink(&cli1, tmp_path)) {
+ printf("unlink of temp failed (%s)\n", cli_errstr(&cli1));
}
/* Test the non-io opens... */
@@ -3336,158 +3198,158 @@ static BOOL run_opentest(int dummy)
return False;
}
- cli_setatr(cli2, fname, 0, 0);
- cli_unlink(cli2, fname);
+ cli_setatr(&cli2, fname, 0, 0);
+ cli_unlink(&cli2, fname);
- cli_sockopt(cli2, sockops);
+ cli_sockopt(&cli2, sockops);
printf("TEST #1 testing 2 non-io opens (no delete)\n");
- fnum1 = cli_nt_create_full(cli1, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 1 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 1 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OPEN_IF, 0);
if (fnum2 == -1) {
- printf("test 1 open 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 1 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
printf("non-io open test #1 passed.\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("TEST #2 testing 2 non-io opens (first with delete)\n");
- fnum1 = cli_nt_create_full(cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 2 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 2 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OPEN_IF, 0);
if (fnum2 == -1) {
- printf("test 2 open 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 2 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
printf("non-io open test #2 passed.\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("TEST #3 testing 2 non-io opens (second with delete)\n");
- fnum1 = cli_nt_create_full(cli1, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 3 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 3 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OPEN_IF, 0);
if (fnum2 == -1) {
- printf("test 3 open 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 3 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("test 3 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 3 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("test 3 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("test 3 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
printf("non-io open test #3 passed.\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("TEST #4 testing 2 non-io opens (both with delete)\n");
- fnum1 = cli_nt_create_full(cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 4 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 4 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OPEN_IF, 0);
if (fnum2 != -1) {
- printf("test 4 open 2 of %s SUCCEEDED - should have failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 4 open 2 of %s SUCCEEDED - should have failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- printf("test 3 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(cli2), "sharing violation");
+ printf("test 3 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(&cli2), "sharing violation");
- if (!cli_close(cli1, fnum1)) {
- printf("test 4 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 4 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
printf("non-io open test #4 passed.\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
printf("TEST #5 testing 2 non-io opens (both with delete - both with file share delete)\n");
- fnum1 = cli_nt_create_full(cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_DELETE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 5 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 5 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_DELETE, FILE_OPEN_IF, 0);
if (fnum2 == -1) {
- printf("test 5 open 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 5 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("test 5 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 5 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("test 5 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("test 5 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
@@ -3495,31 +3357,31 @@ static BOOL run_opentest(int dummy)
printf("TEST #6 testing 1 non-io open, one io open\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 6 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 6 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ, FILE_OPEN_IF, 0);
if (fnum2 == -1) {
- printf("test 6 open 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 6 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- if (!cli_close(cli1, fnum1)) {
- printf("test 6 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 6 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
- printf("test 6 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
+ if (!cli_close(&cli2, fnum2)) {
+ printf("test 6 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
@@ -3527,203 +3389,135 @@ static BOOL run_opentest(int dummy)
printf("TEST #7 testing 1 non-io open, one io open with delete\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
if (fnum1 == -1) {
- printf("test 7 open 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ printf("test 7 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
- fnum2 = cli_nt_create_full(cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
+ fnum2 = cli_nt_create_full(&cli2, fname,DELETE_ACCESS|FILE_READ_ATTRIBUTES, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_DELETE, FILE_OPEN_IF, 0);
if (fnum2 != -1) {
- printf("test 7 open 2 of %s SUCCEEDED - should have failed (%s)\n", fname, cli_errstr(cli2));
+ printf("test 7 open 2 of %s SUCCEEDED - should have failed (%s)\n", fname, cli_errstr(&cli2));
return False;
}
- printf("test 7 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(cli2), "sharing violation");
+ printf("test 7 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(&cli2), "sharing violation");
- if (!cli_close(cli1, fnum1)) {
- printf("test 7 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 7 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
printf("non-io open test #7 passed.\n");
- cli_unlink(cli1, fname);
+ cli_unlink(&cli1, fname);
- if (!torture_close_connection(cli1)) {
- correct = False;
+ /* Test 8 - attributes test #1... */
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_WRITE_DATA, FILE_ATTRIBUTE_HIDDEN,
+ FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
+
+ if (fnum1 == -1) {
+ printf("test 8 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
}
- if (!torture_close_connection(cli2)) {
- correct = False;
+
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 8 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
}
-
- return correct;
-}
-static uint32 open_attrs_table[] = {
- FILE_ATTRIBUTE_NORMAL,
- FILE_ATTRIBUTE_ARCHIVE,
- FILE_ATTRIBUTE_READONLY,
- FILE_ATTRIBUTE_HIDDEN,
- FILE_ATTRIBUTE_SYSTEM,
-
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY,
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN,
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM,
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN,
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM,
- FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM,
-
- FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN,
- FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM,
- FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM,
- FILE_ATTRIBUTE_HIDDEN,FILE_ATTRIBUTE_SYSTEM,
-};
-
-struct trunc_open_results {
- unsigned int num;
- uint32 init_attr;
- uint32 trunc_attr;
- uint32 result_attr;
-};
-
-static struct trunc_open_results attr_results[] = {
- { 0, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_ARCHIVE },
- { 1, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_ARCHIVE },
- { 2, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY },
- { 16, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_ARCHIVE },
- { 17, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_ARCHIVE },
- { 18, FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY },
- { 51, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 54, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 56, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN },
- { 68, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 71, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 73, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM },
- { 99, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_HIDDEN,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 102, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 104, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN },
- { 116, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 119, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 121, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM },
- { 170, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN },
- { 173, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM },
- { 227, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 230, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN },
- { 232, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN },
- { 244, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 247, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SYSTEM },
- { 249, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM }
-};
-
-static BOOL run_openattrtest(int dummy)
-{
- static struct cli_state *cli1;
- const char *fname = "\\openattr.file";
- int fnum1;
- BOOL correct = True;
- uint16 attr;
- unsigned int i, j, k, l;
+ /* FILE_SUPERSEDE && FILE_OVERWRITE_IF have the same effect here. */
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL,
+ FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
- printf("starting open attr test\n");
-
- if (!torture_open_connection(&cli1)) {
+ if (fnum1 == -1) {
+ printf("test 8 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
return False;
}
-
- cli_sockopt(cli1, sockops);
- for (k = 0, i = 0; i < sizeof(open_attrs_table)/sizeof(uint32); i++) {
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
- fnum1 = cli_nt_create_full(cli1, fname,FILE_WRITE_DATA, open_attrs_table[i],
- FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 8 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
+ }
- if (fnum1 == -1) {
- printf("open %d (1) of %s failed (%s)\n", i, fname, cli_errstr(cli1));
- return False;
- }
+ /* This open should fail with ACCESS_DENIED for FILE_SUPERSEDE, FILE_OVERWRITE and FILE_OVERWRITE_IF. */
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA, FILE_ATTRIBUTE_NORMAL,
+ FILE_SHARE_NONE, FILE_OVERWRITE, 0);
- if (!cli_close(cli1, fnum1)) {
- printf("close %d (1) of %s failed (%s)\n", i, fname, cli_errstr(cli1));
- return False;
+ if (fnum1 != -1) {
+ printf("test 8 open 3 of %s succeeded - should have failed with (NT_STATUS_ACCESS_DENIED)\n", fname);
+ correct = False;
+ cli_close(&cli1, fnum1);
+ } else {
+ if (check_error(__LINE__, &cli1, ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED)) {
+ printf("correct error code NT_STATUS_ACCESS_DENIED/ERRDOS:ERRnoaccess returned\n");
}
+ }
- for (j = 0; j < sizeof(open_attrs_table)/sizeof(uint32); j++) {
- fnum1 = cli_nt_create_full(cli1, fname,FILE_READ_DATA|FILE_WRITE_DATA, open_attrs_table[j],
- FILE_SHARE_NONE, FILE_OVERWRITE, 0);
-
- if (fnum1 == -1) {
- for (l = 0; l < sizeof(attr_results)/sizeof(struct trunc_open_results); l++) {
- if (attr_results[l].num == k) {
- printf("[%d] trunc open 0x%x -> 0x%x of %s failed - should have succeeded !(0x%x:%s)\n",
- k, open_attrs_table[i],
- open_attrs_table[j],
- fname, NT_STATUS_V(cli_nt_error(cli1)), cli_errstr(cli1));
- correct = False;
- }
- }
- if (NT_STATUS_V(cli_nt_error(cli1)) != NT_STATUS_V(NT_STATUS_ACCESS_DENIED)) {
- printf("[%d] trunc open 0x%x -> 0x%x failed with wrong error code %s\n",
- k, open_attrs_table[i], open_attrs_table[j],
- cli_errstr(cli1));
- correct = False;
- }
-#if 0
- printf("[%d] trunc open 0x%x -> 0x%x failed\n", k, open_attrs_table[i], open_attrs_table[j]);
-#endif
- k++;
- continue;
- }
+ printf("Attribute open test #8 %s.\n", correct ? "passed" : "failed");
- if (!cli_close(cli1, fnum1)) {
- printf("close %d (2) of %s failed (%s)\n", j, fname, cli_errstr(cli1));
- return False;
- }
+ cli_unlink(&cli1, fname);
- if (!cli_getatr(cli1, fname, &attr, NULL, NULL)) {
- printf("getatr(2) failed (%s)\n", cli_errstr(cli1));
- return False;
- }
+ /*
+ * Test #9. Open with NORMAL, close, then re-open with attribute
+ * HIDDEN and request to truncate.
+ */
-#if 0
- printf("[%d] getatr check [0x%x] trunc [0x%x] got attr 0x%x\n",
- k, open_attrs_table[i], open_attrs_table[j], attr );
-#endif
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_WRITE_DATA, FILE_ATTRIBUTE_NORMAL,
+ FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0);
- for (l = 0; l < sizeof(attr_results)/sizeof(struct trunc_open_results); l++) {
- if (attr_results[l].num == k) {
- if (attr != attr_results[l].result_attr ||
- open_attrs_table[i] != attr_results[l].init_attr ||
- open_attrs_table[j] != attr_results[l].trunc_attr) {
- printf("getatr check failed. [0x%x] trunc [0x%x] got attr 0x%x, should be 0x%x\n",
- open_attrs_table[i],
- open_attrs_table[j],
- (unsigned int)attr,
- attr_results[l].result_attr);
- correct = False;
- }
- break;
- }
- }
- k++;
- }
+ if (fnum1 == -1) {
+ printf("test 9 open 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
}
- cli_setatr(cli1, fname, 0, 0);
- cli_unlink(cli1, fname);
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 9 close 1 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
+ }
- printf("open attr test %s.\n", correct ? "passed" : "failed");
+ fnum1 = cli_nt_create_full(&cli1, fname,FILE_READ_DATA|FILE_WRITE_DATA, FILE_ATTRIBUTE_HIDDEN,
+ FILE_SHARE_NONE, FILE_OVERWRITE, 0);
- if (!torture_close_connection(cli1)) {
+ if (fnum1 == -1) {
+ printf("test 9 open 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
+ }
+
+ if (!cli_close(&cli1, fnum1)) {
+ printf("test 9 close 2 of %s failed (%s)\n", fname, cli_errstr(&cli1));
+ return False;
+ }
+
+ /* Ensure we have attr hidden. */
+ if (!cli_getatr(&cli1, fname, &attr, NULL, NULL)) {
+ printf("test 9 getatr(2) failed (%s)\n", cli_errstr(&cli1));
+ return False;
+ }
+
+ if (!(attr & FILE_ATTRIBUTE_HIDDEN)) {
+ printf("test 9 getatr didn't have HIDDEN attribute\n");
+ cli_unlink(&cli1, fname);
+ return False;
+ }
+
+ printf("Attribute open test #9 %s.\n", correct ? "passed" : "failed");
+
+ cli_unlink(&cli1, fname);
+
+ if (!torture_close_connection(&cli1)) {
+ correct = False;
+ }
+ if (!torture_close_connection(&cli2)) {
correct = False;
}
+
return correct;
}
@@ -3738,7 +3532,7 @@ static void list_fn(file_info *finfo, const char *name, void *state)
static BOOL run_dirtest(int dummy)
{
int i;
- static struct cli_state *cli;
+ static struct cli_state cli;
int fnum;
double t1;
BOOL correct = True;
@@ -3749,25 +3543,25 @@ static BOOL run_dirtest(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
srandom(0);
for (i=0;i<torture_numops;i++) {
fstring fname;
slprintf(fname, sizeof(fname), "\\%x", (int)random());
- fnum = cli_open(cli, fname, O_RDWR|O_CREAT, DENY_NONE);
+ fnum = cli_open(&cli, fname, O_RDWR|O_CREAT, DENY_NONE);
if (fnum == -1) {
fprintf(stderr,"Failed to open %s\n", fname);
return False;
}
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
}
t1 = end_timer();
- printf("Matched %d\n", cli_list(cli, "a*.*", 0, list_fn, NULL));
- printf("Matched %d\n", cli_list(cli, "b*.*", 0, list_fn, NULL));
- printf("Matched %d\n", cli_list(cli, "xyzabc", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "a*.*", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "b*.*", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "xyzabc", 0, list_fn, NULL));
printf("dirtest core %g seconds\n", end_timer() - t1);
@@ -3775,10 +3569,10 @@ static BOOL run_dirtest(int dummy)
for (i=0;i<torture_numops;i++) {
fstring fname;
slprintf(fname, sizeof(fname), "\\%x", (int)random());
- cli_unlink(cli, fname);
+ cli_unlink(&cli, fname);
}
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -3808,7 +3602,7 @@ static void del_fn(file_info *finfo, const char *mask, void *state)
static BOOL run_dirtest1(int dummy)
{
int i;
- static struct cli_state *cli;
+ static struct cli_state cli;
int fnum, num_seen;
BOOL correct = True;
@@ -3818,36 +3612,36 @@ static BOOL run_dirtest1(int dummy)
return False;
}
- cli_sockopt(cli, sockops);
+ cli_sockopt(&cli, sockops);
- cli_list(cli, "\\LISTDIR\\*", 0, del_fn, cli);
- cli_list(cli, "\\LISTDIR\\*", aDIR, del_fn, cli);
- cli_rmdir(cli, "\\LISTDIR");
- cli_mkdir(cli, "\\LISTDIR");
+ cli_list(&cli, "\\LISTDIR\\*", 0, del_fn, &cli);
+ cli_list(&cli, "\\LISTDIR\\*", aDIR, del_fn, &cli);
+ cli_rmdir(&cli, "\\LISTDIR");
+ cli_mkdir(&cli, "\\LISTDIR");
/* Create 1000 files and 1000 directories. */
for (i=0;i<1000;i++) {
fstring fname;
slprintf(fname, sizeof(fname), "\\LISTDIR\\f%d", i);
- fnum = cli_nt_create_full(cli, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_ARCHIVE,
+ fnum = cli_nt_create_full(&cli, fname, GENERIC_ALL_ACCESS, FILE_ATTRIBUTE_ARCHIVE,
FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OVERWRITE_IF, 0);
if (fnum == -1) {
fprintf(stderr,"Failed to open %s\n", fname);
return False;
}
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
}
for (i=0;i<1000;i++) {
fstring fname;
slprintf(fname, sizeof(fname), "\\LISTDIR\\d%d", i);
- if (!cli_mkdir(cli, fname)) {
+ if (!cli_mkdir(&cli, fname)) {
fprintf(stderr,"Failed to open %s\n", fname);
return False;
}
}
/* Now ensure that doing an old list sees both files and directories. */
- num_seen = cli_list_old(cli, "\\LISTDIR\\*", aDIR, list_fn, NULL);
+ num_seen = cli_list_old(&cli, "\\LISTDIR\\*", aDIR, list_fn, NULL);
printf("num_seen = %d\n", num_seen );
/* We should see 100 files + 1000 directories + . and .. */
if (num_seen != 2002)
@@ -3856,28 +3650,28 @@ static BOOL run_dirtest1(int dummy)
/* Ensure if we have the "must have" bits we only see the
* relevent entries.
*/
- num_seen = cli_list_old(cli, "\\LISTDIR\\*", (aDIR<<8)|aDIR, list_fn, NULL);
+ num_seen = cli_list_old(&cli, "\\LISTDIR\\*", (aDIR<<8)|aDIR, list_fn, NULL);
printf("num_seen = %d\n", num_seen );
if (num_seen != 1002)
correct = False;
- num_seen = cli_list_old(cli, "\\LISTDIR\\*", (aARCH<<8)|aDIR, list_fn, NULL);
+ num_seen = cli_list_old(&cli, "\\LISTDIR\\*", (aARCH<<8)|aDIR, list_fn, NULL);
printf("num_seen = %d\n", num_seen );
if (num_seen != 1000)
correct = False;
/* Delete everything. */
- cli_list(cli, "\\LISTDIR\\*", 0, del_fn, cli);
- cli_list(cli, "\\LISTDIR\\*", aDIR, del_fn, cli);
- cli_rmdir(cli, "\\LISTDIR");
+ cli_list(&cli, "\\LISTDIR\\*", 0, del_fn, &cli);
+ cli_list(&cli, "\\LISTDIR\\*", aDIR, del_fn, &cli);
+ cli_rmdir(&cli, "\\LISTDIR");
#if 0
- printf("Matched %d\n", cli_list(cli, "a*.*", 0, list_fn, NULL));
- printf("Matched %d\n", cli_list(cli, "b*.*", 0, list_fn, NULL));
- printf("Matched %d\n", cli_list(cli, "xyzabc", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "a*.*", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "b*.*", 0, list_fn, NULL));
+ printf("Matched %d\n", cli_list(&cli, "xyzabc", 0, list_fn, NULL));
#endif
- if (!torture_close_connection(cli)) {
+ if (!torture_close_connection(&cli)) {
correct = False;
}
@@ -4031,6 +3825,7 @@ static double create_procs(BOOL (*fn)(int), BOOL *result)
slprintf(myname,sizeof(myname),"CLIENT%d", i);
while (1) {
+ memset(&current_cli, 0, sizeof(current_cli));
if (torture_open_connection(&current_cli)) break;
if (tries-- == 0) {
printf("pid %d failed to start\n", (int)getpid());
@@ -4100,7 +3895,6 @@ static struct {
{"LOCK4", run_locktest4, 0},
{"LOCK5", run_locktest5, 0},
{"LOCK6", run_locktest6, 0},
- {"LOCK7", run_locktest7, 0},
{"UNLINK", run_unlinktest, 0},
{"BROWSE", run_browsetest, 0},
{"ATTR", run_attrtest, 0},
@@ -4122,9 +3916,6 @@ static struct {
{"RW2", run_readwritemulti, FLAG_MULTIPROC},
{"RW3", run_readwritelarge, 0},
{"OPEN", run_opentest, 0},
-#if 1
- {"OPENATTR", run_openattrtest, 0},
-#endif
{"XCOPY", run_xcopy, 0},
{"RENAME", run_rename, 0},
{"DELETE", run_deletetest, 0},
@@ -4202,7 +3993,6 @@ static void usage(void)
printf("\t-L use oplocks\n");
printf("\t-c CLIENT.TXT specify client load file for NBENCH\n");
printf("\t-A showall\n");
- printf("\t-p port\n");
printf("\t-s seed\n");
printf("\n\n");
@@ -4217,6 +4007,10 @@ static void usage(void)
exit(1);
}
+
+
+
+
/****************************************************************************
main program
****************************************************************************/
@@ -4272,11 +4066,8 @@ static void usage(void)
fstrcpy(workgroup, lp_workgroup());
- while ((opt = getopt(argc, argv, "p:hW:U:n:N:O:o:m:Ld:Ac:ks:")) != EOF) {
+ while ((opt = getopt(argc, argv, "hW:U:n:N:O:o:m:Ld:Ac:ks:")) != EOF) {
switch (opt) {
- case 'p':
- port_to_use = atoi(optarg);
- break;
case 's':
srandom(atoi(optarg));
break;
diff --git a/source3/torture/utable.c b/source3/torture/utable.c
index 74d5f164c0..2b5a912062 100644
--- a/source3/torture/utable.c
+++ b/source3/torture/utable.c
@@ -24,7 +24,7 @@
BOOL torture_utable(int dummy)
{
- struct cli_state *cli;
+ static struct cli_state cli;
fstring fname, alt_name;
int fnum;
smb_ucs2_t c2;
@@ -40,8 +40,8 @@ BOOL torture_utable(int dummy)
memset(valid, 0, sizeof(valid));
- cli_mkdir(cli, "\\utable");
- cli_unlink(cli, "\\utable\\*");
+ cli_mkdir(&cli, "\\utable");
+ cli_unlink(&cli, "\\utable\\*");
for (c=1; c < 0x10000; c++) {
char *p;
@@ -55,13 +55,13 @@ BOOL torture_utable(int dummy)
p[len] = 0;
fstrcat(fname,"_a_long_extension");
- fnum = cli_open(cli, fname, O_RDWR | O_CREAT | O_TRUNC,
+ fnum = cli_open(&cli, fname, O_RDWR | O_CREAT | O_TRUNC,
DENY_NONE);
if (fnum == -1) continue;
chars_allowed++;
- cli_qpathinfo_alt_name(cli, fname, alt_name);
+ cli_qpathinfo_alt_name(&cli, fname, alt_name);
if (strncmp(alt_name, "X_A_L", 5) != 0) {
alt_allowed++;
@@ -69,8 +69,8 @@ BOOL torture_utable(int dummy)
d_printf("fname=[%s] alt_name=[%s]\n", fname, alt_name);
}
- cli_close(cli, fnum);
- cli_unlink(cli, fname);
+ cli_close(&cli, fnum);
+ cli_unlink(&cli, fname);
if (c % 100 == 0) {
printf("%d (%d/%d)\r", c, chars_allowed, alt_allowed);
@@ -78,7 +78,7 @@ BOOL torture_utable(int dummy)
}
printf("%d (%d/%d)\n", c, chars_allowed, alt_allowed);
- cli_rmdir(cli, "\\utable");
+ cli_rmdir(&cli, "\\utable");
d_printf("%d chars allowed %d alt chars allowed\n", chars_allowed, alt_allowed);
@@ -115,7 +115,7 @@ static char *form_name(int c)
BOOL torture_casetable(int dummy)
{
- static struct cli_state *cli;
+ static struct cli_state cli;
char *fname;
int fnum;
int c, i;
@@ -129,35 +129,28 @@ BOOL torture_casetable(int dummy)
memset(equiv, 0, sizeof(equiv));
- cli_unlink(cli, "\\utable\\*");
- cli_rmdir(cli, "\\utable");
- if (!cli_mkdir(cli, "\\utable")) {
- printf("Failed to create utable directory!\n");
- return False;
- }
+ cli_mkdir(&cli, "\\utable");
+ cli_unlink(&cli, "\\utable\\*");
for (c=1; c < 0x10000; c++) {
size_t size;
if (c == '.' || c == '\\') continue;
- printf("%04x (%c)\n", c, isprint(c)?c:'.');
+ printf("%04x\n", c);
fname = form_name(c);
- fnum = cli_nt_create_full(cli, fname,
+ fnum = cli_nt_create_full(&cli, fname,
GENERIC_ALL_ACCESS,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_NONE,
FILE_OPEN_IF, 0);
- if (fnum == -1) {
- printf("Failed to create file with char %04x\n", c);
- continue;
- }
+ if (fnum == -1) continue;
size = 0;
- if (!cli_qfileinfo(cli, fnum, NULL, &size,
+ if (!cli_qfileinfo(&cli, fnum, NULL, &size,
NULL, NULL, NULL, NULL, NULL)) continue;
if (size > 0) {
@@ -167,11 +160,11 @@ BOOL torture_casetable(int dummy)
if (size/sizeof(int) >= MAX_EQUIVALENCE) {
printf("too many chars match?? size=%d c=0x%04x\n",
size, c);
- cli_close(cli, fnum);
+ cli_close(&cli, fnum);
return False;
}
- cli_read(cli, fnum, (char *)c2, 0, size);
+ cli_read(&cli, fnum, (char *)c2, 0, size);
printf("%04x: ", c);
equiv[c][0] = c;
for (i=0; i<size/sizeof(int); i++) {
@@ -182,12 +175,12 @@ BOOL torture_casetable(int dummy)
fflush(stdout);
}
- cli_write(cli, fnum, 0, (char *)&c, size, sizeof(c));
- cli_close(cli, fnum);
+ cli_write(&cli, fnum, 0, (char *)&c, size, sizeof(c));
+ cli_close(&cli, fnum);
}
- cli_unlink(cli, "\\utable\\*");
- cli_rmdir(cli, "\\utable");
+ cli_unlink(&cli, "\\utable\\*");
+ cli_rmdir(&cli, "\\utable");
return True;
}
diff --git a/source3/utils/editreg.c b/source3/utils/editreg.c
deleted file mode 100644
index 2cf8e2c9df..0000000000
--- a/source3/utils/editreg.c
+++ /dev/null
@@ -1,2069 +0,0 @@
-/*
- Samba Unix/Linux SMB client utility editreg.c
- Copyright (C) 2002 Richard Sharpe, rsharpe@richardsharpe.com
-
- 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 2 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/*************************************************************************
-
- A utility to edit a Windows NT/2K etc registry file.
-
- Many of the ideas in here come from other people and software.
- I first looked in Wine in misc/registry.c and was also influenced by
- http://www.wednesday.demon.co.uk/dosreg.html
-
- Which seems to contain comments from someone else. I reproduce them here
- incase the site above disappears. It actually comes from
- http://home.eunet.no/~pnordahl/ntpasswd/WinReg.txt.
-
- The goal here is to read the registry into memory, manipulate it, and then
- write it out if it was changed by any actions of the user.
-
-The windows NT registry has 2 different blocks, where one can occur many
-times...
-
-the "regf"-Block
-================
-
-"regf" is obviosly the abbreviation for "Registry file". "regf" is the
-signature of the header-block which is always 4kb in size, although only
-the first 64 bytes seem to be used and a checksum is calculated over
-the first 0x200 bytes only!
-
-Offset Size Contents
-0x00000000 D-Word ID: ASCII-"regf" = 0x66676572
-0x00000004 D-Word ???? //see struct REGF
-0x00000008 D-Word ???? Always the same value as at 0x00000004
-0x0000000C Q-Word last modify date in WinNT date-format
-0x00000014 D-Word 1
-0x00000018 D-Word 3
-0x0000001C D-Word 0
-0x00000020 D-Word 1
-0x00000024 D-Word Offset of 1st key record
-0x00000028 D-Word Size of the data-blocks (Filesize-4kb)
-0x0000002C D-Word 1
-0x000001FC D-Word Sum of all D-Words from 0x00000000 to
-0x000001FB //XOR of all words. Nigel
-
-I have analyzed more registry files (from multiple machines running
-NT 4.0 german version) and could not find an explanation for the values
-marked with ???? the rest of the first 4kb page is not important...
-
-the "hbin"-Block
-================
-I don't know what "hbin" stands for, but this block is always a multiple
-of 4kb in size.
-
-Inside these hbin-blocks the different records are placed. The memory-
-management looks like a C-compiler heap management to me...
-
-hbin-Header
-===========
-Offset Size Contents
-0x0000 D-Word ID: ASCII-"hbin" = 0x6E696268
-0x0004 D-Word Offset from the 1st hbin-Block
-0x0008 D-Word Offset to the next hbin-Block
-0x001C D-Word Block-size
-
-The values in 0x0008 and 0x001C should be the same, so I don't know
-if they are correct or swapped...
-
-From offset 0x0020 inside a hbin-block data is stored with the following
-format:
-
-Offset Size Contents
-0x0000 D-Word Data-block size //this size must be a
-multiple of 8. Nigel
-0x0004 ???? Data
-
-If the size field is negative (bit 31 set), the corresponding block
-is free and has a size of -blocksize!
-
-That does not seem to be true. All block lengths seem to be negative! (Richard Sharpe)
-
-The data is stored as one record per block. Block size is a multiple
-of 4 and the last block reaches the next hbin-block, leaving no room.
-
-Records in the hbin-blocks
-==========================
-
-nk-Record
-
- The nk-record can be treated as a kombination of tree-record and
- key-record of the win 95 registry.
-
-lf-Record
-
- The lf-record is the counterpart to the RGKN-record (the
- hash-function)
-
-vk-Record
-
- The vk-record consists information to a single value.
-
-sk-Record
-
- sk (? Security Key ?) is the ACL of the registry.
-
-Value-Lists
-
- The value-lists contain information about which values are inside a
- sub-key and don't have a header.
-
-Datas
-
- The datas of the registry are (like the value-list) stored without a
- header.
-
-All offset-values are relative to the first hbin-block and point to the
-block-size field of the record-entry. to get the file offset, you have to add
-the header size (4kb) and the size field (4 bytes)...
-
-the nk-Record
-=============
-Offset Size Contents
-0x0000 Word ID: ASCII-"nk" = 0x6B6E
-0x0002 Word for the root-key: 0x2C, otherwise 0x20 //key symbolic links 0x10. Nigel
-0x0004 Q-Word write-date/time in windows nt notation
-0x0010 D-Word Offset of Owner/Parent key
-0x0014 D-Word number of sub-Keys
-0x001C D-Word Offset of the sub-key lf-Records
-0x0024 D-Word number of values
-0x0028 D-Word Offset of the Value-List
-0x002C D-Word Offset of the sk-Record
-
-0x0030 D-Word Offset of the Class-Name //see NK structure for the use of these fields. Nigel
-0x0044 D-Word Unused (data-trash) //some kind of run time index. Does not appear to be important. Nigel
-0x0048 Word name-length
-0x004A Word class-name length
-0x004C ???? key-name
-
-the Value-List
-==============
-Offset Size Contents
-0x0000 D-Word Offset 1st Value
-0x0004 D-Word Offset 2nd Value
-0x???? D-Word Offset nth Value
-
-To determine the number of values, you have to look at the owner-nk-record!
-
-Der vk-Record
-=============
-Offset Size Contents
-0x0000 Word ID: ASCII-"vk" = 0x6B76
-0x0002 Word name length
-0x0004 D-Word length of the data //if top bit is set when offset contains data. Nigel
-0x0008 D-Word Offset of Data
-0x000C D-Word Type of value
-0x0010 Word Flag
-0x0012 Word Unused (data-trash)
-0x0014 ???? Name
-
-If bit 0 of the flag-word is set, a name is present, otherwise the value has no name (=default)
-
-If the data-size is lower 5, the data-offset value is used to store the data itself!
-
-The data-types
-==============
-Wert Beteutung
-0x0001 RegSZ: character string (in UNICODE!)
-0x0002 ExpandSZ: string with "%var%" expanding (UNICODE!)
-0x0003 RegBin: raw-binary value
-0x0004 RegDWord: Dword
-0x0007 RegMultiSZ: multiple strings, seperated with 0
- (UNICODE!)
-
-The "lf"-record
-===============
-Offset Size Contents
-0x0000 Word ID: ASCII-"lf" = 0x666C
-0x0002 Word number of keys
-0x0004 ???? Hash-Records
-
-Hash-Record
-===========
-Offset Size Contents
-0x0000 D-Word Offset of corresponding "nk"-Record
-0x0004 D-Word ASCII: the first 4 characters of the key-name, padded with 0's. Case sensitiv!
-
-Keep in mind, that the value at 0x0004 is used for checking the data-consistency! If you change the
-key-name you have to change the hash-value too!
-
-//These hashrecords must be sorted low to high within the lf record. Nigel.
-
-The "sk"-block
-==============
-(due to the complexity of the SAM-info, not clear jet)
-(This is just a security descriptor in the data. R Sharpe.)
-
-
-Offset Size Contents
-0x0000 Word ID: ASCII-"sk" = 0x6B73
-0x0002 Word Unused
-0x0004 D-Word Offset of previous "sk"-Record
-0x0008 D-Word Offset of next "sk"-Record
-0x000C D-Word usage-counter
-0x0010 D-Word Size of "sk"-record in bytes
-???? //standard self
-relative security desciptor. Nigel
-???? ???? Security and auditing settings...
-????
-
-The usage counter counts the number of references to this
-"sk"-record. You can use one "sk"-record for the entire registry!
-
-Windows nt date/time format
-===========================
-The time-format is a 64-bit integer which is incremented every
-0,0000001 seconds by 1 (I don't know how accurate it realy is!)
-It starts with 0 at the 1st of january 1601 0:00! All values are
-stored in GMT time! The time-zone is important to get the real
-time!
-
-Common values for win95 and win-nt
-==================================
-Offset values marking an "end of list", are either 0 or -1 (0xFFFFFFFF).
-If a value has no name (length=0, flag(bit 0)=0), it is treated as the
-"Default" entry...
-If a value has no data (length=0), it is displayed as empty.
-
-simplyfied win-3.?? registry:
-=============================
-
-+-----------+
-| next rec. |---+ +----->+------------+
-| first sub | | | | Usage cnt. |
-| name | | +-->+------------+ | | length |
-| value | | | | next rec. | | | text |------->+-------+
-+-----------+ | | | name rec. |--+ +------------+ | xxxxx |
- +------------+ | | value rec. |-------->+------------+ +-------+
- v | +------------+ | Usage cnt. |
-+-----------+ | | length |
-| next rec. | | | text |------->+-------+
-| first sub |------+ +------------+ | xxxxx |
-| name | +-------+
-| value |
-+-----------+
-
-Greatly simplyfied structure of the nt-registry:
-================================================
-
-+---------------------------------------------------------------+
-| |
-v |
-+---------+ +---------->+-----------+ +----->+---------+ |
-| "nk" | | | lf-rec. | | | nk-rec. | |
-| ID | | | # of keys | | | parent |---+
-| Date | | | 1st key |--+ | .... |
-| parent | | +-----------+ +---------+
-| suk-keys|-----+
-| values |--------------------->+----------+
-| SK-rec. |---------------+ | 1. value |--> +----------+
-| class |--+ | +----------+ | vk-rec. |
-+---------+ | | | .... |
- v | | data |--> +-------+
- +------------+ | +----------+ | xxxxx |
- | Class name | | +-------+
- +------------+ |
- v
- +---------+ +---------+
- +----->| next sk |--->| Next sk |--+
- | +---| prev sk |<---| prev sk | |
- | | | .... | | ... | |
- | | +---------+ +---------+ |
- | | ^ |
- | | | |
- | +--------------------+ |
- +----------------------------------+
-
----------------------------------------------------------------------------
-
-Hope this helps.... (Although it was "fun" for me to uncover this things,
- it took me several sleepless nights ;)
-
- B.D.
-
-*************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <assert.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <fcntl.h>
-
-static int verbose = 0;
-
-/*
- * These definitions are for the in-memory registry structure.
- * It is a tree structure that mimics what you see with tools like regedit
- */
-
-/*
- * DateTime struct for Windows
- */
-
-typedef struct date_time_s {
- unsigned int low, high;
-} NTTIME;
-
-/*
- * Definition of a Key. It has a name, classname, date/time last modified,
- * sub-keys, values, and a security descriptor
- */
-
-#define REG_ROOT_KEY 1
-#define REG_SUB_KEY 2
-#define REG_SYM_LINK 3
-
-typedef struct reg_key_s {
- char *name; /* Name of the key */
- char *class_name;
- int type; /* One of REG_ROOT_KEY or REG_SUB_KEY */
- NTTIME last_mod; /* Time last modified */
- struct reg_key_s *owner;
- struct key_list_s *sub_keys;
- struct val_list_s *values;
- struct key_sec_desc_s *security;
-} REG_KEY;
-
-/*
- * The KEY_LIST struct lists sub-keys.
- */
-
-typedef struct key_list_s {
- int key_count;
- REG_KEY *keys[1];
-} KEY_LIST;
-
-typedef struct val_key_s {
- char *name;
- int has_name;
- int data_type;
- int data_len;
- void *data_blk; /* Might want a separate block */
-} VAL_KEY;
-
-typedef struct val_list_s {
- int val_count;
- VAL_KEY *vals[1];
-} VAL_LIST;
-
-#ifndef MAXSUBAUTHS
-#define MAXSUBAUTHS 15
-#endif
-
-typedef struct dom_sid_s {
- unsigned char ver, auths;
- unsigned char auth[6];
- unsigned int sub_auths[MAXSUBAUTHS];
-} DOM_SID;
-
-typedef struct ace_struct_s {
- unsigned char type, flags;
- unsigned int perms; /* Perhaps a better def is in order */
- DOM_SID *trustee;
-} ACE;
-
-typedef struct acl_struct_s {
- unsigned short rev, refcnt;
- unsigned short num_aces;
- ACE *aces[1];
-} ACL;
-
-typedef struct sec_desc_s {
- unsigned int rev, type;
- DOM_SID *owner, *group;
- ACL *sacl, *dacl;
-} SEC_DESC;
-
-#define SEC_DESC_NON 0
-#define SEC_DESC_RES 1
-#define SEC_DESC_OCU 2
-
-typedef struct key_sec_desc_s {
- struct key_sec_desc_s *prev, *next;
- int ref_cnt;
- int state;
- SEC_DESC *sec_desc;
-} KEY_SEC_DESC;
-
-
-/*
- * An API for accessing/creating/destroying items above
- */
-
-/*
- * Iterate over the keys, depth first, calling a function for each key
- * and indicating if it is terminal or non-terminal and if it has values.
- *
- * In addition, for each value in the list, call a value list function
- */
-
-/*
- * There should eventually be one to deal with security keys as well
- */
-
-typedef int (*key_print_f)(const char *path, char *key_name, char *class_name,
- int root, int terminal, int values);
-
-typedef int (*val_print_f)(const char *path, char *val_name, int val_type,
- int data_len, void *data_blk, int terminal,
- int first, int last);
-
-typedef int (*sec_print_f)(SEC_DESC *sec_desc);
-
-typedef struct regf_struct_s REGF;
-
-int nt_key_iterator(REGF *regf, REG_KEY *key_tree, int bf, const char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print);
-
-int nt_val_list_iterator(REGF *regf, VAL_LIST *val_list, int bf, char *path,
- int terminal, val_print_f val_print)
-{
- int i;
-
- if (!val_list) return 1;
-
- if (!val_print) return 1;
-
- for (i=0; i<val_list->val_count; i++) {
- if (!val_print(path, val_list->vals[i]->name, val_list->vals[i]->data_type,
- val_list->vals[i]->data_len, val_list->vals[i]->data_blk,
- terminal,
- (i == 0),
- (i == val_list->val_count))) {
-
- return 0;
-
- }
- }
-
- return 1;
-}
-
-int nt_key_list_iterator(REGF *regf, KEY_LIST *key_list, int bf,
- const char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print)
-{
- int i;
-
- if (!key_list) return 1;
-
- for (i=0; i< key_list->key_count; i++) {
- if (!nt_key_iterator(regf, key_list->keys[i], bf, path, key_print,
- sec_print, val_print)) {
- return 0;
- }
- }
- return 1;
-}
-
-int nt_key_iterator(REGF *regf, REG_KEY *key_tree, int bf, const char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print)
-{
- int path_len = strlen(path);
- char *new_path;
-
- if (!regf || !key_tree)
- return -1;
-
- /* List the key first, then the values, then the sub-keys */
-
- if (key_print) {
-
- if (!(*key_print)(path, key_tree->name,
- key_tree->class_name,
- (key_tree->type == REG_ROOT_KEY),
- (key_tree->sub_keys == NULL),
- (key_tree->values?(key_tree->values->val_count):0)))
- return 0;
- }
-
- /*
- * If we have a security print routine, call it
- * If the security print routine returns false, stop.
- */
- if (sec_print) {
- if (key_tree->security && !(*sec_print)(key_tree->security->sec_desc))
- return 0;
- }
-
- new_path = (char *)malloc(path_len + 1 + strlen(key_tree->name) + 1);
- if (!new_path) return 0; /* Errors? */
- new_path[0] = '\0';
- strcat(new_path, path);
- strcat(new_path, "\\");
- strcat(new_path, key_tree->name);
-
- /*
- * Now, iterate through the values in the val_list
- */
-
- if (key_tree->values &&
- !nt_val_list_iterator(regf, key_tree->values, bf, new_path,
- (key_tree->values!=NULL),
- val_print)) {
-
- free(new_path);
- return 0;
- }
-
- /*
- * Now, iterate through the keys in the key list
- */
-
- if (key_tree->sub_keys &&
- !nt_key_list_iterator(regf, key_tree->sub_keys, bf, new_path, key_print,
- sec_print, val_print)) {
- free(new_path);
- return 0;
- }
-
- free(new_path);
- return 1;
-}
-
-/* Make, delete keys */
-
-int nt_delete_val_key(VAL_KEY *val_key)
-{
-
- if (val_key) {
- if (val_key->data_blk) free(val_key->data_blk);
- free(val_key);
- };
- return 1;
-}
-
-int nt_delete_val_list(VAL_LIST *vl)
-{
- int i;
-
- if (vl) {
- for (i=0; i<vl->val_count; i++)
- nt_delete_val_key(vl->vals[i]);
- free(vl);
- }
- return 1;
-}
-
-int nt_delete_reg_key(REG_KEY *key);
-int nt_delete_key_list(KEY_LIST *key_list)
-{
- int i;
-
- if (key_list) {
- for (i=0; i<key_list->key_count; i++)
- nt_delete_reg_key(key_list->keys[i]);
- free(key_list);
- }
- return 1;
-}
-
-int nt_delete_sid(DOM_SID *sid)
-{
-
- if (sid) free(sid);
- return 1;
-
-}
-
-int nt_delete_ace(ACE *ace)
-{
-
- if (ace) {
- nt_delete_sid(ace->trustee);
- free(ace);
- }
- return 1;
-
-}
-
-int nt_delete_acl(ACL *acl)
-{
-
- if (acl) {
- int i;
-
- for (i=0; i<acl->num_aces; i++)
- nt_delete_ace(acl->aces[i]);
-
- free(acl);
- }
- return 1;
-}
-
-int nt_delete_sec_desc(SEC_DESC *sec_desc)
-{
-
- if (sec_desc) {
-
- nt_delete_sid(sec_desc->owner);
- nt_delete_sid(sec_desc->group);
- nt_delete_acl(sec_desc->sacl);
- nt_delete_acl(sec_desc->dacl);
- free(sec_desc);
-
- }
- return 1;
-}
-
-int nt_delete_key_sec_desc(KEY_SEC_DESC *key_sec_desc)
-{
-
- if (key_sec_desc) {
- key_sec_desc->ref_cnt--;
- if (key_sec_desc->ref_cnt<=0) {
- /*
- * There should always be a next and prev, even if they point to us
- */
- key_sec_desc->next->prev = key_sec_desc->prev;
- key_sec_desc->prev->next = key_sec_desc->next;
- nt_delete_sec_desc(key_sec_desc->sec_desc);
- }
- }
- return 1;
-}
-
-int nt_delete_reg_key(REG_KEY *key)
-{
-
- if (key) {
- if (key->name) free(key->name);
- if (key->class_name) free(key->class_name);
-
- /*
- * Do not delete the owner ...
- */
-
- if (key->sub_keys) nt_delete_key_list(key->sub_keys);
- if (key->values) nt_delete_val_list(key->values);
- if (key->security) nt_delete_key_sec_desc(key->security);
- free(key);
- }
- return 1;
-}
-
-/*
- * Create/delete key lists and add delete keys to/from a list, count the keys
- */
-
-
-/*
- * Create/delete value lists, add/delete values, count them
- */
-
-
-/*
- * Create/delete security descriptors, add/delete SIDS, count SIDS, etc.
- * We reference count the security descriptors. Any new reference increments
- * the ref count. If we modify an SD, we copy the old one, dec the ref count
- * and make the change. We also want to be able to check for equality so
- * we can reduce the number of SDs in use.
- */
-
-/*
- * Code to parse registry specification from command line or files
- *
- * Format:
- * [cmd:]key:type:value
- *
- * cmd = a|d|c|add|delete|change|as|ds|cs
- *
- */
-
-
-/*
- * Load and unload a registry file.
- *
- * Load, loads it into memory as a tree, while unload sealizes/flattens it
- */
-
-/*
- * Get the starting record for NT Registry file
- */
-
-/* A map of sk offsets in the regf to KEY_SEC_DESCs for quick lookup etc */
-typedef struct sk_map_s {
- int sk_off;
- KEY_SEC_DESC *key_sec_desc;
-} SK_MAP;
-
-/*
- * Where we keep all the regf stuff for one registry.
- * This is the structure that we use to tie the in memory tree etc
- * together. By keeping separate structs, we can operate on different
- * registries at the same time.
- * Currently, the SK_MAP is an array of mapping structure.
- * Since we only need this on input and output, we fill in the structure
- * as we go on input. On output, we know how many SK items we have, so
- * we can allocate the structure as we need to.
- * If you add stuff here that is dynamically allocated, add the
- * appropriate free statements below.
- */
-
-#define REGF_REGTYPE_NONE 0
-#define REGF_REGTYPE_NT 1
-#define REGF_REGTYPE_W9X 2
-
-#define TTTONTTIME(r, t1, t2) (r)->last_mod_time.low = (t1); \
- (r)->last_mod_time.high = (t2);
-
-#define REGF_HDR_BLKSIZ 0x1000
-
-struct regf_struct_s {
- int reg_type;
- char *regfile_name, *outfile_name;
- int fd;
- struct stat sbuf;
- char *base;
- int modified;
- NTTIME last_mod_time;
- REG_KEY *root; /* Root of the tree for this file */
- int sk_count, sk_map_size;
- SK_MAP *sk_map;
-};
-
-/*
- * Structures for dealing with the on-disk format of the registry
- */
-
-#define IVAL(buf) ((unsigned int) \
- (unsigned int)*((unsigned char *)(buf)+3)<<24| \
- (unsigned int)*((unsigned char *)(buf)+2)<<16| \
- (unsigned int)*((unsigned char *)(buf)+1)<<8| \
- (unsigned int)*((unsigned char *)(buf)+0))
-
-#define SVAL(buf) ((unsigned short) \
- (unsigned short)*((unsigned char *)(buf)+1)<<8| \
- (unsigned short)*((unsigned char *)(buf)+0))
-
-#define CVAL(buf) ((unsigned char)*((unsigned char *)(buf)))
-
-#define OFF(f) ((f) + REGF_HDR_BLKSIZ + 4)
-#define LOCN(base, f) ((base) + OFF(f))
-
-/*
- * All of the structures below actually have a four-byte lenght before them
- * which always seems to be negative. The following macro retrieves that
- * size as an integer
- */
-
-#define BLK_SIZE(b) ((int)*(int *)(((int *)b)-1))
-
-typedef unsigned int DWORD;
-typedef unsigned short WORD;
-
-#define REG_REGF_ID 0x66676572
-
-typedef struct regf_block {
- DWORD REGF_ID; /* regf */
- DWORD uk1;
- DWORD uk2;
- DWORD tim1, tim2;
- DWORD uk3; /* 1 */
- DWORD uk4; /* 3 */
- DWORD uk5; /* 0 */
- DWORD uk6; /* 1 */
- DWORD first_key; /* offset */
- unsigned int dblk_size;
- DWORD uk7[116]; /* 1 */
- DWORD chksum;
-} REGF_HDR;
-
-typedef struct hbin_sub_struct {
- DWORD dblocksize;
- char data[1];
-} HBIN_SUB_HDR;
-
-#define REG_HBIN_ID 0x6E696268
-
-typedef struct hbin_struct {
- DWORD HBIN_ID; /* hbin */
- DWORD next_off;
- DWORD prev_off;
- DWORD uk1;
- DWORD uk2;
- DWORD uk3;
- DWORD uk4;
- DWORD blk_size;
- HBIN_SUB_HDR hbin_sub_hdr;
-} HBIN_HDR;
-
-#define REG_NK_ID 0x6B6E
-
-typedef struct nk_struct {
- WORD NK_ID;
- WORD type;
- DWORD t1, t2;
- DWORD uk1;
- DWORD own_off;
- DWORD subk_num;
- DWORD uk2;
- DWORD lf_off;
- DWORD uk3;
- DWORD val_cnt;
- DWORD val_off;
- DWORD sk_off;
- DWORD clsnam_off;
- DWORD unk4[4];
- DWORD unk5;
- WORD nam_len;
- WORD clsnam_len;
- char key_nam[1]; /* Actual length determined by nam_len */
-} NK_HDR;
-
-#define REG_SK_ID 0x6B73
-
-typedef struct sk_struct {
- WORD SK_ID;
- WORD uk1;
- DWORD prev_off;
- DWORD next_off;
- DWORD ref_cnt;
- DWORD rec_size;
- char sec_desc[1];
-} SK_HDR;
-
-typedef struct ace_struct {
- unsigned char type;
- unsigned char flags;
- unsigned short length;
- unsigned int perms;
- DOM_SID trustee;
-} REG_ACE;
-
-typedef struct acl_struct {
- WORD rev;
- WORD size;
- DWORD num_aces;
- REG_ACE *aces; /* One or more ACEs */
-} REG_ACL;
-
-typedef struct sec_desc_rec {
- WORD rev;
- WORD type;
- DWORD owner_off;
- DWORD group_off;
- DWORD sacl_off;
- DWORD dacl_off;
-} REG_SEC_DESC;
-
-typedef struct hash_struct {
- DWORD nk_off;
- char hash[4];
-} HASH_REC;
-
-#define REG_LF_ID 0x666C
-
-typedef struct lf_struct {
- WORD LF_ID;
- WORD key_count;
- struct hash_struct hr[1]; /* Array of hash records, depending on key_count */
-} LF_HDR;
-
-typedef DWORD VL_TYPE[1]; /* Value list is an array of vk rec offsets */
-
-#define REG_VK_ID 0x6B76
-
-typedef struct vk_struct {
- WORD VK_ID;
- WORD nam_len;
- DWORD dat_len; /* If top-bit set, offset contains the data */
- DWORD dat_off;
- DWORD dat_type;
- WORD flag; /* =1, has name, else no name (=Default). */
- WORD unk1;
- char dat_name[1]; /* Name starts here ... */
-} VK_HDR;
-
-#define REG_TYPE_REGSZ 1
-#define REG_TYPE_EXPANDSZ 2
-#define REG_TYPE_BIN 3
-#define REG_TYPE_DWORD 4
-#define REG_TYPE_MULTISZ 7
-
-typedef struct _val_str {
- unsigned int val;
- const char * str;
-} VAL_STR;
-
-const VAL_STR reg_type_names[] = {
- { 1, "REG_SZ" },
- { 2, "REG_EXPAND_SZ" },
- { 3, "REG_BIN" },
- { 4, "REG_DWORD" },
- { 7, "REG_MULTI_SZ" },
- { 0, NULL },
-};
-
-const char *val_to_str(unsigned int val, const VAL_STR *val_array)
-{
- int i = 0;
-
- if (!val_array) return NULL;
-
- while (val_array[i].val && val_array[i].str) {
-
- if (val_array[i].val == val) return val_array[i].str;
- i++;
-
- }
-
- return NULL;
-
-}
-
-/*
- * Convert from UniCode to Ascii ... Does not take into account other lang
- * Restrict by ascii_max if > 0
- */
-int uni_to_ascii(unsigned char *uni, unsigned char *ascii, int ascii_max,
- int uni_max)
-{
- int i = 0;
-
- while (i < ascii_max && !(!uni[i*2] && !uni[i*2+1])) {
- if (uni_max > 0 && (i*2) >= uni_max) break;
- ascii[i] = uni[i*2];
- i++;
-
- }
-
- ascii[i] = '\0';
-
- return i;
-}
-
-/*
- * Convert a data value to a string for display
- */
-int data_to_ascii(unsigned char *datap, int len, int type, char *ascii, int ascii_max)
-{
- unsigned char *asciip;
- int i;
-
- switch (type) {
- case REG_TYPE_REGSZ:
- fprintf(stderr, "Len: %d\n", len);
- return uni_to_ascii(datap, ascii, len, ascii_max);
- break;
-
- case REG_TYPE_EXPANDSZ:
- return uni_to_ascii(datap, ascii, len, ascii_max);
- break;
-
- case REG_TYPE_BIN:
- asciip = ascii;
- for (i=0; (i<len)&&(i+1)*3<ascii_max; i++) {
- int str_rem = ascii_max - ((int)asciip - (int)ascii);
- asciip += snprintf(asciip, str_rem, "%02x", *(unsigned char *)(datap+i));
- if (i < len && str_rem > 0)
- *asciip = ' '; asciip++;
- }
- *asciip = '\0';
- return ((int)asciip - (int)ascii);
- break;
-
- case REG_TYPE_DWORD:
- if (*(int *)datap == 0)
- return snprintf(ascii, ascii_max, "0");
- else
- return snprintf(ascii, ascii_max, "0x%x", *(int *)datap);
- break;
-
- case REG_TYPE_MULTISZ:
-
- break;
-
- default:
- return 0;
- break;
- }
-
- return len;
-
-}
-
-REG_KEY *nt_get_key_tree(REGF *regf, NK_HDR *nk_hdr, int size);
-
-int nt_set_regf_input_file(REGF *regf, char *filename)
-{
- return ((regf->regfile_name = strdup(filename)) != NULL);
-}
-
-int nt_set_regf_output_file(REGF *regf, char *filename)
-{
- return ((regf->outfile_name = strdup(filename)) != NULL);
-}
-
-/* Create a regf structure and init it */
-
-REGF *nt_create_regf(void)
-{
- REGF *tmp = (REGF *)malloc(sizeof(REGF));
- if (!tmp) return tmp;
- bzero(tmp, sizeof(REGF));
- return tmp;
-}
-
-/* Free all the bits and pieces ... Assumes regf was malloc'd */
-/* If you add stuff to REGF, add the relevant free bits here */
-int nt_free_regf(REGF *regf)
-{
- if (!regf) return 0;
-
- if (regf->regfile_name) free(regf->regfile_name);
- if (regf->outfile_name) free(regf->outfile_name);
-
- /* Free the mmap'd area */
-
- if (regf->base) munmap(regf->base, regf->sbuf.st_size);
- regf->base = NULL;
- close(regf->fd); /* Ignore the error :-) */
-
- nt_delete_reg_key(regf->root); /* Free the tree */
- free(regf->sk_map);
- regf->sk_count = regf->sk_map_size = 0;
-
- free(regf);
-
- return 1;
-}
-
-/* Get the header of the registry. Return a pointer to the structure
- * If the mmap'd area has not been allocated, then mmap the input file
- */
-REGF_HDR *nt_get_regf_hdr(REGF *regf)
-{
- if (!regf)
- return NULL; /* What about errors */
-
- if (!regf->regfile_name)
- return NULL; /* What about errors */
-
- if (!regf->base) { /* Try to mmap etc the file */
-
- if ((regf->fd = open(regf->regfile_name, O_RDONLY, 0000)) <0) {
- return NULL; /* What about errors? */
- }
-
- if (fstat(regf->fd, &regf->sbuf) < 0) {
- return NULL;
- }
-
- regf->base = mmap(0, regf->sbuf.st_size, PROT_READ, MAP_SHARED, regf->fd, 0);
-
- if ((int)regf->base == 1) {
- fprintf(stderr, "Could not mmap file: %s, %s\n", regf->regfile_name,
- strerror(errno));
- return NULL;
- }
- }
-
- /*
- * At this point, regf->base != NULL, and we should be able to read the
- * header
- */
-
- assert(regf->base != NULL);
-
- return (REGF_HDR *)regf->base;
-}
-
-/*
- * Validate a regf header
- * For now, do nothing, but we should check the checksum
- */
-int valid_regf_hdr(REGF_HDR *regf_hdr)
-{
- if (!regf_hdr) return 0;
-
- return 1;
-}
-
-/*
- * Process an SK header ...
- * Every time we see a new one, add it to the map. Otherwise, just look it up.
- * We will do a simple linear search for the moment, since many KEYs have the
- * same security descriptor.
- * We allocate the map in increments of 10 entries.
- */
-
-/*
- * Create a new entry in the map, and increase the size of the map if needed
- */
-
-SK_MAP *alloc_sk_map_entry(REGF *regf, KEY_SEC_DESC *tmp, int sk_off)
-{
- if (!regf->sk_map) { /* Allocate a block of 10 */
- regf->sk_map = (SK_MAP *)malloc(sizeof(SK_MAP) * 10);
- if (!regf->sk_map) {
- free(tmp);
- return NULL;
- }
- regf->sk_map_size = 10;
- regf->sk_count = 1;
- (regf->sk_map)[0].sk_off = sk_off;
- (regf->sk_map)[0].key_sec_desc = tmp;
- }
- else { /* Simply allocate a new slot, unless we have to expand the list */
- int ndx = regf->sk_count;
- if (regf->sk_count >= regf->sk_map_size) {
- regf->sk_map = (SK_MAP *)realloc(regf->sk_map,
- (regf->sk_map_size + 10)*sizeof(SK_MAP));
- if (!regf->sk_map) {
- free(tmp);
- return NULL;
- }
- /*
- * ndx already points at the first entry of the new block
- */
- regf->sk_map_size += 10;
- }
- (regf->sk_map)[ndx].sk_off = sk_off;
- (regf->sk_map)[ndx].key_sec_desc = tmp;
- regf->sk_count++;
- }
- return regf->sk_map;
-}
-
-/*
- * Search for a KEY_SEC_DESC in the sk_map, but dont create one if not
- * found
- */
-
-KEY_SEC_DESC *lookup_sec_key(SK_MAP *sk_map, int count, int sk_off)
-{
- int i;
-
- if (!sk_map) return NULL;
-
- for (i = 0; i < count; i++) {
-
- if (sk_map[i].sk_off == sk_off)
- return sk_map[i].key_sec_desc;
-
- }
-
- return NULL;
-
-}
-
-/*
- * Allocate a KEY_SEC_DESC if we can't find one in the map
- */
-
-KEY_SEC_DESC *lookup_create_sec_key(REGF *regf, SK_MAP *sk_map, int sk_off)
-{
- KEY_SEC_DESC *tmp = lookup_sec_key(regf->sk_map, regf->sk_count, sk_off);
-
- if (tmp) {
- return tmp;
- }
- else { /* Allocate a new one */
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
- if (!tmp) {
- return NULL;
- }
- tmp->state = SEC_DESC_RES;
- if (!alloc_sk_map_entry(regf, tmp, sk_off)) {
- return NULL;
- }
- return tmp;
- }
-}
-
-/*
- * Allocate storage and duplicate a SID
- * We could allocate the SID to be only the size needed, but I am too lazy.
- */
-DOM_SID *dup_sid(DOM_SID *sid)
-{
- DOM_SID *tmp = (DOM_SID *)malloc(sizeof(DOM_SID));
- int i;
-
- if (!tmp) return NULL;
- tmp->ver = sid->ver;
- tmp->auths = sid->auths;
- for (i=0; i<6; i++) {
- tmp->auth[i] = sid->auth[i];
- }
- for (i=0; i<tmp->auths&&i<MAXSUBAUTHS; i++) {
- tmp->sub_auths[i] = sid->sub_auths[i];
- }
- return tmp;
-}
-
-/*
- * Allocate space for an ACE and duplicate the registry encoded one passed in
- */
-ACE *dup_ace(REG_ACE *ace)
-{
- ACE *tmp = NULL;
-
- tmp = (ACE *)malloc(sizeof(ACE));
-
- if (!tmp) return NULL;
-
- tmp->type = CVAL(&ace->type);
- tmp->flags = CVAL(&ace->flags);
- tmp->perms = IVAL(&ace->perms);
- tmp->trustee = dup_sid(&ace->trustee);
- return tmp;
-}
-
-/*
- * Allocate space for an ACL and duplicate the registry encoded one passed in
- */
-ACL *dup_acl(REG_ACL *acl)
-{
- ACL *tmp = NULL;
- REG_ACE* ace;
- int i, num_aces;
-
- num_aces = IVAL(&acl->num_aces);
-
- tmp = (ACL *)malloc(sizeof(ACL) + (num_aces - 1)*sizeof(ACE *));
- if (!tmp) return NULL;
-
- tmp->num_aces = num_aces;
- tmp->refcnt = 1;
- tmp->rev = SVAL(&acl->rev);
- ace = (REG_ACE *)&acl->aces;
- for (i=0; i<num_aces; i++) {
- tmp->aces[i] = dup_ace(ace);
- ace = (REG_ACE *)((char *)ace + SVAL(&ace->length));
- /* XXX: FIXME, should handle malloc errors */
- }
-
- return tmp;
-}
-
-SEC_DESC *process_sec_desc(REGF *regf, REG_SEC_DESC *sec_desc)
-{
- SEC_DESC *tmp = NULL;
-
- tmp = (SEC_DESC *)malloc(sizeof(SEC_DESC));
-
- if (!tmp) {
- return NULL;
- }
-
- tmp->rev = SVAL(&sec_desc->rev);
- tmp->type = SVAL(&sec_desc->type);
- tmp->owner = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->owner_off)));
- if (!tmp->owner) {
- free(tmp);
- return NULL;
- }
- tmp->group = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->group_off)));
- if (!tmp->group) {
- free(tmp);
- return NULL;
- }
-
- /* Now pick up the SACL and DACL */
-
- if (sec_desc->sacl_off)
- tmp->sacl = dup_acl((REG_ACL *)((char *)sec_desc + IVAL(&sec_desc->sacl_off)));
- else
- tmp->sacl = NULL;
-
- if (sec_desc->dacl_off)
- tmp->dacl = dup_acl((REG_ACL *)((char *)sec_desc + IVAL(&sec_desc->dacl_off)));
- else
- tmp->dacl = NULL;
-
- return tmp;
-}
-
-KEY_SEC_DESC *process_sk(REGF *regf, SK_HDR *sk_hdr, int sk_off, int size)
-{
- KEY_SEC_DESC *tmp = NULL;
- int sk_next_off, sk_prev_off, sk_size;
- REG_SEC_DESC *sec_desc;
-
- if (!sk_hdr) return NULL;
-
- if (SVAL(&sk_hdr->SK_ID) != REG_SK_ID) {
- fprintf(stderr, "Unrecognized SK Header ID: %08X, %s\n", (int)sk_hdr,
- regf->regfile_name);
- return NULL;
- }
-
- if (-size < (sk_size = IVAL(&sk_hdr->rec_size))) {
- fprintf(stderr, "Incorrect SK record size: %d vs %d. %s\n",
- -size, sk_size, regf->regfile_name);
- return NULL;
- }
-
- /*
- * Now, we need to look up the SK Record in the map, and return it
- * Since the map contains the SK_OFF mapped to KEY_SEC_DESC, we can
- * use that
- */
-
- if (regf->sk_map &&
- ((tmp = lookup_sec_key(regf->sk_map, regf->sk_count, sk_off)) != NULL)
- && (tmp->state == SEC_DESC_OCU)) {
- tmp->ref_cnt++;
- return tmp;
- }
-
- /* Here, we have an item in the map that has been reserved, or tmp==NULL. */
-
- assert(tmp == NULL || (tmp && tmp->state != SEC_DESC_NON));
-
- /*
- * Now, allocate a KEY_SEC_DESC, and parse the structure here, and add the
- * new KEY_SEC_DESC to the mapping structure, since the offset supplied is
- * the actual offset of structure. The same offset will be used by all
- * all future references to this structure
- * We chould put all this unpleasantness in a function.
- */
-
- if (!tmp) {
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
- if (!tmp) return NULL;
- bzero(tmp, sizeof(KEY_SEC_DESC));
-
- /*
- * Allocate an entry in the SK_MAP ...
- * We don't need to free tmp, because that is done for us if the
- * sm_map entry can't be expanded when we need more space in the map.
- */
-
- if (!alloc_sk_map_entry(regf, tmp, sk_off)) {
- return NULL;
- }
- }
-
- tmp->ref_cnt++;
- tmp->state = SEC_DESC_OCU;
-
- /*
- * Now, process the actual sec desc and plug the values in
- */
-
- sec_desc = (REG_SEC_DESC *)&sk_hdr->sec_desc[0];
- tmp->sec_desc = process_sec_desc(regf, sec_desc);
-
- /*
- * Now forward and back links. Here we allocate an entry in the sk_map
- * if it does not exist, and mark it reserved
- */
-
- sk_prev_off = IVAL(&sk_hdr->prev_off);
- tmp->prev = lookup_create_sec_key(regf, regf->sk_map, sk_prev_off);
- assert(tmp->prev != NULL);
- sk_next_off = IVAL(&sk_hdr->next_off);
- tmp->next = lookup_create_sec_key(regf, regf->sk_map, sk_next_off);
- assert(tmp->next != NULL);
-
- return tmp;
-}
-
-/*
- * Process a VK header and return a value
- */
-VAL_KEY *process_vk(REGF *regf, VK_HDR *vk_hdr, int size)
-{
- char val_name[1024];
- int nam_len, dat_len, flag, dat_type, dat_off, vk_id;
- const char *val_type;
- VAL_KEY *tmp = NULL;
-
- if (!vk_hdr) return NULL;
-
- if ((vk_id = SVAL(&vk_hdr->VK_ID)) != REG_VK_ID) {
- fprintf(stderr, "Unrecognized VK header ID: %0X, block: %0X, %s\n",
- vk_id, (int)vk_hdr, regf->regfile_name);
- return NULL;
- }
-
- nam_len = SVAL(&vk_hdr->nam_len);
- val_name[nam_len] = '\0';
- flag = SVAL(&vk_hdr->flag);
- dat_type = IVAL(&vk_hdr->dat_type);
- dat_len = IVAL(&vk_hdr->dat_len); /* If top bit, offset contains data */
- dat_off = IVAL(&vk_hdr->dat_off);
-
- tmp = (VAL_KEY *)malloc(sizeof(VAL_KEY));
- if (!tmp) {
- goto error;
- }
- bzero(tmp, sizeof(VAL_KEY));
- tmp->has_name = flag;
- tmp->data_type = dat_type;
-
- if (flag & 0x01) {
- strncpy(val_name, vk_hdr->dat_name, nam_len);
- tmp->name = strdup(val_name);
- if (!tmp->name) {
- goto error;
- }
- }
- else
- strncpy(val_name, "<No Name>", 10);
-
- /*
- * Allocate space and copy the data as a BLOB
- */
-
- if (dat_len) {
-
- char *dtmp = (char *)malloc(dat_len&0x7FFFFFFF);
-
- if (!dtmp) {
- goto error;
- }
-
- tmp->data_blk = dtmp;
-
- if ((dat_len&0x80000000) == 0) { /* The data is pointed to by the offset */
- char *dat_ptr = LOCN(regf->base, dat_off);
- bcopy(dat_ptr, dtmp, dat_len);
- }
- else { /* The data is in the offset */
- dat_len = dat_len & 0x7FFFFFFF;
- bcopy(&dat_off, dtmp, dat_len);
- }
-
- tmp->data_len = dat_len;
- }
-
- val_type = val_to_str(dat_type, reg_type_names);
-
- /*
- * We need to save the data area as well
- */
-
- if (verbose) fprintf(stdout, " %s : %s : \n", val_name, val_type);
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated struct */
- return NULL;
-
-}
-
-/*
- * Process a VL Header and return a list of values
- */
-VAL_LIST *process_vl(REGF *regf, VL_TYPE vl, int count, int size)
-{
- int i, vk_off;
- VK_HDR *vk_hdr;
- VAL_LIST *tmp = NULL;
-
- if (!vl) return NULL;
-
- if (-size < (count+1)*sizeof(int)){
- fprintf(stderr, "Error in VL header format. Size less than space required. %d\n", -size);
- return NULL;
- }
-
- tmp = (VAL_LIST *)malloc(sizeof(VAL_LIST) + (count - 1) * sizeof(VAL_KEY *));
- if (!tmp) {
- goto error;
- }
-
- for (i=0; i<count; i++) {
- vk_off = IVAL(&vl[i]);
- vk_hdr = (VK_HDR *)LOCN(regf->base, vk_off);
- tmp->vals[i] = process_vk(regf, vk_hdr, BLK_SIZE(vk_hdr));
- if (!tmp->vals[i]){
- goto error;
- }
- }
-
- tmp->val_count = count;
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated structure */
- return NULL;
-}
-
-/*
- * Process an LF Header and return a list of sub-keys
- */
-KEY_LIST *process_lf(REGF *regf, LF_HDR *lf_hdr, int size)
-{
- int count, i, nk_off;
- unsigned int lf_id;
- KEY_LIST *tmp;
-
- if (!lf_hdr) return NULL;
-
- if ((lf_id = SVAL(&lf_hdr->LF_ID)) != REG_LF_ID) {
- fprintf(stderr, "Unrecognized LF Header format: %0X, Block: %0X, %s.\n",
- lf_id, (int)lf_hdr, regf->regfile_name);
- return NULL;
- }
-
- assert(size < 0);
-
- count = SVAL(&lf_hdr->key_count);
-
- if (count <= 0) return NULL;
-
- /* Now, we should allocate a KEY_LIST struct and fill it in ... */
-
- tmp = (KEY_LIST *)malloc(sizeof(KEY_LIST) + (count - 1) * sizeof(REG_KEY *));
- if (!tmp) {
- goto error;
- }
-
- tmp->key_count = count;
-
- for (i=0; i<count; i++) {
- NK_HDR *nk_hdr;
-
- nk_off = IVAL(&lf_hdr->hr[i].nk_off);
- nk_hdr = (NK_HDR *)LOCN(regf->base, nk_off);
- tmp->keys[i] = nt_get_key_tree(regf, nk_hdr, BLK_SIZE(nk_hdr));
- if (!tmp->keys[i]) {
- goto error;
- }
- }
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated structure */
- return NULL;
-}
-
-/*
- * This routine is passed a NK_HDR pointer and retrieves the entire tree
- * from there down. It return a REG_KEY *.
- */
-REG_KEY *nt_get_key_tree(REGF *regf, NK_HDR *nk_hdr, int size)
-{
- REG_KEY *tmp = NULL;
- int name_len, clsname_len, lf_off, val_off, val_count, sk_off;
- unsigned int nk_id;
- LF_HDR *lf_hdr;
- VL_TYPE *vl;
- SK_HDR *sk_hdr;
- char key_name[1024], cls_name[1024];
-
- if (!nk_hdr) return NULL;
-
- if ((nk_id = SVAL(&nk_hdr->NK_ID)) != REG_NK_ID) {
- fprintf(stderr, "Unrecognized NK Header format: %08X, Block: %0X. %s\n",
- nk_id, (int)nk_hdr, regf->regfile_name);
- return NULL;
- }
-
- assert(size < 0);
-
- name_len = SVAL(&nk_hdr->nam_len);
- clsname_len = SVAL(&nk_hdr->clsnam_len);
-
- /*
- * The value of -size should be ge
- * (sizeof(NK_HDR) - 1 + name_len)
- * The -1 accounts for the fact that we included the first byte of
- * the name in the structure. clsname_len is the length of the thing
- * pointed to by clsnam_off
- */
-
- if (-size < (sizeof(NK_HDR) - 1 + name_len)) {
- fprintf(stderr, "Incorrect NK_HDR size: %d, %0X\n", -size, (int)nk_hdr);
- fprintf(stderr, "Sizeof NK_HDR: %d, name_len %d, clsname_len %d\n",
- sizeof(NK_HDR), name_len, clsname_len);
- /*return NULL;*/
- }
-
- if (verbose) fprintf(stdout, "NK HDR: Name len: %d, class name len: %d\n",
- name_len, clsname_len);
-
- /* Fish out the key name and process the LF list */
-
- assert(name_len < sizeof(key_name));
-
- /* Allocate the key struct now */
- tmp = (REG_KEY *)malloc(sizeof(REG_KEY));
- if (!tmp) return tmp;
- bzero(tmp, sizeof(REG_KEY));
-
- tmp->type = (SVAL(&nk_hdr->type)==0x2C?REG_ROOT_KEY:REG_SUB_KEY);
-
- strncpy(key_name, nk_hdr->key_nam, name_len);
- key_name[name_len] = '\0';
-
- if (verbose) fprintf(stdout, "Key name: %s\n", key_name);
-
- tmp->name = strdup(key_name);
- if (!tmp->name) {
- goto error;
- }
-
- /*
- * Fish out the class name, it is in UNICODE, while the key name is
- * ASCII :-)
- */
-
- if (clsname_len) { /* Just print in Ascii for now */
- char *clsnamep;
- int clsnam_off;
-
- clsnam_off = IVAL(&nk_hdr->clsnam_off);
- clsnamep = LOCN(regf->base, clsnam_off);
-
- bzero(cls_name, clsname_len);
- uni_to_ascii(clsnamep, cls_name, sizeof(cls_name), clsname_len);
-
- /*
- * I am keeping class name as an ascii string for the moment.
- * That means it needs to be converted on output.
- * XXX: FIXME
- */
-
- tmp->class_name = strdup(cls_name);
- if (!tmp->class_name) {
- goto error;
- }
-
- if (verbose) fprintf(stdout, " Class Name: %s\n", cls_name);
-
- }
-
- /*
- * If there are any values, process them here
- */
-
- val_count = IVAL(&nk_hdr->val_cnt);
-
- if (val_count) {
-
- val_off = IVAL(&nk_hdr->val_off);
- vl = (VL_TYPE *)LOCN(regf->base, val_off);
-
- tmp->values = process_vl(regf, *vl, val_count, BLK_SIZE(vl));
- if (!tmp->values) {
- goto error;
- }
-
- }
-
- /*
- * Also handle the SK header ...
- */
-
- sk_off = IVAL(&nk_hdr->sk_off);
- sk_hdr = (SK_HDR *)LOCN(regf->base, sk_off);
-
- if (sk_off != -1) {
-
- tmp->security = process_sk(regf, sk_hdr, sk_off, BLK_SIZE(sk_hdr));
-
- }
-
- lf_off = IVAL(&nk_hdr->lf_off);
-
- /*
- * No more subkeys if lf_off == -1
- */
-
- if (lf_off != -1) {
-
- lf_hdr = (LF_HDR *)LOCN(regf->base, lf_off);
-
- tmp->sub_keys = process_lf(regf, lf_hdr, BLK_SIZE(lf_hdr));
- if (!tmp->sub_keys){
- goto error;
- }
-
- }
-
- return tmp;
-
- error:
- if (tmp) nt_delete_reg_key(tmp);
- return NULL;
-}
-
-int nt_load_registry(REGF *regf)
-{
- REGF_HDR *regf_hdr;
- unsigned int regf_id, hbin_id;
- HBIN_HDR *hbin_hdr;
- NK_HDR *first_key;
-
- /* Get the header */
-
- if ((regf_hdr = nt_get_regf_hdr(regf)) == NULL) {
- return -1;
- }
-
- /* Now process that header and start to read the rest in */
-
- if ((regf_id = IVAL(&regf_hdr->REGF_ID)) != REG_REGF_ID) {
- fprintf(stderr, "Unrecognized NT registry header id: %0X, %s\n",
- regf_id, regf->regfile_name);
- return -1;
- }
-
- /*
- * Validate the header ...
- */
- if (!valid_regf_hdr(regf_hdr)) {
- fprintf(stderr, "Registry file header does not validate: %s\n",
- regf->regfile_name);
- return -1;
- }
-
- /* Update the last mod date, and then go get the first NK record and on */
-
- TTTONTTIME(regf, IVAL(&regf_hdr->tim1), IVAL(&regf_hdr->tim2));
-
- /*
- * The hbin hdr seems to be just uninteresting garbage. Check that
- * it is there, but that is all.
- */
-
- hbin_hdr = (HBIN_HDR *)(regf->base + REGF_HDR_BLKSIZ);
-
- if ((hbin_id = IVAL(&hbin_hdr->HBIN_ID)) != REG_HBIN_ID) {
- fprintf(stderr, "Unrecognized registry hbin hdr ID: %0X, %s\n",
- hbin_id, regf->regfile_name);
- return -1;
- }
-
- /*
- * Get a pointer to the first key from the hreg_hdr
- */
-
- first_key = (NK_HDR *)LOCN(regf->base, IVAL(&regf_hdr->first_key));
-
- /*
- * Now, get the registry tree by processing that NK recursively
- */
-
- regf->root = nt_get_key_tree(regf, first_key, BLK_SIZE(first_key));
-
- assert(regf->root != NULL);
-
- return 1;
-}
-
-/*
- * Routines to parse a REGEDIT4 file
- *
- * The file consists of:
- *
- * REGEDIT4
- * \[[-]key-path\]\n
- * <value-spec>*
- *
- * There can be more than one key-path and value-spec.
- *
- * Since we want to support more than one type of file format, we
- * construct a command-file structure that keeps info about the command file
- */
-
-#define FMT_UNREC -1
-#define FMT_REGEDIT4 0
-#define FMT_EDITREG1_1 1
-
-typedef struct command_s {
- int cmd;
- char *key;
- void *val_spec_list;
-} CMD;
-
-/*
- * We seek to offset 0, read in the required number of bytes,
- * and compare to the correct value.
- * We then seek back to the original location
- */
-int regedit4_file_type(int fd)
-{
- int cur_ofs = 0;
-
- cur_ofs = lseek(fd, 0, SEEK_CUR); /* Get current offset */
- if (cur_ofs < 0) {
- fprintf(stderr, "Unable to get current offset: %s\n", strerror(errno));
- exit(1);
- }
-
- if (cur_ofs) {
- lseek(fd, 0, SEEK_SET);
- }
-
- return FMT_UNREC;
-}
-
-CMD *regedit4_get_cmd(int fd)
-{
- return NULL;
-}
-
-int regedit4_exec_cmd(CMD *cmd)
-{
-
- return 0;
-}
-
-int editreg_1_1_file_type(int fd)
-{
-
- return FMT_UNREC;
-}
-
-CMD *editreg_1_1_get_cmd(int fd)
-{
- return NULL;
-}
-
-int editreg_1_1_exec_cmd(CMD *cmd)
-{
-
- return -1;
-}
-
-typedef struct command_ops_s {
- int type;
- int (*file_type)(int fd);
- CMD *(*get_cmd)(int fd);
- int (*exec_cmd)(CMD *cmd);
-} CMD_OPS;
-
-CMD_OPS default_cmd_ops[] = {
- {0, regedit4_file_type, regedit4_get_cmd, regedit4_exec_cmd},
- {1, editreg_1_1_file_type, editreg_1_1_get_cmd, editreg_1_1_exec_cmd},
- {-1, NULL, NULL, NULL}
-};
-
-typedef struct command_file_s {
- char *name;
- int type, fd;
- CMD_OPS cmd_ops;
-} CMD_FILE;
-
-/*
- * Create a new command file structure
- */
-
-CMD_FILE *cmd_file_create(char *file)
-{
- CMD_FILE *tmp;
- struct stat sbuf;
- int i = 0;
-
- /*
- * Let's check if the file exists ...
- * No use creating the cmd_file structure if the file does not exist
- */
-
- if (stat(file, &sbuf) < 0) { /* Not able to access file */
-
- return NULL;
- }
-
- tmp = (CMD_FILE *)malloc(sizeof(CMD_FILE));
- if (!tmp) {
- return NULL;
- }
-
- /*
- * Let's fill in some of the fields;
- */
-
- tmp->name = strdup(file);
-
- if ((tmp->fd = open(file, O_RDONLY, 666)) < 0) {
- free(tmp);
- return NULL;
- }
-
- /*
- * Now, try to find the format by indexing through the table
- */
- while (default_cmd_ops[i].type != -1) {
- if ((tmp->type = default_cmd_ops[i].file_type(tmp->fd)) >= 0) {
- tmp->cmd_ops = default_cmd_ops[i];
- return tmp;
- }
- i++;
- }
-
- /*
- * If we got here, return NULL, as we could not figure out the type
- * of command file.
- *
- * What about errors?
- */
-
- free(tmp);
- return NULL;
-}
-
-/*
- * Extract commands from the command file, and execute them.
- * We pass a table of command callbacks for that
- */
-
-/*
- * Main code from here on ...
- */
-
-/*
- * key print function here ...
- */
-
-int print_key(const char *path, char *name, char *class_name, int root,
- int terminal, int vals)
-{
-
- if (terminal) fprintf(stdout, "%s\\%s\n", path, name);
-
- return 1;
-}
-
-/*
- * Sec Desc print functions
- */
-
-void print_sid(DOM_SID *sid)
-{
- int i, comps = sid->auths;
- fprintf(stdout, "S-%u-%u", sid->ver, sid->auth[5]);
-
- for (i = 0; i < comps; i++) {
-
- fprintf(stdout, "-%u", sid->sub_auths[i]);
-
- }
- fprintf(stdout, "\n");
-}
-
-int print_sec(SEC_DESC *sec_desc)
-{
-
- fprintf(stdout, " SECURITY\n");
- fprintf(stdout, " Owner: ");
- print_sid(sec_desc->owner);
- fprintf(stdout, " Group: ");
- print_sid(sec_desc->group);
- return 1;
-}
-
-/*
- * Value print function here ...
- */
-int print_val(const char *path, char *val_name, int val_type, int data_len,
- void *data_blk, int terminal, int first, int last)
-{
- char data_asc[1024];
-
- bzero(data_asc, sizeof(data_asc));
- if (!terminal && first)
- fprintf(stdout, "%s\n", path);
- data_to_ascii((unsigned char *)data_blk, data_len, val_type, data_asc,
- sizeof(data_asc) - 1);
- fprintf(stdout, " %s : %s : %s\n", (val_name?val_name:"<No Name>"),
- val_to_str(val_type, reg_type_names), data_asc);
- return 1;
-}
-
-void usage(void)
-{
- fprintf(stderr, "Usage: editreg [-v] [-k] [-c <command-file>] <registryfile>\n");
- fprintf(stderr, "Version: 0.1\n\n");
- fprintf(stderr, "\n\t-v\t sets verbose mode");
- fprintf(stderr, "\n\t-c <command-file>\t specifies a command file");
- fprintf(stderr, "\n");
-}
-
-int main(int argc, char *argv[])
-{
- REGF *regf;
- extern char *optarg;
- extern int optind;
- int opt;
- int commands = 0;
- char *cmd_file = NULL;
-
- if (argc < 2) {
- usage();
- exit(1);
- }
-
- /*
- * Now, process the arguments
- */
-
- while ((opt = getopt(argc, argv, "vkc:")) != EOF) {
- switch (opt) {
- case 'c':
- commands = 1;
- cmd_file = optarg;
- break;
-
- case 'v':
- verbose++;
- break;
-
- case 'k':
- break;
-
- default:
- usage();
- exit(1);
- break;
- }
- }
-
- if ((regf = nt_create_regf()) == NULL) {
- fprintf(stderr, "Could not create registry object: %s\n", strerror(errno));
- exit(2);
- }
-
- if (!nt_set_regf_input_file(regf, argv[optind])) {
- fprintf(stderr, "Could not set name of registry file: %s, %s\n",
- argv[1], strerror(errno));
- exit(3);
- }
-
- /* Now, open it, and bring it into memory :-) */
-
- if (nt_load_registry(regf) < 0) {
- fprintf(stderr, "Could not load registry: %s\n", argv[1]);
- exit(4);
- }
-
- /*
- * At this point, we should have a registry in memory and should be able
- * to iterate over it.
- */
-
- nt_key_iterator(regf, regf->root, 0, "", print_key, print_sec, print_val);
- return 0;
-}
diff --git a/source3/utils/net.c b/source3/utils/net.c
index f6b3c5c84c..ada0ed53e1 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -241,7 +241,7 @@ BOOL net_find_dc(struct in_addr *server_ip, fstring server_name, const char *dom
if (!lookup_dc_name(global_myname(), domain_name, server_ip, dc_name))
return False;
- fstrcpy(server_name, dc_name);
+ safe_strcpy(server_name, dc_name, FSTRING_LEN);
return True;
} else
return False;
@@ -636,10 +636,6 @@ static struct functable net_func[] = {
exit(1);
}
}
-
- if (!opt_password) {
- opt_password = getenv("PASSWD");
- }
rc = net_run_function(argc_new-1, argv_new+1, net_func, net_help);
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 0f2d673b4b..b4697d73dd 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -124,7 +124,6 @@ static ADS_STRUCT *ads_startup(void)
ADS_STATUS status;
BOOL need_password = False;
BOOL second_time = False;
- char *realm;
ads = ads_init(NULL, NULL, opt_host);
@@ -151,16 +150,6 @@ retry:
ads->auth.user_name = strdup(opt_user_name);
- /*
- * If the username is of the form "name@realm",
- * extract the realm and convert to upper case.
- */
- if ((realm = strchr(ads->auth.user_name, '@'))) {
- *realm++ = '\0';
- ads->auth.realm = strdup(realm);
- strupper(ads->auth.realm);
- }
-
status = ads_connect(ads);
if (!ADS_ERR_OK(status)) {
if (!need_password && !second_time) {
diff --git a/source3/utils/net_rap.c b/source3/utils/net_rap.c
index f52eabf494..8f3dd53fa6 100644
--- a/source3/utils/net_rap.c
+++ b/source3/utils/net_rap.c
@@ -638,7 +638,7 @@ static int rap_user_add(int argc, const char **argv)
if (!(cli = net_make_ipc_connection(0)))
return -1;
- safe_strcpy(userinfo.user_name, argv[0], sizeof(userinfo.user_name)-1);
+ safe_strcpy(userinfo.user_name, argv[0], sizeof(userinfo.user_name));
if (opt_flags == -1)
opt_flags = 0x21;
@@ -755,7 +755,7 @@ static int rap_group_add(int argc, const char **argv)
return -1;
/* BB check for length 21 or smaller explicitly ? BB */
- safe_strcpy(grinfo.group_name, argv[0], sizeof(grinfo.group_name)-1);
+ safe_strcpy(grinfo.group_name, argv[0], sizeof(grinfo.group_name));
grinfo.reserved1 = '\0';
grinfo.comment = smb_xstrdup(opt_comment);
diff --git a/source3/utils/net_rpc_samsync.c b/source3/utils/net_rpc_samsync.c
index 7d5c8681ad..ac3b78fc7a 100644
--- a/source3/utils/net_rpc_samsync.c
+++ b/source3/utils/net_rpc_samsync.c
@@ -317,7 +317,10 @@ fetch_account_info(uint32 rid, SAM_ACCOUNT_INFO *delta)
"gave %d\n", add_script, add_ret));
}
- try_add = True;
+ if (!pdb_getsampwnam(sam_account, account)) {
+ try_add = True;
+ /* still not there, hope the backend likes NUAs */
+ }
}
sam_account_from_delta(sam_account, delta);
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
index affcc75d67..9df10c21a4 100644
--- a/source3/utils/pdbedit.c
+++ b/source3/utils/pdbedit.c
@@ -363,21 +363,20 @@ static int new_machine (struct pdb_context *in, const char *machine_in)
{
SAM_ACCOUNT *sam_pwent=NULL;
fstring machinename;
- fstring machineaccount;
struct passwd *pwd = NULL;
+ char name[16];
fstrcpy(machinename, machine_in);
- machinename[15]= '\0';
if (machinename[strlen (machinename) -1] == '$')
machinename[strlen (machinename) -1] = '\0';
strlower_m(machinename);
- fstrcpy(machineaccount, machinename);
- fstrcat(machineaccount, "$");
+ safe_strcpy (name, machinename, 16);
+ safe_strcat (name, "$", 16);
- if ((pwd = getpwnam_alloc(machineaccount))) {
+ if ((pwd = getpwnam_alloc(name))) {
if (!NT_STATUS_IS_OK(pdb_init_sam_pw( &sam_pwent, pwd))) {
fprintf(stderr, "Could not init sam from pw\n");
passwd_free(&pwd);
@@ -393,14 +392,14 @@ static int new_machine (struct pdb_context *in, const char *machine_in)
pdb_set_plaintext_passwd (sam_pwent, machinename);
- pdb_set_username (sam_pwent, machineaccount, PDB_CHANGED);
+ pdb_set_username (sam_pwent, name, PDB_CHANGED);
pdb_set_acct_ctrl (sam_pwent, ACB_WSTRUST, PDB_CHANGED);
pdb_set_group_sid_from_rid(sam_pwent, DOMAIN_GROUP_RID_COMPUTERS, PDB_CHANGED);
if (NT_STATUS_IS_OK(in->pdb_add_sam_account (in, sam_pwent))) {
- print_user_info (in, machineaccount, True, False);
+ print_user_info (in, name, True, False);
} else {
fprintf (stderr, "Unable to add machine! (does it already exist?)\n");
pdb_free_sam (&sam_pwent);
@@ -436,13 +435,12 @@ static int delete_user_entry (struct pdb_context *in, const char *username)
static int delete_machine_entry (struct pdb_context *in, const char *machinename)
{
- fstring name;
+ char name[16];
SAM_ACCOUNT *samaccount = NULL;
- fstrcpy(name, machinename);
- name[15] = '\0';
- if (name[strlen(name)-1] != '$')
- fstrcat (name, "$");
+ safe_strcpy (name, machinename, 16);
+ if (name[strlen(name)] != '$')
+ safe_strcat (name, "$", 16);
if (!NT_STATUS_IS_OK(pdb_init_sam (&samaccount))) {
return -1;
@@ -538,8 +536,6 @@ int main (int argc, char **argv)
exit(1);
}
- init_modules();
-
if (!init_names())
exit(1);
diff --git a/source3/utils/profiles.c b/source3/utils/profiles.c
index 4f40b93810..2ed102b677 100644
--- a/source3/utils/profiles.c
+++ b/source3/utils/profiles.c
@@ -391,14 +391,14 @@ typedef struct acl_struct {
#define OFF(f) (0x1000 + (f) + 4)
-static void print_sid(DOM_SID *sid);
+void print_sid(DOM_SID *sid);
int verbose = 1;
DOM_SID old_sid, new_sid;
int change = 0, new = 0;
/* Compare two SIDs for equality */
-static int my_sid_equal(DOM_SID *s1, DOM_SID *s2)
+int my_sid_equal(DOM_SID *s1, DOM_SID *s2)
{
int sa1, sa2;
@@ -417,7 +417,7 @@ static int my_sid_equal(DOM_SID *s1, DOM_SID *s2)
* Quick and dirty to read a SID in S-1-5-21-x-y-z-rid format and
* construct a DOM_SID
*/
-static int get_sid(DOM_SID *sid, char *sid_str)
+int get_sid(DOM_SID *sid, char *sid_str)
{
int i = 0, auth;
char *lstr;
@@ -460,7 +460,7 @@ static int get_sid(DOM_SID *sid, char *sid_str)
* This routine does not need to deal with endianism as
* long as the incoming SIDs are both in the same (LE) format.
*/
-static void change_sid(DOM_SID *s1, DOM_SID *s2)
+void change_sid(DOM_SID *s1, DOM_SID *s2)
{
int i;
@@ -469,7 +469,7 @@ static void change_sid(DOM_SID *s1, DOM_SID *s2)
}
}
-static void print_sid(DOM_SID *sid)
+void print_sid(DOM_SID *sid)
{
int i, comps = sid->num_auths;
fprintf(stdout, "S-%u-%u", sid->sid_rev_num, sid->id_auth[5]);
@@ -482,7 +482,7 @@ static void print_sid(DOM_SID *sid)
fprintf(stdout, "\n");
}
-static void process_sid(DOM_SID *sid, DOM_SID *o_sid, DOM_SID *n_sid)
+void process_sid(DOM_SID *sid, DOM_SID *o_sid, DOM_SID *n_sid)
{
int i;
if (my_sid_equal(sid, o_sid)) {
@@ -496,7 +496,7 @@ static void process_sid(DOM_SID *sid, DOM_SID *o_sid, DOM_SID *n_sid)
}
-static void process_acl(ACL *acl, const char *prefix)
+void process_acl(ACL *acl, const char *prefix)
{
int ace_cnt, i;
ACE *ace;
@@ -514,7 +514,7 @@ static void process_acl(ACL *acl, const char *prefix)
}
}
-static void usage(void)
+void usage(void)
{
fprintf(stderr, "usage: profiles [-c <OLD-SID> -n <NEW-SID>] <profilefile>\n");
fprintf(stderr, "Version: %s\n", VERSION);
diff --git a/source3/utils/smbcacls.c b/source3/utils/smbcacls.c
index bce64df960..a5cee0dae1 100644
--- a/source3/utils/smbcacls.c
+++ b/source3/utils/smbcacls.c
@@ -916,7 +916,7 @@ You can string acls together with spaces, commas or newlines\n\
if (filename[0] != '\\') {
pstring s;
s[0] = '\\';
- safe_strcpy(&s[1], filename, sizeof(pstring)-2);
+ safe_strcpy(&s[1], filename, sizeof(pstring)-1);
pstrcpy(filename, s);
}
diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c
index 60243b671b..0fafd1b83d 100644
--- a/source3/utils/testparm.c
+++ b/source3/utils/testparm.c
@@ -177,12 +177,6 @@ via the %%o substitution. With encrypted passwords this is not possible.\n", lp_
printf("'algorithmic rid base' must be even.\n");
}
-#ifndef HAVE_DLOPEN
- if (lp_preload_modules()) {
- printf("WARNING: 'preload modules = ' set while loading plugins not supported.\n");
- }
-#endif
-
return ret;
}
@@ -227,7 +221,7 @@ int main(int argc, const char *argv[])
caddr = poptGetArg(pc);
if (new_local_machine) {
- set_local_machine_name(new_local_machine, True);
+ set_local_machine_name(new_local_machine);
}
dbf = x_stdout;
diff --git a/source3/wrepld/server.c b/source3/wrepld/server.c
index 31f260e94c..349f2a21ab 100644
--- a/source3/wrepld/server.c
+++ b/source3/wrepld/server.c
@@ -619,7 +619,7 @@ static void process(void)
lp_set_logfile(logfile);
}
- set_remote_machine_name("wrepld", False);
+ set_remote_machine_name("wrepld");
setup_logging(argv[0],log_stdout);