From 2c599161dbb255edee27c4fc176a8011408f2b47 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 26 Sep 2005 01:18:00 +0000 Subject: [PATCH] windows-release-notes-20050925 Update the installed documentation to include the new OpenAFS for Windows release notes. No IBM documentation is being removed but the top level index page has been re-written to indicate that the IBM docs are out of date. The new OAFW Release Notes have been added to the ReleaseNotes with a link. ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== Fix the link to the OAFW notes. ==================== fix the links to point to .htm instead of .doc --- .../install/Documentation/en_US/README.txt | 53 +- .../en_US/html/ReleaseNotes/frames.htm | 130 + .../en_US/html/ReleaseNotes/logo.htm | 164 + .../html/ReleaseNotes/logo_files/filelist.xml | 6 + .../html/ReleaseNotes/logo_files/image001.jpg | Bin 0 -> 83761 bytes .../html/ReleaseNotes/logo_files/image002.jpg | Bin 0 -> 6807 bytes .../en_US/html/ReleaseNotes/relnotes.htm | 8312 +++++++++++++++++ .../ReleaseNotes/relnotes_files/filelist.xml | 6 + .../ReleaseNotes/relnotes_files/header.htm | 84 + .../ReleaseNotes/relnotes_files/preview.wmf | Bin 0 -> 15892 bytes .../en_US/html/ReleaseNotes/toc.htm | 1487 +++ .../Documentation/en_US/html/index.htm | 274 +- .../en_US/html/index_files/filelist.xml | 6 + .../en_US/html/index_files/image001.jpg | Bin 0 -> 83761 bytes .../en_US/html/index_files/image002.jpg | Bin 0 -> 6807 bytes 15 files changed, 10400 insertions(+), 122 deletions(-) create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/image001.jpg create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/image002.jpg create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/preview.wmf create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/index_files/filelist.xml create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/index_files/image001.jpg create mode 100644 src/WINNT/doc/install/Documentation/en_US/html/index_files/image002.jpg diff --git a/src/WINNT/doc/install/Documentation/en_US/README.txt b/src/WINNT/doc/install/Documentation/en_US/README.txt index dad01b9b1..47052eab3 100755 --- a/src/WINNT/doc/install/Documentation/en_US/README.txt +++ b/src/WINNT/doc/install/Documentation/en_US/README.txt @@ -8,55 +8,14 @@ directory or online at http://www.openafs.org/dl/license10.html All Rights Reserved *************************************************************** -IBM AFS for Windows, version 3.6 +OpenAFS for Windows, version 1.4.0 *************************************************************** -The README.txt file includes AFS for Windows product notes, which -can possibly identify specific limitations and restrictions -associated with this release of AFS for Windows. +OpenAFS for Windows Supplemental Documentation +The Supplemental Documentation component of OpenAFS for Windows is only available +online if the Supplemental Documentation option was chosen when OpenAFS for Windows +was installed on your system. -AFS Partitions No Longer Need to Reside On Empty NTFS Volumes - -On Windows NT machines, any NTFS volume can be designated as an AFS -partition. Previously, an NTFS volume containing any data other than -the Windows Recycler could not be designated as an AFS partition. - - - -Encryption Not Supported in Simplified Chinese Version of Windows 98 - -The Simplified Chinese version of Microsoft Windows 98 does not support -encryption, which is needed to transmit AFS passwords from AFS Light to -the AFS Light Gateway. In order for AFS Light users to obtain AFS tokens -when using the Simplified Chinese version of Microsoft Windows 98, -encryption in AFS must be disabled. -To disable encryption in AFS, add the following line to your Windows -autoexec.bat file: -set AFS_RPC_ENCRYPT=OFF -Note that disabling encryption introduces a potential security risk -because AFS passwords are transmitted to the AFS Light Gateway in an -unencrypted form when tokens are obtained. - - - -Windows NT with Service Pack 6 Is Now Supported - -The Client, Server, and Control Center components of AFS for Windows can -be installed on Microsoft Windows NT 4.0 with Service Pack 4, Service Pack 5, -or Service Pack 6. - - - -AFS for Windows Supplemental Documentation - -The Supplemental Documentation component of AFS for Windows is only available -online if the AFS Supplemental Documentation option was chosen when AFS for Windows -was installed on your system. (AFS Supplemental Documentation is not an option when -installing AFS Light.) Note that documentation is also available directly -from the AFS for Windows CD-ROM, in the CD:\Documentation directory, where CD -is the letter of your CD-ROM drive. - - -Refer to the AFS for Windows Release Notes for additional product information. +Refer to the OpenAFS for Windows Release Notes for additional product information. diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm new file mode 100644 index 000000000..0569689ce --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm @@ -0,0 +1,130 @@ + + + + + + + + +OpenAFS for Windows 1.4.0 Release Notes + + + + + + + + + + + + + <body lang=EN-US style='tab-interval:36.0pt'> + <div class=Section1> + <p class=MsoNormal>This page uses frames, but your browser doesn't support + them.</p> + </div> + </body> + + + + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm new file mode 100644 index 000000000..5a79e0523 --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm @@ -0,0 +1,164 @@ + + + + + + + + + + +OpenAFS for Windows Logo + + + + + + + +
+ +

+ +
+ + + + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml new file mode 100644 index 000000000..da16014a1 --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/image001.jpg b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/image001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19d79943d5ac7b68a6cdb136199971a3a35f0615 GIT binary patch literal 83761 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 T2<*%t<7=ID_^*9DVp1PNH%;DR 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 G%)bC}a3#+G literal 0 HcmV?d00001 diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm new file mode 100644 index 000000000..1b5128fdf --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm @@ -0,0 +1,8312 @@ + + + + + + + + + +OpenAFS for Windows 1.4.0 Release Notes + + + + + + + + + + + + + + + + + +
+ +

OpenAFS for Windows 1.4.0
+Release Notes

+ +

The Andrew File System (AFS) is a location-independent +file system that uses a local cache to increase its performance.  An AFS client accesses files anonymously or +via a Kerberos authentication.  The +global AFS is partitioned into cells.  +The AFS cell is a collection of AFS volumes that are administered by a +common entity.   AFS cells can be +administered by a department even when the Kerberos realm used for local +authentication is managed by a much larger organization.  AFS clients and servers take advantage of +Kerberos cross realm authentication to enable authenticated access by entities +located outside the local realm.  +Authorization is enforced by the use of directory level access control +lists which can consist of individual or group identities. 

+ +

The AFS volume is a tree of files and +sub-directories.  AFS volumes are created +by administrators and are joined to an AFS cell via the use of a mount +point.   Once a volume is created, users +can create files and directories as well as mount points and symlinks within +the volume without regard for the physical location of the volume.  Administrators can move the volume to another +server as necessary without the need to notify users.   In fact, the volume move can occur while +files in the volume are in use. 

+ +

AFS volumes can be replicated to read-only copies.   When accessing files from a read-only replica, +clients will read all of the data from a single replica.   If that replica becomes unavailable, the +clients will failover to any replica that is reachable.  Users of the data are unaware of where the +replicas are stored or which one is being accessed.   The contents of the replicas can be updated +at any time by releasing the current +contents of the source volume.

+ +

OpenAFS for Windows (OAFW) provides AFS client access +Microsoft Windows operating systems.  It +strives to maintain transparency such that the user is unaware of the +distinction between the use of AFS and Microsoft Windows file shares.   OAFW can be part of a single sign-on +solution by allowing credentials for a Kerberos principal to be obtained at +logon and for that principal to be used to obtain AFS tokens for one or more +cells.   Although OAFW is implemented as +a locally installed SMB to AFS gateway, OAFW maintains the portability of file +paths by its use of the \\AFS UNC server name.

+ +

OpenAFS is the product of an open source development +effort begun in July 2001.  OpenAFS is +maintained and developed by a group of volunteers with the support of the user +community.   If you use OpenAFS as part +of your computing infrastructure please contribute to its continued growth.

+ +

1. +Installer Options. 1

+ +

2. +System Requirements. 2

+ +

3. +Operational Notes. 2

+ +

4. +How to Debug Problems with OpenAFS for Windows: 11

+ +

5. +Reporting Bugs: 13

+ +

6. +How to Contribute to the Development of OpenAFS for Windows. 14

+ +

7. +MSI Deployment Guide. 15

+ +

Appendix +A: Registry Values. 26

+ +

1. Installer Options

+ +

It can be installed either as a new installation or an +upgrade from previous versions of OpenAFS for Windows or IBM AFS for +Windows.  Installers are provided in two +forms:

+ +

1.        +an executable (.exe) that is built using the +Nullsoft Scriptable Installation System, or

+ +

2.        +a Windows Installer package (.msi) that is built +using WiX and can be customized for organizations via the use of MSI Transforms +(see MSI +Deployment Guide)

+ +

2. System Requirements

+ +

2.1 Supported +Operating Systems

+ +

·       Microsoft +Windows 2000 Workstation

+ +

·       Microsoft +Windows 2000 Server

+ +

·       Microsoft +Windows XP Home

+ +

·       Microsoft +Windows XP Professional

+ +

·       Microsoft +Windows 2003 Server

+ +

·       Microsoft +Windows 2003 R2 Server

+ +

2.1.1 Unsupported +Operating Systems

+ +

·       Microsoft +Windows 95

+ +

·       Microsoft +Windows 98

+ +

·       Microsoft +Windows 98 OSR2

+ +

·       Microsoft +Windows ME

+ +

·       Microsoft +NT

+ +

·       Microsoft +Windows Vista (as of Beta 1 bugs in Windows prevent its use)

+ +

·       All +64-bit versions of Microsoft Windows on Itanium and x86-64 chipsets.

+ +

Older releases of OpenAFS are available for download if +those operating systems must be supported.  +The last version of OpenAFS with support for Win9x is 1.2.2b.  The last version with support for Windows NT +4.0 is 1.2.10.

+ +

2.2 Disk Space

+ +

Up to 60mb required for the OpenAFS binaries plus 100MB for +the default AFSCache file.   (The size of +the AFSCache file may be adjusted via the Registry after installation.)

+ +

2.3 Additional +Software

+ +

MIT +Kerberos for Windows 2.6.x if Kerberos 5 authentication support is desired.

+ +

3. Operational Notes

+ +

3.1. Requirements +for Kerberos 5 Authentication

+ +

The Kerberos 4 infrastructure on which the OpenAFS 1.2 +series is reliant is no longer secure.  +Cross-realm Kerberos is very important in the AFS context and most sites +have or are migrating to Kerberos 5 environments.  The OpenAFS 1.4 series integrates with MIT +Kerberos for Windows 2.6.5 to support Kerberos 5 authentication including +automatic renewal of AFS tokens and single sign-on via the Microsoft Windows +Kerberos Logon Service.

+ +

When KFW is installed, the OpenAFS 1.4 client will obtain +Kerberos 5 tickets and use them as tokens without modification.  The OpenAFS 1.4 client requires that all of +the AFS Servers with which it communicates support the use of Kerberos 5 +tickets as tokens. If Kerberos 5 based tokens are presented to an AFS server +that does not understand them, the server will be unable to communicate with +the client when tokens are present. Kerberos 5 based tokens are supported by +OpenAFS release 1.2.8 or later.  IBM +Transarc servers do not support Kerberos 5.

+ +

3.1.1. Active +Directory

+ +

There are two things to consider when using a Microsoft +Windows Active Directory as the Kerberos realm that issues the AFS service +ticket.  First, the Kerberos 5 tickets +issued by Active Directory can be quite large when compared to tickets issued +by a traditional KDC due to the incorporation of authorization data in the PAC.  If the issued +tickets become larger than 344 bytes OpenAFS 1.2 servers will be unable to +process them.  OpenAFS 1.4 servers can +support the largest tickets that Active Directory can issue.  Second, the Kerberos 5 tickets issued by +Windows 2003 Active Directory are encrypted with the DES-CBC-MD5 enctype.  OpenAFS 1.2 servers only support the +DES-CBC-CRC enctype.

+ +

3.1.2. Using +the krb524 service

+ +

Some organizations which have AFS cell names and Kerberos +realm names which differ by more then just lower and upper case rely on a +modification to krb524d which maps a Kerberos 5 ticket from realm FOO to a +Kerberos 4 ticket in realm BAR.  This +allows user@FOO to appear to be user@bar for the purposes of accessing the AFS +cell.  As of OpenAFS 1.2.8, support was +added to allow the immediate use of Kerberos 5 tickets as AFS (2b) tokens. This +is the first building block necessary to break away from the limitations of +Kerberos 4 with AFS.  By using Kerberos 5 +directly we avoid the security holes inherent in Kerberos 4 cross-realm.  We also gain access to cryptographically +stronger algorithms for authentication and encryption.

+ +

Another reason for using Kerberos 5 directly is because the +krb524 service runs on a port (4444) which has become increasingly blocked by +ISPs.  The port was used to spread a worm +which attacked Microsoft Windows in the summer of 2003.  When the port is blocked users find that they +are unable to authenticate.

+ +

Replacing the Kerberos 4 ticket with a Kerberos 5 ticket is +a win in all situations except when the cell name does not match the realm name +and the principal names placed into the ACL’s are not the principal names from +the Kerberos 5 ticket.  To support this +transition, OpenAFS for Windows 1.4 adds a new registry value, Use524, +to force the use of krb524d.  However, +the availability of this option should only be used by individuals until such +time as their organizations can provide a more permanent solution.

+ +

3.2. Use of the +Microsoft Loopback Adapter

+ +

By itself the OpenAFS Client Service does not provide robust +behavior in a plug-n-play network environment.  +Changes to the number of network adapters or their assigned IP addresses +will cause the service to terminate unexpectedly.  To avoid this behavior OpenAFS for Windows +installs a single instance of the Microsoft Loopback Adapter (MLA) on the +machine.  With the MLA installed, the +OpenAFS Client Service will not be affected by the configuration changes of +other network adapters installed on the system.  +

+ +

The MLA is installed with a name of "AFS" and a +pre-assigned IP address in the 10.x.x.x range.  +The MLA is bound to the “Client for Microsoft Networks” service and not +bound to the “File and Printer Sharing for Microsoft Networks”.  If the MLA is unbound to "Client +Microsoft Networks", the OpenAFS Client Service will become inaccessible +when the machine is disconnected from the network.  If the MLA is bound to "File and Printer +Sharing ..." there will be a service type collision between the name +"AFS" and the name of the machine on the MLA's IP Address that will +result in the OpenAFS client service becoming inaccessible and the "NET +VIEW \\AFS" command will return a "System Error 52" +message.  To correct the problem:

+ +

·        stop the AFS Client Service

+ +

·        bind the "Client for Microsoft +Networks" to the MLA

+ +

·        unbind "File and Printer Sharing for +Microsoft Networks" from the MLA

+ +

·        Disable and then re-enable the MLA

+ +

·        start the AFS Client Service

+ +

When the MLA is not installed the unique NETBIOS name +published by OpenAFS SMB server is "MACHINE-AFS".  One of the benefits of using the MLA is that +the NETBIOS name does not have to be published on any adapter other than the +MLA.  Therefore the chosen name is no +longer required to be unique.  Instead +the NETBIOS name associated with the AFS Client Service is simply +"AFS" and portable UNC paths of the form \\AFS\cellname\path can now +be used on all machines.

+ +

3.3. Using +Freelance (Dynamic Root) Mode to Improve Mobility

+ +

Traditionally, when the OpenAFS Client Service starts it +must be able to access the "root.afs" volume of the default +cell.  The "root.afs" volume +contains the set of mount points to the "root.cell" volumes of +various cells the administrator of the default cell believes should be accessible.  If the "root.afs" volume is +inaccessible when the client service is started, the service will terminate +unexpectedly.  Since many users now use +laptops or otherwise operate in disconnected environments in which a VPN may be +required to access the cell's servers, it is often the case that the +"root.afs" volume for the default cell is not reachable and the +OpenAFS Client Service will not successfully start.

+ +

To allow the OpenAFS Client Service to operate in these +environments, a fake "root.afs" volume is dynamically constructed +from mount points and symlinks stored in the local registry.  This method of operation is referred to as +Freelance mode.

+ +

The content of the fake “root.afs” volume is dynamically +modified as cells are accessed.  When the +fake "root.afs" volume is initially constructed it will only contain +two mount points: a regular path and read-write path mount point +used to access the "root.cell" volume of the default AFS cell.  Any attempt to access a valid cell name will +result in a new mount point being created in the fake "root.afs" +volume.  If the cellname begins with a +"." the mount point will be a read-write path; otherwise the +mount point will be a regular path.  +These mount points are preserved in the registry at key:

+ +

HKLM\SOFTWARE\OpenAFS\Client\Freelance

+ +

Additional mount points may be manually created using the +"fs mkmount" command.  Mount +points may be removed using the "fs rmmount" command.

+ +

>fs mkmount +\\AFS\athena.mit.edu root.cell athena.mit.edu

+ +

>fs mkmount +\\AFS\.athena.mit.edu root.cell athena.mit.edu -rw

+ +

>fs rmmount +\\AFS\athena.mit.edu

+ +

>fs rmmount +\\AFS\.athena.mit.edu

+ +

Symlinks may also be created within the Freelance “root.afs” +volume.

+ +

>symlink make \\afs\link +\\afs\athena.mit.edu\user\j\a\jaltman

+ +

      >symlink +list \\afs\link

+ +

      '\\afs\link' +is a symlink to 'athena.mit.edu\user\j\a\jaltman'

+ +

>symlink rm \\afs\link

+ +

The symlinks are stored in the registry at:

+ +

HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks 

+ +

3.4. Locating AFS +Volume Database Servers

+ +

The OpenAFS for Windows client will use DNS AFSDB records to +discover the location of AFS Volume Database servers when entries are not present +in the client's CellServDB file (\%PROGRAMFILES%\OpenAFS\Client\CellServDB).

+ +

3.5. Obtaining +AFS Tokens as a Part of Windows Logon

+ +

OpenAFS for Windows installs a WinLogon Network Provider to +provide Single Sign-on functionality (aka Integrated Logon.)  Integrated Logon can be used when the Windows +username and password match the username and password associated with the +default cell's Kerberos realm.  For +example, if the Windows username is "jaltman" and the default cell is +"athena.mit.edu", then Integrated Logon can be successfully used if +the windows password matches the password assigned to the Kerberos principal +"jaltman@ATHENA.MIT.EDU".  The realm “ATHENA.MIT.EDU” is obtained by performing +a domain name to realm mapping on the hostname of one of the cell's Volume +Database servers.

+ +

Integrated Logon is required if you desire the ability to +store roaming user profiles within the AFS file system.  OpenAFS does not provide tools for synchronizing +the Windows and Kerberos user accounts and passwords.

+ +

When KFW is configured, Integrated Logon will use it to +obtain tokens.  The Kerberos 5 tickets +obtained during the process of generating AFS tokens are preserved and stored +into the default ccache within the user logon session.

+ +

Integrated Logon does not have the ability to cache the +user's username and password for the purpose of obtaining tokens if the +Kerberos KDC is inaccessible at logon time.

+ +

Integrated Login supports the ability to obtain tokens for +multiple cells.  For further information +on how to configure this feature read the TheseCells value in Appendix +A.

+ +

3.6. AFS System +Tray Command Line Options

+ +

The AFS System Tray tool (afscreds.exe) supports several +command line options:

+ +

    -A = +autoinit

+ +

    -E = force +existing afscreds to exit

+ +

    -I = +install startup shortcut

+ +

    -M = renew +drive maps

+ +

    -N = IP +address change detection

+ +

    -Q = quiet +mode.  do not display start service +dialog

+ +

         if +afsd_service is not already running

+ +

    -S = show +tokens dialog on startup

+ +

    -U = +uninstall startup shortcut

+ +

    -X = test +and do map share

+ +

    -Z = unmap +drives

+ +

autoinit will result in automated attempts to acquire AFS +tokens when afscreds.exe is started.  +afscreds.exe will attempt to utilize tickets stored in the MSLSA +credentials cache; any existing CCAPI credentials cache; and finally display an +Obtain Tokens dialog to the user.  When +used in combination with IP address change detection, afscreds.exe will attempt +to acquire AFS tokens whenever the IP address list changes and the Kerberos KDC +is accessible.

+ +

The renew drive maps option is used to ensure that the user +drive maps constructed via the OpenAFS tools (not NET USE) are re-constructed +each time afscreds.exe is started.

+ +

By default afscreds.exe is configured by the OpenAFS.org +installers to use “-A -N -M -Q” as startup options.  Currently, there is no user interface to +change this selection after install time although these options may be altered +via the registry on either per machine or per user basis.  See AfscredsShortcutParams +in Appendix +A.

+ +

3.7. The “AFS +Client Admins” Authorization Group

+ +

The OpenAFS for Windows 1.4 client supports a local Windows +authorization group named "AFS Client Admins".  This group is used in place of the +"Administrators" group to determine which users are allowed to modify +the AFS Client Service configuration via the AFS Control Panel (afs_config.exe) +or fs.exe command line tool.  The +following fs.exe commands are now restricted to members of the "AFS Client +Admins" group:

+ +

·       checkservers +with a non-zero timer value

+ +

·       setcachesize

+ +

·       newcell

+ +

·       sysname +with a new sysname list

+ +

·       exportafs

+ +

·       setcell

+ +

·       setserverprefs

+ +

·       storebehind

+ +

·       setcrypt

+ +

·       cscpolicy

+ +

·       trace

+ +

The creation or removal of mount points and symlinks in the +Freelance “root.afs” volume are also restricted to members of the “AFS Client +Admins” group.

+ +

The initial membership of the "AFS Client Admins" +group when created by the installer is equivalent to the local +"Administrators" group.  If a +user is added to the "Administrators" group after the creation of the +"AFS Client Admin" group, that user will not be an AFS Client +Administrator.  Only users that are +members of the "AFS Client Admins" group are AFS Client +Administrators.  The local +"SYSTEM" account is an implicit member of the "AFS Client +Admins" group.

+ +

Setting the default sysname for a machine should be done via +the registry +and not via "fs sysname".

+ +

3.8. OpenAFS +support for UNC paths

+ +

The OpenAFS 1.4 client supports UNC paths everywhere.  UNC paths provide a canonical name for +resources stored within AFS.  UNC paths +should be used instead of drive letter mappings whenever possible.   This is especially true when specifying the +location of roaming profiles and redirected folders.  

+ +

Power users that make extensive use of the command line +shell, cmd.exe, should consider using JP Software's 4NT or Take Command command +processors.  Unlike cmd.exe, the +JPSoftware shells fully support UNC paths as the current directory.  With the release of version 4NT 7.0 and Take +Command 7.0, JPSoftware is adding special recognition of OpenAFS.  AFS paths can be entered in UNIX notation +(e.g., /afs/openafs.org/software), +space utilization reports the output of the volume status for the specified +path, and many AFS specific functions and variables have been added to the +command language.

+ +

JPSoftware's web site is http://www.jpsoft.com.

+ +

3.9. OpenAFS +includes aklog.exe

+ +

The OpenAFS 1.4 Client ships with its own version of +aklog.exe which should be used in preference to those obtained by third party +sources.  The OpenAFS aklog.exe supports +Kerberos 5 as well as the ability to auto-generate pts IDs for user's obtaining +tokens  for access to foreign cells.

+ +

Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]]

+ +

             +[[-p | -path] pathname]

+ +

             +[-noprdb] [-force]

+ +

             +[-5 [-m]| -4]

+ +

 

+ +

   -d = output +debugging information.

+ +

   cell = zero +or more cells for which tokens will be obtained

+ +

   krb_realm = +the kerberos realm of the cell.

+ +

   pathname = +the directory for which authentication is required

+ +

   -noprdb = +don't try to determine AFS ID.

+ +

   -5 or -4 = +use Kerberos V (default) or Kerberos IV tickets

+ +

   -m = use +krb524d to convert Kerberos V tickets to Kerberos IV

+ +

3.10. OpenAFS +Servers on Windows are Unsupported

+ +

The AFS Server functionality provided with OpenAFS 1.4 might +work but should be considered highly experimental.  It has not been thoroughly tested.  Any data which would cause pain if lost +should not be stored in an OpenAFS Server on Windows.

+ +

A few notes on the usage of the AFS Client Service if it is +going to be used with the OpenAFS AFS Server:

+ +

·       When +installed on the same machine as the AFS Server, Freelance mode must be turned +off.  Otherwise, you will be unable to +manipulate the contents of the root.afs volume for the hosted cell.

+ +

·       The +AFS Server and related tools only support the built in kaserver (Kerberos +IV).  If the AFS Server is being used, +MIT Kerberos for Windows should not be installed or must be disabled.

+ +

3.11. OpenAFS +Debugging Symbol files

+ +

The OpenAFS for Windows installers now include Debugging +Symbol files which should be installed if you are experiencing problems and +need to send crash reports.  This is true +for both the release and the debug versions of the installers.  The difference between the release and debug +versions are:

+ +

·       whether +or not the binaries were compiled with optimization

+ +

·       whether +the debug symbols are installed by default

+ +

·       whether +additional debug statements were compiled into the binaries

+ +

3.12. Maximum +File Size is 2GB

+ +

OpenAFS for Windows does not support files larger than +2GB.  The version of the SMB/CIFS +protocol implemented imposes this limitation.  +Upgrading the SMB/CIFS implementation or replacing it with an +Installable File System will allow larger files to be supported.

+ +

3.13. Encrypted +AFS File Access

+ +

The OpenAFS for Windows installer by default activates a +weak form of encrypted data transfer between the AFS client and the AFS +servers.  This is often referred to as +"fcrypt" mode.

+ +

3.14. +Authenticated Access to the OpenAFS Client Service

+ +

OpenAFS 1.4 supports authenticated SMB connections using +either NTLM or GSS SPNEGO (NTLM).  In +previous versions of OpenAFS, the SMB connections were unauthenticated which +opened the door for several attacks which could be used to obtain access to +another user's tokens on shared machines.    +

+ +

When GSS SPNEGO attempts a Kerberos 5 authentication, the +Windows SMB client will attempt to retrieve service tickets for +"cifs/afs@REALM" (if the loopback adapter is in use) or +"cifs/machine-afs@REALM" (if the loopback adapter is not being +used).  It is extremely important that +this service principal not exist in the KDC database as the Kerberos +authentication must fail allowing automatic fallback to NTLM.  When NTLM is used a special local +authentication mode will be used that does not require access to the user's +password.  Instead, Windows will +internally recognize the request as coming from a local logon session.

+ +

3.15. No More INI +Files

+ +

Previous AFS clients for Windows stored configuration data +in Windows .INI files.   OpenAFS 1.4 does +not use Windows .INI files for the storage of configuration data.   All settings are now stored in the registry +(see Appendix +A).  The CellServDB file is now +stored in the %PROGRAMFILES%\OpenAFS\Client directory.   The CellServDBDir +registry value can be used to specify an alternative location.

+ +

OpenAFS 1.4 will relocate the contents of the “afsdcell.ini” +file to the new CellServDB file.  OpenAFS +1.4 will also import the contents of the “afs_freelance.ini” file to the +Windows registry.   OpenAFS 1.4 will not +process the contents of the “afsddbmt.ini”.

+ +

3.16. Microsoft +Windows Internet Connection Firewall

+ +

The OpenAFS 1.4 Client is compatible with the Internet Connection +Firewall that debuted with Windows XP SP2 and Windows 2003 SP1.  The Internet Connection Firewall will be +automatically adjusted to allow the receipt of incoming callback messages from +the AFS file server.  In addition, the +appropriate Back Connection registry entries are added to allow SMB +authentication to be performed across the Microsoft Loopback Adapter.

+ +

3.17. Browsing +AFS from the Explorer Shell and Office

+ +

The OpenAFS 1.4 Client Service implements the CIFS Remote +Admin Protocol which allows Explorer to browse server and share information. +This significantly enhances the interoperability of AFS volumes within the +Explorer Shell and Microsoft Office applications.

+ +

3.18. No Support +for Byte Range +Locking

+ +

Many applications on Windows (e.g. Microsoft Office) +require the use of byte range locks applied to a file either to protect against +simultaneous file access or as a signaling mechanism.   OpenAFS does not currently support byte +range locks.   It is strongly recommended +that files not be edited within AFS if they might be accessed by multiple users +or multiple processes on a single machine.

+ +

3.19. Automatic +Discarding of AFS Tokens at Logoff

+ +

OpenAFS 1.4 will automatically forget a user's tokens upon +Logoff unless the user's profile was loaded from an AFS volume.  In this situation there is no mechanism to +determine when the profile has been successfully written back to the +network.  It is therefore unsafe to +release the user's tokens.  Whether or +not the profile has been loaded from the registry can be determined for Local +Accounts, Active Directory accounts and NT4 accounts.

+ +

If there is a need to disable this functionality, the LogoffPreserveTokens +registry value can be used. (see Appendix +A.)

+ +

3.20. Terminal +Server installations

+ +

When installing the NSIS (.exe) installer under Terminal +Server, you must execute it from within the Add/Remove Programs Control +Panel.  Failure to do so will result in +AFS not running properly.  The AFS Server +should not be installed on a machine with Terminal Server installed.

+ +

3.21. Hidden Dot +Files

+ +

AFS is a UNIX native file system.  The OpenAFS client attempts to treat the +files stored in AFS as they would be on UNIX.  +File and directory names beginning with a "." are +automatically given the Hidden attribute so they will not normally be +displayed.

+ +

3.22. Status +Cache Limits

+ +

The Status Cache (AFS Configuration Control Panel: Advanced +Page) is defined to have a maximum number of entries.  Each entry represents a single file or +directory entry accessed within the AFS file system.  When the maximum number of entries are +allocated, entries will begin to be reused according to a least recently used +(LRU) algorithm.  If the number of files +or directories being accessed repeatedly by your applications is greater then +the maximum number of entries, your host will begin to experience thrashing of +the Status Cache and all requests will result in network operations.

+ +

If you are experiencing poor performance try increasing the +maximum number of Status Cache entries.  +Each entry requires approximately 1.2K.  +In OpenAFS 1.4, the default number of Status Cache entries is 10,000.

+ +

3.23. NETBIOS +over TCP/IP must be enabled

+ +

"Netbios over TCP/IP" must be active on the +machine in order for communication with the AFS Client Service to succeed.  If "Netbios over TCP/IP" is +disabled on the machine, then communication with the AFS Client Service will be +impossible.

+ +

3.24. OpenAFS +binaries are digitally signed

+ +

The OpenAFS Client Service and related binaries distributed +by OpenAFS.org are digitally signed by "Secure Endpoints Inc.".  The OpenAFS Client Service will perform a +run-time verification check to ensure that all OpenAFS related DLLs loaded by +the service match the same file version number and were signed by the same +entity.  This check has been added to +prevent the stability problems caused by more than one AFS installation present +on a machine at the same time.  Many +hours of support time have been wasted tracking down problems caused by the +mixture of files from different releases.  +

+ +

Appendix +A documents the "VerifyServiceSignature" +registry value which can be used to disable the signature check.  The file version check cannot be disabled.

+ +

3.25. Maximum +Size of the AFSCache File

+ +

The maximum cache size is approximately 1.3GB.  This is the largest contiguous block of +memory in the 2GB process address space which can be used for constructing a +memory mapped file.  Due to fragmentation +of the process space caused by the loading of libraries required by the digital +signature verification code, any attempt to specify a cache size greater then +700MB will result in the automatic disabling of the signature check.

+ +

3.26. Filename +Character Sets

+ +

OpenAFS for Windows implements an SMB server which is used +as a gateway to the AFS filesystem.  +Because of limitations of the SMB implementation, Windows stores all +files into AFS using OEM code pages such as CP437 (United States) or CP850 +(Western Europe).  These code pages are +incompatible with the ISO Latin-1 character set typically used as the default +on UNIX systems in both the United States +and Western Europe.  Filenames stored by OpenAFS for Windows are +therefore unreadable on UNIX systems if they include any of the following +characters:

+ + + + + +
+

     [Ç]  128  + 08/00  200  80  C + cedilla

+

     [ü]  129  + 08/01  201  81  u + diaeresis

+

     [é]  130  + 08/02  202  82  e + acute

+

     [â]  131  + 08/03  203  83  a + circumflex

+

     [ä]  132  + 08/04  204  84  a + diaeresis

+

     [à]  133  + 08/05  205  85  a + grave

+

     [å]  134  + 08/06  206  86  a + ring

+

     [ç]  135  + 08/07  207  87  c + cedilla

+

     [ê]  136  + 08/08  210  88  e + circumflex

+

     [ë]  137  + 08/09  211  89  e + diaeresis

+

     [è]  138  + 08/10  212  8A  e + grave

+

     [ï]  139  + 08/11  213  8B  i + diaeresis

+

     [î]  140  + 08/12  214  8C  i + circumflex

+

     [ì]  141  + 08/13  215  8D  i + grave

+

     [Ä]  142  + 08/14  216  8E  A + diaeresis

+

     [Å]  143  + 08/15  217  8F  A + ring

+

     [É]  144  + 09/00  220  90  E + acute

+

     [æ]  145  + 09/01  221  91  + ae diphthong

+

     [Æ]  146  + 09/02  222  92  + AE diphthong

+

     [ô]  147  + 09/03  223  93  o + circumflex

+

     [ö]  148  + 09/04  224  94  o + diaeresis

+

     [ò]  149  + 09/05  225  95  o + grave

+

     [û]  150  + 09/06  226  96  u + circumflex

+

     [ù]  151  + 09/07  227  97  u + grave

+

     [ÿ]  152  + 09/08  230  98  y + diaeresis

+

     [Ö]  153  + 09/09  231  99  O + diaeresis

+

     [Ü]  154  + 09/10  232  9A  U + diaeresis

+

     [ø]  155  + 09/11  233  9B  o + slash

+

     [£]  156  + 09/12  234  9C  + Pound sterling sign

+

     [Ø]  157  + 09/13  235  9D  O + slash

+

     [×]  158  + 09/14  236  9E  + Multiplication sign

+

     [ƒ]  159  + 09/15  237  9F  Florin sign

+
+ +

 

+ +

OpenAFS 1.4 provides an optional registry value, StoreAnsiFilenames, +that can be set to instruct OpenAFS to store filenames using the ANSI Code Page +instead of the OEM Code Page.  The ANSI +Code Page is a compatible superset of Latin-1.  +This setting is not the default setting because making this change would +prevent OpenAFS for Windows from being able to access filenames containing the +above characters which were created without this setting.

+ +

3.27. Known +Character Set Issues with Roaming Profiles

+ +

There is a known issue with storing Windows Roaming Profiles +when the profile contains either directories or files with names which cannot +be represented in the local OEM character set.  +In this case, attempts to write the profile back to AFS will fail.  OpenAFS for Windows does not currently +support UNICODE.  To avoid this problem +some sites run logoff scripts (assigned by group policy) which rename all files +to use only the supported characters for the locale.

+ +

3.28. The +AFSCache File

+ +

The AFS Cache file is stored by default at %TEMP%\AFSCache +in a persistent file marked with the Hidden and System attributes.  The persistent nature of the data stored in +the cache file improves the performance of OpenAFS by reducing the number of +times data must be read from the AFS file servers. 

+ +

The performance of the AFS Client Service is significantly +affected by the access times associated with the AFSCache paging file.   When given the choice, the AFSCache file +should be placed on a fast disk, preferably NTFS, the file should not be +compressed and should consist of as few fragments as possible.   Significant performance gains can be +achieved by defragmenting the AFSCache file with Sysinternal's Contig utility.

+ +

3.29. Restricting +OpenAFS Client Service Start and Stop

+ +

A new command line tool, afsdacl.exe, can be used to +restrict the ability to start and stop the OpenAFS Client Service.

+ +

    afsdacl : +Set or reset the DACL to allow starting or stopping

+ +

         the +afsd service by any ordinary user.

+ +

 

+ +

    Usage : +afsdacl [-set | -reset] [-show]

+ +

          -set   +: Sets the DACL

+ +

          +-reset : Reset the DACL

+ +

          +-show  : Show current DACL (SDSF)

+ +

3.30. The @sys +Name List

+ +

The default @sys name list in OpenAFS 1.4 is set to +"x86_win32 i386_w2k i386_nt40" for 32-bit x86 systems.  The default for itanium will be +"ia64_win64" and "amd64_win64" for amd 64-bit processors +when those platforms are supported.

+ +

3.31. Symlinks to +AFS UNC paths

+ +

In OpenAFS 1.4, symlinks to AFS UNC paths, \\AFS[\all]\..., +are treated the same as symlinks to /afs/...  +However, please use /afs/... as the Windows UNC form will not work on UNIX.

+ +

3.32. Cache +Manager Debugging Now Supported

+ +

OpenAFS for Windows 1.4 implements the Cache Manager +Debugging RPC Interface.  The CM debugger +can be queried with cmdebug.exe.

+ +

Usage: cmdebug -servers <server machine> [-port +<IP port>] [-long]

+ +

               +[-addrs] [-cache] [-help]

+ +

Where: -long   +print all info

+ +

       +-addrs  print only host interfaces

+ +

       +-cache  print only cache +configuration

+ +

3.33. Windows +Logon Caching vs. Kerberos Logons

+ +

If you are a site which utilizes MIT/Heimdal Kerberos +principals to logon to Windows via a cross-realm relationship with a +multi-domain Windows forest, you must enable Windows logon caching unless the +workstation is Windows Vista Beta 1 or later.

+ +

3.34. Initial +Server Preferences

+ +

VLDB and File Server Preferences can now be provided initial +values using registry keys.  This is +useful for managed machines in a Windows domain which are centrally located +(e.g., in a computing lab.)  See Appendix +A for details on the "Server +Preferences" keys.

+ +

3.35. File +Timestamps

+ +

OpenAFS 1.4 reports timestamps on files stored in AFS in UTC +all year round.  In locales with daylight +savings time, previous versions of AFS for Windows reported the time when DST +is active as UTC+1.  This was done to +preserve the relative local time for the user.  +A file stored at 11:00am EST in January would be reported as having been +stored at 11:00am EDT in June.  +Unfortunately, this has the negative side effect of changing the +reported timestamp from 16:00UTC to 15:00UTC.  +Since Windows treats all file times in UTC, data synchronization +applications which rely on the timestamp would believe that all files stored in +AFS had changed.

+ +

It should be noted that UNIX based operating systems (such +as Solaris) do not appear to report file times to applications in UTC.  They do preserve the relative local +time.  This may confuse some users who are +used to being able to compare the timestamp in an UNIX shell with the timestamp +from the Windows explorer.  During DST, +these two times will no longer agree even though they are in fact representing +the same moment in time.

+ +

3.36. Windows RPC +client support must be installed

+ +

If the installer refuses to install and complains about an +RPC configuration error, check to ensure that the following registry entries +are present and that they refer to the dll "rpcrt4.dll":

+ +

   HKLM +"SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_np"

+ +

   HKLM +"SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_ip_tcp"

+ +

   HKLM +"SOFTWARE\Microsoft\RPC\ClientProtocols" "ncadg_ip_udp"

+ +

   HKLM +"SOFTWARE\Microsoft\RPC\ClientProtocols" "ncacn_http"

+ +

3.37. Generating +Minidumps of the OpenAFS Client Service

+ +

OpenAFS 1.4 adds a new command, "fs +minidump".  This command can be used +at any time to generate a mini dump file containing the current stack of the +afsd_service.exe process.   This output +can be very helpful when debugging the AFS Client Service when it is +unresponsive to SMB/CIFS requests.

+ +

3.38. AFS Client +Universally Unique Identifiers

+ +

The OpenAFS for Windows 1.4 client implements Universally +Unique Identifiers (UUIDs).  They are +used to provide the server with a method of identifying the client that is +independent of IP address.  The UUID is +generated when the AFSCache file is created and is maintained as long as the +contents of the AFSCache file are kept intact.  +The UUID is stored in the AFSCache file.   When cloning machines that have Windows AFS +client installed, the AFSCache files must be deleted as part of the cloning +process.

+ +

4. How to Debug +Problems with OpenAFS for Windows:

+ +

OpenAFS for Windows provides a wide range of tools to assist +you in debugging problems.  The +techniques available to you are varied because of the wide range of issues that +have been discovered over the years.

+ +

4.1. pioctl +debugging (IoctlDebug +registry key)

+ +

pioctl (path-based ioctl) calls are used by various tools to +communicate with the AFS Client Service.  +Some of the operations performed include:

+ +

·       setting/querying +tokens  (tokens.exe, aklog.exe, +afscreds.exe)

+ +

·       setting/querying +ACLs

+ +

·       setting/querying +cache parameters

+ +

·       flushing +files or volumes

+ +

·       setting/querying +server preferences

+ +

·       querying +path location

+ +

·       checking +the status of servers and volumes

+ +

·       setting/querying +the sysname list

+ +

pioctl calls are implemented by writing to a special UNC +path that is processed by the AFS Client Service.   If there is a failure to communicate with +the AFS Client Service via SMB/CIFS, it will be impossible to perform any of +the above operations.  

+ +

To assist in debugging these problems, the registry value:

+ +

  +[HKLM\SOFTWARE\OpenAFS\Client]

+ +

  +REG_DWORD:  IoctlDebug   = 0x01

+ +

should be set.  Then +any of the commands that perform pioctl calls should be executed from the +command prompt.  With this key set the +pioctl library will generate debugging output to stderr.  The output will contain the Win32 API calls +executed along with their most important parameters and their return code.   The MSDN Library and the Microsoft +KnowledgeBase can be used as a reference to help you determine the +configuration probem with your system.

+ +

4.2. afsd_service +initialization log (%WinDir%\TEMP\afsd_init.log)

+ +

Every time the AFS Client Service starts it appends data +about its progress and configuration to a file.  +This file provides information crucial to determining why the service +cannot start when there are problems.  +When the process terminates due to a panic condition it will write to +this file the source code file and line number of the error.  In many cases the panic condition is due to a +misconfiguration of the machine.  In +other cases it might be due to a programming error in the software.  A quick review of the location in the source +code will quickly reveal the reason for the termination.

+ +

The MaxLogSize +registry value determines the maximum size of the %WINDIR%\TEMP\afsd_init.log +file.  If the file is larger than this +value when OpenAFS Client Service starts, the file will be reset to 0 +bytes.  If value is set to 0, the file +will be allowed to grow indefinitely.

+ +

4.3. afsd_service +debug logs (fs trace {-on, -off, -dump} ->%WinDir%\TEMP\afsd.log)

+ +

When attempting to debug the behavior of the SMB/CIFS Server +and the Cache Manager it is often useful to examine a log of the operations +being performed.  While running the AFS +Client Service keeps an in memory log of many of its actions.   The default number of actions preserved at +any one time is 5000.  This can be +adjusted with the registry +value:

+ +

  +[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ +

  +REG_DWORD  TraceBufferSize

+ +

A restart of the service is necessary when adjusting this +value.   Execute "fs trace -on" +to clear to the log and "fs trace -dump" to output the contents of +the log to the file.

+ +

4.4. Using +SysInternalÂ’s DbgView and FileMon Tools

+ +

An alternatve option to the use of "fs trace -dump" +to capture internal OpenAFS Client Service events is to use a tool such as +Sysinternal's DbgView to capture real-time debugging output.  When the OpenAFS Client Service starts and Bit +2 of the TraceOption +value in the registry is set, all trace log events are output using the Windows +Debug Monitor interface (OutputDebugString).  +

+ +

  +[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ +

REG_DWORD   TraceOption = 0x04

+ +

Use “fs trace –on” and “fs trace –off” to toggle the +generation of log messages.

+ +

Sysinternal’s FileMon utility can be use to monitor the file +operations requested by applications and their success or failure.   Restrict FileMon to monitor Network Volumes +only in order to reduce the output to just the CIFS requests.   

+ +

Turn on the Clock Time +option in both tools to make it easier to synchronize the application requests +and the resulting OpenAFS Client Service operations.   The captured data can be stored to files for +inclusion in bug reports.

+ +

4.5. Microsoft +MiniDumps
+(fs minidump -> %WinDir%\TEMP\afsd.dmp)

+ +

If the AFS Client Service become unresponsive to any form of +communication there may be a serious error that can only be debugged by someone +with access to the source code and a debugger.   +The "fs minidump" command can be used to force the generation +of a MiniDump file containing the state of all of the threads in the AFS Client +Service process.

+ +

4.6. Single +Sign-on (Integrated Logon) debugging

+ +

If you are having trouble with the Integrated Logon +operations it is often useful to be able to obtain a log of what it is +attempting to do.   Setting Bit 0 of the TraceOption +registry value:

+ +

  +[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ +

  +REG_DWORD   TraceOption = 0x01

+ +

will instruct the Integrated Logon Network Provider and +Event Handlers to log information to the Windows Event Log: Application under +the name “AFS Logon".

+ +

4.7. RX (AFS RPC) +debugging (rxdebug)

+ +

The rxdebug.exe tool can be used to query a variety of +information about the AFS services installed on a given machine.  The port for the AFS Cache Manager is +7001. 

+ +

Usage: rxdebug -servers <server machine> [-port +<IP port>] [-nodally]

+ +

   [-allconnections] [-rxstats] [-onlyserver] +[-onlyclient]

+ +

   [-onlyport <show only <port>>]

+ +

   [-onlyhost <show only <host>>]

+ +

   [-onlyauth <show only <auth +level>>] [-version]

+ +

   [-noconns] [-peers] [-help]

+ +

Where: -nodally         don't show dallying conns

+ +

       +-allconnections  don't filter out +uninteresting connections

+ +

       +-rxstats         show Rx +statistics

+ +

       +-onlyserver      only show server +conns

+ +

       +-onlyclient      only show client +conns

+ +

       +-version         show AFS version +id

+ +

       +-noconns         show no +connections

+ +

       +-peers           show peers

+ +

4.8. Cache +Manager debugging (cmdebug)

+ +

The cmdebug.exe tool can be used to query the state of the +AFS Cache Manager on a given machine.

+ +

Usage: cmdebug -servers <server machine> [-port +<IP port>] [-long]

+ +

   [-refcounts] [-callbacks] [-addrs] [-cache] +[-help]

+ +

Where: -long       +print all info

+ +

       +-refcounts  print only cache +entries with positive reference counts

+ +

       +-callbacks  print only cache +entries with callbacks

+ +

       +-addrs      print only host +interfaces

+ +

       +-cache      print only cache +configuration

+ +

4.9. Persistent +Cache consistency check

+ +

The persistent cache is stored in a Hidden System file at +%WinDir%\TEMP\AFSCache.  If there is a +problem with the persistent cache that prevent the AFS Client Service from +being able to start a validation check on the file can be performed.

+ +

  +afsd_service.exe --validate-cache <cache-path>

+ +

5. Reporting Bugs:

+ +

Bug reports should be sent to openafs-bugs@openafs.org.  Please include as much information as +possible about the issue.  If you are +reporting a crash, please install the debugging symbols by re-running the +installer.  If a dump file is available +for the problem, %WINDIR%\TEMP\afsd.dmp, include it along with the AFS Client +Trace file  %WINDIR%\TEMP\afsd.log.  The AFS Client startup log is +%WINDIR%\TEMP\afsd_init.log.  Send the +last continuous block of  log information +from this file.

+ +

Configuring DrWatson to generate dump files for crashes:

+ +

·       Run +drwtsn32.exe to configure or to identify where the log and the crash dump files +are created:

+ +

·       click +Start > Run... 

+ +

·       type +drwtsn32 <enter>.

+ +

·       Select +either a Crash Dump Type: Mini or Full.

+ +

·       Clear +Dump Symbol Table

+ +

·       Clear +Append to Existing Log file.

+ +

·       Check +Dump All Thread Contexts.

+ +

·       Check +Create Crash Dump File

+ +

·       Next +run the monitoring module of Dr. Watson:

+ +

·       click +Start > Run...

+ +

·       type +drwatson <enter>.

+ +

·       Once +a crash happens, Dr. Watson generates a dump file and a report in the log file, +including the address of the crash and the stack dump.

+ +

Once you have the Dr. Watson's logfile and minidump, zip +them and attach them to your e-mail.

+ +

When reporting a error, please be sure to include the +version of OpenAFS.

+ +

6. How to Contribute to +the Development of OpenAFS for Windows

+ +

Contributions to the development of OpenAFS for Windows are +continuously needed.  Contributions may +take many forms including cash donations, support contracts, donated developer +time, and even donated tech writer time.

+ +

6.1. The USENIX +OpenAFS Fund

+ +

USENIX, a 501c3 +non-profit corporation, has formed the USENIX OpenAFS Fund in order to accept +tax deductible donations on behalf of the OpenAFS Elders. The donated funds +will be allocated by the OpenAFS Elders to fund OpenAFS development, +documentation, project management, and maintaining openafs.org.

+ +
+ + + + + +
+

USENIX OpenAFS Fund
+ USENIX Association
+2560 Ninth St., Suite 215 +
+Berkeley, CA 94710

+
+ +
+ +
+ + +

Donations can be made by sending a check, drawn on a U.S. +bank, made out to the USENIX OpenAFS Fund or by making a donation online.

+ +

6.2. Secure Endpoints Inc.

+ +

Secure Endpoints Inc. provides +development and support services for OpenAFS for Windows and MIT Kerberos for +Windows.  Donations provided to Secure +Endpoints Inc. for the development of OpenAFS are used to cover the OpenAFS +gatekeeper responsibilities; providing support to the OpenAFS community via the +OpenAFS mailing lists; and furthering development of desired features that are +either too small to be financed by development contracts.

+ +

Secure Endpoints +Inc. accepts software development agreements from organizations who wish to +fund a well-defined set of bug fixes or new features.

+ +

Secure Endpoints Inc. +provides contract based support for the OpenAFS for Windows and the MIT +Kerberos for Windows products.

+ +

6.3. The MIT Kerberos Account

+ +

The MIT +Kerberos development team accepts unrestricted grants.  Grants are tax deductible and the full amount +of the grant will be used to fund the development of Kerberos 5 and/or Kerberos +for Windows.  OpenAFS for Windows is +dependent on MIT Kerberos for Windows for authentication and shares many of the +same requirements for credential +management.  Future releases of both +products will share a common identity management user interface.

+ +

6.4. Direct contributions of code and/or +documentation

+ +

Organizations that +use OpenAFS in house and have development staffs are encouraged to contribute +any code modifications they make to OpenAFS.org via openafs-bugs@openafs.org. + Contributions of documentation are +highly desired.

+ +

6.5. +OpenAFS for Windows Mailing Lists

+ +

If you wish to participate in OpenAFS for Windows +development please join the openafs-win32-devel@openafs.org +mailing list.

+ +

https://lists.openafs.org/mailman/listinfo/openafs-win32-devel

+ +

User questions should be sent to the openafs-info@openafs.org +mailing list. 

+ +

https://lists.openafs.org/mailman/listinfo/openafs-info

+ +

You must join the mailing lists if you wish to post to the +list without incurring a moderation delay.

+ +

7. MSI +Deployment Guide

+ +
+ +
+
+ +
+ +

7.1. Introduction

+ +

A MSI installer option is available for those who wish to +use Windows Installer for installing OpenAFS and for organizations that wish to +deploy OpenAFS through Group Policy.  The +first version of OpenAFS for Windows available as an MSI was 1.3.65.

+ +

This document provides a guide for authoring transforms used +to customize the MSI package for a particular organization.  Although many settings can be deployed via +transforms, in an Active Directory environment it is advisable to deploy +registry settings    and configuration +files through group policy and/or startup scripts so that machines where +OpenAFS for Windows is already installed will pick up these customizations.

+ +

7.1.1 +Requirements

+ +

The information in this document applies to MSI packages +distributed with OpenAFS for Windows releases from 1.3.65 and onwards or MSI +packages built from corresponding source releases.  Not all releases support all the configuration +options documented here.

+ +

Authoring a "Windows Installer" transform requires +additional software for editing the MSI database tables and generating the +transform from the modified MSI package.  +ORCA.EXE and MSITRAN.EXE which are included in the Windows Platform SDK ("Windows +Installer" SDK) can be used for this purpose.

+ +

For reference, the schema for the MSI package is based on +SCHEMA.MSI distributed with the Platform SDK.

+ +

For general information about "Windows Installer", +refer to:

+ +

    http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp

+ +

For general information about authoring MSI transforms, +refer to:

+ +

    http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp

+ +

The remainder of this document assumes some familiarity with +authoring transforms.  While the MSDN +documentation for Windows Installer is a bit dense, the guide on MSI transforms +found at the second link above is recommended reading.  MSDN also includes a step-by-step example for +creating a transform at:

+ +

    http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp

+ +

7.1.2 Authoring +a Transform

+ +

Transforms describe a set of modifications to be performed +on an existing MSI for the purpose of customizing it.  This is ordinarily done by making a copy of +the MSI to be customized, modifying the copy and then using the old and the new +MSI to generate a transform.  For +example:

+ +

1.    +copy openafs.msi openafs-modified.msi

+ +

2.    +(edit the openafs-modified.msi to include the necessary +changes)

+ +

3.    +msitran -g openafs.msi openafs-modified.msi +openafs-transform.mst

+ +

4.    +(generates openafs-transform.mst, which is the +transform)

+ +

Transforms have an extension of .mst.  'msitran' is a tool distributed as part of the +"Windows Installer" SDK (part of the Windows Platform SDK).

+ +

You can test a transform by:

+ +

1.    +copy openafs.msi openafs-test.msi

+ +

2.    +msitran -a openafs-transform.mst openafs-test.msi

+ +

and then checking the resulting openafs-test.msi to see if +all changes you have made above to openafs-modified.msi is present in +openafs-test.msi.  'msitran' will +complain if some modification in the transform can not be successfully applied.

+ +

As mentioned above, you can use a tool like ORCA.EXE to edit +the MSI databases directly when editing openafs-modified.msi.  More details are given below.

+ +

7.2. Configuration +Options

+ +

The logic necessary to implement many of the settings +described in Appendix +A are present in the MSI.  Most of +these can be controlled by setting the corresponding properties to the desired +value.  Some settings may require +modifying existing registry entries (though not recommended) or adding new +resources (like files or registry keys).  +Instructions for performing these tasks are below.

+ +

7.2.1 +Configurable Properties

+ +

Most configurable properties correspond to registry keys or +values.  Due to the logic invoked based +on the existence of these registry keys or values, they are only set if the +associated property is defined to have a non null value.  If the associated property is not defined in +the MSI, the registry key or value will not be touched.  By default, the MSI does not contain these +properties and hence will not set the registry keys.  You will need to add properties as needed to +the MSI.

+ +

When one of the configurable properties is set, the +installer will use the property value to set the corresponding setting in the +HKEY_LOCAL_MACHINE registry hive.  The HKEY_CURRENT_USER +hive is not touched by the installer.

+ +

For each property, the associated registry setting is +referenced by the same text used in Appendix +A.

+ +

Strings are quoted using single quotes (e.g. 'a string'). An +empty string is denoted as ''.  Note that +you can't author null values into the 'Property' table.

+ +

Numeric values should be authored as decimal strings.

+ +

7.2.1.1 Setting Properties

+ +

In order to set a property,

+ +

1.        +Open the MSI in ORCA.EXE

+ +

2.        +Select the 'Property' table from the list of +tables on the left.

+ +

3.        +Find the property in the list of properties on +the right, double click the value and type the new value.

+ +

4.        +If the property does not exist in the property +list, right click the list and select 'Add Row', type the property name and the +desired value.

+ +

7.2.1.2 OpenAFS for Windows Properties

+ + + + + + + + + + + +
+
(Service + parameters):
+

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+
+
(Network + provider):
+

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]

+
+
(OpenAFS + Client):
+

[HKLM\SOFTWARE\OpenAFS\Client]

+
+ +
7.2.1.2.1 Registry Properties
+ +

These properties are used to set the values of registry +entries associated with OpenAFS for Windows.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
AFSCACHEPATH
+

Registry key    : (Service + parameters)

+

Registry value : CachePath

+

Valid values    : string .

+
+
AFSCACHESIZE
+

Registry key    : (Service + parameters)

+

Registry value : CacheSize

+

Valid values    : + numeric

+
+
AFSCELLNAME
+

Registry key    : (Service + parameters)

+

Registry value : Cell

+

Valid values    : + string

+
+
FREELANCEMODE
+

Registry key    : (Service + parameters)

+

Registry value : FreelanceClient

+

Valid values    : '1' + or '0'

+
+
HIDEDOTFILES
+

Registry key    : (Service + parameters)

+

Registry value : HideDotFiles

+

Valid values    : '1' + or '0'

+
+
LOGONOPTIONS
+

Registry key    : (Network + provider)

+

Registry value : LogonOptions

+

Valid values    : '0', '1' + or '3'

+

See Appendix + A section + 2.1 (Domain specific configuration keys for Network Provider) for more + details.

+
+
MOUNTROOT
+

Registry key    : (Service + parameters)

+

Registry value : Mountroot

+

Valid values    : + string

+
+
NETBIOSNAME
+

Registry key    : (Service + parameters)

+

Registry value : NetbiosName

+

Valid values    : + string (at most 15 characters)

+
+
NOFINDLANABYNAME
+

Registry key    : (Service + parameters)

+

Registry value : NoFindLanaByName

+

Valid values    : '1' + or '0'

+
+
RXMAXMTU
+

Registry key    : (Service + parameters)

+

Registry value : RxMaxMTU

+

Valid values    : + numeric

+
+
SECURITYLEVEL
+

Registry key    : (Service + parameters)

+

Registry value : SecurityLevel

+

Valid values    : '1' + or '0'

+
+
SMBAUTHTYPE
+

Registry key    : (Service + parameters)

+

Registry value : SMBAuthType

+

Valid values    : + '0','1' or '2'

+
+
STOREANSIFILENAMES
+

Registry key    : (OpenAFS + Client)

+

Registry value : StoreAnsiFilenames

+

Valid values    : '0' or + '1'

+
+
USEDNS
+

Registry key    : (Service + parameters)

+

Registry value : UseDNS

+

Valid values    : '1' + or '0'

+
+ +
7.2.1.2.2 AFSCreds.exe Properties
+ +

These properties are combined to add a command line option +to the shortcut that will be created in the Start:Programs:OpenAFS and +Start:Programs:Startup folders (see CREDSSTARTUP).  The method of specifying the option was +chosen for easy integration with the Windows Installer user interface.  Although other methods can be used to specify +options to AFSCREDS.EXE, it is advised that they be avoided as transforms +including such options may not apply to future releases of OpenAFS.

+ + + + + + + + + + + + + + + + + + + + +
+
CREDSSTARTUP
+

Valid values    : '1' or '0'

+

Controls whether AFSCreds.exe starts + up automatically when the user logs on.  + When CREDSSTARTUP is '1' a shortcut is added to the 'Startup' folder + in the 'Program menu' which starts AFSCREDS.EXE with the options that are + determined by the other CREDS* properties.

+
+
CREDSAUTOINIT
+

Valid values    : '-a' + or ''

+

Enables automatic initialization.

+
+
CREDSIPCHDET
+

Valid values    : '-n' + or ''

+

Enables IP address change detection.

+
+
CREDSQUIET
+

Valid values    : '-q' + or ''

+

Enables quiet mode.

+
+
CREDSRENEWDRMAP
+

Valid values    : '-m' + or '’

+

Enables renewing drive map at startup.

+
+
CREDSSHOW
+

Valid values    : '-s' + or ''

+

Enables displaying the credential manager window when + AFSCREDS starts up.

+
+ +

7.2.2 +Existing Registry Entries

+ +

You can change existing registry values subject to the +restrictions mentioned in the Windows Platform SDK.  Pay special attention to component key paths +and try to only change the 'Value' column in the 'Registry' table.  If you want to add additional registry keys +please refer to section 3 (Additional resources).

+ +

7.2.3 +Replacing Configuration Files

+ +

The OpenAFS configuration files (CellServDB) can be replaced +by your own configuration files.  These +files are contained in separate MSI components so that you can disable them +individually.

+ +

The recommended method for replacing these files is to first +disable the components containing the configuration files that you want to +replace, and then add new components for the replacement files.  This is outlined below (assuming you are +using ORCA.EXE to author the transform).

+ +

Note that transforms are not a good way to add a new file as +an embedded stream.  The method outlined +here places the file in the same directory as the MSI for deployment.

+ +

The walkthrough below is to add a custom 'CellServDB' file.

+ +

1.      Disable +the component that contains the configuration file that you want to replace.

+ +

1.1.   Locate +and select the 'Component' table in the 'Tables' list.

+ +

1.2.   In +the Component table, locate the component you need to change ( Ctrl-F invokes +the 'Find' dialog).  The component names +are listed below in section 7.2.3.1.  For this example, the component name is +'elf_CellServDB'.

+ +

1.3.   Go +to the 'Condition' column of the component.

+ +

1.4.   Enter +a condition that evaluates to false. I.e. 'DONOTINSTALL'. (Note that an +undefined property always evaluates to false).

+ +

Note that you can also use this step to disable other +configuration files without providing replacements.

+ +

2.      Add +a new component containing the new configuration file.

+ +

2.1.   Select +the 'Component' table in the 'Tables' list.

+ +

2.2.   Select +'Tables'->'Add Row' (Ctrl-R).

+ +

2.3.   Enter +the following :

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Component

+
+

cmf_my_CellServDB

+
+

ComponentID

+
+

{7019836F-BB2C-4AF6-9463-0D6EC9035CF1}

+
+

Directory_

+
+

dirClient

+
+

Attributes

+
+

144

+
+

Condition

+
+

 

+
+

KeyPath

+
+

fil_my_CellServDB

+
+ +

Note that the ComponentId is an +uppercase GUID.  You can generate one +using GUIDGEN.EXE or UUIDGEN.EXE, both of which are included in the Platform +SDK.

+ +

The Attributes value of 144 is a +sum of msidbComponentAttributesPermanent (16) and +msidbComponentAttributesNeverOverwrite (128).  +This ensures that local modifications are not overwritten or lost during +an installation or uninstallation.  These +are the same settings used on the default configuration files.

+ +

            'fil_my_CellServDB' +is a key into the 'File' table which we will fill later.

+ +

3.      Add +a new feature to hold the new component.

+ +

3.1.   Select +the 'Feature' table.

+ +

3.2.   Add +a new row (Ctrl-R or 'Tables'->'Add Row') with the following values:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Feature

+
+

fea_my_CellServDB

+
+

Feature_Parent

+
+

feaClient

+
+

Title

+
+

 

+
+

Description

+
+

 

+
+

Display

+
+

0

+
+

Level

+
+

30

+
+

Directory_

+
+

 

+
+

Attributes

+
+

8

+
+ +

It is important to create the +new feature under the 'feaClient' feature, which will ensure that the configuration +file will be installed when the client binaries are installed.

+ +

Setting 'Display' to 0 will hide +this feature from the feature selection dialog during an interactive installation.  A value of 30 for 'Level' allows this feature +to be installed by default (on a 'Typical' installation).

+ +

The 'Attributes' value is msidbFeatureAttributesDisallowAdvertise +(8), which is set on all features in the OpenAFS MSI.  The OpenAFS MSI is not designed for an +advertised installation.

+ +

4.      Join +the component and the feature.

+ +

4.1.   Select +the 'FeatureComponents' table.

+ +

4.2.   Add +a new row with the following values:

+ + + + + + + + + + +
+

Feature

+
+

fea_my_CellServDB

+
+

Component

+
+

cmf_my_CellServDB

+
+ +

5.      Add +an entry to the 'File' table.

+ +

5.1.   Select +the 'File' table.

+ +

5.2.   Add +a new row with the following values:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+

File

+
+

fil_my_CellServDB

+
+

Component_

+
+

cmf_my_CellServDB

+
+

FileName

+
+

CellServDB

+
+

FileSize

+
+

(enter file size here)

+
+

Attributes

+
+

8192

+
+

Sequence

+
+

1000

+
+ +

                (leave other fields blank)

+ +

The 'Attributes' value is +msidbFileAttributesNonCompressed (8192).  +This is because we will be placing this file in the same directory as +the MSI instead of embedding the file in it.  +Transforms do not support updating compressed sources or adding new +cabinet streams.

+ +

Finally, the 'Sequence' value of +1000 will be used later to distinguish the file as being in a separate source location +than the other files in the MSI.

+ +

6.      Set +a media source for the file.

+ +

6.1.   Select +the 'Media' table.

+ +

6.2.   Add +a row with the following values :

+ + + + + + + + + + +
+

DiskId

+
+

2

+
+

LastSequence

+
+

1000

+
+ +

                (leave other fields blank)

+ +

The sequence number of 1000 +designates this as the media source for the newly added file.

+ +

7.2.3.1 Components for Configuration Files

+ +

CellServDB: +'cpf_CellServDB' (ID {D5BA4C15-DBEC-4292-91FC-B54C30F24F2A})

+ +

7.2.4 +Adding Domain Specific Registry Keys

+ +

Following is an example for adding domain specific registry +keys.

+ +

    +Refer to Appendix +A section 2.1 for more information.

+ +

    Columns that are +unspecified should be left empty.

+ +

    We create a new +feature and component to hold the new registry keys.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

    + 'Feature' table:

+
+

            (new row)
+             Feature            : 'feaDomainKeys'
+             Feature Parent : 'feaClient'
+             Display           : 0
+             Level               : 30
+             Attributes        : 10

+
+

    'Component' + table:

+
+

            (new + row)
+             Component     : 'rcm_DomainKeys'
+             ComponentId  : '{4E3FCBF4-8BE7-40B2-A108-C47CF743C627}'
+             Directory         : 'TARGETDIR'
+             Attributes        : 4
+             KeyPath          : 'reg_domkey0'

+
+

    + 'FeatureComponents' table:

+
+

            (new row)
+             Feature            : 'feaDomainKeys'
+             Component     : 'rcm_DomainKeys'

+
+

    'Registry' + table:

+
+

            (new row)
+             Registry          : 'reg_domkey0'
+             Root                : 2
+             Key                 : + 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey1'
+             Root                : 2
+             Key                 : + 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'
+             Name              : '*'
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey2'
+             Root                : 2
+             Key                 : + 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'
+             Name              : '*'
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey3'
+             Root                : 2
+             Key                 : + 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'
+             Name              : 'LogonOptions'
+             Value              : 1
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey4'
+             Root                : 2
+             Key                 : SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'
+             Name              : '*'
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey5'
+             Root                : 2
+             Key                 : + 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'
+             Name              : 'LogonOptions'
+             Value              : 0
+             Component     : 'rcm_DomainKeys'

+
+

            (new row)
+             Registry          : 'reg_domkey6'
+             Root                : 2
+             Key                 : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'
+             Name              : 'FailLoginsSilently'
+             Value              : 1
+             Component     : 'rcm_DomainKeys'
+
+

+
+ +

 

+ +

The example adds domain specific keys for 'ATHENA.MIT.EDU' +(enable integrated logon) and 'LOCALHOST' (disable integrated logon and fail +logins silently).

+ +

7.2.5 +Adding Site Specific Freelance Registry Keys

+ +

Following is an example for adding site specific Freelance +registry keys to pre-populate the Mountpoints and Symlinks in the fake root.afs +volume.

+ +

    Columns that are +unspecified should be left empty.

+ +

    We create a new +feature and component to hold the new registry keys.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

    + 'Feature' table:

+
+

            (new row)
+             Feature            : 'feaFreelanceKeys'
+             Feature Parent : 'feaClient'
+             Display           : 0
+             Level               : 30
+             Attributes        : 10

+
+

    'Component' + table:

+
+

            (new row)
+             Component     : 'rcm_FreelanceKeys'
+             ComponentId  : '{4E3B3CBF4-9AE7-40C3-7B09-C48CF842C583}'
+             Directory         : 'TARGETDIR'
+             Attributes        : 4
+             KeyPath          : 'reg_freekey0'

+
+

    + 'FeatureComponents' table:

+
+

            (new row)
+             Feature            : 'feaFreelanceKeys'
+             Component     : 'rcm_FreelanceKeys'

+
+

    'Registry' + table:

+
+

            (new row)
+             Registry          : 'reg_freekey0'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'
+             Component     : 'rcm_FreelanceKeys'

+
+

            (new row)
+             Registry          : 'reg_freekey1'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'
+             Name              : '0'
+             Value              : + 'athena.mit.edu#athena.mit.edu:root.cell.'
+             Component     : 'rcm_FreelanceKeys'

+
+

            (new row)
+             Registry          : 'reg_freekey2'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'
+             Name              : '1'
+             Value              : + '.athena.mit.edu%athena.mit.edu:root.cell.'
+             Component     : 'rcm_FreelanceKeys'

+
+

            (new row)
+             Registry          : 'reg_freekey3'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'
+             Component     : 'rcm_FreelanceKeys'

+
+

            (new row)
+             Registry          : 'reg_freekey4'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'
+             Name              : '0'
+             Value              : + 'athena:athena.mit.edu.'
+             Component     : 'rcm_FreelanceKeys'

+
+

            (new row)
+             Registry          : 'reg_freekey5'
+             Root                : 2
+             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'
+             Name              : '1'
+             Value              : + '.athena:.athena.mit.edu.'
+             Component     : 'rcm_FreelanceKeys'

+
+ +

The example adds a read-only mountpoint to the +athena.mit.edu cell's root.afs volume as well as a read-write mountpoint.  Aliases are also provided using symlinks.

+ +

7.3 Additional +Resources

+ +

If you want to add registry keys or files you need to create +new components and features for those.  +Refer to the Windows Platform SDK for details.

+ +

It is beyond the scope of this document to provide a +comprehensive overview of how to add new resources through a transform.  Please refer to the "Windows +Installer" documentation for details.  +The relevant section is at :

+ +

http://msdn.microsoft.com/library/en-us/msi/setup/using_transforms_to_add_resources.asp

+ +

A sample walkthrough of adding a new configuration file is +in section 2.3.

+ +

Add new features under the 'feaClient' or 'feaServer' as appropriate +and set the 'Level' column for those features to equal the 'Level' for their +parent features for consistency.  Note +that none of the features in the OpenAFS for Windows MSI package are designed +to be installed to run from 'source' or 'advertised'.  It is recommended that you set +'msidbFeatureAttributesFavorLocal' (0), 'msidbFeatureAttributesFollowParent' +(2) and 'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new features.

+ +

If you are creating new components, retain the same +component GUID when creating new transforms against new releases of the OpenAFS +MSI package.

+ +

After making the adjustments to the MSI database using ORCA.EXE +you can generate a transform with MSITRAN.EXE as follows :

+ +

(Modified MSI package is 'openafs-en_US_new.msi' and the +original MSI package is 'openafs-en_US.msi'.  +Generates transform 'openafs-transform.mst')

+ +

    > msitran.exe +-g openafs-en_US.msi openafs-en_US_new.msi openafs-transform.mst

+ +

See the Platform SDK documentation for information on +command line options for MSITRAN.EXE.

+ +

7.4. Upgrades

+ +

The MSI package is designed to uninstall previous versions +of OpenAFS for Windows during installation.  +Note that it doesn't directly upgrade an existing installation.  This is intentional and ensures that +development releases which do not have strictly increasing version numbers are +properly upgraded.

+ +

Versions of OpenAFS that are upgraded by the MSI package are:

+ +

1)      OpenAFS +MSI package
+Upgrade code {6823EEDD-84FC-4204-ABB3-A80D25779833}
+Up to current release

+ +

2)      MIT's +Transarc AFS MSI package
+Upgrade code {5332B94F-DE38-4927-9EAB-51F4A64193A7}
+Up to version 3.6.2

+ +

3)      OpenAFS +NSIS package
+All versions

+ +

Note that versions of the OpenAFS NSIS package prior to +1.3.65 had a bug where it couldn't be uninstalled properly in unattended +mode.  Therefore the MSI package will not +try to uninstall an OpenAFS NSIS package if running unattended.  This means that group policy based deployments +will fail on machines that have the OpenAFS NSIS package installed.

+ +

If you have used a different MSI package to install OpenAFS +and wish to upgrade it you can author rows into the 'Upgrade' table as described +in the Platform SDK.

+ +

When performing an upgrade with msiexec.exe execute the MSI +with the repair options "vomus".

+ +

Appendix A: Registry Values

+ +

A.1. Service +parameters

+ +

The service parameters primarily affect the behavior of +the AFS client service (afsd_service.exe).

+ +

Regkey:
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Value: + LANadapter
+

Type: DWORD
+ Default: -1
+ Variable: LANadapter

+

LAN adapter number to use.  This is the lana number of the LAN adapter + that the SMB server should bind to.  If + unspecified or set to -1, a LAN adapter with named 'AFS' or a loopback + adapter will be selected.  If neither + are present, then all available adapters will be bound to.  When binding to a non-loopback adapter, the + NetBIOS name hostname%-AFS' will be used (where %hostname% is the NetBIOS + name of the host truncated to 11 characters). Otherwise, the NetBIOS name + will be 'AFS'.

+
+
Value: + CacheSize
+

Type: DWORD
+ Default: 98304 (CM_CONFIGDEFAULT_CACHESIZE)
+ Variable: cm_initParams.cacheSize

+

Size of the AFS cache in 1k blocks.

+
+
Value: ChunkSize
+

Type: DWORD
+ Default: 17 (CM_CONFIGDEFAULT_CHUNKSIZE)
+ Variable: cm_logChunkSize (cm_chunkSize = 1 << cm_logChunkSize)

+

Size of chunk for reading and writing. Actual chunk size + is 2^cm_logChunkSize.

+
+
Value: Daemons
+

Type: DWORD
+ Default: 2 (CM_CONFIGDEFAULT_DAEMONS)
+ Variable: numBkgD

+

Number of background daemons (number of threads of + cm_BkgDaemon). (see cm_BkgDaemon in cm_daemon.c)

+
+
Value: ServerThreads
+

Type: DWORD
+ Default: 25 (CM_CONFIGDEFAULT_SVTHREADS)
+ Variable: numSvThreads

+

Number of SMB server threads (number of threads of + smb_Server). (see smb_Server in smb.c).

+
+
Value: Stats
+

Type: DWORD
+ Default: 10000 (CM_CONFIGDEFAULT_STATS)
+ Variable: cm_initParams.nStatCaches

+

Cache configuration.

+
+
Value: + LogoffPreserveTokens
+

Type: DWORD {1,0}
+ Default : 0

+

If enabled (set to 1), the Logoff Event handler will not + attempt to delete the user's tokens  if + the user's profile is stored outside of AFS.

+
+
Value: RootVolume
+

Type: REG_SZ
+ Default: "root.afs"
+ Variable: cm_rootVolumeName

+

Root volume name.

+
+
Value: + Mountroot
+

Type: REG_SZ
+ Default: "/afs"
+ Variable: cm_mountRoot

+

Name of root mount point.  In symlinks, if a path starts with + cm_mountRoot, it is assumed that the path is absolute (as opposed to + relative) and is adjusted accordingly. Eg: if a path is specified as + /afs/athena.mit.edu/foo/bar/baz and cm_mountRoot is "/afs", then + the path is interpreted as \\afs\all\athena.mit.edu\foo\bar\baz.  If a path does not start with with + cm_mountRoot, the path is assumed to be relative and suffixed to the reference + directory (i.e. directory where the symlink exists)

+
+
Value: + CachePath
+

Type: REG_SZ or REG_EXPAND_SZ
+ Default: "%TEMP%\AFSCache"
+ Variable: cm_CachePath

+

Location of on-disk cache file.  The default is the SYSTEM account's TEMP + directory.  The attributes assigned to + the file are HIDDEN and SYSTEM.

+
+
Value: + NonPersistentCaching
+

Type: DWORD [0..1]
+ Default: 0
+ Variable: buf_CacheType

+

When this registry value is set to a non-zero value, the + CachePath value is ignored and the cache data is stored in the windows paging + file.  This prevents the use of + persistent caching (when available) as well as the ability to alter the size + of the cache at runtime using the "fs setcachesize" command.

+
+
Value: ValidateCache
+

Type: DWORD [0..2]
+ Default: 1
+ Variable: buf_CacheType

+

This value determines if and when persistent cache validation + is performed.

+

0 - Validation is disabled
+ 1 - Validation is performed at startup
+ 2 - Validation is performed at shutdown

+
+
Value: TrapOnPanic
+

Type: DWORD {1,0}
+ Default: 0
+ Variable: traceOnPanic

+

Issues a breakpoint in the event of a panic. (breakpoint: + _asm int 3).

+
+
Value: + NetbiosName
+

Type: REG_EXPAND_SZ
+ Default: "AFS"
+ Variable: cm_NetbiosName

+

Specifies the NetBIOS name to be used when binding to a + Loopback adapter.  To provide the old + behavior specify a value of  + "%COMPUTERNAME%-AFS".

+
+
Value: IsGateway
+

Type: DWORD {1,0}
+ Default: 0
+ Variable: isGateway

+

Select whether or not this AFS client should act as a + gateway.  If set and the NetBIOS name + hostname-AFS is bound to a physical NIC, other machines in the subnet can + access AFS via SMB connections to hostname-AFS.

+

When IsGateway is non-zero, the LAN adapter detection + code will avoid binding to a loopback adapter.  This will ensure that the NetBIOS name will + be of the form hostname-AFS instead of the value set by the "NetbiosName" + registry value.

+
+
Value: ReportSessionStartups
+

Type: DWORD {1,0}
+ Default: 0
+ Variable: reportSessionStartups

+

If enabled, all SMB sessions created are recorded in the + Application event log.  This also + enables other events such as drive mappings or various error types to be + logged.

+
+
Value: + TraceBufferSize
+

Type: DWORD
+ Default: 5000 (CM_CONFIGDEFAULT_TRACEBUFSIZE)
+ Variable: traceBufSize

+

Number of entries to keep in trace log.

+
+
Value: + SysName
+

Type: REG_SZ
+ Default: "i386_nt40"
+ Variable: cm_sysName

+

Provides an initial value for "fs sysname".  The string can contain one or more + replacement values for @sys in order of preference separated by whitespace.

+
+
Value: + SecurityLevel
+

Type: DWORD {1,0}
+ Default: 0
+ Variable: cryptall

+

Enables encryption on RX calls.

+
+
Value: + UseDNS
+

Type: DWORD {1,0}
+ Default: 1
+ Variable: cm_dnsEnabled

+

Enables resolving volservers using AFSDB DNS queries.

+

As of 1.3.60, this value is ignored as the DNS query + support utilizes the Win32 DNSQuery API which is available on Win2000 and + above.

+
+
Value: + FreelanceClient
+

Type: DWORD {1,0}
+ Default: 0
+ Variable: cm_freelanceEnabled

+

Enables freelance client.

+
+
Value: + HideDotFiles
+

Type: DWORD {1,0}
+ Default: 1
+ Variable: smb_hideDotFiles

+

Enables marking dotfiles with the hidden attribute.  Dot files are files whose name starts with + a period (excluding "." and "..").

+
+
Value: MaxMpxRequests
+

Type: DWORD
+ Default: 50
+ Variable: smb_maxMpxRequests

+

Maximum number of multiplexed SMB requests that can be + made.

+
+
Value: MaxVCPerServer
+

Type: DWORD
+ Default: 100
+ Variable: smb_maxVCPerServer

+

Maximum number of SMB virtual circuits.

+
+
Value: Cell
+

Type: REG_SZ
+ Default: <none>
+ Variable: rootCellName

+

Name of root cell (the cell from which root.afs should + be mounted in \\afs\all).

+
+
Value: RxNoJumbo
+

Type: DWORD {0,1}
+ Default: 0
+ Variable: rx_nojumbo

+

If enabled, does not send or indicate that we are able + to send or receive RX jumbograms.

+
+
Value: + RxMaxMTU
+

Type: DWORD
+ Default: -1
+ Variable: rx_mtu

+

If set to anything other than -1, uses that value as the + maximum MTU supported by the RX interface.

+

In order to enable OpenAFS to operate across the Cisco + IPSec VPN client, this value must be set to 1264 or smaller.

+
+
Value: + ConnDeadTimeout
+

Type: DWORD
+ Default: 60 (seconds)
+ Variable: ConnDeadtimeout

+

The Connection Dead Time is enforced to be at a minimum + 15 seconds longer than the minimum SMB timeout as specified by + [HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters] + SessTimeout

+

If the minimum SMB timeout is not specified the value is + 45 seconds.  See http://support.microsoft.com:80/support/kb/articles/Q102/0/67.asp

+
+
Value: + HardDeadTimeout
+

Type: DWORD
+ Default: 120 (seconds)
+ Variable: HardDeadtimeout

+

The Hard Dead Time is enforced to be at least double the + ConnDeadTimeout.  The provides an opportunity + for at least one retry.

+
+
Value: + TraceOption
+

Type: DWORD {0-15}
+ Default: 0

+

Enables logging of debug output to the Windows Event + Log.

+

Bit 0 enables logging of "Logon Events" + processed by the Network Provider and Winlogon Event Notification Handler. 

+

Bit 1 enables logging of events captured by the AFS + Client Service.

+

Bit 2 enables real-time viewing of "fs trace" + logging with DbgView or similar tools.

+

Bit 3 enables "fs trace" logging on startup.

+
+
Value: AllSubmount
+

Type: DWORD {0, 1}
+ Default: 1

+

Variable: allSubmount (smb.c)

+

By setting this value to 0, the + "\\NetbiosName\all" mount point will not be created.  This allows the read-write versions of + root.afs to be hidden.

+
+
Value: + NoFindLanaByName
+

Type: DWORD {0, 1}
+ Default: 0

+

Disables the attempt to identity the network adapter to + use by looking for an adapter with a display name of "AFS".

+
+
Value: MaxCPUs
+

Type: DWORD {1..32} or {1..64} depending on the + architecture
+ Default: <no default>

+

If this value is specified, afsd_service.exe will + restrict itself to executing on the specified number of CPUs if there are a + greater number installed in the machine.  +

+
+
Value: + smbAuthType
+

Type: DWORD {0..2}
+ Default: 2

+

If this value is specified, it defines the type of SMB + authentication which must be present in order for the Windows SMB client to + connect to the AFS Client Service's SMB server.  The values are:

+

0 = No authentication required
+ 1 = NTLM authentication required
+ 2 = Extended (GSS SPNEGO) authentication required
+ The default is Extended authentication

+
+
Value: + MaxLogSize
+

Type: DWORD {0 .. MAXDWORD}
+ Default: 100K

+

This entry determines the maximum size of the + %WINDIR%\TEMP\afsd_init.log file.  If + the file is larger than this value when afsd_service.exe starts the file will + be reset to 0 bytes.  If this value is + 0, it means the file should be allowed to grow indefinitely.

+
+
Value: FlushOnHibernate
+

Type: DWORD {0,1}
+ Default: 1

+

If set, flushes all volumes before the machine goes on + hibernate or stand-by.

+
+ +

Regkey:
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]

+ + + + + +
+
Value: + <Drive Letter:> for example "G:"
+

Type: REG_SZ

+

Specifies the submount name to + be mapped by afsd_service.exe at startup to the provided drive letter.

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client]

+ + + + + + + + + + + + + + + + + +
+
Value: + CellServDBDir
+

Type: REG_SZ
+ Default: <not defined>

+

Specifies the directory + containing the CellServDB file.  When + this value is not specified, the AFS Client install directory is used.

+
+
Value: + VerifyServiceSignature
+

Type: REG_DWORD
+ Default: 0x1

+

This value can be used to disable the runtime + verification of the digital signatures applied to afsd_service.exe and the + OpenAFS DLLs it loads.  This test is + performed to verify that   the DLLs + which are loaded by afsd_service.exe are from the same distribution as + afsd_service.exe.  This is to prevent + random errors caused when DLLs from one distribution of AFS are loaded by + another one.  This is not a security + test.  The reason for disabling this + test is to free up additional memory which can be used for a large cache + size.

+
+
Value: + IoctlDebug
+

Type: REG_DWORD
+ Default: 0x0

+

This value can be used to debug the cause of pioctl() + failures.  Set a non-zero value and the + pioctl() library will output status information to stdout.  Executing command line tools such as + tokens.exe, fs.exe, etc can then be used to determine why the pioctl() call + is failing.

+
+
Value: MiniDumpType
+

Type: REG_DWORD
+ Default: 0x0 (MiniDumpNormal)

+

This value is used to specify the type of minidump + generated by afsd_service.exe either when the process crashes or when a user + initiated is dump file is generated with the "fs.exe minidump" + command.

+

Valid values are dependent on the version of DbgHelp.dll + installed on the machine.  See the + Microsoft Developer Library for further information.

+

MiniDumpNormal = 0x00000000,
+ MiniDumpWithDataSegs = 0x00000001,
+ MiniDumpWithFullMemory = 0x00000002,
+ MiniDumpWithHandleData = 0x00000004,
+ MiniDumpFilterMemory = 0x00000008,
+ MiniDumpScanMemory = 0x00000010,
+ MiniDumpWithUnloadedModules = 0x00000020,
+ MiniDumpWithIndirectlyReferencedMemory = 0x00000040,
+ MiniDumpFilterModulePaths = 0x00000080,
+ MiniDumpWithProcessThreadData = 0x00000100,
+ MiniDumpWithPrivateReadWriteMemory = 0x00000200,
+ MiniDumpWithoutOptionalData = 0x00000400,
+ MiniDumpWithFullMemoryInfo = 0x00000800,
+ MiniDumpWithThreadInfo = 0x00001000,
+ MiniDumpWithCodeSegs = 0x00002000

+
+
Value: + StoreAnsiFilenames
+

Type: REG_DWORD
+ Default: 0x0

+

This value can be used to force the AFS Client Service + to store filenames using the Windows system's ANSI character set instead of + the OEM Code Page character set which has traditionally been used by SMB file + systems. 

+

Note: The use of ANSI characters will render access to + files with 8-bit OEM file names unaccessible from Windows.  This option is of use primarily when you + wish to allow file names produced on Windows to be accessible from Latin-1 UNIX + systems and vice versa.

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]

+ + + + + +
+
Value: + "smb/cifs share name"
+

Type: REG_SZ
+ Default: <none>

+

This key is used to map SMB/CIFS + shares to Client Side Caching (off-line access) policies. For each share one + of the following policies may be used: "manual", + "programs", "documents", "disable". 

+

These values used to be stored + in afsdsbmt.ini

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\Freelance]

+ + + + + +
+
Value: + "numeric value"
+

Type: REG_SZ
+ Default: <none>

+

This key is used to store dot + terminated mount point strings for use in constructing the fake root.afs + volume when Freelance (dynamic roots) mode is activated.

+

"athena.mit.edu#athena.mit.edu:root.cell."

+

".athena.mit.edu%athena.mit.edu:root.cell."

+

These values used to be stored + in afs_freelance.ini

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]

+ + + + + +
+
Value: + "numeric value"
+

Type: REG_SZ
+ Default: <none>

+

This key is used to store a dot + terminated symlink strings for use in constructing the fake root.afs volume + when Freelance (dynamic roots) mode is activated.

+

"linkname:destination-path."

+

"athena:athena.mit.edu."

+

"home:athena.mit.edu\user\j\a\jaltman."

+

"filename:path\file."

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\Submounts]

+ + + + + +
+
Value: + "submount name"
+

Type: REG_EXPAND_SZ
+ Default: <none>

+

This key is used to store + mappings of UNIX style AFS paths to submount names which can be referenced as + UNC paths.  For example the submount + string “/athena.mit.edu/user/j/a/jaltman" can be associated with the + submount name "jaltman.home".  + This can then be referenced as the UNC path \\AFS\jaltman.home.

+

These values used to be stored + in afsdsbmt.ini

+

NOTE: Submounts should no longer + be used with OpenAFS. Use the Windows Explorer to create drive mappings to + AFS UNC paths instead of using the AFS Submount mechanism.

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]

+ + + + + +
+
Value: + "hostname or ip address"
+

Type: REG_DWORD
+ Default: <none>

+

This key is used to specify a + default set of VLDB server preferences. For each entry the value name will be + either the IP address of a server or a fully qualified domain name.  The value will be the ranking.  The ranking will be adjusted by a random + value between 0 and 256 prior to the preference being set.

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]

+ + + + + +
+
Value: + "hostname or ip address"
+

Type: REG_DWORD
+ Default: <none>

+

This key is used to specify a + default set of File server preferences. For each entry the value name will be + either the IP address of a server or a fully qualified domain name.  The value will be the ranking.  The ranking will be adjusted by a random + value between 0 and 256 prior to the preference being set.

+
+ +

A.2. Integrated +Logon Network provider parameters

+ +

Affects the network provider (afslogon.dll).

+ +

Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ + + + + +
+
Value: + FailLoginsSilently
+

Type: DWORD
+ Default: 0

+

Do not display message boxes if + the login fails.

+
+ +

Regkey:
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]

+ + + + + + + + + + + + + + + + + + + + + + + +
+
Value: + NoWarnings
+

Type: DWORD
+ Default: 0

+

Disables visible warnings during + logon.

+
+
Value: + AuthentProviderPath
+

Type: REG_SZ
+ NSIS: %WINDIR%\SYSTEM32\afslogon.dll

+

Specifies the install location of the authentication + provider dll.

+
+
Value: Class
+

Type: DWORD
+ NSIS: 0x02

+

Specifies the class of network provider

+
+
Value: DependOnGroup
+

Type: REG_MULTI_SZ
+ NSIS: PNP_TDI

+

Specifies the service groups upon which the AFS Client + Service depends.  Windows should not + attempt to start the AFS Client Service until all of the services within + these groups have successfully started.

+
+
Value: + DependOnService
+

Type: REG_MULTI_SZ
+ NSIS: Tcpip NETBIOS RpcSs

+

Specifies a list of services upon which the AFS Client + Service depends.  Windows should not + attempt to start the AFS Client Service until all of the specified services + have successfully started.

+
+
Value: Name
+

Type: REG_SZ
+ NSIS: "OpenAFSDaemon"

+

Specifies the display name of the AFS Client Service

+
+
Value: ProviderPath
+

Type: REG_SZ
+ NSIS: %WINDIR%\SYSTEM32\afslogon.dll

+

Specifies the DLL to use for the network provider

+
+ +

A.2.1 +Domain specific configuration keys for the Network Provider

+ +

The network provider can be configured to have different +behavior depending on the domain that the user logs into.  These settings are only relevant when using +integrated login.  A domain refers to an Active +Directory (AD) domain, a trusted Kerberos (non-AD) realm or the local machine +(i.e. local account logins).  The domain +name that is used for selecting the domain would be the domain that is passed +into the NPLogonNotify function of the network provider.

+ +

Domain specific registry keys are:

+ +

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]

+ +

  (NP key)

+ +

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]

+ +

  (Domains key)

+ +

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\"domain +name"]

+ +

  (Specific domain +key. One per domain.)

+ +

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]

+ +

  (Localhost key)

+ +

Example:

+ +

 HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider

+ +

  |

+ +

  +- Domain

+ +

     ++-AD1.EXAMPLE.COM

+ +

     ++-AD2.EXAMPLE.NET

+ +

     ++-LOCALHOST

+ +

Each of the domain specific keys can have the set of +values described in 2.1.1.  The effective +values are chosen as described in 2.1.2.

+ +

A.2.1.1 Domain +specific configuration values

+ +

[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\"domain +name"]
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]

+ + + + + + + + + + + + + + + + + + + + +
+
Value: + LogonOptions
+

Type: DWORD
+ Default: 0x01

+

NSIS/WiX: depends on user + configuration

+

0x00 - Integrated Logon is not + used
+ 0x01 - Integrated Logon is used
+ 0x02 - High Security Mode is used (deprecated)
+ 0x03 - Integrated Logon with High Security Mode is used (deprecated)

+

High Security Mode generates + random SMB names for the creation of Drive Mappings.  This mode should not be used without + Integrated Logon.

+

As of 1.3.65 the SMB server + supports SMB authentication.  The High + Security Mode should not be used when using SMB authentication (SMBAuthType + setting is non zero).

+
+
Value: + FailLoginsSilentl
+

Type: DWORD (1|0)
+ Default: 0
+ NSIS/WiX: (not set)

+

If true, does not display any visible warnings in the + event of an error during the integrated login process.

+
+
Value: LogonScript
+

Type: REG_SZ or REG_EXPAND_SZ
+ Default: (null)
+ NSIS/WiX: (only value under NP key) <install path>\afscreds.exe -:%s -x + -a -m -n -q

+

A logon script that will be scheduled to be run after + the profile load is complete.  If using + the REG_EXPAND_SZ type, you can use any system environment variable as + "%varname%" which would be expanded at the time the network provider + is run.  Optionally using a + "%s" in the value would result in it being expanded into the AFS + SMB username for the session.

+
+
Value: LoginRetryInterval
+

Type: DWORD
+ Default: 30
+ NSIS/WiX: (not set)

+

If the OpenAFS client service has not started yet, the network + provider will wait for a maximum of "LoginRetryInterval" seconds + while retrying every "LoginSleepInterval" seconds to check if the + service is up.

+
+
Value: + LoginSleepInterval
+

Type: DWORD
+ Default: 5
+ NSIS/WiX: (not set)

+

See description of LoginRetryInterval.

+
+
Value: + TheseCells
+

Type: REG_MULTI_SZ
+ NSIS: <not set>

+

When Kerberos 5 is being used, TheseCells provides a + list of additional cells for which tokens should be obtained with the default + Kerberos 5 principal.

+
+ +

A.2.1.2  Selection of effective values for domain +specific configuration

+ +

During login to domain X, where X is the domain passed +into NPLogonNotify as lpAuthentInfo->LogonDomainName or the string 'LOCALHOST' +if lpAuthentInfo->LogonDomainName equals the name of the computer, the +following keys will be looked up.

+ +

1.      +NP key. ("HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider")

+ +

2.      +Domains key. (NP key\"Domain")

+ +

3.      +Specific domain key. (Domains key\X)

+ +

If the specific domain key does not exist, then the +domains key will be ignored.  All the +configuration information in this case will come from the NP key.

+ +

If the specific domain key exists, then for each of the +values metioned in (2), they will be looked up in the specific domain key, domains +key and the NP key successively until the value is found. The first instance of +the value found this way will be the effective for the login session.  If no such instance can be found, the default +will be used.  To re-iterate, a value in +a more specific key supercedes a value in a less specific key.  The exceptions to this rule are stated below.

+ +

A.2.1.3 Exceptions +to A.2.1.2

+ +

To retain backwards compatibility, the following +exceptions are made to 2.1.2.

+ +

2.1.3.1 'FailLoginsSilently'

+ +

Historically, the 'FailLoginsSilently' value was in HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters +key and not in the NP key.  Therefore, +for backwards compatibility, the value in the Parameters key will supercede all +instances of this value in other keys.  +In the absence of this value in the Parameters key, normal scope rules +apply.

+ +

2.1.3.2 'LogonScript'

+ +

If a 'LogonScript' is not specified in the specific domain +key nor in the domains key, the value in the NP key will only be checked if the +effective 'LogonOptions' specify a high security integrated login.  If a logon script is specified in the +specific domain key or the domains key, it will be used regardless of the high +security setting.  Please be aware of +this when setting this value.

+ +

A.3. AFS +Credentials System Tray Tool parameters

+ +

Affects the behavior of afscreds.exe

+ +

Regkey:
+[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]

+ + + + + + + + +
+
Value: + Gateway
+

Type: REG_SZ
+ Default: ""
+ Function: GetGatewayName()

+

If the AFS client is utilizing a + gateway to obtain AFS access, the name of the gateway is specified by this + value.

+
+
Value: Cell
+

Type: REG_SZ
+ Default: <none>
+ Variable: IsServiceConfigured()

+

The value Cell is used to determine if the AFS Client + Service has been properly configured or not.

+
+ +

Regkey:
+[HKLM\SOFTWARE\OpenAFS\Client]
+[HKCU\SOFTWARE\OpenAFS\Client]

+ + + + + + + + + + + + + + +
+
Value: + ShowTrayIcon
+

Type: DWORD {0, 1}
+ Default: 1
+ Function: InitApp(), Main_OnCheckTerminate()

+

This value is used to determine + whether or not a shortcut should be maintained in the user's Start + Menu->Programs->Startup folder.

+

This value used to be stored at + [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].

+

The current user value is + checked first; if it does not exist the local machine value is checked.

+
+
Value: EnableKFW
+

Type: DWORD {0, 1}
+ Default: 1
+ Function: KFW_is_available()

+

When MIT Kerberos for Windows can be loaded, Kerberos 5 + will be used to obtain AFS credentials.  + By setting this value to 0, the internal Kerberos 4 implementation + will be used instead.  The current user + value is checked first; if it does not exist the local machine value is + checked.

+
+
Value: + Use524
+

Type: DWORD {0, 1}
+ Default: 0
+ Function: KFW_use_krb524()

+

When MIT Kerberos for Windows can be loaded, Kerberos 5 + will be used to obtain AFS credentials.  + By setting this value to 1, the Kerberos 5 tickets will be converted + to Kerberos 4 tokens via a call to the krb524 daemon.  The current user value is checked first; if + it does not exist the local machine value is checked.

+
+
Value: + AfscredsShortcutParams
+

Type: REG_SZ
+ Default: "-A -M -N -Q"
+ Function: Shortcut_FixStartup

+

This value specifies the command line options which + should be set as part of the shortcut to afscreds.exe.  afscreds.exe rewrites the shortcut each + time it exits so as to ensure that the shortcut points to the latest version + of the program.  This value is used to + determine which values should be used for command line parameters.  The current user value is checked first; if + it does not exist the local machine value is checked.

+

The following subset of the command line options is + appropriate for use in this registry setting:

+

-A = autoinit
+ -M = renew drive maps
+ -N = ip address change detection
+ -Q = quiet mode.  do not display start + service dialog if afsd_service is not already running
+ -S = show tokens dialog on startup
+ -Z = unmap drives

+
+ +

Regkey:
+[HKCU\SOFTWARE\OpenAFS\Client]

+ + + + + +
+
Value: + Authentication Cell
+

Type: REG_SZ
+ Default: <none>
+ Function: Afscreds.exe GetDefaultCell()

+

This value allows the user to + configure a different cell name to be used as the default cell when acquiring + tokens in afscreds.exe.

+
+ +

Regkey:
+[HKCU\SOFTWARE\OpenAFS\Client\Reminders]

+ + + + + +
+
Value: + "afs cell name"
+

Type: DWORD {0, 1}
+ Default: <none>
+ Function: LoadRemind(), SaveRemind()

+

These values are used to save + and restore the state of the reminder flag for each cell for which the user + has obtained tokens.

+

This value used to be stored at + [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].

+
+ +

Regkey:
+[HKCU\SOFTWARE\OpenAFS\Client\Active Maps]

+ + + + + +
+
Value: + "upper case drive letter"
+

Type: DWORD {0, 1}
+ Default: <none>

+

These values are used to store + the persistence state of the AFS drive mappings as listed in the + [...\Client\Mappings] key.

+

These values used to be stored + in the afsdsbmt.ini file

+
+ +

Regkey:
+[HKCU\SOFTWARE\OpenAFS\Client\Mappings]

+ + + + + +
+
Value: + "upper case drive letter"
+

Type: REG_SZ
+ Default: <none>

+

These values are used to store + the AFS path in UNIX notation to which the drive letter is to be mapped.

+

These values used to be stored + in the afsdsbmt.ini file.

+
+ +

A.4 OpenAFS +Client Service Environment Variables

+ + + + + + + + +
+
Variable: + AFS_RPC_ENCRYPT
+

Values:   "OFF" disables the use of RPC + encryption any other value allows RPC encryption to be used
+ Default:  RPC encryption is on

+
+
Variable: + AFS_RPC_PROTSEQ
+

Values:            "ncalrpc"  - local RPC
+                         "ncacn_np" + - named pipes
+                         "ncacn_ip_tcp" + - tcp/ip
+ Default:  local RPC

+
+ +

 

+ +
+ + + + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml new file mode 100644 index 000000000..ff158d365 --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm new file mode 100644 index 000000000..c1bd4e4e1 --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ +

+ +


+ +

+ +
+ +
+ +

+ +


+ +

+ +
+ +
+ +

+ +


+ +

+ +
+ +
+ +

+ +


+ +

+ +
+ +
+ +

OpenAFS for Windows 1.4.0 Release Notes

+ +
+ + + + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/preview.wmf b/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/preview.wmf new file mode 100644 index 0000000000000000000000000000000000000000..8158584d4c66239b23d2de0224e888eae5c46f67 GIT binary patch literal 15892 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 + + + + + + + + +OpenAFS for Windows Release Notes TOC + + + + + + + +
+ +

+ +

1. +Installer Options. Error! Bookmark not defined.

+ +

2. +System Requirements. Error! Bookmark not defined.

+ +

2.1 +Supported Operating Systems. Error! Bookmark not defined.

+ +

2.2 +Disk Space. Error! Bookmark not defined.

+ +

2.3 +Additional Software. Error! Bookmark not defined.

+ +

3. +Operational Notes. Error! Bookmark not defined.

+ +

3.1. +Requirements for Kerberos 5 Authentication. Error! Bookmark not defined.

+ +

3.2. +Use of the Microsoft Loopback Adapter Error! Bookmark not defined.

+ +

3.3. +Using Freelance (Dynamic Root) Mode to Improve Mobility. Error! Bookmark not defined.

+ +

3.4. +Locating AFS Volume Database Servers. Error! Bookmark not defined.

+ +

3.5. +Obtaining AFS Tokens as a Part of Windows Logon. Error! Bookmark not defined.

+ +

3.6. +AFS System Tray Command Line Options. Error! Bookmark not defined.

+ +

3.7. +The “AFS Client Admins” Authorization Group. Error! Bookmark not defined.

+ +

3.8. +OpenAFS support for UNC paths. Error! Bookmark not defined.

+ +

3.9. +OpenAFS includes aklog.exe. Error! Bookmark not defined.

+ +

3.10. +OpenAFS Servers on Windows are Unsupported. Error! Bookmark not defined.

+ +

3.11. +OpenAFS Debugging Symbol files. Error! Bookmark not defined.

+ +

3.12. +Maximum File Size is 2GB.. Error! Bookmark not defined.

+ +

3.13. +Encrypted AFS File Access. Error! Bookmark not defined.

+ +

3.14. +Authenticated Access to the OpenAFS Client Service. Error! Bookmark not defined.

+ +

3.15. +No More INI Files. Error! Bookmark not defined.

+ +

3.16. +Microsoft Windows Internet Connection Firewall Error! Bookmark not defined.

+ +

3.17. +Browsing AFS from the Explorer Shell and Office. Error! Bookmark not defined.

+ +

3.18. +No Support for Byte Range Locking. Error! Bookmark not defined.

+ +

3.19. +Automatic Discarding of AFS Tokens at Logoff. Error! Bookmark not defined.

+ +

3.20. +Terminal Server installations. Error! Bookmark not defined.

+ +

3.21. +Hidden Dot Files. Error! Bookmark not defined.

+ +

3.22. +Status Cache Limits. Error! Bookmark not defined.

+ +

3.23. +NETBIOS over TCP/IP must be enabled. Error! Bookmark not defined.

+ +

3.24. +OpenAFS binaries are digitally signed. Error! Bookmark not defined.

+ +

3.25. +Maximum Size of the AFSCache File. Error! Bookmark not defined.

+ +

3.26. +Filename Character Sets. Error! Bookmark not defined.

+ +

3.27. +Known Character Set Issues with Roaming Profiles. Error! Bookmark not defined.

+ +

3.28. +The AFSCache File. Error! Bookmark not defined.

+ +

3.29. +Restricting OpenAFS Client Service Start and Stop. Error! Bookmark not defined.

+ +

3.30. +The @sys Name List Error! Bookmark not defined.

+ +

3.31. +Symlinks to AFS UNC paths. Error! Bookmark not defined.

+ +

3.32. +Cache Manager Debugging Now Supported. Error! Bookmark not defined.

+ +

3.33. +Windows Logon Caching vs. Kerberos Logons. Error! Bookmark not defined.

+ +

3.34. +Initial Server Preferences. Error! Bookmark not defined.

+ +

3.35. +File Timestamps. Error! Bookmark not defined.

+ +

3.36. +Windows RPC client support must be installed. Error! Bookmark not defined.

+ +

3.37. +Generating Minidumps of the OpenAFS Client Service. Error! Bookmark not defined.

+ +

3.38. +AFS Client Universally Unique Identifiers. Error! Bookmark not defined.

+ +

4. +How to Debug Problems with OpenAFS for Windows: Error! Bookmark not defined.

+ +

4.1. +pioctl debugging (IoctlDebug registry key) Error! Bookmark not defined.

+ +

4.2. +afsd_service initialization log (%WinDir%\TEMP\afsd_init.log) Error! Bookmark not defined.

+ +

4.3. +afsd_service debug logs (fs trace {-on, -off, -dump} +->%WinDir%\TEMP\afsd.log) Error! Bookmark not defined.

+ +

4.4. +Using SysInternalÂ’s DbgView and FileMon Tools. Error! Bookmark not defined.

+ +

4.5. +Microsoft MiniDumps  (fs minidump -> +%WinDir%\TEMP\afsd.dmp) Error! Bookmark not defined.

+ +

4.6. +Single Sign-on (Integrated Logon) debugging. Error! Bookmark not defined.

+ +

4.7. +RX (AFS RPC) debugging (rxdebug) Error! Bookmark not defined.

+ +

4.8. +Cache Manager debugging (cmdebug) Error! Bookmark not defined.

+ +

4.9. +Persistent Cache consistency check. Error! Bookmark not defined.

+ +

5. +Reporting Bugs: Error! Bookmark not defined.

+ +

6. +How to Contribute to the Development of OpenAFS for Windows. Error! Bookmark not defined.

+ +

6.1. +The USENIX OpenAFS Fund. Error! Bookmark not defined.

+ +

6.2. +Secure Endpoints Inc. Error! Bookmark not defined.

+ +

6.3. +The MIT Kerberos Account Error! Bookmark not defined.

+ +

6.4. +Direct contributions of code and/or documentation. Error! Bookmark not defined.

+ +

6.5. +OpenAFS for Windows Mailing Lists. Error! Bookmark not defined.

+ +

7. +MSI Deployment Guide. Error! Bookmark not defined.

+ +

7.1. +Introduction. Error! Bookmark not defined.

+ +

7.2. +Configuration Options. Error! Bookmark not defined.

+ +

7.3 +Additional Resources. Error! Bookmark not defined.

+ +

7.4. +Upgrades. Error! Bookmark not defined.

+ +

Appendix +A: Registry Values. Error! Bookmark not defined.

+ +

A.1. +Service parameters. Error! Bookmark not defined.

+ +

A.2. +Integrated Logon Network provider parameters. Error! Bookmark not defined.

+ +

A.2.1 +Domain specific configuration keys for the Network Provider Error! Bookmark not defined.

+ +

A.3. +AFS Credentials System Tray Tool parameters. Error! Bookmark not defined.

+ +

A.4 +OpenAFS Client Service Environment Variables. Error! Bookmark not defined.

+ +

 

+ +
+ + + + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/index.htm b/src/WINNT/doc/install/Documentation/en_US/html/index.htm index d48275eb4..8cb2fb9f4 100755 --- a/src/WINNT/doc/install/Documentation/en_US/html/index.htm +++ b/src/WINNT/doc/install/Documentation/en_US/html/index.htm @@ -1,14 +1,16 @@ - - - - - - - - - IBM AFS for Windows Documentation - - + + + + + + + + + - + + - + + + - - + + + + +
+ +

+ +

OpenAFS for Windows

+ +

Version 1.4.0

-
[IBM AFS for Windows Documentation] -

-IBM AFS for Windows

+

 

-

-Version 3.6

-  +

Welcome to the OpenAFS for Windows online documentation set!

-

Welcome to the AFS for Windows online documentation set! +

The documentation set includes the OpenAFS for Windows Release Notes and the +IBM AFS for Windows 3.6 product notes and installation and configuration +information for the AFS Server, AFS + Control Center, +AFS Client, and AFS Light products. The OpenAFS for Windows online +documentation set also includes the following administrative documentation: the +IBM AFS Administration Reference and the IBM AFS Administration Guide. +

-

 The documentation set includes product notes and installation -and configuration information for the AFS Server, AFS Control Center, AFS -Client, and AFS Light products. The AFS for Windows online documentation -set also includes the following administrative documentation: the IBM -AFS Administration Reference and the IBM AFS Administration Guide. -Note that the administrative documentation is only available online if -you chose the AFS Supplemental Documentation option when you installed -AFS for Windows on your system. +

Although the IBM AFS documentation is out of date, OpenAFS does not have +revised documentation to replace it at the current time.

-

 Note: Documentation is also available directly from the -AFS for Windows CD-ROM, in the CD:\Documentation directory, -where CD is the letter of your -CD-ROM drive. +

Online Documentation:

-

Online Documentation: +

·         +OpenAFS for Windows +Release Notes

-

     IBM AFS for -Windows Quick Beginnings +

·         +IBM AFS for +Windows 3.6 Quick Beginnings

-

     IBM AFS -for Windows Release Notes +

·         +IBM AFS for +Windows 3.6 Release Notes

-

     IBM AFS Administration -Guide +

·         +IBM AFS 3.6 Administration +Guide

-

     IBM AFS Administration -Reference +

·         +IBM AFS 3.6 Administration +Reference

-

  -
PDF: +

 
+
+

-

Documentation in PDF format is not installed with the online documentation. -Access AFS documentation in PDF format directly from the AFS for Windows -CD-ROM. The PDF files are in the CD:\Documentation\language\PDF -directory, where CD is the letter of your CD-ROM drive and language -is the language in which you want to view the documentation, for example, -en_US for English documentation. -
  +

-

© IBM Corporation 2000. All -Rights Reserved.

+ - - + diff --git a/src/WINNT/doc/install/Documentation/en_US/html/index_files/filelist.xml b/src/WINNT/doc/install/Documentation/en_US/html/index_files/filelist.xml new file mode 100644 index 000000000..c3e5db12a --- /dev/null +++ b/src/WINNT/doc/install/Documentation/en_US/html/index_files/filelist.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/WINNT/doc/install/Documentation/en_US/html/index_files/image001.jpg b/src/WINNT/doc/install/Documentation/en_US/html/index_files/image001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19d79943d5ac7b68a6cdb136199971a3a35f0615 GIT binary patch literal 83761 zcmeFZ2UJwqn=g9E2qKaN!9sFS5y>EwfPiGl8ALz?1SCr=6QD%Nib_dN0xCI{A_$^n z3IxeHN`?Z8s<%tK``_Jj=grJpYu=iBZy(pD_DTEf@WtQvZSmjm}iH}2&tDCo{zM2xJshK$^MJGfB9fN2= zA-A>jx~*-XY6yWtT}d0dASo_EsQ>HO>4!i|5Y&5yaR0w}(Ahh9*+CG|Rq&pdy{jAO zC($QRx3+h+2X$f|!gXIC2SPm+)Wdw89Q+`NgcH`l#?8iY}_}5rK4T4y~TyPrRbaHdKYHQD_rF@xF+uhB{ z+uif$-QWL+|C%{)`myE`bemipYA4*H1Z9sNBD4>!9U^!L=iuN2#WYF@a->y;oGLFt zCw!F%m;dxt(!Z~OIJi&rk?_=i(S({Ic6U;5;~Kc+MK4mTV;9o+03 zIE}&DJGnV>D!aScJ9#^~yKw^IRaa4#6qS*bJbU4sC}E&~9E7nGrw~s6D`Ri_)7XE} z8fbta3kNaUoP&;cGD0LPUm#KjYKX)#4cs9j@C*2bAgv?D&{gnj0-O6qi$AaaFa8k6 zf{Vm|ya%~wK#=qnpvBmKUAz7if+`HDkUpCm#CxRn-S zgjk_d5H}U2~vSHAYI51GJ~ukJLo3l3VA|)P!Mzv3WFk{Cr}cU3L&8^ zC?6_@-a(a69rOYE1buh$x6?h!}`iiC{#$M8ZTDh@^=W zh*XHQi1dlfh^`Si61fri5CsuEAc`c4CrTwsC(0*!OH@ttf#@?)H_;%`1knP~2GKq- z3Gq>4Mq&#UlUgle<1!sj3yo@ULxKm zfk>!Hm`P5PoF$PaQ6|wPF(0(n~T0i^%1L^b zRF3otsS&9isRwBYX%uNHX&z|>X%lHL=>+K-DUOVWjGauFOqNWY%#_TL%#SRLESW5a ztemWw3{5sewnI)%&P>ivE=7KY+>G3rJdiw!{3Uq_`Frwi@+tCd3JMBV3SkO)3SA0Y z3U7)qif0tBDNqzW6f+bUN@_|NbulW zsozkyQcqCt9i=}ibX57MkAG1G(IQINl#j&1aKWLB8^3p2OTGIy5CexPEcG4~%KXRP!xbkt^;~~eNAFn<> zaD1DNflic8m(G)ft@`BN>YrI~doP=$XWsjG68*J!h(C8fPY9=3`c8zQr8N{EoSwd7p)YMUlmU z6G)S#8VBY7GMl8 z1(*{o5r%>-ax!r$a^B*6%Gt!ZcAEY4mD4__(@%GtKH%c#GUB?=Rl+sGO~ozEeS{|SC|{s8_${$T+c0l0vN zK!!k{Ai1Elpo`#3!7d?UAqkG?bNA0xp8FxfBVsNRC(aS-$m&~HAL@=)`)Ig5V~M@;rWF= zF&Z&dF@#u^*t)o|xPy3__%{g#32ljRiAIS-NhwKB$zsU`DITe7QZJ+iq#32JN=Hez z%8*%W9V+E_bNVs~D-I zs*I{~sXD3_s;;R?s0FIMze09J^Ge*60d)>_JN10^H4Q0^V2vitqnZYqshX2oLRy|$ zHQL158rlik!#cb=ZaS5^kgmFJg6_yw{;M8WYxT(WuIfG4o7ET957KWjU@)*TC@|PD zR5FY;{B9&*0MMUusg zrG#aeWxo}_)g7zP)@;_dtm|!PZES5yuaR9dxmIuuYpZLUVY_`@{rZdRYj(xRt^A%^L^RA1oORfw4mdULW zS4!7wuGMbzZZ2+3?x)=ExOd+cz8!XZ+(XtQ$z#n^(=*45$ji#B%9{}w5np`-d_sLD zd=-43`(pfz{Yvl9-Eq6~)nCZ}vHx6vYCv`%X`o$TW6k!7#Cq5(H40=GC2|(Wf#>JEgJna8Xt2brXyA|Hth-d6SpV*aqzgjc)Iw2_^AZ# zgo;GY#E8VLB%7qq$>Pb#6si=Tl<}upPph8sJbUsCn|d=9{aopJ$qV)uk6-M*w13%? zb}6kG$$^YS?!R(+^(|d3y&{7zBRP{i(>HTA%Q&kgTRJ;Ghb<>E=P=hTcRWu&uPI+D zKfi#zAhwXW(5G=DWsH>C)md-m(|v z4CN6OL>2xOYn3-E$E(b$x~ny+8*Aih%4^Tn=GL9AdtT2}AKO6H@UQ`o3P5eYzx{ss zgX4#(Mw`a(A5A~@HR&~VG;21uep3DPu|=^3)hgdw_gVIHb(?fs6<;O3mbXi^ zmv=~ZRCG#pR&~jA)pTF%Zs>vceCWO0`>9X8?+aQ7-Q920|82l>VEmi?xB0j2s_H9%UcR7!w>T8J8TdpSV2nb<$w+`;^_((zMq!cIM$M&1~`O$9|#p2A;?WKd|uob$M7e54kl&xM`{kmqlHnZ-zj^BvdWZlf&65ndvzPdfS zou1rKX*nz&)SD<1!kE%1*m@Q*FPA-1J!F5Ii z9A~8DR zaQvG_-a~YhBrwuo5+W{$n2v~qjtJib!9X9$KokQUpu0a0B4QF!GI9#aBUIGjf%4-J zF%by~F)0Zd87T;>5Cwz#5GfrQ{b^A}at1wH3N8=E3-{vEDY=#2eqhq?UgHtF?s@+R z6*J2TRyJNfegQ!taS2H&X&G7N%POjBSJX8O42_IUz?|FJJKS)*>E!I??c?ir$3Nh~ z!_ctsM~@@o6B3h>Q=UFc&B)Bk&dJToFL+m4R$ftARbA8gv8nk}OY7&hp58um|G>Aw zp^3?<>6zKN`Gv*xjm@p?on6e{K4Dx$5XrA${V}q?jf)P9iz>_I%sk=~yz7La{T$hUZeaKSKaK2< zf&FV-L(owYBCvQQbPyccHW$daOZ89rXAb_Mfq!V=e@hxD_M1GGsgU$))Y3vmosrX+ z!zAcY_$iDyQMU>A6kk+MBNKoXETtXL11;=WGC?lubqHw48{ExD;f!dW8 z2h~$GEW|2RDebVD*npMsYqRxKrHPhSPstedt`J8Ey!yYoRO?3AY@8iKe1{!!aQOJN z1?l6VIJX1bH#{^yKTnb;-m4?tYk1c-hs{5St&D_5)md4u-2C{by!I>3V&8M?_218j)5_OPV zmm0PPF>Qvx)L6hN7R(KoJY3!1UGC@~U5S35Kk+mstmbrh$_2Ons$xg=aVw?(b1=Q? za7<01$OG}v1$VGyJa}kwDK9y%-8xBDd~_`qM;z+)ETu8v`ql$H1ViA2YVlB5!e@_( z?<{eVl02;Z{M5n)vG0$Xh{$`zW88JEpWvaXRXo&e&@{7pJbl?n+8jG}W4F9QNxx#Q zTF;v7T&R6L7anSPj&;sT)h^hI#Y3mu*I!RPnRF;y2;Kl4QtOD#5GZ+$)V=Gi+lPmu zmHItsCl0l5R=G3dMqpSf8|-Pc~5s*MezVlFXPNe>*--sFbgwq{&90Ij*bPVej zi!rx8iHDG@*auR0=;W(o#eaLCvh3ycUaLwLNzcc2JkjszS{Es=QNqokS{25tME|E0 z%iLy>J?2%^N-QoWrlw{_K@ibe8H|T+A-24|iToGK${j$Ne;@w>t?FDap_f`KNSQA0 z*lEttAGAHM#~`3>c%!fv&05%%rLJTCdiw?_gG47$w1{c@UOcpd!aWYy)mTG?qc$!$ z;h~)|AYbYOvx9U3f&8Hw+nK|~F_;DkfTi1{`f1Mpr3XIf0l{@moJ#HLfgK*o%zSn1 zRj;;mueLr>*i)z3r_NnRB~BVf|B`P*S0RP)MsASxp_Y0O zhs=FM$sqz5S9O>h9%|J`9_Cu^M%FoI-HAN7F#2h#-KWoWIQHD-J@T0jD@Gq%iw1T) z^h7)SFi;r}y*g_i4`e_+Qfgc{akfCrXu&xOy{ONVE-&`JL9FMZ9L;w9c1z+)u-Lts zRy=f?vbv4?Sb@_fnAM^n{sHb2o1UJvD+n~PubjwV2{jYPoDznI<__=>XFDGHwA7hf zAZDl*zK5E@LpTF4=MRvrTX^U{c&l}$pwmJvOa?W}jfVum%6wS480*&Cz&S7bdcoEG z4x5^^ksz0w!ZU9YiEfilHd<_GS?4~s5=`O!hVT-Y=!amX+RV<*o4M_7R@maU$e*15 z>3l|n0QA3WDK?l)!AAOx?X=(_H8m?MPb4F1+M)puRlxUUWudxlbMtqgY+X~=an6*m zPR(n#N_==Vt#q#F$dW?9mcZjgKEg^DM4{*Pd2-Jh2b6-cd^dXRZ`6Os=HnP3NIY}^ zG(m=SeNO|wJWvUt?gw6Y=*r{Q3XFg@{X>5$T`$ye?}cqE@{Q3!>edfbd5hn9)TDRc z7e_=u)19%1MVdmyxCkC{yo!AEmIX-lcjel6XyoAh$Wm{x&qnK;OgZnX>ibk5*0yf^ zm~^S!<_xw-*rU>M6;Cm6HZ+{j&w822oaPzGNE`DQ4?UGE!b5jahc8dBe}wHlSVUo{ z@zCIaor;N=sC4Pn4frMnFzZ&B&cggS`gRuFePiS<4vrH-(mpPG9&S2?D)+SuHAOn)_D zmkR&Ng_l^;3N?+b3pK5yjtI8@Ht+AAL=f~(x`bn=btv71hXmauua{a+bvY4;HDiZ@ zPOB$$wQIXLRc$!#JDB_wV69MN2s(!kiHBUl`e+W+m^96yHqHZzcS9`DNrX4vj}Rz1 z|LQm4MFMN84AHKNI%O{nNIXW{qQ_OC#f6RT^U3Fn=r|8N#9(z*4b8o@Wv#o^?49%? zctIv8Zop>O(5YuhWK?sGu)yi9gvIr0IDI%WQ-;*V`jlERdEw4j`X7~J27KibY;l{S z??wiku|dr!_~z9R0~;^q2!TQwrQe;LcR^-=My)h)_548Yx|*XCCOh|t7j3o|;J8R< zsO2vdTW<0ZxpCwTAo!bzEwVy=lXP8spp*Y2LB*Sx{l}C!Dgq5w@eB{yB;%p|^Cn%} zo1gwp)Ki%7!#zB7pYP2#ptaZAeh1-B*VKl!iJjTtxmj=ajVm_aO&IA>b-9R?Q4a;%AiTIWsIkDSWV`+_WOLkslW#SV%e1xQV9JJ*lAmU>%e@F||#PGFHk z=a{PERFPHjU3V;Rs>mT}5quSkz#75Ul5e86=*#dBY908rMrlE!S%@x$0UQ=|si~JX zOdPqlRu1lp5jFg$dcmajmlo}jM;G9m6Mzy!fOvbH1EX=W z`O|5hR38lzqbY8)f5aRyh5_2Vpxz;+Uv-a7f3$m5eZ+p)b0hqrOz z#jnh0)W#LW1|NIm+nH13Ym%k8OOm@O$&)80=;^f{%|vE$LfkO(?Erydq3y-%&KgB# zUOL9L?<|D91%-hTVFu}`FhWLw2XT(1@yH4G;J}db>u)aV-nMD0(9vX%+dr!{cE&>T zqyA309ZUI-L*^;0$gRunw?{0;VYUO?MQvgI!{$wK$0DF&gBJQ>T}0Nxx@EgN$LFdG z;@Ot?q@etdir5YfVpT1nhk-{q+It{uhfijBsXp~j>Q=XAcDd|0x0A7C|r?zPI-jwDe(kRnfrYd9INcc2$ zK4KsX29vrl6tDZ(~L8}*{Fk8;va4!>0G>vM*O3$_@{zPs!q}1x9Iqzp{IR2 zITGf?Vp`&xS`ryVVWk&O0)uKK5I2n4GBAGjx|1BRg`YJZsuVe7M5l3&Tfd6wh!7~& z3nd^_z>c_FS5;9~8Zqh^zQXe6{VMBs&ghSGF1{CysWAaQztIjRwdW-(8lyCq)opFX z7wh>_!c`NjoG!-5?2KD)PEj6MUQI-(J9|T2h2|<#_mZ~>_ge4O>V`Mf7SGb`$cEn( zw))AaP^!+Z_6=BB7D-ni6~XuaM*)-MwYT(jZBsw2Wz2PY4d>x}O7h?-u3`b)2%(O( zch?8MqdVuxE|v}{Yb#H{;a!?$1u0HEmBw2Jl^1+e84+yj7OqV@${ZU$+h z*~1c(%*{)Ajg#vs>Gf0dI)VAlVB!kQ_W}m=9>Gfk_=SXia&fz1cJcn@#OXY?*Xl+? zwVd2tIN<9Pp%E+J_cX1M*0yUlhi<^TaT{wh-`d9l-vkc@H6aETk^2UcF|9%k>Gr8f zW&Q8ynQx9twpbNYy$JES9x=n(^kF>OxrZl=!|#?y-esG&pL{c-1U|dn$%T=-b2)sC&uj3Mi_coazCfDp zO7M5X3Wc^zX;wUxmZYnNaq=l>vX{*nmK+X#se27E_iDSuAn9V0!!~Ki^*2~PJjC;P z-Vo;xgs?70L{z-d;^5dy>wKtyMyR^Q=!2LBt?Aeg-@}#)5z{~hPL+LJyKaYvL~XFi zFsyIALPYNp2FM3dCe)fe>g(LQW&hFGwJ4{7id_R|a=oLGoQjmOXTm+Pqjnxh=PeC^ z*Um=y=9XxF!7p{s6R>Io8~YFc$ukWOq^#6oXc1y3V3EcX_m@*~5^d4^*{A3$lt9dE zYB_gPM&}dcP9cy#1Vp^-()oVJ2Z(9862$iuT!eG4#Iy0Sy<{elF6N5KN>66&0SE``%~~JhaBU zq#BSe@2*P{mQb6`;$fA<)6kcalMguN9xYD7YTH#0G0P7eA;Q@iw1)XonAwBC?z`1U zkM?5ckGSi8D9mxNQYKiLNqOV5#vjaavnuhk0)zHRS*q$Mgo9pt^t`oxJrCbt?u9QA z;5=2TPSG#76W{pcQi(=oQs>;i;Af6h1~avulm7n;O3E~AUL5B#Nqc;;Fepq9DyJh} zPA6%uep?=H&~C`NsIKBe(tESyY{L8f3tJUHgTw>=)3>2;67B)LCm`)LnRg4%zEIf3 zDOE3(nS{CoNaV!c+BJS;mwX|VUCu#ghLzQM*Sv);Jef`7f>T9x8R-w;*IoZR)I|cf z4o=oTxC_4^*ltel2{{isoW?gl;l2D`T-576$r zTqBHn#-5>GsY5Rnc7(Ip*&P?_U|&tt%=TwWhKgV$NqgZF16z4{B`|HBC|(t+0z7oI z{&T>Uy4UQ)GNkqfg(4pZY@Eue0zUa7bDjGNB4^c~8RabKTtzq#95nl%C=#OqZ=9{F z@BFKTEkq23aV z+jX_5_lwO9IvT<_s}`Gec~cXP$<;mDdH4=+Y%-E-*{15OfSNv}z>Oic^!wjnQVL|W z1%-YCjxWV0{sNBEYMm%M|A5K_j{vAlA3a!*SUz?oJ}b$pz+Z^Gxb@b5Q3`|c&73fi zE72O*6&-B(7KMlE5bup=M%sohZ&a$V?x!`rt&_Rcdod;6)AWf#?kZbHK>4YIeU3YZ z`Ja5oz8S}2o>d+dCO+eQo)Lmm#YYG$$5o7cBWNuXxd}WpJUZOG4MHduu>KmMIah?& z>sHk0$bR%T!>CB-rtF)c-V)fpUpv4DN;5JdggUPN8TicNXB^})HLQICO($5cjHWA8 z@(->k9vR+h-F8=8F%T5k-;vBzGJ1|UYPYVw9ECdR+&yZ!a9pL;O8;B(@|82v*rf`I z<~x;|k=oiPM9%oQXnzerqV`Rkof>xrJY516Tntb`J*y>8dkOZEb2n>Ts+~c*XyIip z$s7s!d=TSf{TT!7hCZ65(EvU911KLin|;ATt-naRPP#Rbt7?wGcoX>gH^}U-_N2wB zGoY1o*}%R`0QP0YYs4``E8j<4eL5cMVy^i3qv?yjk&N?nl8*D1;G;~5t7#?ehWy2g zN;iVGl>$)mSAXI&H-2AsEfpuBKM*tE!ERjxFogFno$H9w-=9rrWnXLe*raeTnt(k~J<4S$7)zOUjU%sntE zd915zn~EG~;TvaASS!=sAh=z+KhiGp%cf}U?2V4$snxgJ5@iIySg=uWgm;%@sgalyiLz$nG7-PuOD(n`7q-C8E+ zv%Aj>WZ7Ug5z$5o8Wq-$_mS&Gj{)}#>XL;8c7ZjytA-8r8~zeVNpbm57t^QOaT*KH zFMMZ6W2N`r7CwI}7DpYsN3~i#k0i^oJMBNg@#Z{<&k6>?)LTvwu%7c5O)*zY&`)uf5YeuUX_n3n5fszH z6iqhuwH1*I0Hc(IXL}pbVWtm{6%5(Vt6@E{0M7!T)|057?n~^m&+rg^yQ-$wuFX9> zlrFN+?CsNXr^lsgn?sW3;${Bo&D*_h8w1PZ>Kz?{z1T5U+I>hhUxVNF6idh>0@+1@{vXNn5y=OePi1rfZh0dxOL~3iH&V($+0BEepw7)`% zZ8I4Yj89YdgB8 z^Kxm^`>F8)@nn>D$vB|g-l(&M=v}5;%6W-g)q*WIajzTKeZ#$qzJEWAn=&gZzFr;M z-kIFae7mUfh1XD?>pJpK39)g#rcEg7nB<~6%h2VXR`1sWD?3qr#!?C*eRdbP7OpwM zq|(IpZj}2h4DCQ+L`udL>cB+^1G(YdK+f5d0(5ssxQ`M0!V*G z>(mALEdnJNR{Va;vB@_H}4fzh9~Z-Uc8gi0MqHP1Dq z>~-RphI-Hk>bvKqW0z4Z0Sky1cxb}hnr>}-CrN&L=Ag0H>cqP@ZX0M@{mj+P4*%lh z2p!M(Qa^wI3SIiV?ufnTBeK7R#6v3Ob{H?5q9km4g%)?W{OzA1=079MF1HkxwaR%7 zl8ZGBXG@fxM*MD+{>b812uPQ(Nz2o=4&~AiGZJ)O2A1V&4p%AqLaDuhaK-ysy0QLm}W69!kC& z^U9A2o%$Q2x^_1$ViT}v#sjzYy+Yw-&{}#5-)=#t} z@8cN zuEt?5C$US_y8h**&Yf1;oUwd)5{o!wf5wwBl(z6y@Y0PE)pdR;fR1i6bsK$@Y|82J z=xy!KrfhsEGjgziJGwS_wwz@l8+aAta%jKaa><1p8^pLA9tsUaGu3pgdklUA!d7%z zt+O+8u?QdvU&gQ$h_$?!&_dW=7{IlDJ{wG!PwHuip4l|Uhrl?l%a8$L}6QLU4@0pEub5j zR27X@fAoK1N!($lHTY%}F(;94pPC497`s*VJuVxX zA+eO&gyic=b0Bd_qF(PK)%!@cqu{?)ihtCSWNNfngJ!Sswo17K#A($1cR}i|bLOiY zcAPkh2j+dBGZ?tJy{{=^oz%Vfq6PYPjJV-54pwY)E5>i%E|T|dTMMmt;n)&Coary= zV~;Js799$|%BHxJv2J+y(uub;=u7t^(4l&F3G(4DF~7eEUv zgzW%Cy&&tN#ZK5zs@toko#XbnXsahB+U`8(%;fdmK1Bi4Ax8W9%r8~}v5|K+Rw!+L zfY`mi0l@9$+=y3|seE5=0TVw>-5r^el!q7>GjihU12GLh5VtzE{aqIpYJq-KZKmU# zeb&Ns)$K8z({6N3?KL}Wer(oa^dF2++~%J{gZMH}@-U%Po3+R2FSMU zPJmnJ0Q_kY{Ma2YqZFezH{Mi7+f_%XI&t0X;+*{n=5eetn!Y2$~v0%kl^ z^xBdyV|{^!nbIcy@6s&4xBH*eFuFz#B}$}(%pmjvFbcn4Q6Z#|bOF1+MCr*hB`{M~ zK+9NdJr)A!WN!Q`XOKn`OL=Drcf1-TBXxsJCU_eV;%U}nXQU2jUi>Id!Lc9@mEjuz zUMuToxd(ia;xBvXj zajQZVffa%8gCJH59&*b3b9>=f;T39J@GnOPwpLOmvbO~!^*cg{s&m_E_t6hWJk+>} zhw>bOjk1#pp8#ytCkA41@B{6eh{lF4)Lbtf;?e|}9KAO0+34?weC~2Qyan7Qm@)Fs zy=dBI-Q|VR`ENfixa|ckyAJ#LY_wYd!3lWpY9|&*n-%dDu@C!J`_-vqxAjFgt6EA_ zK`5OG7mkM%kbCqtxO1hM;V)jj?5~vd=-gdF2t|P8;gg1A zP9BUV4YExIIoTb{%y&AkQybUN8y7G3P?bHOA}_;d9u z;;Hg@5eyfM+TcNAt=1i`G-lmpkG&twG3d^H z7GITX_;AYll2p*ExV{@XskM0%`BlYtmIjP9Z)lEU;^4D@f8yWt`8MzllpQQFRiRku zI=vW=hEYyU8bp78;>cC3Yg$wEx{{A2%tmnH8K3G9jP{i8+MOjUvG@8(GJ(>8JG;Si zsP@oKn*z2;|6~K&YX~kH|42+^)8k(lJRteU1(l}+))^nQ?x!geQyyGYegI6AVv*$+ z_PrWucxW_sFGVNg;grZsJi=o!jU#yH3cSWNq#9SAYt2CsQGP%w$ee!f#Z>E~O-z1z zUErh&z~EzXmq5#p3d7W6-&wcdA^z~am~vB{tQn4MzU@u<`lp;cFNpe5=T^6!eE1I} zo=RV2UWhv+^Oqlp#wz;O@}hVG{Pk$3GwNXzH?q$aW`E&1(0Y7(orQ#~vEV#EY}G_T z>}>M{qt(qo>CZ#hZr8*1)T@OWsh&<985jeM$+K=J^NRtV)7YLDXJ1)iy!fyP9vGy^77d zt&3WRHP)P%GEL-)0{+`se0EwJ-flSDmZ2BIf%9LBQ$w3Hnuo7Tw+^9% zk0pVyBds`H4?#$N0TKz_4p%Gd=DO+1z0vjdx|CQ@6VZ#e3ioUBx|~f?gq3c6_&b`t z@Gms`aY5Afd~dq?DkWlE;Q5PbHiw4De5d#!!RXW-%5PzIiM}62c-CBogj=`ePWX`0 zb<`$uytj|>=XkXJ+AK)!T0MYNTAqVUv%Hd|j(Qzu>khhiz3!iBG+Ju)Y~Y$1gC$ph z+y^)nTOnV{t$K!S_>_hWxsZiU%9sf5vP}1um5PT4M*%C(wO4);n~~p?WJMMcpVB4c z5PsVd856JVhP)ALf`|>y0@eLoyWzRo>VfI=@2Nh?CV;#`*n)+*?=$AqD#c`Z(`|{? zAoe(<+DmmF-r)#Khh3TrRb+$SthtqYAG zg!_>nbb-c7x$Jy%2(c3c!5W4u2YS~ExAY8?lHx+uYvMhVH~d5|8ZpmvBYrf%SJMGv zR-`EyG|zhqX^yVcoF)L<@adL$R z`@U-1*u2AKjF4A@0%t4&uKQL6=Gts{2K)DM40081d3tx?uC}7AGULC~TKa^_DcJPWi%n@0Nu)_p4 z#R6*&iG2p-Lqu_#Su&Hm0SHf~?2)DmRHT+#9eoBM%`ER=PqVt%*8Nl zsWA6DSl#$~D_YpZsy8R4FQ0rmE*W5Ab#aOqHM5G-6xm?R*O8o!G%+#hYK|`~SI^-c ztrb>wa<6Yp;SMNiqh$SJ*Ju2A&9??I1K5ijNU3HMOR*Q!Hq8jkIRy6c#i(J74X#oT zr24|zG*%1a*N)u_%!sTO;ih{QWovTV>(NI~jd*xO&Cp&=uaOY?MF^`=K5wtOdYL&0 zvc$i#y=pDl$^&0U&KRKOjVivw8z`1E+`1Ar9J(#h*J|5@*Ezcej*D*FVMA{kY4iGi z=WozmGG5R#&V?zh>(7>e5Brx?(TMk?Dw{uL-;G60AMpW6_y85ZZjzb084E+S(l6l# z!Fo28s7bU$UE#Rg44{hk1- zePsy%Jw-k@s&yF=t#)bv04X_SF1ND73E-iHE7a4y>aS9jT+8#Qf{o&V$V6mNg7~3yWoC*u^SBYa#5vI zw54~x9xkS*x8P7$CVTsdj$2j(mFBbkE!B!>hn6y8 zjQsQu5A$$r^c3!c&4FeA>m=ZTw2s1;neb3~yYpwOr-<-bWuY&IIfd`gf`v5zwjyMX zf-MZdxOO;F@DLpWu&V&ZhkD5c>c%q#@g_bOuAD3isQgf}M>>KSSVr!j6WU0yE?RTJ zDN5OFAMoQMBkFYcaWt@XRBKIOX+7{OW@vu;75R&mjg2EnOe{5Sy)dcW=52pT|A=nu z3wrs6bzG8IQu6b9x(4R>e7P^<_h(Zw&SKn}npvw5_551Eqy$*5g(3RtU7;xGJelkZ zyS8|)auf5coP8W6fQoL|S{eg+!+i%2y|KX!v#q#9^uedyVLQ|SAAVq>J9)|Z^G}=^ z09QHc8qS&WKhx989y)d!@)vHRk1Ta%s4F>Vo&}e`SZzHtjDIC@F^Oo&%7bokj2t!1 z02bBe9b&$!u)dgjd;ojj4YjnRd&t7%SH9QJjX}d(M81yPV$?H~h`!{s#taLtvMDK< zFs+EM6*}(2lgaV@?Xx0Fh3wnOSGOo;;VXz8iCP!8#60-N5^@4X zK=i1>`C3Eo2u@8^$jLlPfhrIW1z4H>1h;60t-UYs?|`J>IU#ae%?K7qYc5}H-=J&oZzFIS|1Db)it?O|hqU+t^Nj^Q z5#5kxmCqw?XKF)6D4f(+`;OXRL}A?$e%qn}X#3|Djd_y798I>bQPJJ^DCS*KfZd!u zf!aF+#)FNr<1jlJ4pZCD+Mwn_Ft%#AU@6Y-5|fCFUwe<+>f}HJ@7)efwZL z(^@Z$hy}mIhH<(o1NUHXKuwb14b%qdGxk zr^PzoIt(_x_d*Mh?>Ewn2#sq@FN-BPNzmcjMO2>$p3g)FtHYBVt%efok3}*1zhxYF ziCfX^*L+9Wa=^WvpPyIDNPCG)P$J7H-YV|lOuL}M%9|{4eYSTxh!)faX$_Foh<#Dv z9vXjCERpQle)s|s7p1Y>87c0*PdW5k*6d_6)&&bMWD{>c-|w_;4ZsG)lfP%=YAXnJ zqvp9mS`uQ45Ore|yWC6T2xFWFVwbM`w_IPtkCQLCarc=~KU3|C&Wp1>MW+Snf%IRc z0UR)tfF?1ZeY}O-1L6j}0z~b)kyG)cNcnj*$)qbk4zYq--9W5^W~_vNKQYR1sbXpO zOcMm^vH@sBcbomQF7}uN5F|h@xgTJWSR=2RADJ$Bi~G8RxiMBqr;(YOhT)7UIrUG@ zz1l4{m9RrWq5>eN^_{W?G9D8geq0G?QGIx_+LuViYoj!%$~weIA!#15R#qnk zkOtHqxjRnEMxJJ7(RVV03bwtxIA3h=cOw5AS(hgMCmw>n4XlQ=+`0r8!)7iFcfT?V zj`_w66T`MFd^3UN-I-IZuTx82x<+_>*BHVlcu!*>URu>vB*Vp)w zqfX*eVvLa>Y%M9-KLjSNO0%_oz<}S{z^4GUaPNc2z@=Ehp@m`Eb8353sy}yqxin28 z#sT4+#75@U%7Y}bzet4N_bHD3+NW5ODE=P}@vfA_^VK&Nr6ikDZ774WwSrOhw+9y$ zyl7K(5aaSF*%=8q$Iac{D?KBw_wG=9Nr>xPW4PE~g-M^tKEYBCUx)&`BTHjZ{O2Ms z`=G(rqD(d$w_Frl=h2eDf4J&h)Bj=bWNRkNY4=XH90E{(XB=Jf+eWqD#`oI7Dx{^! zT2PAl!d_mDTchv0ph?$n9}Ci=gch(@jwNdpf}M2*U#vqfXc!o=E^eV!16KZsKj~VB z(rYjnu{wjx=Brs;SwO>qXe!%MOryNTU$xqYAU42#+5?9npFtYSWbqD4wh6(Oi<#Mb zUi9z=)e(Nk(GvhzZPL}Ns;BKM-9?Trq0d^-^32@ zIrq#R{qEnwkw@ZNJ%-uouLt3{8#e0&A?{J(hr}RInQ!^+PQ~QJxf2Wb5>B)rV-x4n z1a*!XSE_jh$zSR9(jU5=7_wQLQMKtYMfd$@jIn1etk$FW`|!!E=o^*Q@uRvT3KrrP zAr2!QGOLEYs^r`M-MOlDUQ@2i(Rt=W)61q8--~^k^Rt|qPg?ewM1l#QmY_Hc;KxNJ z-{tNNVZlQ;%|CeUj5OSG;v3_a^UJ&C`1Mq|9gYch2*lVl4ENm%2~wJw?0!#aHkTO6 z>wVX|e*NO=pB_@f3c>dgK%2r3E9&VZ3*XnW+7arZ%qP1RE7!4Q+6PxvbL z#xUSWJv;=Qa~vRpl`>2NlQ@Ov*j!ASju;4l33uHrvOe|P*aK_U&e}$=A6cq1KZ!j( zf$rXBb#U@*r;EKYQuo7{UoLjnrR?=f>%Mdr(KS`E*e>*eaCYq@>7}k%WdpTczpQ=d zy6*1B5&2Bk)anZo*ix{|MjPb4D7NvQ&dw62)My3V=DL9C01U+P87b&TN-`3cZj`)Tn#?!n;qS7pfo zDxlzthjtg>nAG-Qw)dkCncqzHezElK%yv)x5`<^#|=#%R*%NO34oS3(Cd*YEx7x;_W34tPNt4!RR+ z&6ldJp9`C@xy`5(o{Q+rf`RWhW>xkU-TGE`UX7KT^|FyPmduPV)j5%?Li5LQ25r9k zPB}%KKh@%Ci7TXh@3s$N2X18HUpIEDf>uVl&VRZf@1m9JB(6b~WociWHtqp3Cm;FS z0L_21V|8+HX{9Cscbs-V01y@8@TE8Kg<4v%LfsP0;UBIh7L1-WbaDopO_rJ~zbNDC zx#PelJ!)JUY6AwOr8)qUVTbaFX*jN#Iw)7o`|*kh~5F5GLR+< zvEv`ePYgSzrC9?iiXAZ5Hh8+X5z0ZaClSL>7M@G%i$qC%fdyEgo^?MAFU$82I&QhK zrOMtwFJ)^w?0V`sc&pSrd?$7LXo+VqadoR z!v=S}WZ(bSXaFvZ_~Vs@&p8Rk@4kv)4}e>rjkEW!Iw zd+OOVChCB-!VSEQfyW^JP-yivX}05qlhF&Vq7z>(D}?^8Bi*&A{*8YHBItkfuV~bq zvV!Zb;BE}d9d+$Q%2iz+e0C>RH^6XLxcWIEG|i?33gzk zj$u~ukON_cR}Uq@njj8@hWJulQVs~&OA4qBFv6#M&w!Cfx%>Nl!!D&ad|LOu1B$mU zf1Jh7)EW8Zy!Ut}l}%mVp6%+F+1+_>TkcLN87$*~IO_6^;RQZVxc^-_S71Z+!M@pS z4d5XT0)|wblR6)!elN-}IBB_ZE*bSW$-K8vM!VkrYsoTv-vwk?;~}sw?=5_x1Sbck zsmMTEB6sH;1uhsd4HjrRY7glpa=?O1MNFZ<9@J&`eWzdVENP`Gf$H^f_*^GW7mm9k z^X%Cn&^X%g^)Xz%58~+AhA;mQbMG0})V76<22nv2Q30tE5di@ekx&(aAYBZ-LqtF+ zBGNlS5s=#`0eP?j*bM`*>-se2u^PC^w4<%)-%(>PYV~%&c zqs*KqWj`%wcbl+?4Zbl^;}j!ku&fJ9eOS+%X#!|tDY^NX6dgc z2T6S^_!=Ydl&v%@oNS|%VCb%k@#$al*#B-pUoD68=i3*DLL(9E#i$Q>>chsnx z?oK)z58m{-uR~O7{*hYwKa*9ILcI)7(>S?dh79khD<(aX z4^6W#&|m4mpEskm|hmwJMV6d#9W#GHo z1EFcZgEDoXCyIGUes860lDzZnr}5podh%}`ZU~m{$jr<_Y>BbvXi%jxr#vbxZ0Y*! zfhqEkN5&HS`vsn_+SEHX_0qkd)9S#8b=^bQX5s%kzJEx)*!Af0n+RW{^x~y zXeta4W#$a{N;iDhsA%m!4e|p*Iwxn-pXr>1<_|zMDOo4$ZZ@ZU3IQlym zm+pIyaBek0c)NP8qz!4QZ^!`@ZRYoN!4qkf$Ar$$rrWKq4t`VoQTK7)gW$m`c`a?m zdJ?bl%x1h)kx9C!Bm2RT_l@ZM>|49l@xcak5~nDx@8zhn%an1V`b)NfuBnfy_1!r$ zD~bAGU8Ak`Y&If!OIi&tIhBPRlH=tykAET_jylZ+}u(E0#RFNw$!2O z7si__+x^LNX|SA3LXuT0MEx>~MaE4U_o8acbU zKOj#JQJZY$^cHtuv5P{G9!g2(v{RHa3TH!l#h6ooF(FqbI+s%ck6l;6AME7bH|JJ3 zOpUDRWXsRZm6Jd2z%?(|naWk*r;#o&-?VT!u;|MPL4bJyzX8r9{6b3qZ*v5wHIH-P z5CX^MA#R$|6RyCP$xH=uw^D+4hI1*^Xu&IB`s4}~4Bn5Uac-f50mH#KCy)0%l#gIN z=D92(M%zwih&e^=G$O!fmP7x!QAJh-WVwf{z-^P?YG5M`P4$ z!3bddK{LVcgc%WryU=6jqIX_PKp=RoalrfDh}Jj!^I}mk7qZ2PX{LA1dSJEUKw~$R}WZ09d%JWz;L1 z6{M&9Kn>)ZqOc*lCENk9v?X9(g8-tVRAb$G8aoCKYyy_jH-#5N}3m^-Vn$ZAf1{o2sGZ(}XDH2z>|#VXw}&(e3N1Y3vNeg;SwFZ@lA zzH|{7Yrskb4&F8;f0N_)ZaCMn8jAHe9O@|vUWg{t7tb0HZokt*3m!p!K|qGoftXv4 z3101vVt8z;w;p|DRwJL;v9Nt0uC2`OScH7}hf3;G#LVZp*M1`8rVn)hd}vF+OF}`s z3w0SJ6KsP=8cG75lGbkI7-PP)*^CCxju0_X1Jnu!Q{5ntBW27xpkWd^*(qo-IE&E zOza&nP*@Xw1hp8$HIZT$D9`hq7^Em2!q?h=pxQRDVNk3u`i9#@%35_A_lw;r-b><$ zhZ{E%pN&vQ(u7r_D9o0y@N~B@C|^@2J6v*=OSGFozlv87H*8DNi_tiWT{3T(w|lWH zpN-no8q&eVhb2~XXsf|x{3WT>;@)bB-Ufi_--+zGX8*J>5Oy#4EO|PpvxEX(MrPn8 z;cXf)=_l`>^#5+66{rrHY=K1kK=t>3l@R^@n@iM*$;Q0~pwK`bIp04qNHmS!E0@N3 z-9dfQKGP~;^M5Y+g+wESJWqA_?>x_Bt#JUU zLezr)>{nwln0zfd@tq$RrB3|5IS&4`p!DkeV!Jl-ww$W?r%me8`G}OnPi~NrJZHf@ z#3i%n{o<18?mL9;q3uSz9Il^d4QaChjP@~4#v9fgvIFmqTBDL@%4wHw z$g;|$iw{Fu1=U%S_LnqOb5e2{a>bgF#AaK~#(I_)Y{K_tj*l%f5ng=VAVNKX4fiL+ ziM|6??&?4XIz~Anb&LPVJaYkmyR zqjYiw1U_r_rP8)yH+$~mH(ppO({KCdx*)47qgu~r-ZU8(OQL3Wdic$mb27~8z)2*l ztFO`|k>bWiunyq;*ErF+5`_V`opp-45Q!beCWgKYeQ&WVA1tIBUz6U`n+!lT0cAJK zm@MD&`g-Gm%hz+ASm&3A4N9C_kuq{WyKAN`$o#0xB=k*7k6hBzV@=Wg_@1o<>}CZ> z(L&(+rT3$O`@7&Zh(Cqe&l+5Lv&LQ8*pxzViWbCoZ$)D_0g?LqxZr@AzYas``k1;+ zY>GD})0^@wAcsYHKs_K05(CWda0b3>EBIfhAyxq07KH>J(!Kme?~uXIz=d+G!#nDs zCfUKXlh^R~{(WjD&OTwga~(O)#q_QT65G)OpG!JIY0q>V`2TwL!w!UlYH(S}-YDwt zr1CCF2}j_QHM=Vf;%dxXa^3SwqvM|?$@mO%m#s%i$~zwebLepliZV_n4Y;H%L@}n~ zWMpnIa;|$7;_&4G_s+fi31Ia~;l-GezrHk2IezJn`s=)M6fzxKa2$Q;6|@;^%2$gk zXh_(p1*;(u>R69`7z>uZhj&lf-W2ttOjPh%xHfEUlQl5mQ~3Vrn!_oZlZodA7dd9* z9d$t-r@$W&^K@LY{Gpi};m}v$(CO;lY4q6L-zbVVy{OSf7B|qdgo^phN6p%~IiX`|m|CQt=h8Pj z$Of(VyLY`5jD*4uO27Uor}~@ea^Ph7je8=ao0x` z+>N;dOfa~9)FeO!2C_BvsGVA1?1(x6gwVM?9J~z(wC@^+G1dj?z|z}1s014Q@Gg84 zELdAqueWHhn}i|3ZLe3s4<-ZG4=DH~7q%|)Gcyp1xXusY**2ZbKV0-W;odJac9K^S4XYg1k{zk%n1N87f2TTe%&zLj8 z_9Z-n&o|J8FzE?TFt9S!AVL#Jcnt}`?B)xla`wfskY#Bo2vBz)eKL5F(XSGfU+{F? zWQ;8&wr(Wv4@f6ao{b+M(7?fOUb9n+IvH|NtDoY}VX&dW9L3Og82|fQwqPzTaAPR{fJ}sgs~K<%nEx!N>?Ld$k(xTH?vGZ{g|iC#sqrZd zwADx`0uQ^d_EB}1cmqaTS=_08!iNuETF=loARM3Aq?+f!T zs0>8@`$*|fU>`cq)ocLVIBkwtTZLnf(BN9Q@iIZuvq+eCh7)}WcJmV+2YQ5tuO9vD zb;ABWNL~YK_#GIPn~cHb-1OpR(L;O4!zlsW5$GYx{?Bo}-a`XT!oX)Z`lGZVEw9{yekCEn4~CzcZlu zWC0Y3gZsFe-H^zWE zUo&g;4dBIzBR08x?n~o^0mW9y|eFkwM#g@Iu zTza~ON|NWZw%%-b=}6MbUQji^tyznfl)f`BnnIZ>z4PYmbX7lYJz8Ys={Frxb>_ir zsJe(*zas+6K29(JJ>W*cP*}5I45AW1K@l+2cN35x+^?Jr%WdH|mdiB7J zs}?>bx`o2-M+5Z(w_rvURg0Pi@NtbBPYfPXW5&K3JPc`bd42C6$K|Z3|!VO*4LycLL zs&r^yrUQ5~i$C|$Nw#R6y2k=m4PPPyBL1o99kY#{qW&jU zUzJy>GK0i=Cju_uF}O)#T_l#Eiv5fxK*T3y?13*G|Bfs51MKzRku?DL5gINI)Te1&3>uboM_u2E+-_#*6ErUlAn~HB+~ZNWs*yoKW6sM9(!8c{SaOIB?>M{ z$7hfojq%Swy<9AqoNW8xgQeI&%_R2gw|o`i_KM2QS=m9hp4%Rfl?4Q0__aj$Cliq_ ztZ(2Xu+DEwHhN!wltx32nrK?#Thsj$8p5;@5rq-oISLECKfVhCF=8H}c&$i82t7XoL_DnbiI{0xG;BBpVoDAe0wQwe z#2)&@Q>JNAu?qK2nHHw}KAK+Q$!S;wy@aXaA85`c36N1CvO^n(LaVLhfvzlUT_`9k;za1*@{wvcXFRR|cOhcIU_I0Vc} z1p;^2^V)OC5=e8v7AAvj~Ud0$R$G8no&p7<%XK^6j8$q^*p0v3XE3C zg%v5!{I@;l0*W6@S60ra-=XcrJGo!RhboQkADi11cnhkmH~RVSD!r8h5pNZshkp-w z`@w>bNP!IgZceqOB1uoK6r1RZNcrbszJ-59#=)ZBpzfPDiGu!zyH-9L*R`E<{wfGGDmncXEmNB7C)tm z=jt(!t*FFHfbx|8TNMG|>%S|4!+%i(o~*75W&wSm9d0+Np~gp7{XPMC^A{9j>XAOj z6P(~={dn`{bfxJ8+8o{c=W1s%ct!$BvGxf+Bc)A7N;|bS2V!u6Y1-P)h#BP=pc5?I z03=dst17FToC5OxoLKe|kPcZ%R)Tc@^`B{K8bOqRutH4JB6{ebF{c2THi7giaHRD^ zl<5J5_3;c0a8zZ9M{x{y8U1*$inlq2yQaxst@!8@>odNXyV4f>~FT4Q8 zAjv|`8S@E090$03zr)daw1^$WZ1D6RNY9Q!ICJBOE#MpV zD6E3HlD>g7H`);{&p$7dV-bS=Nlo& zDfNh!@2BZ2+w6m4!|fX4!%Tc6#aNgdlaCrKTQTm=M(@GQ0#ioSe;ZcaI%dC`srRjN#p(LaL%)Pg>ch@$YKN((pZ3YgZ(jE<4V@F(J@!Aki=y`n+Lr(N zv%W{UNBNSnl8mW`vZ5)62Uv)Kl*tjy08klV3rugpyg#0k1)`e)>7nP~@Q8>2R^jw- zJvkBg*h}6a-Qavm1y~AUnTL4;`WSYK{z;c9?};e@B1)7t?+KV;2yj3+V7m5G&5{rzD*Gr<@o5-Y&cV!=#-dh&^}60DF3 zm=s~I3aPN+XH*f&Y7lyYT{+PZ!rUY3!G|i4lrJZ0@_zaw<9s%y*>DQK)xzzTOCS$V z0@!r)m+M{@$uc1ZO5$%8uJiQ+>1Mj=XD*&&`W!rIZl4@aT^gADI)D@&_$0YKmM=-;S6{%fr#fk_ z<((#(_VETj+QFaMfJ^DqC?7cCEi-T^8kZX+9A1@JMOc16qW>`!t1Y+DWmRA*J7nh) zn&3MQLXQa(STC@MGo(R%EfljssCRQV5v2~b9+T0j9SIxUT<*?9nc9APg zEbxPY*8Qy6v6A_F1YB}SnV=!cO0ud%0M`JKV+L{u81pX#+yd5f2y9qIp@V>|{=`ah zKxXMpvn~N;QDD7y2~g><_a|rwC<+W>dM+{66u>bc=#)Sa!~s-_1%?U)H_iby>m{J6 z=KzHP3&bY_iItEtO^ZFzzH?b(;3%MQFo*)IOM#h>V4rLVrYwx`;VGc$gdgzs1X}AI z0uBIbUYHhZMo>AzBqPA=PJNOy<@At~`+Yr69{mQ11e_%+FZ<+Frr8cIzDIqdgm`&^ zdoMfEYx%#ImFWcTL2?Kv~&YK>qo_wwtEBQGC}Jy%)vv~hRw znbS|u-KfLeT0FXza{JzDydemda!eeZI%BK0&GuIEnPYMT#neI3yYnhGd@bS6o!&8j z@Oa7ki>WccGpHzaB?&bmnV_Xh zi7`54qmj1Ht5D^au4hw$OM9MbzLI)MASXaWSDG?keh}g|oSM!AXbb3h195p1aU;54ax@ zgfQcg0%2Xx%oy@7oY~+;Y-YeJdarLMY;Zq0AjWcu4d`c@85&s8oVIJ)$uX1saSU9Y zk+yQ-&7D9KoW3P$s_oEtWZpEkc}ow_j`qbr-8hclnxJ z6>EmhRAs>3{7bselI-BP*A#?2d)#>xUkEevVZ7YH8VN zjaOSzdpoHhaLoO<-~(`_$Rn8zzMM-XdSRtq$gg=Z?}Ws#sE$DQ_lIsn14$>y(zF&;JZJ8*I!-> z;q3RI9st-c0xSg9>^HKDeRjG>>0idEi?X2j}Z%IDV9=4R=wO@8QP^a_hMrC&Bdy(GaVqsH? z%|L+mK9qyWGLqyJ^}=8SkDTZEZ(qgS7<)IZ{0HO#Z`_*kHJzU1=!W6NG8&!Rp6@75 z>7|z(WP<$sObPbdpM&72?|y+=wb;Btb$9P<*QZ-#dwxy$LqLQCsVZz~Ad!cL#-NW4 zSg)J7&YGp)v6Hy*qsv(htCB@lin~l}N1B(};_g9PxNl;;Nao`231K~~q;>09H&XLwj%%o<)`DUe6 zz;a1f;{$3sZHtQkgRFA5IO%H2T<26NUTv{t8h%59dra*%BCR`a@cd?0OOc4Rd=tr~ zJ{|GEqD%I(h zNILDF`a4qCNYAT_k7$uGKgAf!prMLI z9SEyCy)mrz4uWkwx0{F=!*%(1DdrULBxOER<-M{4ne?c!;41EIY^QeVmb$Oe52pG1 zRtX_=(zxBXUP=kmqLJq#BxA*Ryj6)1y)GO$uJ&6wtbrNFOkSdlwbIj(ve+KvI}u*| z)z_Z@;g|>C05P4J$mbMLlR>#BLERx%#WF2$WVj>Fymc`pKa%EoYF#M@7q=;tk9+6I z{sRl7OrJPy9y9AtY6sHMxEY3v3`-4K(N9R$`9%U9BTY@mZ}izFULBw67rV}J*kv?3 z1?3dl@EeXdxP_Hp2e`v(a4No#6Pv}|j|yGt)sZC`XLJsVJeQLToqj?&Eg}xT^#{a_ z$fQ$0yX|5friN@O?OV{?>93c)=}t3d6E|NUOqQS{t3sToeuoAvC`<$=URENLdC8g6 zWdiByEdFA3(?%u(>a)*s`nE1IiJ;TN(ttBGLmI z`g`+{-O6~quH1U=rR!QC-N>~!o>mPI1<5xFn`JQg`Y39m2vF^dpk$yW=?{qg3?7FD z$s=Od#;9viwXMybRD0fz1au5`4U0gVlpL*lL^uX~W?X__Ze7G3Y-KjM0sS z9=!g2J8TKNqOoJ|Do`AkKtVeK45;$4HbISnuvLvYV7$6W9RBw+D0(Qgb^ghgWOq@~ z6(3UMf?_h6*lN>&hcIaT{_i~kIipf@v`kv&^%0C*BQ6lcadIY>E3gmGYs&vVH^+MP za@S0&1g4||Sez~rl%(U_MC00{oqZRXOQ>RPi6g3<1ZBs6lvN=oR5M@?Ae7(JPC*c-(jq5&4b1(0$TIG?J5%7RZih*vi678h zysT*aaTjD7wz;ZI$5cx4pH)5$zkyoazz=ROJ_v8~tD7b!#22@_sNhOmrX#3^R)YphNZ&a70BkkOb=YJ_Z z4dRc9ye!Xq2||1`yo*ThY3SziKF+l*>guwT7>lb<5}j^<-MY=%V~*D3LbbZf{z>nH z`AjpoMJB$C&fP+*6>hQx8@yXIW-cM-IfSX)aId5qrU9kfSjPZeFe zzaaau&W0{<^Ww#ekJd?>;a=8#$-<~Bhr1%L*bKcJL7JHRfu;!S0d=-vT{TDf=E`Lz zCjRS%7IAK>KyeKN@XsdIMW}hg{mboNN}9n|e)MKi3s&`t#11SE*4t-Wy&fV7a^DuP zvswWuiHz#5`GvRDyh+gyy7-QRDRiCktX~C7o`nHmO}M&=LBAXqE{_Ku1*3-KVh!zXZ_4!~)^0MW|Jeu!1F!BOz^W$aC+=Bz@o|}p2RnPbHRYz)^ciaA!CJKWZr@ z-Ew*DR$#hN2{sDPY144e9sEs(h9jCg#-YQ9;W44y)_5Qn-=cYzi z_XFKkac7J{PtfuUfWgfYQEEN=E3+5q(b=MexWL|0Wo%H z%Ny30%m=#PDX7k&?PFM9=KgbACj*h!SP=r%k2ncz9I>uMKLl^>PBwLt|1h<60;lWf z0gL2=e-vG_w;_P{=ugtZGXsQcyn%B8D{dkmfcF1?O_TKof7Bda6u`NFkVz8jo1!sS z25{yKYOpfl=!zl<*m#e??efcBWqoOVD&uDOcZeOE2c3-#bsPfrGvmX#7lvMn55o18 zrY8cfv};dDGteY`_W3!n&at%j@R;le#&f33Rq4&Mw|>J??rKZ(U-A5S&ys=CBS_Tx zw#(9mk}D5`#N_1N1Bkg!hQ^68 zJI;yFj11zW&4r*n063yXt6Wiy%0kh&r*kfnDN(Rf-6#^U9wopD{kWPSNhgu){j8|cA z!r_a6i4Tk_Lwaw&g9PJn$8UnAx7f)ZEgE`8LxXzthxFw)oxg+aG4yLhbq%DXw_0ry zS`Z8R1^UljJ6iS}ZjrN6MT!%jAW8M-Y9&%p;#3gXo0FVDvN!weyPX2VyEJIFpvb#3 z3jQ7y`YK`PUT1ywz9-?ZaE(XvxjCoOOMPOJhjxxVL7$De=lqrp9McR{8_N{mm_ibb(53-O@xi?N+Zv%|(@^2&P}K2xrgeZTcqZFa9!SN@9c6Wny6-$yUrvq#x7CZLqfRu9^-+{Aks ztdXfgW&wi*@)Y!@Tu=t>swa;}mt}t^v^#w1vYEpRR)BA7E3b?Jh3|OI4YSq+C(cI10qaqHaOimk25+P}D*!Us$QsolcCG$!{@VY!r0u_ku>ks{aKgGV)A8PeW*?9o0GO||A+ zn$A$Q50nuYKJto50G^#K>2IzM%mq+&w}`ml`U%a2?oO|6VV&_Yxnv7iB{;%eH{f^G+TVx$eSk8uyb#cbdAoc|G;nGvxC2d4Enh~8-y3y85c@K6zQe+w!8A; zKS@vNH)Ss?E$-WlwH-VUj60ru1E*|o?QpPT-R(hev^B4;x@iR|KqU1XYS*su1sdJX zE*G4NjI(EsZf(NDbpxF@e%#@1E3T+EXb;NgKF$y9IE;cuLY!V?K0DGI-T&scm|_Iq zqzu6GsaH${Xv2Tm8C58Gl?PA)E}W&dWT|lQj2KhQrjGvhUH0Ca59J;L{hD~>1NGYh zVTequ0q|yDAe*!91s~TR2`FJ02jfhJ<6`fu(uBG##_@}YE!TXQt}1A{SC_S-PC4?OD3f_@XuV5I=HfjRLrjn`nBB0C463YDGK2cWmY`=e8ZCHH6W)R0}RjF}0zuAw~mpQ+KNlCU6DHQ(d zMDovs{Qr*{EGPx4`F%6G?V6Qw!j_bWXmu#r?oAL72I&zwCoI)_ zP@lxt<|QYQxcz4~&>!SSAV+$S(83tsH-qKxuUgIdWqiLjuF|`G>RWwVR7BXQLENeC2xHjmlSgPo1Oi$oAvgp66EYjrXJ7OTg0q8tsFv zO|T>$lM9u)|MQ3HOS%_=#IeTqHRQIIqE6hSR#%nbM~ijy51Cr6n(^Fbjd9mxZyktS zc+Dv&OqqjkJqTLRs6m!x{{j}pq16w4pRl}YYBNPv7_zetpCdEdQJ>t={;s1@ja6xG7KdWyE&G= zv5H}|mR;AHA6t4LnujJR7>G4_F<$>9Zs4ijx!^njy}NWit*eL4w$p zx~%#alv%qd__pMvpgkFC*eEW2PFhXH_U&T% zMa-2q7uD|TECkszp;&YeXZ+eXQ2`8(4J@qXb@Gos%Ho;vof%kZA(Em2+lb2GHT8PN zyqUr|J*&@k(AmMN=y^_bg}{!R2qL`w{&JbyQ!STn)aij9K&smq5eNaa?i5J5dIZ9q z;-;H*taa}}wbkMo&0gEGB7qSo#Llow3@~cTc^OC1ZKQ{dF`2|Dx=O%XcvI z&MaP=so^2|jI1_{qh{+a3dcErfMs_c#Ntr1f&dZuRhVwED|_5%4V5E0^i|HQ6U`D2 zezc9ZYgLj}OJ-s-&bqeH7Jb=xm^I>%W(VT%$`qb~oeUBo$9n4i&VJI@BJrcG7) zRhwh+nU`W4x?Uzpl(RLFq@m=toqM`nC0!D$R~%a7=J{I!eXq&A6PmOZ!g8U>W7Lvv zZXCF0Z0A=Bf!?Nd0_RXSKhJEtB%5uwnv?Lfdm(Bh);X)}2OOgG`MxzD>bY+ND0~<7 zQ6w0Jek!4uAO18ZDLm`o8mS1mn>xw03%br6!}}Za!BM$Vwro?dnOhaG)?JX5px5}E zK5T&44rX=nd^sAoYo!!Bu=yE1TtvHlpXE&FRPWx6FNL^Bq0YnSzgW`x_!J)e2&vBr z+?j>=oiCoKY?nnUjTeAT170lE?6l6{4-t4F%>+tI*OlfwKa_6-(8`?69yVdG)nigvLSN`)Aobfm(y@&-|3yGM}hbJ7)rw3ywDV9`_j=eHn(JjTNl!?B-r{ETBZrfcDky<~@YUT2 zi^%4fMQMAA4X!^Fv09L9jXTG}J{O8gx)yAiCh1J$Ym0G}d{$DN!}ujy3OR$AM(PGX zZSp(1ogfe%ma2A)R&ejc63_1FW;wa`BI4ulbnd~OI}i6kg!9OzjqD`Rg+K>3_1*^I z6|AI%MgNmlQqZ&j4tQ@db9K|lw|+X`x{0TLIr%frl26CKX`$r!M z3psj`re*MGtdOEeJP6D{3OevG^918>o=+uqo{mi5%bL2N*{DUnnW8Stu`YgM;Pp$D zk6njKN3Vhdf-~FP`8pMekdGZL<%LOnl1dr}HP4seY~SeB+_2KWGpRsx?4nil)>}!Z zJ-iomBDs!pga*2i+gD75I44u|g#XHLRjRSIs-c8+qa9sG8}D~n#GxtzWZ)1RjE1*H z_c#-m)5|-Rp4M{_o?Xd7(mUvcy|FvH^2h!HKc9z2P>!LzYA$;|M#5A$tKi1!imQO{ z3UraK7184hWYgoHB)NB`Lh~&7>9XsWoCDUOPc-}o6*gD&@ZSfXg$A)i9NtG&Fi+yi zJ)gAiZ(ttpB9G334rL#}G6i~NQ+A^k8B9TxiG@%XqwNQ25xvrlz}EelPik201@+1k z?KeJcmhM?}DuiM)pE%X7Z%}M9`-10>vuR56dVwYb`^x~Wwu2>eEgsyhIzyGE;@X#b(6A47&EBHG zdUB&y#w~F~*&uyJ0%WYUO&lG7ps<)(LEK@K->t-pE0Ysg9|nBYEO@YCRkfAyf4=`0 z9{+#k{Tx0weX`yopw1fH7dP0qx7|NhRv0Uzlk>XOJu z=s_!1z8`}cn@ySuP~G><_9;J-4C4&l$v|ZKyCO+V_dhdPi8NGuXZmy53nN^=B{T1j z@+8z&8d&HF}-{A6D^1s%S);BT3fzETra_UMB~#Ma~kN^O7$(lsJQ3e^=eF zj58oFiN}186#|KDogd+<)IAcLFjSj@^rj{%GyF(>!3R&JwMg@IJhd-xi(iacJnmik zL#Q@n9ppPfK$ANNSA!@YNUJcTINC+v=}0168Zx6pUQydr>pnhdu`e;OPaIf`?=tPRCU$fgh(A5eCUZnh<3|nBbIJ z1?yx!Rp^Ug7^Olibbl2&H9%^$OeRGv-ZwOA)aB<#><>vkzFd>|Q>a zwllkQ*p(XYbo*JH=*+xh^rg|IE`&^;lXDf#*iqy;LcXAWx#$~0yHtz6(g#xrfs+rv zoudrMK(XJUG*Tj=9krLu!j}m==QbpUVlOBE{DI}%VIY%qmUeFBSUst%=A7;6y;>fn z*j$auN5FC7nmEFMWE%;yWF+sMo1nsfv4r!Dr2}ov_mbqFQ6&T4n&0@sUNxPbQhUqp zx0ma7KeQ%^1uS%X8i5*x<`c^_xGij;Go6Zi&$#(k*-o4iRjRn2cIGmU|d`69IBX5(7?#zEWtb(6@mpids zLLcH~{3?eh$13AEE9=zmo*+=zCuEub5d_ps+h2E94$x6H)fXsm<1UqEc+&bIHRc0^ zC`@({l9wQdamYZPacUh&TAhG>Y<%4cu?4Jj#S=y&?GKW%Zk7QOa~mBF984pq(A; zlcVhe{))0^F?#Jy7>%z-2?%}8Eln?Poo<F`GfO1UVS9uyyf_TJqipw0nHmjt`cYw1>WX zi~K|HhH;=2)#o<+3Mx+B!mUFnD3U;(Fi zd0}fLwk0)8D)MifkSvm%y@TzzA|XX7Eu+VauaJcn)P-_3$xg1l?i8bOpnTV}s^%-@ z?i!}~ay>|VHleO3zerDgMyu4^-@A|pyFfd$$dJii#@<91s3A~PNLP0#5(CaoDaD66^axrde~ z2_L9mv3Rgry;Iw`#iGzePHnl6fRq7^$C~k1GmN>NM8?7Sjc=U;-EwRDY4BAIOg> zso`zMk2Q_shxRcBhnh*bm=_0P*GI44YC3=8TJuxhpnCV~wt_k3d)Y!Xjr0;t0v9He zFI~JUS;zJ4a<6B=u|}9i=ghs%^GZK($dAx{mP3+d`pS~}-q(&_uDyNb z<_K-AI;bnR+?V=fY8pWMMbh#hf5*KH{jp>D_=#$?3@fxB|048PcOI%Kb^*(B#Mi!T z#ljs8MaQs1f)Av0HuK(9I?PCw?SE>9&BAY=pNHdY!`D4`^-+^*3m0~rZ>39|9~Ex& zyj{=vcI@LM8Dy{XT{(NWg;l2Dy!v)Hu70kDp8%qIe!V{J+)qv{r$B)y{`NFfiYh^U zxdT(IV4_GOGQ}G#f*J!M)oc$;ZxYBsI|`$SQrk`eZFhZJ!}s*zlYA47HnU}=h@Btl zm=%D`-g`=yl_*7@pO;>lm)?PhR-$K=aR1=j5@eid@ap`QpbB#&YY;BRZ0IdRQ`Szb$i=~5}GWcJOfR-ILQB!J0Js~ z_n#k};AjGt{?C70-$mILn`8#>lG4h1E->#+9DszY)xnxUmMxZA>G~u0MH+!i#xr|X zSS7qjRRhHF8e}F^u2nJe*&~wEOo=^;BwsN!(~(tu951t4=2{au+b68Wge~E<;|rep zK|$Yc8DD>QpH%3yM(ZB>3#LGI^AKuSW~;kk@E{q!dA2!`B4rWH+T+gO`cY53OCY;; z1cBQ;1cKpZcl5FzN38t)7!lTld7=CfL_@4=FnbU?TUGwS5dAz1t1L}Ftsr(FE%BsD zJn*6Z@%KN9s|Slf%+4H;3V+qrK~^f^1V4=X=)fQNVcL~uKL7F=w*DX1-ZQGnt!)>@ z1&AWW0!ohxNQr_{q!SB8P(W&=t280fdyS%0fk-dXi*zE=Yv{eVNSEGw4GCF$vesAL z_3k~+x6c{p2R|}Kct(=Fp zl5KbtJ`2_qxL(UYpRAEzHvaXS1{KN^l`<5KpY|X7zp3~ zmH_<+7pm@Jz9sbqZRWz8UWUZVHsPYoXHi<#l9?B(5<&nQyH_Q{D9|aLFvg;8$(bt| zt`}-L#5c(xP`vx~aof#``t#YUvL21jmPzRilA%G!NX{dge^ToVI?+iJ{P;N>)2=lw z=m-@%iM6-EVi~DXX_A?}MLgO^Kj#Tv^#E=by|J^dQx5E7f=EwHTZ?e+%<}FoESZ#e zB1Vk-if~sj{`u2AfQHV>NwkNaLP|PveRiQ!0k`Zi|JO(BZ4r6yoI6?RO=1&&(nMx< zpwpT;p?suP{gb7t&{VWVJ49hN))4ylk(>51bKP7$lkhbNxlR8XEqjcd87}g}%l)R_ zrJXdsY=ru%n*^TaWhtVOo}u5qFP8spDdU*39%?4oYo~`s>b!fXK@wUoKmDTRWy%Yr zB(Hh-ACVMvVQAJgRC-nRB$aQsiffE8(F|ng0rBSeqUq{bD8_^4ihZ#ge#8~ft_@W$ z@Y<>d_Cq+%=xa|9GUTV%_eUqtM}`a5tu7FOyr zH0O5;nVxm`Yy!za2FwE?MOlx}Pj;3ICD<;Y?}gO}_JLnoNIhJ^QMxq$S^wvp=QG}R zUj7@B?c% zeR8F3$dNyEvF}!J*xQITfp`{kbxkHLfUjb4ha&WnCgz$+V{ZHl`j>ry8V)fc_6SIF zgoe)zx(L4H5gaSTy|OYi1*%L!Zsg8XywItZS~7Xe#YbdGn6IO~x#xw`Qo8!4$A2D$ z!nf^!$-yIk@3sZvyNNWX%& z0PA-<0=dm;)L-p-LHpjqW=Drt;A6f$+q5 z$$5^hECiRg*8WK{P%d~=h0MsHmD47Ux`1X;9CwyEC7*8I`(4r1^eC z8iYVD0*cW~|5gy{MLH*4$_HTF?%SljZu&OREd2BZVI6kTkuFM)O%6X)ieN^ zL@Cf=t4=8144wyO&%`IbL+aKhS&U=UNry)P_flHmJ>-7)%Y<&+hVVYC%Tm3*#D=)f z@ER3P)rSl~sp{BWbsV-3+pL+jIutQI79KriA?s+*8X=&<(;%0(?ny7FB*2u))9ka%O81zt!nz`}|gLf`q(I*fY~(sA(s6*|WHYmmUrw$o&Y!y{p)jL$Xq zRPd+lkfiQoIHSSBHcE!r)!*DmB{k^khwU_sq}a1=`5+MpX!l~1koloa_$hG2x&W8e z+sNEJ2%sp~8nP+~Oik<^PIxtGMllu7xL1ZMR#|5?U8HA_w|)py3bX&XF9z|kA6|zs zIj9tm)@LOzp5Fx+dHa#Vi3ntycW1RIqA=4?A!DM^@k(RU>e_*N+zIci*&V5%8}}cI zB!>xjvY45pzad7Ysn(_uh0)6Pd%C3n0xD2rL*D6KQb-?;)mS>C!xhOZWg-N$VWVif z2X#i{Ya3g-zdyC*#D&COPmS?n@El9APp%H3l8Jz`K~6;-LUDtBKpAVf+a2%+_F zxH5$^!tm*$4tMHDrbN~qR;Vd?TBdRSQ9amJE7JKNd?6N!t{J4?+OPoQ1^}c>fm`F1a>K+xQ@_XnH02?$VuS zm3Le5oy%Z)zJ_fz^M0<)#G@KIG!ywzOHJZ3V%4o-hwGEjG+pM2#;dPXce8ifFeuw~ z`$rHlRsF@9?N1tmU!-Dnv+(D36)7qcX@4UrXRYsA3E`;VS0t6ibF<|L!6Z)siJ0uG z-gAqYStmJGMg=X9Bco&8lz>#K(`|`FR^7k4L?oLQS<~yLJGUxs)`B}veh`+VY{nT)y+SpT+(z49B1f_EV5C6Tresr)nT} zMDg8202KW1F$dezCuEMP2#J|!!Y42jK!Xjnk3FB%V3G6~(GMa2hOEW@Ny6}XfJw)^ zVDR%_abZ9Vd}ajnw~{R#5HNuyL^4h0A9=?uYj}RyP*O{?OILRi#%qtahDnhpD-Pw7 zIBdv`MVO!BlJuQb1IwoC7B0chYnj>Iw@LZ4NZChod%9M48>2h-q^Qzp4}wg%$0vg- z7FJl1QZ&3^Zbyc1Oh5Ltz%o@^rN8BHet$&f>fyx)EyXTOiWhjT5;F;b&BumDrO`EVQY`6r|e5_0ma$UDr?AhO|!6CQpnsxiaKW!Fo zJXxOX*){Wa`IE%KA^(fJed@cyr)5TW6&cJ#Ly15J3CJH@IJhKYSfx#&qzO&QqZoC=5Q2uADbxe;=lBv(@C~<)xjc+GA8t5X&0i{4JYJ{z25- zAANf0!27)T8or?SV|QHC!y3%eoS~C1Dg+Hz93U??JFiwq^>E}@bz!UR$70|!U|^_^ zZoZU%^l$|4HUA!8gzb{BMOh~0+iL!v{l26*opK;XPyd{p!qP%aiTHf`vHp!uj(8aD zbD^>aZCxEXJ|v=g3-z7+di)D|8}vaOGn|~2QdF`R-kK{$Y<1pSU&kkc8Sy0%B|xf$ zLykZMds0ix(fC;J-mBs78NJM7yS1zJvi}?K zJtChxrnn`8(%8WgTv`FqH5z2bxXn;I8%Vsqo5ncbMLVCbch7S~lems)X5SODvT}Ji z(VLa#6s(O}0BgoH$MC9E(@B_2!LvY4a@U5ctF3!#)u zn3X8<%+^=b6BYQO#ZWIRq0RurpEQVuS<33+cz3(jP3(cx6jNGnK%@%ph~lVIrDM@i zdWxbl@^+BPq<2=^-<&!tm)pY8+9gyezIwldcC)%@f6K|b*r0^MHV359SKz-?v(>Qk zpEIqua}%ch+4yPAFCj?kcyAeen1cwi7=`zEcDo)p)JoLuZCyV%z`1m~gu_HZW6{+e zS-hg}st_>ug~4r@Xf~Ian8IY46QLn25ZZTBF=}99vX}1W@3z%XL^4}dt=3N)wSzfN zL%)8D$6HcR5Ko$A&GEeINxRLMia*3@{g1o{l>W^Ap|II0^O-4i#JD+} z^mt5j^B;5XWxky+6yumraq2MNDDX~K$*nIOueH34uNhuUV%qF z6n3qoI5?XbeDsZl^iRE9;#8mQ!~ya%li9E0$6^rSrUC#SnIN4oCl_JC&h+v!gTCQ! zEZ@NvBA)rJriCBJ`8Az%93x*;)JPdUEt-h@&GJvSJ~>T%ju! zDm}=pJXAvk6WpHt`ddJ}OiYhcB&kRny`&h{B%h3TE{s`Vgk(vlR{Tlg zr?Yi<_=U8{^qF5cSHbehwF5n-mF1FFM$zKIBKZfz@R-)& z4=DPE!kWUf$@8lh1Ex|!&`jCbfC>H)({iS1`n-*ph!7;~aS_u&V6o+;`pu$P^uho)m-9`2}`3>sfx>HWCk_cyfmS$sIR;-Zo|S2`2t~ZsG(VC#lD!T*`JTPXBo&qOaB{r){+}e4q*wMiY#%}H_Z!UR z5N`Hc{~RHj6d`|%4-#=6#LsZ*0s{N+e)52>W#!}3-Y7%-p&K};6q0G!0v$q&@2U>v zl6qgLrA^RVmzSzS3#Zu(CaAaklZOp28dwp)nrL2gkoqTk@-$d*hItTGkQrtT4@Ws z`E6lY$zkg*PmShKgnDNT>sQEXa-^8%>a`iOs3Fpgl+Gf1*;iUW9 z|0Vr93C&=rw&B$@vw^;xudK{Iv%uPyua#^=hH)9%<|wf^wE4ZlV^RK|x3eYLnbo$j4YcGKg{Hgoy-B`{ zRH^TX{05p;gbh|TE?kH0G0Mg31UpR+oe#Xto=9EMo6(Wr^!T*5iPBy-g?EfnpJGr71{4}^rc37yHv z%8SILkqYYok++@-x8WSJSG}ue^aG4=*#`3a1-*^7$oz1&K-yJghATR-AZ|;u+L`1E zl#4CY3pfOKyH+%9@fpgVB=%AdEHx`yud5^7o&F>dx@ef~4+g61gY6N1|qW9=S4#wTfz3 zD|Zu>td7v*U|G zt@a}PY&Hw{#~dhm4Gkd0uLK#O=AKsL=I zPJXu=vveeWXll=LgnuBh4O4O}^DlWGd_KC%~0 zlmS1@mx6D^Ylvyw67A_OfN~()-~PHF@~;a51##{HESrCq_TU>m0bsz4$X$8Ce}0~S zUfU7;G7Z-5pqHBg$fPc~J~;V4&mIw7!GZ1pitZcoCm8ri7#OepNuph7*baWSbD(bL zum>@12*bTKpxsNq7sL#zz@Qe6sn5~C; zQNTKM+UHj!#D8E;J-|LXqGw3J|L0d1MgHTfJ6g+co1zh(2%)H7GI0-$7UgVm>cShb zavrh;v}eFUn*ef0Q_Yas;=xrkouVh@5B5E`5k{)}Br~Jy|b!lDEnfbP`|texsuBQ3x9bZc9LtJboAZxE)uT(~+(K#-act)MibS z*rCx$i910|KCv>~kX8tzGK7=n%+S&n&PcZI)VXaSsNq z7~NnZfD46uG`MK0NvHXRReDZ6;;H4ej`^$f=S=I?>XIqDa4X_#Pu9(%r(H?-j;)-I+V9Jn>oV5HkmEo)v7c{(ZBmHE&NZKqlkT>Yx z_|b6Pfdwe>MR?y{s+HL#Jd)$^DxTEtct=OdH&D%$B4)JBDM zMNzV&CBmX3s3L87aI~N$Bs7mNxe9XW<|?da6PmE2oS!3I$o9?1>7Is;XG&6s_Lpn7 zP*#xSJe;I(zH6=X;Rr;mtvJ|~z?5FxZ=E(olj7-lm@SFA>9z2t!J0;Trd987OIJ1J z;XqvF0p&mjk3pQR%6cuT%_!+A7oi0ZmDQL&ZW5j)?JEH0W&QW>eUfq``i_I9D-LwMSPNI^`9e$sWyO91`obVgZLJS;|G<(l~;LbOoti3*|L$)+J!Ptt$tkX zJSz+MSSaEnKd>!l^)^AS(&GG)^A|wGM@i@+Em03}t^xC8-lwN3aY@z{(`d-B8aI_D zoUq?ua+y)Hl$V}&H3moWdlUVvfN3c6iCw0uT@PQkHI6Q!A#e}IKv1jQ-psUpLtTCM z_PDQIt3_Z(KuJWo)w= z6Kb9;Ve;KA{|o*8PkUSY+Pm9Qeu1;n7N6s3!%QHeQlF5no~W6?ZGD7XMIYaMQKf!? zUm0)RzKOJNZ9H1+xHpxv`?HQWDv{zs>j)35z7Un2Ov{|1#r>4$=BKanFU`4=X)`3D zxj(hEg>JP6L``IMx>JO2#317GnMFpz$Ygt0 zOcCpnrohCPCPaDR#U|<|DilXz9KV6DILxcu$N0N(58WL(*J;*8bje`}}?8 z6)by+E9<*u@rg0=zHGf;CEpj$Iox=I1!h zG+;+B{Lg%+N9I9Utaj}M8E9?bclX=*ezYza8Z52IWH3P6e_gnDk8PtNOSG43;QP)E z|9k?}iaqFjtY2FaUILGl{!~HXUoC4rqif6ZTBu7}2Ap5he_gRK)~DdTrI8ST4hTwANPQ%Re03XXs5fa44n_!CDpl8 ztJBu6Drmp^3Us5fs&qvUNJs<}q)6!3;`rif=?7)rKZWtln^Cj7ne~ytsAj>z;aAJ} z4s{sWKreb)$Hj90Ry?{K#y@M@H&TE`9#%Ze#@)!Q*hCC<+Jx9Gf_e=MM!Y>TFPrif z6Z4hu5tEBp?L(ZGm(L9Vf*FM=1Ggjdi|FKMxV@A?V|@{2cRw;8c;tsQAJ(FfP6H8x z{5i3fgp_Lcj-m^*dS;7a7EV z>#R@uC%toeuW-bZkOqZWMAA1U#F^EI?zN~Ajj>a1TY*NLx4i0pz_#xqee8WJ175j& zdJ*z&CtCI^iSwJnJwAEcwiE1Km)}^d$)0*@7?O4^8&~qIT%kp=TS9p8KioS$e*}a? zy=R5V?QcoGGp%@tq{m*VxX>@cpvLq<7Oc6;z4le5<6__{WXI8N{iqt$DQN2f)cqc`^{aC8$;Xe z3OX4oUS9gqZBX>FZMtyxoI&Z6M;FvjS6JvT_H0<~j4kT7y2exN)^ z;H#IsmGRz`9B0Zd>Z%(exKc+D49sJ_p_TKqCTXs(Q@Z8uL;69L>HJOf_9=Q-pjy?9 z&+3q;EeOn3KO*VbuEof^0}!4`0EMPLg|fyJa>R$X=eh~Ej-p>959?rZIF&v0j|6fS zq3nXMh(!;j0|DY~ozo;Ov&kfJArB*F8_8<-(=M#A{!;TL+T+72P2#@tD7f~`7UcBC z!G<2Ihrw;h63#VbHGVx6T~e>=d~DPXdXIPXYhHJt$nSS|9;)-)6m8M;r7%3oZHEq3 zv%17B1|OQeueNyO6?+NLYT8IkC#VwBnN~ZYyuyQ?gLsrgK$civh9YR9bs!@CO6q1?g9kv7D`H0@A82o;5pqVo?u8EtGliyM}g~=5j%6 zJ@>usA`-#`tF`9>iggPS7NLcj=by}kFji3BhnI;hp-YS(?}+2{7?XXX<9#NAT-KYv z;o$7H5|fI%ZFZZ@F>{QjVqAeH9u9@VEZ@}34P`uQSfVdds(xOPvr{e3$RA&IPTB@{ zWTh35S&)a7qdS(>@Jfp*I_}jgAKsKcfF6VG?^azD)z44vgu}fVI1+c-muA< zbvd~I(S>#WTE}UE*K}qNuxKDgg zY-w;xvq;EYIu0qjdyDKu%=3hQXkQ>udYV!0p1%Da>=}MKWoaMK4nH0(rF#he+`XGw z@w%?_&XkKuQkl5!B z+yminENShE_J5L4A>p{B#Kp*(T0U_5YX|mGl^8NkFpPph6d>44ixJl9a;uK( z3y|+tbKm*#SX8N;I{xidqsM7O1s#^YxQy93$QIrA6~uv_e;t$W`ik*4d_ekgKk|pr zH{B=qJ3w}z12PtXAGVK}g}@g$`x0grCn%1;SNMY{Y2vqZfswiOPSY4EMrSdK?HXVOpndP79dRflFXJ$6owOR$cI6I8~Jn> zeHWchfTyA^n>#;r!6jT&F~6~>G6e6=%TOSD9dbd4BytTyUNS8{-zKoKzB|a@*eUYzZgF~!5nv|{gf1(qfRNqzKEH9XXF9=Q)7Tf zy3Q>0m$dN8d3OoKK1;)*$e$#3%AZexNy{7%-}Sfk3slC_-~6;JuXtiDJ2a?WSXQkZ z)`H&W@MzqYgm-DKCQ(RgWI^N;3d0Pj@Vh%;0W<<%6|K}j?tkQD7Z}c(P9MwjmpP0> zmKN{8bXK8fBI7UQ5#n}`M6;`+`@!O7tCP|Z=jMvR>Hs1L(YApC-NK5SUKf()4E*$x z8cs!5#>h)&e4`yQmzNg6H2G1%&%b#*|AY7Z_dXTEbD-5*o8mtu(Hzup;KxyDpIHJK zo{;2z#+K3gO8bBPEAe9hA;a!{9N=VH;XUg5E5jc$W&e?Y(K*Oxt21}fI!ptJCRr-k zq+kfRtHcXCepapF7nb{Q%Q9+?eOp3)$)MXnBV&VC*}%#0w)dF@^(_F4z5ss3XXykW zz`&g6qgRJad2sUA^JG`N1sGLcK1K`fSo?DJ@m6O0TAL$8p8?1hUiY>XeXgu)@J?KJ_5X=~Dzp zka0>!qLi%V7(s6MwHkUs(LSLkhJF0Vgkr_ON3uVEYj0>9YBO@1|H$4)cF6@(rFoo? zbg18Z1XCpn^S%o!n=&CC57#@R6{rwh0dP3Y4^{$i zpQ%`SGqs)l#lJ#Tse$uS>3Q@+$NUW{xr)*DLAq(if1KNkRhg_OLbf1v&MkhQtIw~` zuBo9Y@2g#Jc{L~Y)rl0J8GkVMX~;sSPpQ8Vn_{h!;rx4BFrQ-#hm74DEp=t!dD$q; zBW$jrld%ASJrK@+k-2#rwgvE_3j^UGU^Xp7K@G)=t6l2&n4R}_ui*9zv%7-(y~5}6 z`DtYr^{t4r;Wz?jBthFwJ)-K)dFN*4@6YbtB(ZdM=BhP1Cr|W6^dd5kgYC+g3YsY% z$oP+LDjUyj+v+uYM4cVoN1m-y#``rP=L6R`&rWU$;$r~EzyBv3pE+A|u^5VdlrA%0 zEMKTj5NpR*v`QXrY44WZ;0yS*=D5<5_pWTKhfl#(rhgk2s4nANR%!V|`W0(Nph8`5 zXU_$OW!F|^M9EOG=m7~=iAg8*1WTIl(oH<}>qu$vZ2r@y4UIr?LMTGUNuN?^&Mz&n zORb?Vh9oi;w1&pbBW`f%d{NCJa$|fAx0SzpiZ4z}%-T?>d&Bou6lfCcZG%I_C{pS# z;r6rdd2v5lmpKgi5<)5Zb!oXCmT<$6?xx%ym*gE=IVa@o_h0@=(o5?v&!ImV%w9#9zwXSe{BI>y1ByFA~ z0UDh1)@y_`?~rg;-hd@It2%{nMjJzpR&ri%ZO48hI+_=+HPuWX{5lfo@_CbP7Tob8(;{xvjd@{jYQ5TF{^beh|8#wl62B&pp9_y4-UKDRo#1~(jzei2}qUz%&g zU?5q{LUnF%tb7--DiBZmGccPU4@Ntmx@-qqM;tj*#~u)0eH4lX0Wav+vl6U|SmM=S z`pEmn+>9<1M}>!s?93H2bn-ec<4w{XTV{vsf|USn>ZVni^Gosiw(p)p>P z;52GK)FOJ=)}h0@e}n{U4Ges?^p< zy61m2Q-3At1u6!4krgaYtrb){)HvS5*y!Dl1 z6`%{n?dRvi>Z1h(O4_fWZDYXveSib#Zb^Rqy9JHvgcEkaFL8kxCAfMm@ zPgl@{k?WGR-rjh!@SBu$KnKBcd*>m1v8D#PWZBLY>7(*ywY7pkQQe=$JFpP&{Y{K|=gQu5ZHzZ7fTr3C zQ_TBaU@y$?07#@xGPcEe&cB|qjg^8cKJlR0aH>5^d9QuA$1CyEc0T_V7oUUJhXq=k zFy51-Ev9C4Nyj!!Bh!`N>-nZW>QfUu@lJY<(v+I>YeeZb`43&!#m$~;+mDk@q+Jv_e(hqP`0BA=3Ey)}!)XUhW=VcS%9RZqB27$S3BHhvMIsg)4aU3Jq^ziqU+0 z0!<3+0-N~yi@3*YeXlhYf#tl_=KATK%Nnz3tf^rJ{>zdS@2pB(l$9q0{rsRIhk5 zdWf9=4Y<>5EE59_VWCWzdquu=0Pfl*AuK zgxr1tS}OBe)f3Y!51C55TwZ$_o5s7?9%p0M*hBnrLDI}5I@(fl307^Bw!#1gUMQx$ z8nqQ`t4*#)Puij76a}nbsIVo&-cKfGlfpM<-kmHmE0 z=g=kj3F))d4~en%#ipqRpX!`^*WjPmsS15Vi%`)dK31L#1u*gL88&my$t2Z)+;wh^ zT*B9gT60#vCJ8iei|EJtu*adRITv9C(4MtCpe{46_GQ@)U0Uu@M#|E+W0%D=VP>EG zj?nxV;yGM(86|gW6=+mm8YmsU;|Ry+JUcne;Ng~S-=G`EoqOIe2Hc%>*XIu! znxqZ8J{k;}fa#x^QlfkG#4Wg2%?F%@85ReuHN3^Ga9jM(@HvG%U@W+4eM+X4*%EBO zUixyS&C7fo%nz}mCtj9>+*#h|V;Yh2)!&d_-&gHk+TibH9uie!1n z#&Qimf}B6i_!NV4J0ees%_EDv4_I5b!if||t)~Zo(@ZRf1nEG=_ls*D?~T=}oZ5v` zPKS;m#YuL=0pUjKXvVkZv@Er$z@8JcX*lEqxdmE6TO89GqEY%PVtQ1kyws`5`T36% z*DqaWIP{#s(j)T!3nOa^$8Brk(_pYg>>`&H^pl#%5+!Pc;&CcjW1%Y*&a^${z5lBJ z+~@bltnMe_DRq%tDbSKt4YSVfRFD3`v%cjg_}fo5RR=xGS;!9D>Idz2* zg9B>7A_6o~@ZEZ#PEYjpG83uzX(tV6(q__(bxxwJ2R3_U(ENtlm~wg89p1*3 z33s;C+7z_ZaprH|kvGJFq8GhaXJuJU{N0enn5+}Z8OGWDV^eo$ZT7c$=>k7~dyA2& z0|ee;8`jM1`9=+^W)k?@hJ{er4XkC$%2ZSo_bG8&l}H+b>@Y!;%(io}N%YF|sF$!& zm@87!{Ut@813b~(ka52=nS5Sgyvz>f4q3cEeZ1jNS}W0KeO~?L2W0IOoES9zhGBvUIw!-u4~kG<+x^kSb88NQYgC2cVI zwr*Q3-*P_~4ZgnosWq0X2Oz7beO^^rr2Qa`U>ruN%UHm0<0j6QbgvDWd?37cSe7?| zI0~E6D>Zl;e|9*)e^Gj$oXn}kW>$ozhgKG`gui@wPRD?y-*|^6g*?LbbdID6NlBxR zIj3E+0hquZ3}fWkHI*;)l+T}AqtkzKs+&!q$R}~yeiYT8t{R*ZNdIU(=RP?QivQn@ zA=rGt7-9`}GIN9YfpmVB-6G zdaaF~5_p)*=TP66;(Xx$G=tpfgMJrYe5}Krd}f0DgX#>AKg&iv3y%3K7AxlbI|ZgY zRGDOIAY*I8mdU`Fsra6yUCO5*fyChbeb_vlwSXWR_t4y7ktTg!rWL_w+fc+J;#EF3 zG;(M$T$^#11rp;1*(rD-cV5`>*?Rq=Xb=@zQAg_c!518xyi|2*fl(wQ@Mx{erP^x~ z>NwObci3=yz&d2{Yo*H9z;EG=w_r%i5B^$4ov!ix0=An9oZ2#Ji633nTPuVYhU+yx z4I0)bDfrIb6_$xK;Z<8Daub<|6!HD~Fa9KXN)mBgtvmqb)!bZt3;i6SqVY( zMDB7R3Hq;>hYU>(fftKFeYZY5V=oT1__|+r`X9`R)n;^Kjn16YLC9Sr<_Xr({oSMe zqZCj!H`V@*GWrx))ue_~=HC^IgI51IHaybVT*BJPVD#RMZxd;)-KKtQ*P@c?!(W@< zNb7K}wJ*Pnak%o!ryD`Vs$G+R9Itu&i9$hIp7$ql^(TH3CDC6E%|gVyGa6?EF2AVV z*6Ebhi6D>Uxf-|YelxldD(*zNtBQj75r#Uej#$yTowXj(ToLhO(#z=C=^5>76YX~6 z>2H9FgAco>6q`E}LFIPIba>>E&DTmCrU#x_>GAj*mB#=ymDsWSz@LtrLTZVpP^gSVGCP22CsJXQ~ST^gur z$ZlW%(0dPFO63!I@#`FnuTHV>%ndZs&7daj@$4njlF-1fPoXqf$2T8Jgj6F95W&ZW zh}y-)Ip>LBbt`e4pOgJY(LsLjQ}wXvmtn6^Ps=D$#_j`9p+Mi~q*+Y9(t5veSNo9n zWovVTvOpTc*d(O+BoUeW4y$vw1sc<_`=penwbjAuRDKX6tXShMF%G%hJg+a8o|tti z=q=!fO-zehJb?L1Q3nw}Gd9d*Mlvlly|z#d*TOkU-KD*(noG|jznMvx2Ip~T zeZM|g;vXZbv9jf_FP{4x;CsXz1L;yn{)5Vdh5gJXgyB&t_@`j|Uc8MWQlW4$LU1Fa z?T+2|%mH)$^gVQpEFusd2shy=(@LHPf7-G2QJ2VlF?fuh$+Fxq36;0#O|z-u%+I;1 z83-?=ZEHa94~J_D(IwIEEJ6MC-j2w)O?A{2KAjzMQ)RP93*MSVq=zMCzC`2=mE?M| z30l4jWVHJu$0t~@{kLz$Ty3mAvKYt+M%EPE$ThoknyDF4J{#m|PIWFl7mO1iBysKAcM8AFlw((Na>zm~PSe9sN#@>FgpNe;Y%IRMj zPzLTPYA_Q*iBzTQcgoai#Gv79G#4?_=zJg`Z2jY%K-$T&T1Kf&$O^G7ndZO~*F{gw zd4(aP(Gwa)EG(LnZiYOWIF@GJL5D9j`h==iI#0ysd<-t)Vt!N21;uUUNi+Y_@i?*< z`o%GKs^M-sO;$#cRL#4w6__XVdG~I=u9Z#UhfqG(jZ8hl@1CE#Mv`83^igZx=_GD@??CLymB4`kY{q0rb!~>YXq+Q2;c{4b*^#4R zz&suNJF?;DAaW_c^^BEmg*w*Ku_hb}S4GdIePc0h`X zpj6&$@7M9wOLxyBI@W$MNvK>m@1*R|WZ-cODwrut@Uttu4~T86dAZ_|z- zykMg6lHB+>1j+Y{>*$x))1>WuizUZNY;>rueESTr;IjhH%4z}20QzS`Z}n;O-t;z$ zv(%>-3K{yKKk>s$f1$T!#h4;rBaq zvLjBcmp|>{Fu=m*m*uxcagFPTYgO$s%CRh-i!cMEcu^+8#&AZZ4YVUtM8BGM@N=_L za@xYoU!(+;1r@B=1w~_Ty)@BZ^Rew^tTw%XU7uo)#f+f%-I#5#KU6n~cp-$X%^M2z_eU>CNvo~W!>+tB} zPnqcoJ7(sD7`yZk-%4&(M^5u>*;g&*vc+*>o0#8Gy(mYYwG>d8pQYH!Oy$AxlrGSjq&6oiI#E3_RJTfUcY$i{>L8$qV&VZmSx&m z`=*crMCSoTc}Y!4l{c+KhjzXGEbJhAAw+jAF*5r*;VEWd_5mxGbC0^2hS*8PwD)Nz>J3&Au%|*n>Tb?r zz>XPS>*SL5d&$Vi2G>Lv&y3ow&IPpk$B}P!vjbHrI-SIXPJ;JZ#XM7D(w#_0;XI5N zm$5WnS@3w+VjmVX#`Wvq0=mzmjHd*%mi`KoGq;PDEO>+RH7g4>4%#q&-68+7!;ab$ zIy3o3_*8o8-~oP!>?46s)RDk&#ZVBN>p_qG$tP4nt1>OSKVuAOBRZU0jr@l?<^LRB z@Q>snw;N4{2W~2-KKC%;*hB&|D7XJ3gb1GEA^Rr@9PEj|)W&gA!j+_tSBpzbz~6FR zSp4u43yko~xGJ6tDN<&=I@d-#4whA~aVu$<0dnV?yfJtzZG!e-5CR|GU5Xfy{LF6PY2Pzsbz<f;x=}Jm9Btx%OiF2Q``d zVhh!P9grombx0?Lyd#Y`_S~-fRqW=Qlh(!XE@k!dp*d`9pS5alaPVJMGXKLgDy0uR zO|0esU;q=qK61S~+3%3MG+@qKa0R*iN5M4%P@_rvf4EZ(7N*t7_gw0Dz0jZcVIaH< zyaifoN@9$q{hfs@tA2jyOOhiLzPF6w^^(cAH_F(QgY@#(Q?u0|tfFjM$&4;B@pA8L zGSKaTD6)#LK<9UsF?JS21N0QsWFXP0b8K?X8Jg74w6_}9I!o6+XRmX|xDWSXKRBSV|N5(DRn3|;!}rzQ zJG6nXrOd$VzcnQz;`HT?!p{Wnt^lQl(_DdfV5ty+j;7bvRoWqsLUq-1_Uajetb<2aEUl0t#S^58Xt%7Z>Q^$SX7zGTFui52gFRru=1yX@aN6a%&C;yByMq7 zx%h>d-m+{yzrvb3aLmau0RUi7Zg*JID@t?!#rA8qcLmZk5B@lCb7w$Sl11Xok(`~w zMj+dRAWm=MkofTV8?*J8we?707>}I0ydpF*%)@^TWI{oN8~Sz!(t8$JLkp9(FZH#U z8?LpU4ibMgFzLIj63FCY<7Jq|m{__aD3`M@d#7PT3Jv0^q|%^($9{Z|9uo~N`
zPmYv)F^6xo5sspaWpNB1m9BIR%S}gSccrPsp1ft;V+MSta%KbyDI0ZCU8k#Y=r0d% z09hR~pEDholrxtfaKV52nr%{nMto}nnrtqN1v7maqP?IRLsXf_F4e?!bL1kFVjhrM_@j+Ksens zgCL~yi@M$V%I7_;J1yicfJ&xy>)YYghS}~6MQQEJetvmMvR`qmsHr%ULyrI#LoN}b2XnGgjWm;Lmy9g3mn9r zT?T=@Q#`HttDDzPRHrPXDzGg&G_J6HyD~7rzB^JfN zqjIP3?&mzV0H)|Ph#%MX3A#z86iQcY_Jd~326wLWu}koMuOTk3NzK$W8xA}JrJo=R z*k&jM{qcVB4Y565B|i%GdaK<=dY&$0j-tD75;9CUR@-0h?wwGGBfhe_b9rCuX*a1=Fn7dzPnfPAr}7jz!N{kM6y6FZrz zN#2RGED_okk~vbHinT9dr(7c5vfNB}lMC?0lq4V%E6@z40>)~k&S;}uh zp}N}U#Dt-*WL1@hp?A;D5V{g7_v8!YlQdIv9yYu973pZZJKK9luj6b0r!5 zJQE3~i0#HPb@p9#C3_ZnALU-oMogfnA6`}I#vO0>FeWeIom=IKU?N=2?pS)2(}c`E zeJ2tL11XsPFarrZKv0{!4FSv+<8?rIEKM7ZV&WaK<4?|RD{2GOj#dpf-i@6P&4X;T z2gV)D3$0R%n!Ax?LoO?YJ_1qQJm(-xCo%y~AK)JP?cd)ZsdLPJ=cLKQuSkG5iuPc? zgOmId!FM^OE@F)ADrDIUm&WiMSpl64PM~YuWM3b!TYigQ#g^x;JB!UHt|o*$CwKJS zAJx;{#~T@sokXii)v~qaKCmDj)0XoccK`&Q&N2lUr_tL+Z!Ou4ZlX7jdw zQE4snmL*u~1ES*?i0+JcIj9z*JPl15Ix3#K=05B;c$qt3+WA6^^|As?V&WQYfoWGR z!9$tuOC#IYVAS>(E0Iy>P||l+4qmA0J`+oV&Uhhq3VfZXiVCWzooC}9p267f+3NjB zzij>y#-|(p2ZcZIG)do>tyn3{#?y*;pin8_kHNZ9#c)vG>0-E}4IqF3-3M4*5Ylmssv z=+|S_hf{yx-(6v8(MB>(XNMzlkO$fneaLVKh|ku!Up09F>;wY$fi6W4KTft;Zkci@GY_x7t*UGEl1LmkUBZ!~yo`oDLP{ z9Iqr464r-cZL;>u)EJYm? z$wf&A46-%5w9gBPYUaYiR_+n>CMKo(%}P@O_^Ec~$gO7z+Cx&VltB`WkoTeqDG9MN z$x}V@ZPZodqSvAhH*zt=`&0|;9Q0)Y(v*!y54L$3b8j~*R?_X9DH_h8+-4Cz)O+mS zphYaXy9Wx)3vw|*wUYsA5%HRd#ZYAHqRF|&s&rgkdEy6o3inwNa68e+R!v3}3o@Tq z4g=w9!6T`Mp?%mMgAgeuDa$>0b=IQLkglE}=T{d8%anb!tmmdfS4QX5J)Q_1oB=sZ zhrI&dOB&{a-m7^#rQ7f663S;F8<7cL>_)86L5pDz7LURj`vLfli1UHT75^_(M5nOsZo zY*;vBw!pFo9D?4LtcH4xbdl3}lnicGn*&C7;1?0QFHgKYiw6sJM>9<8u)}aje$jk+d1MYCyp`lj~U%@8|V{G?cgeh zP5$EP1thyq{~#I!^t(LWfV3CK&-;go3rODqDo-Ci@T2pToq2L0TvVL&S&VPgn*Q~z z8pM{+jz7CjyP2Z7)2EksH=wcLQuwTEa>1i5jWqz6c>)PzBD(*muc$%LNLRiED`#m`Gmfer$MM#HCgk1C zpgr-=ze*_C+<&-*w5AwwB8|9MP--giy#;*5c%hYhL2m=~nZV}t$9&5KM=svCrH4(? zM+p^s9W6(!?|3rn-ZF=pj%yET5i#h||5f$9%%PfSdr(EaC(PI25C@JgU}0ZlQEX87qDU|WK30L$$S%TFc|CeC9!P7!?j_!q!@uYglJmA8IF zeobFeK8hWJEjWaTro2*CGL2#4&r=RVX@57zHi8bBa*Pk3mZvkxvTw$Bd$Sz@yRTr-besi3U2Ph(r2*v(AnT@pwksYryl#^WVXRbVw38TN` zVZ;!hBhD+U(qq2k@0edKw<*ehM`qsSqM#D7qG~f@fDpmv10lp=(u%^-WV%>EIS7&P zU!SCv!dA}8O#!dK*9W=KHs+Iqu81)4FNcKRM?@Xb(FX)G!8KVYvF?zq+Z7mX9?ZQ? z_sB`rwAFT|Iy6(YwKpej7j>^_p_@M$*wE`j)mB%dj_E=Ye5sXC&Rk{M=v|#< zF!ihJw(sCXlS6L5ehH-%_3iBM(|Vqm9l+Z4kl%ycD9#}XlO(BxOTYi0k0jvE}94f{_ z!3d6sDCpIev+~xvAqzQ%Wt8N8tL&xXQxsWi+_x{Jpi|>Ns5~-c)tqIBu~uc=;0q{Y zuh?RY!)Ti>V##~#q&3VQ2^X@ed|Vr6p_`u5Utn$RTX?o0A=wk~{D{b5r*k%G!y>c{ z+|xGEkp1GeK4IRJAx*j43aifp2j%xB!>Zz!NP^u$IvzKX01lU-4ahCwl9E_h8F9|>Kniz+LYXU_6ZjS2npE(5}Y9pjFSe){{V-~ z_GPWY+6!$Rr@xEf+wN~b-sM=79>r3YZ_2JSS=j5I-(LS_@^$3hYvCALmEc+0ec(0> zG}?zlu}wW$SzqvjcnO2o-$enTyv>;VPM1aEb0(xqTI~dt*iS9$1r8x40K)1Cj5A=+ z{Q*aDO#co}62#LRfbm%F2JfR&IOgN?IGYy$Spd@M9vPs7FM;TCG6HFc4zg_8$h!={+bNAJ2=s=2>FP_S?LOcn34PT5a&|+HSXsQ{~T}eWt5bNu1ZW*O8 z`V`5qw6zR3cKG`xCB;Gxn4StT7d?+-gLb++3ne2F1J`%GyW}P#aDqjEmCYiwYkk--n{sAiO1meN7kUv z5wrHZYr}GoEJ72dIZMPmH_zSs*7Ok~R+X<0dJXgJmxD!DH*ClW1QvrnquPx0c^79X z4kEUe)H7eC^+d>)R9I^q=**}DCQe^wA!IodtrNkzZ6<~I_(+~DlQFU41eKW`xFdZR z4ex;wQr9RYh(N%18`&^N%C&sU^V>N7`y}AFUmDBx3JZvz^MezD!0OY7z}u~L<;v9F}}dn zC52(!9UlqXqQ$5>>n=wE>;ut705f|gwwlI>)Ygb8zV`Lm?}Dd1&V0(cZnM4`_HAaX zcKRsRKgLy+)Kh991q~ZD5cFCy=(QF=_aw1KIYzDZmN~6EsyNxa8uTO$fxY~Vvt`0R!>vXTzJmj-Dyc8Yzk3j8r=@b zrsWOoVW(w{gPVazDL06$tkh@h=4l-_vn($UOQmQsa%S^C4{Ne%<_kU|D0|^Z!75Pf zbeo4kDM!frNi!BC`Iv=el{N-mNV$1Lq}1Q6**{Db>H(6?SP}D*#ra}eHxxu3(6$ov zZuIqPm^p{030@Sy3mI&1b09UVMf5s;IW1RtafXvRmqN?NeL0%679G6X(8t;7mFj9B zJ6Yo3;1Z}9%*;K86cl1nrEDj;x}7EwUTb8z#I~}m&pBXZ+LxvTACJ*Te>+XKD;Lrw z)7WTL8JtCTDu!TC{%-JHlLpuE2d7DZT>xFjTzG{iz-qS89P+qSa zM@@s9aWe3!g@cRR#yAEIpE0S}pS8T$5{1^8)YFXR|{|OPACp;I}GK@er zq3gRCyT}Js*(uOXVo|w)fttX9N^r^&^`+_SpNT%9Is7SzheGu_UTQue>vahaYoC>x zR1joCJCc2z-m|+GuXEKeMO%mMQJb40r?8l~Q*cc!yk{NzR%1!d%8?94M#I=eAMy3` zYBZ4(IP}^@*h+b=9bu;Rq)+4dDVn71LYFvu2!(qHjo(o8)QnN$(mO9B zo~0n3WnH?+`(a`nO|(3|JNpAK0g=~c=){i|FWx&Uf-j_GZqlCEIptudC}9)u=PjkJ zFVA@Aa*@ZAv*ODuram7tr9o1@VQFInez0Xu>Rz@_x~b3$4L@^hPtj$fgak#$xgdbM z-Xl}0*#C zIfDQl);;tdnX;19oS0ZBXa6{hT^W%rt1_1(_TinFX}k!i<$`K&zcq9NuI38h5Gf-N zyVat~m|?3b%~t&0uTA^+h+4MD^51eJ=QoKD!I4ibMcAPS4Ctvgv0s@g{*k2u*%f?n zI_JnL7{FeVHdT>h7)5Uei4wehDH=^TTOpEMEUOuBkSM{0z3|+!mafjo?Pf0b*vJ^a zsK#kZ>~@MECTb@~nUbwOP!x+o)5DZ|-zFoJ<#n zh``MgT+DIbh|8a`Vki@1QPs1!aQq%obf#wXYe&W~{!N;*pB5mjOWUbld?BeF zx30yhp@UJ`r52PEoB~c|tgtfJc$6^~x^a^O0c{bF>6f|ifs9u|72g9;-JpWdS%=s8 zPJ7aICa=Ey*nGi)A!e>9qHd>ggp(;M#vVT!C{=C4&$hd=&Wx0eI$TH7mCNf;?zt4` zSsyu+WN3Irog#{(>QhiQv}21~Z64a4RF5BKJ5F9ai@jz%FL1tLxxd(0xz_0Wkh-Wtyqv3mFl_hwL>Z742k)@?DlTSBk$Ug3NF^M(`8T15K4<%Y&X!lj6{Gx`^YJAW5KXAU?RqX zd3csS9|Js`G~iIsK8yA2^Jp)SKpbgAs9|f-_Dag5nyK08VykDoPnWf&vR@%nW0k$d z7+cYZt2qLq*rGo{qFO#PX%RLU;Vny*2!Bk~`p~Gd@Tz zW9a{ikxg|*;-4K2nBK&4Y+%@6QvH)op)8Li6-ch`spB_@q^D18I=P)@#qQlYqa_g zyek_n^NR;Cku2jalV%#ek;I9sy)@r3CH(?Ic4n|7DtnI{e#WAdje~;XlMYbX_sTcx z=|3kK-m!7%k@Fbz_SUdtsm}{vs=urpy3Ckwbn=@;gVf|X{>NIL4rz3|7d>=m5u^Q? zH+%Kfr&;j?nZCtLpQNT$R>3gi1&t0DJx%GE1u3$FX~h+9p7+cf_bFd^6?rQ3QHLJe z=1O(aix&PYVPS3Q=ERQz!-%B=lioEy1y5)$up7>4jib6C>z_evPlexuG_?I@#ONa} zqf_%?!E1fN`;QH_gRy83P(xxFguI^78sn{@#f|7Lj~pWNp_l6{td-QWHJ1<5;9EBx zJ|B&j`abBAj~5)V%IG~Jf^ZKN56|wjxh4{lPRYZJ{1EIjwYIBuF>I{VHPGyav`Vg7A>*K zGvb6J<{l!CR;18vvRTj>4H>5v!p|amR`AFDDFva( z7eDa6Lk?L{xdP{(p*T|0(qr3m=#gT*IW(5^zCP?qb4DhYIPrrS*kUH#i&b;3F!D_a zOb78YM&7$m_^NVo0HwUIgnzxHK;H56ZZ$Es?735cCEq3ko@a@qR5Cw^#RkJvS#^g5 z^U|u_@{sqS310MLL&hP|v)=7-j}KY=`3C5o$(j$Tr><9aXryH6Xs|X1q<4D{-7O6q zU)3+LRbJpks~KB8&{LnU5T9gc?LnXp%hZRjQ{<^*)XBGTo7L2$Pcl zdlD?#GGem|C}r=>ruS)?&`ex9t>>0wN)H z4bxhW`LDFx#WaNV6o^KQN6grxhSXyWH2PIOvozZ??zmKl*0v`kcNff?=NNNpRkr)3 zDoRg0y(G9g_I;Smko>fj^mVS0*t7FG!FoyTlWM0fQ+X0ASh0n6nfJ>sG_5_D?!$j3 z3H_*6HIX|2<7c%^?7g~pa|N6o79-53StNFiRF9%xWaK{!rh9tjRfXt0DxD1G;vSQ6 ziY`*W(1Say=UUn3uwPs)x$g6CwxRrPMfFa?ah+5%rJRJb2jtAJL(ay&XbfN9^M@qtY$CD@WpRwFwx*z$VKW`?_zxq0L7MYgxI}XE01y{ zHc860ikr#+s^@HA~ast*u3OlDMd*_fzJd#v+Jo?s2RJ zU(TE{(7W;&zDkewzfpM)v-v-vyzU!9AjB@(13b2grJ0(|(YxTMOU1>jcM+S8U55 z6-+)+nE1q+_+;VLJmx_?<~4q3{`2R#HqM?l&i*%Ns9HBHF~0Wehv4SXC8uFnRCeWH zsztlM^iAQ~;Y}xIiZ|0qMsFQb;CC0RdP4)u9mmDHZe_b3+JchUI7^K60(PVqGCvH= zQkSXST-0GuaB3eGP*()`_{~=o@)DzWfkTZZc(qL&>t3R|(?9tmP^fkiYQLf4weU7@S|&_*6V*W z)^i|l;3K;G69N{lq$G;EWTwAH*8VY?c3RE_)!3P(fA)j^TlfTPeDD@262sktt^1tl zWqU8rS2WHVF3~ZqW1amN`5KxZa7As5?rcUQdGM@G-!tQ4_dLGEZblVa35x8+mLXNk zL^IWF1ebWNkc8m3Xnnx$nLn&_)CW{XjX3gN>8Ln#-z&*)os<;LVPq9%p_7WYqKvVoi!7JVpG0gt-R1rox_1rY+j8(n3MsR-Co8-lgh-w7F>g;ft#CqK2`XlZIO(UzYKD%B|<%Qq4Qncys-7jz}Aeov^sm2%!F&w@8`qW8Zz8I zqmgVRZRYec>6t1sXDCTU)^e@kw2_l4 T2<*%t<7=ID_^*9DVp1PNH%;DR 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 G%)bC}a3#+G literal 0 HcmV?d00001 -- 2.39.5