Add driver support for M-systems DiskOnChip Products.

Sponsored by:	M-systems Inc.	http://www.m-sys.com
This commit is contained in:
Poul-Henning Kamp 1999-08-06 15:59:07 +00:00
parent dc031cf5c2
commit d4ebee28d2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=49467
11 changed files with 1580 additions and 3 deletions

View file

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $
# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken
disk fd0 at fdc0 drive 0
disk fd1 at fdc0 drive 1
# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README
device fla0 at isa?
#
# Other standard PC hardware: `mse', `sio', etc.
#

View file

@ -0,0 +1,102 @@
SOFTWARE LICENSE AGREEMENT
IMPORTANT! READ CAREFULLY:
THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal
agreement between you (either an individual or a single entity) and
M-Systems Flash Disk Pioneers Ltd. ("M-Systems").
This Agreement relates to the M-Systems' software accompanying this
Agreement, which includes computer software and may include associated
media, printed materials, and ``online'' or electronic documentation
(the ``Licensed Software'').
By downloading, installing, copying, or otherwise using the Licensed
Software, you agree to be bound by the terms of this Agreement.
If you do not agree to the terms of this Agreement, do not install,
copy or use the Licensed Software.
The Licensed Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws and
treaties. The Licensed Software is licensed, not sold.
The Licensed Software is being provided solely for use with M-Systems'
DiskOnChip® product lines.
1. License Grant.
(a) Grant of License. Subject to the terms and conditions of this
Agreement, M-Systems hereby grants you a nonexclusive,
royalty-free, worldwide license (including the right to
sublicense) to use, copy and distribute the Licensed Software
with M-Systems DiskOnChip® products.
(b) Restrictions on Use. The Licensed Software is licensed solely
for use with and to support M-Systems' DiskOnChip® products.
Use of this Licensed Software with, or to support, any other
flash disk, flash card, resident flash array or solid state
disk of any kind is expressly prohibited, and constitutes an
illegal infringement of M-Systems' patent, copyright and other
rights in and to the Licensed Software.
2. Limitations on Reverse Engineering, Decompilation, and
Disassembly. You may not reverse engineer, decompile, or
disassemble the Licensed Software, except and only to the
extent that such activity is expressly permitted by applicable
law notwithstanding this limitation.
3. Termination. Without prejudice to any other rights, M-Systems
may terminate this Agreement if you fail to comply with the
terms and conditions of this Agreement. In such event, you must
destroy all copies of the Licensed Software and all of its
component parts.
4. Intellectual Property Rights. Title to the Licensed Software,
and all rights with respect to the Software not specifically
granted under this Agreement, including without limitation
all rights of modification, disassembly and decompilation and
all copyright, patent, trademark, trade secret and other
proprietary rights and interests are reserved to M-Systems.
You may not remove or alter the "README" or "COPYRIGHT" files
or copyright notices in the Licensed Software.
5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by
applicable law, M-Systems and its suppliers provide the Product
and any (if any) support services related to the Product
("Support Services") AS IS AND WITH ALL FAULTS, and hereby
disclaim all warranties and conditions, either express,
implied or statutory, including, but not limited to, any
(if any) implied warranties or conditions of merchantability,
of fitness for a particular purpose, of lack of viruses, of
accuracy or completeness of responses, of results, and of lack
of negligence or lack of workmanlike effort, all with regard
to the Product, and the provision of or failure to provide
Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF
TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO
DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT.
THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR
PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY,
REMAINS WITH YOU.
6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER
DAMAGES. To the maximum extent permitted by applicable law,
in no event shall M-Systems or its suppliers be liable for
any special, incidental, indirect, or consequential damages
whatsoever (including, but not limited to, damages for loss
of profits or confidential or other information, for business
interruption, for personal injury, for loss of privacy, for
failure to meet any duty including of good faith or of
reasonable care, for negligence, and for any other pecuniary
or other loss whatsoever) arising out of or in any way related
to the use of or inability to use the Product, the provision
of or failure to provide Support Services, or otherwise under
or in connection with any provision of Agreement, even in the
event of the fault, tort (including negligence), strict
liability, breach of contract or breach of warranty of
M-Systems or any supplier, and even if M-Systems or any
supplier has been advised of the possibility of such damages.
7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any
damages that you might incur for any reason whatsoever
(including, without limitation, all damages referenced above
and all direct or general damages), the entire liability of
M-Systems and any of its suppliers under any provision of this
Agreement and your exclusive remedy for all of the foregoing
shall be limited to the greater of the amount actually paid by
you for the Product or U.S.$5.00. The foregoing limitations,
exclusions and disclaimers shall apply to the maximum extent
permitted by applicable law, even if any remedy fails its
essential purpose.
8. Miscellaneous
The laws of the State of California, United States of America,
exclusive of conflict-of-laws provisions, shall govern this
Agreement in all respects.

View file

@ -0,0 +1,73 @@
README and FAQ for the fla driver.
$Id: README,v 1.3 1999/08/01 14:30:46 phk Exp $
[0] COPYRIGHT & LICENSE
Please read the COPYRIGHT file carefully. If you cannot
agree to be bound by the terms of this license, please
contact M-systems and make arrangements with them.
[1] Which devices are supported ?
The driver has been tested with the following devices:
DiskOnChip2000 (8, 12, 24, 32, 40, 72, 144 MB)
DiskOnChipMillenium (8 MB)
[2] Which firmware version ?
The driver has only been tested with version 1.21, but should
also work with earlier versions.
[3] How many devices ?
The driver supports up to 8 devices but have been tested only
with 5 due to hardware limitations in my test setup.
[4] Which FreeBSD versions ?
The driver is tested for 4.0-CURRENT and 3.2-STABLE. Porting
to earlier versions of FreeBSD should be a simple matter of
modifying the fla.c file. [patches are welcome]
For 3.2-STABLE sources earlier than 1999-08-01 you
will need to apply the patch in file patch.00
[5] Can I install FreeBSD with sysinstall ?
Yes, from medio july FreeBSD-4.X snapshots have recognized the
fla devices in sysinstall. You need to build a custom kernel
with the driver though. See below about booting from a fla
device.
[6] How to boot from a fla device ?
The FreeBSD kernel recognizes the root device using various
hacks. These hacks doesn't recognize the fla device so some
"real" hacks are needed to boot from your fla device.
In 4.0 current the easiest way is to configure your kernel with
the
options ROOTDEVNAME=\"fla0\"
In older versions you may need the patch in file patch.01.
Be aware that with this patch the kernel will probably not
boot on normal disks.
[7] How to disklabel a fla device ?
Look at the script in prep.fla.sh, it will do the job for you.
[8] Who to contact ?
doc2k@phk.freebsd.dk will offer limited best-effort help
to the extent time permits.
[9] Will more documentation be forthcoming ?
YES.
Good Luck,
Poul-Henning

451
sys/contrib/dev/fla/fla.c Normal file
View file

@ -0,0 +1,451 @@
/*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you think
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: fla.c,v 1.3 1999/08/06 15:22:09 phk Exp $
*
*/
#include "fla.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/buf.h>
#include <sys/malloc.h>
#include <sys/disklabel.h>
#include <sys/diskslice.h>
#include <sys/module.h>
#include <sys/conf.h>
#include <machine/bus.h>
#include <machine/clock.h>
#include <machine/resource.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <vm/vm_param.h>
#if __FreeBSD_version > 400000 /* XXX ? */
#include <sys/bus.h>
#include <isa/isareg.h>
#include <isa/isavar.h>
#define dev2ul(foo) ((unsigned long)dev2udev(foo))
#endif
#if __FreeBSD_version < 400000 /* XXX ? */
#include <i386/isa/isa_device.h>
#define dev2ul(foo) ((unsigned long)foo)
static int
physread(dev_t dev, struct uio *uio, int ioflag)
{
return(physio(cdevsw[major(dev)]->d_strategy,
NULL, dev, 1, minphys, uio));
}
static int
physwrite(dev_t dev, struct uio *uio, int ioflag)
{
return(physio(cdevsw[major(dev)]->d_strategy,
NULL, dev, 0, minphys, uio));
}
#define nopoll seltrue
#define noparms NULL
#endif
#include <../../contrib/dev/fla/msysosak.h>
MALLOC_DEFINE(M_FLA, "fla driver", "fla driver storage");
static int fla_debug = 0;
SYSCTL_INT(_debug, OID_AUTO, fladebug, CTLFLAG_RW, &fla_debug, 0, "");
#define CDEV_MAJOR 102
#define BDEV_MAJOR 28
static d_strategy_t flastrategy;
static d_open_t flaopen;
static d_close_t flaclose;
static d_ioctl_t flaioctl;
static d_psize_t flapsize;
static struct cdevsw fla_cdevsw = {
/* open */ flaopen,
/* close */ flaclose,
/* read */ physread,
/* write */ physwrite,
/* ioctl */ flaioctl,
/* stop */ nostop,
/* reset */ noreset,
/* devtotty */ nodevtotty,
/* poll */ nopoll,
/* mmap */ nommap,
/* strategy */ flastrategy,
/* name */ "fla",
/* parms */ noparms,
/* maj */ CDEV_MAJOR,
/* dump */ nodump,
/* psize */ flapsize,
/* flags */ D_DISK | D_CANFREE,
/* maxio */ 0,
/* bmaj */ BDEV_MAJOR
};
void *
doc2k_malloc(int bytes)
{
return malloc(bytes, M_FLA, M_WAITOK);
}
void
doc2k_free(void *ptr)
{
free(ptr, M_FLA);
}
void
doc2k_delay(unsigned msec)
{
DELAY(1000 * msec);
}
void
doc2k_memcpy(void *dst, const void *src, unsigned len)
{
bcopy(src, dst, len);
}
int
doc2k_memcmp(const void *dst, const void *src, unsigned len)
{
return (bcmp(src, dst, len));
}
void
doc2k_memset(void *dst, int c, unsigned len)
{
u_char *p = dst;
while (len--)
*p++ = c;
}
static struct fla_s {
unsigned nsect;
struct doc2k_stat ds;
struct diskslices *dk_slices;
struct buf_queue_head buf_queue;
} softc[NFLA];
static int
flaopen(dev_t dev, int flag, int fmt, struct proc *p)
{
int unit;
struct fla_s *sc;
int error;
struct disklabel dk_dd;
if (fla_debug)
printf("flaopen(%lx %x %x %p)\n",
dev2ul(dev), flag, fmt, p);
unit = dkunit(dev);
if (unit >= NFLA)
return (ENXIO);
sc = &softc[unit];
if (!sc->nsect)
return (ENXIO);
bzero(&dk_dd, sizeof(dk_dd));
error = doc2k_size(unit, &dk_dd.d_secperunit,
&dk_dd.d_ncylinders, &dk_dd.d_ntracks, &dk_dd.d_nsectors);
dk_dd.d_secsize = DEV_BSIZE;
dk_dd.d_secpercyl = dk_dd.d_ntracks * dk_dd.d_nsectors;
error = dsopen("fla", dev, fmt, 0, &sc->dk_slices, &dk_dd,
flastrategy, NULL, &fla_cdevsw);
return (error);
}
static int
flaclose(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit;
struct fla_s *sc;
if (fla_debug)
printf("flaclose(%lx %x %x %p)\n",
dev2ul(dev), flags, fmt, p);
unit = dkunit(dev);
sc = &softc[unit];
dsclose(dev, fmt, sc->dk_slices);
return (0);
}
static int
flaioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p)
{
int unit, error;
struct fla_s *sc;
if (fla_debug)
printf("flaioctl(%lx %lx %p %x %p)\n",
dev2ul(dev), cmd, addr, flags, p);
unit = dkunit(dev);
sc = &softc[unit];
error = dsioctl("fla", dev, cmd, addr, flags, &sc->dk_slices,
flastrategy, NULL);
if (error == ENOIOCTL)
error = ENOTTY;
return (error);
}
static void
flastrategy(struct buf *bp)
{
int unit, error;
u_long ef;
struct fla_s *sc;
static int busy;
enum doc2k_work what;
if (fla_debug)
printf("flastrategy(%p) %lx %lx, %d, %ld, %p)\n",
bp, dev2ul(bp->b_dev), bp->b_flags, bp->b_blkno,
bp->b_bcount / DEV_BSIZE, bp->b_data);
unit = dkunit(bp->b_dev);
sc = &softc[unit];
if (dscheck(bp, sc->dk_slices) <= 0) {
biodone(bp);
return;
}
ef = read_eflags();
disable_intr();
bufqdisksort(&sc->buf_queue, bp);
if (busy) {
write_eflags(ef);
return;
}
busy++;
while (1) {
bp = bufq_first(&sc->buf_queue);
if (bp)
bufq_remove(&sc->buf_queue, bp);
write_eflags(ef);
if (!bp)
break;
bp->b_resid = bp->b_bcount;
unit = dkunit(bp->b_dev);
if (bp->b_flags & B_FREEBUF)
what = DOC2K_ERASE;
else if (bp->b_flags & B_READ)
what = DOC2K_READ;
else
what = DOC2K_WRITE;
error = doc2k_rwe( unit, what, bp->b_pblkno,
bp->b_bcount / DEV_BSIZE, bp->b_data);
if (fla_debug || error) {
printf("fla%d: %d = rwe(%p, %d, %d, %d, %ld, %p)\n",
unit, error, bp, unit, what, bp->b_pblkno,
bp->b_bcount / DEV_BSIZE, bp->b_data);
}
if (error) {
bp->b_error = EIO;
bp->b_flags |= B_ERROR;
} else {
bp->b_resid = 0;
}
biodone(bp);
ef = read_eflags();
disable_intr();
}
busy = 0;
return;
}
static int
flapsize(dev_t dev)
{
int unit;
struct fla_s *sc;
if (fla_debug)
printf("flapsize(%lx)\n", dev2ul(dev));
unit = dkunit(dev);
sc = &softc[unit];
if (!sc->nsect)
return 0;
return (dssize(dev, &sc->dk_slices, flaopen, flaclose));
}
static int
flarealprobe(int unit)
{
struct fla_s *sc;
int i;
sc = &softc[unit];
/* This is slightly ugly */
i = doc2k_probe(unit, KERNBASE + 0xc0000, KERNBASE + 0xe0000);
if (i)
return (ENXIO);
i = doc2k_info(unit, &sc->ds);
if (i)
return (ENXIO);
return (0);
}
static int
flarealattach(int unit)
{
int i, j, k, l, m, error;
struct fla_s *sc;
sc = &softc[unit];
error = doc2k_open(unit);
if (error) {
printf("doc2k_open(%d) -> err %d\n", unit, error);
return (EIO);
}
error = doc2k_size(unit, &sc->nsect, &i, &j, &k );
if (error) {
printf("doc2k_size(%d) -> err %d\n", unit, error);
return (EIO);
}
printf("fla%d: <%s %s>\n", unit, sc->ds.product, sc->ds.model);
m = 1024L * 1024L / DEV_BSIZE;
l = (sc->nsect * 10 + m/2) / m;
printf("fla%d: %d.%01dMB (%u sectors),"
" %d cyls, %d heads, %d S/T, 512 B/S\n",
unit, l / 10, l % 10, sc->nsect, i, j, k);
if (bootverbose)
printf("fla%d: JEDEC=0x%x unitsize=%ld mediasize=%ld"
" chipsize=%ld interleave=%d window=%lx\n",
unit, sc->ds.type, sc->ds.unitSize, sc->ds.mediaSize,
sc->ds.chipSize, sc->ds.interleaving, sc->ds.window);
bufq_init(&sc->buf_queue);
return (0);
}
#if __FreeBSD_version > 400000 /* XXX ? */
static int
flaprobe (device_t dev)
{
int unit;
struct fla_s *sc;
device_t bus;
int i;
unit = device_get_unit(dev);
sc = &softc[unit];
i = flarealprobe(unit);
if (i)
return (i);
bus = device_get_parent(dev);
ISA_SET_RESOURCE(bus, dev, SYS_RES_MEMORY, 0,
sc->ds.window - KERNBASE, 8192);
return (0);
}
static int
flaattach (device_t dev)
{
int unit, i;
unit = device_get_unit(dev);
i = flarealattach(unit);
return (i);
}
static device_method_t fla_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, flaprobe),
DEVMETHOD(device_attach, flaattach),
{0, 0}
};
static driver_t fladriver = {
"fla",
fla_methods,
sizeof(struct fla_s),
};
static devclass_t fla_devclass;
DEV_DRIVER_MODULE(fla, isa, fladriver, fla_devclass, fla_cdevsw, 0, 0);
#endif
#if __FreeBSD_version < 400000 /* XXX ? */
static int
flaprobe (struct isa_device *dvp)
{
int unit;
struct fla_s *sc;
int i;
unit = dvp->id_unit;
sc = &softc[unit];
i = flarealprobe(unit);
if (i)
return (0);
dvp->id_maddr = (caddr_t)sc->ds.window;
dvp->id_msize = 8192;
cdevsw_add_generic(BDEV_MAJOR, CDEV_MAJOR, &fla_cdevsw);
return (-1);
}
static int
flaattach (struct isa_device *dvp)
{
int unit, i;
unit = dvp->id_unit;
i = flarealattach(unit);
return (i);
}
struct isa_driver fladriver = {
flaprobe, flaattach, "fla",
};
#endif

View file

@ -0,0 +1,724 @@
SOFTWARE LICENSE AGREEMENT
IMPORTANT! READ CAREFULLY:
THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal
agreement between you (either an individual or a single entity) and
M-Systems Flash Disk Pioneers Ltd. ("M-Systems").
This Agreement relates to the M-Systems' software accompanying this
Agreement, which includes computer software and may include associated
media, printed materials, and ``online'' or electronic documentation
(the ``Licensed Software'').
By downloading, installing, copying, or otherwise using the Licensed
Software, you agree to be bound by the terms of this Agreement.
If you do not agree to the terms of this Agreement, do not install,
copy or use the Licensed Software.
The Licensed Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws and
treaties. The Licensed Software is licensed, not sold.
The Licensed Software is being provided solely for use with M-Systems'
DiskOnChip® product lines.
1. License Grant.
(a) Grant of License. Subject to the terms and conditions of this
Agreement, M-Systems hereby grants you a nonexclusive,
royalty-free, worldwide license (including the right to
sublicense) to use, copy and distribute the Licensed Software
with M-Systems DiskOnChip® products.
(b) Restrictions on Use. The Licensed Software is licensed solely
for use with and to support M-Systems' DiskOnChip® products.
Use of this Licensed Software with, or to support, any other
flash disk, flash card, resident flash array or solid state
disk of any kind is expressly prohibited, and constitutes an
illegal infringement of M-Systems' patent, copyright and other
rights in and to the Licensed Software.
2. Limitations on Reverse Engineering, Decompilation, and
Disassembly. You may not reverse engineer, decompile, or
disassemble the Licensed Software, except and only to the
extent that such activity is expressly permitted by applicable
law notwithstanding this limitation.
3. Termination. Without prejudice to any other rights, M-Systems
may terminate this Agreement if you fail to comply with the
terms and conditions of this Agreement. In such event, you must
destroy all copies of the Licensed Software and all of its
component parts.
4. Intellectual Property Rights. Title to the Licensed Software,
and all rights with respect to the Software not specifically
granted under this Agreement, including without limitation
all rights of modification, disassembly and decompilation and
all copyright, patent, trademark, trade secret and other
proprietary rights and interests are reserved to M-Systems.
You may not remove or alter the "README" or "COPYRIGHT" files
or copyright notices in the Licensed Software.
5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by
applicable law, M-Systems and its suppliers provide the Product
and any (if any) support services related to the Product
("Support Services") AS IS AND WITH ALL FAULTS, and hereby
disclaim all warranties and conditions, either express,
implied or statutory, including, but not limited to, any
(if any) implied warranties or conditions of merchantability,
of fitness for a particular purpose, of lack of viruses, of
accuracy or completeness of responses, of results, and of lack
of negligence or lack of workmanlike effort, all with regard
to the Product, and the provision of or failure to provide
Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF
TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO
DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT.
THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR
PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY,
REMAINS WITH YOU.
6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER
DAMAGES. To the maximum extent permitted by applicable law,
in no event shall M-Systems or its suppliers be liable for
any special, incidental, indirect, or consequential damages
whatsoever (including, but not limited to, damages for loss
of profits or confidential or other information, for business
interruption, for personal injury, for loss of privacy, for
failure to meet any duty including of good faith or of
reasonable care, for negligence, and for any other pecuniary
or other loss whatsoever) arising out of or in any way related
to the use of or inability to use the Product, the provision
of or failure to provide Support Services, or otherwise under
or in connection with any provision of Agreement, even in the
event of the fault, tort (including negligence), strict
liability, breach of contract or breach of warranty of
M-Systems or any supplier, and even if M-Systems or any
supplier has been advised of the possibility of such damages.
7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any
damages that you might incur for any reason whatsoever
(including, without limitation, all damages referenced above
and all direct or general damages), the entire liability of
M-Systems and any of its suppliers under any provision of this
Agreement and your exclusive remedy for all of the foregoing
shall be limited to the greater of the amount actually paid by
you for the Product or U.S.$5.00. The foregoing limitations,
exclusions and disclaimers shall apply to the maximum extent
permitted by applicable law, even if any remedy fails its
essential purpose.
8. Miscellaneous
The laws of the State of California, United States of America,
exclusive of conflict-of-laws provisions, shall govern this
Agreement in all respects.
begin 664 msysosak.o
M?T5,1@$!`0!&<F5E0E-$``$``P`!``````````````"H60```````#0`````
M`"@`#``)`%6)Y>C\____A<!U(.C\____A<!U%_\U`````/\U`````.C\____
MA<!U`C'`R<.0D%6)Y8M%#(M5$*,`````B14`````_P4`````@ST``````74)
MZ/S___^%P'45BT4(.P4`````<P4QP.L&D+@``0``R<.058GE@^PH5U93BUT(
MBWT,:D1J`%?H_/___XE=Z(E]](U%Z%!J"^C\____B47DBT\(A<E]!H'!__\/
M`(G.P?X4C5\<QT<8`````(/^8WXCN!^%ZU'W[HG3P?L%B5W8P?D?B4W<BD78
M*D7<!#"(1QR-7QV#_@E^.KAG9F9F]^Z)T<'Y`HGPP?@?*<&X9V9F9O?IB=?!
M_P*)R,'X'RG'B7W<C12_`=*)5=PJ3=R`P3"("T.X9V9F9O?NB='!^0*)\,'X
M'RG!B4W<C12)`=*)5=R)\"I%W`0PB`-#Q@--0\8#0L9#`0"+1>2-9<Q;7E_)
MPXGV58GE@^PH5U93BT4(B47HBUT,BWT4BW48C57H4FH0Z/S___^)P8M%^(D#
MBU40QP(`!```QP<0````BP+!X`2)1=R+$XE5V(G0,=+W==R)!HL#B478,=+W
M==R%TG1`_P:+11"+$`^O%HE5W(L#B478,=+W==R)!XL#B478,=+W==R%TG09
M_P>+/P^O/HE]W(L;B=@QTO?WB<.+11")&(G(C67,6UY?R<.058GE@^P8BT4(
MB47HC47H4&H%Z/S____)PXUV`%6)Y8/L&(M%"(E%Z(U%Z%!J`>C\____R<.-
M=@!5B>6#[!A64XM="(MU#(M%$(M5%(M-&(E=Z(E%^(E5_(E-](/^`70<<@J#
M_@)T)>LSC78`C47H4&H&Z/S____K*(UV`(U%Z%!J!^C\____ZQB-=@"-1>A0
M:@GH_/___^L(C78`N!`G``"-9>!;7LG#58GER<.-=@!5B>6X`0```,G#B?95
MB>7)PXUV`%6)Y8M%",<``````#'`R<-5B>7)PY"0D%6)Y5.+70CV`PAT"_]S
M;(N#B````/_0Q@,`,<"+7?S)PXUV`%6)Y593BUT(,?:#?0P!=4R-0S10Z/S_
M__^#Q`2%P'4(N`D```#K;Y!J`?^SE````.C\_____[.4````Z/S___^#Q`SV
M`PAT3&H!_W-LBX.$````_]")QNL[C78`]@,(=!)J`/]S;(N#A````/_0B<:#
MQ`C_LY0```#H_/___VH`_[.4````Z/S___^-0S10Z/S___^)\(UE^%M>R<.-
M=@!5B>6+10AJ`/]U#/]P;(M`</_0R<.-=@!5B>53BUT(4^@7____@\0$A<!U
M2FH!C4-L4(G8+0````"-!$"-!,")PL'B"2G"B=#!X!(!PO?:P?H#4NC\____
MA<!U&L=#$`````#'0Q@`````QT,4`````(`+"#'`BUW\R<.058GE5U93BW4(
M5NBQ_O__@\0$A<`/A;\!``!J`8U&;%")\"T`````C01`C03`B<+!X@DIPHG0
MP>`2`<+WVL'Z`U+H_/___X/$#(7`#X6(`0``:@!6Z"O___^#Q`B%P'48_W9L
MBX:(````_]"X&P```.ED`0``C78`/0````!U%?]V;(N&B````/_0N!D```#I
M10$``&:!N/X!``!5JG4=@+C"`0```'04!<8!``!0Z/S___^)1A"#Q`3K")#'
M1A``````QT88`````,=&%`````"`#@C_=A!6Z*?^__^)PX/$"(7;=0JX&P``
M`.GI````@?L`````=0RX&0```.G7````B?:`.^ET&XL#)?\`_P`]ZP"0`'0-
MN`H```#IN````(UV`(U#"U#H_/___X/$!&8]``(/A9H````/MD,-B48$#[9#
M$(E&'`^W0Q:)1B`/MTL.`TX0B4X4#[=#%@'(B488#[9#$`^W4Q8/K\(!R(E&
M)(U#$5#H_/___R7__P``P>`%2,'H"4")1B@#1B2)1BR-0Q-0Z/S___\E__\`
M`(7`=0.+0R`#1A`K1BPQTO=V!$")1@@]]`\``'88BWX$P><)B7X,QT8P`@``
M`(`.`C'`ZP:0N`L```"-9?1;7E_)PXUV`%6)Y5.+10B+70S_<&R+@(P```#_
MT(E#$#'`BUW\R<.058GE@^P$5U93BW4,BUX,BT80BU4(BWH0`<>+5A2)5?S'
M1A0`````.584<U)7BU4(4NA*_?__@\0(A<!T'ST`````=0BX&0```.LUD&@`
M`@``4%/H_/___^L/B?9H``(``&H`4^C\____@\0,_T841X'#``(``(M5_#E6
M%'*N,<"-9?!;7E_)PU6)Y5=64XM]"(M-#%%7Z.7\__^)PH/$"(72=&:!^@``
M``!T7HM%#"M'%,'@"(UP_@^O=P0#=RPQVXUV`(M-$&:+!`MF@SP3`'0;9H7`
M=1;_=P16_W=LBX>`````_]"#Q`R%P'4?BTT,45?HB?S__XG"@\0(`W<$@\,"
M@?O_`0``=KHQP(UE]%M>7\G#58GE@^P$5U93BUT,BWL,BT,0BU4(BW(0`<:+
M4Q2)5?S'0Q0`````.5,4<R975HM5"/]R;(M"=/_0@\0,A<!U%/]#%$:!QP`"
M``"+5?PY4Q1RVC'`C67P6UY?R<-5B>6#[`13BT4(BUT,C57\4O]S$/]P;(M`
M</_0A<!T'#T`````=0FX&0```.L3B?:+1?R)0Q0QP.L'B?:X&P```(M=^,G#
MB?95B>6+50B+30R+01`#0A#_<110_W)LBX*`````_]#)PU6)Y8/L!%=64XM=
M"(M%#(M`#(E%_/]S$%/HBOO__X/$"(7`=",]`````'0KBWW\B<;\N0D```#S
MI6H`4^AG^___@\0(A<!U"+@;````ZSB0/0````!U";@9````ZRF)]F:!N/X!
M``!5JG4:@+C"`0```'01!<8!``!0Z/S___^+3?R)01PQP(UE\%M>7\G#D%6)
MY593BUT(C7,X5O^SE````.C\____@\0(A<!U"U:+0VC_T(`+`3'`C67X6U[)
MPU6)Y8M%"(`@_LG#D%6)Y8M5"(M%#(M(#&:+0CAFB0&+0CR)002+0D`/KT)$
MB4$(BT)`B4$,BT)(B4$0BX*4````BT`HP>`,B4$4,<#)PXGV58GE5E.+=0B+
M30R+010#01"+5D`/KU9$.=!_+(M9$(G8F?=^/(M&/"G0.4$4?QG_<03_<13_
M<0Q3C48X4(M&7/_0,<#K!XGVN#,```"-9?A;7LG#58GE4XM="(M-#(M!%`-!
M$(M30`^O4T0YT'\1BT$0F?=[/(M#/"G0.4$4?@BX,P```.L<D/]Q!/]Q%/]Q
M#/]Q$(U#.%"+0V#_T(7`=0(QP(M=_,G#58GE@^P$5U93BUT(BTT,BT$4`T$0
MB47\BW-`#Z]S1(GPF?=[/(G'.7W\?@BX,P```.L?D/]Q%/]Q$(U#.%"+0V3_
MT(G!A<EU!S'`ZP6-=@")R(UE\%M>7\G#B?95B>575E.+?0R#/0``````=0WH
MM0$``(7`#X6C`0``BP<[!0````!R"[@4````Z8\!``"0BP>-%,"-%%"---4`
M````:@%6Z*GX__^#Q`B%P`^%;`$``(-]"`]W5(M-"/\DC1@```")]O8&`71K
M5N@Y_O__@\0$ZV#V!@AT"[L?````Z3$!``"0]@8!=0]6Z.G]__^)PX/$!.L$
MB?8QVX7;=#96Z`3^__^#Q`3I]0```/8&"'08=!:+10A(@_@/=PC_)(58````
MD/8&`G4+NS<```#IX0```)"#?0@0#X>^````BTT(_R2-F````%;H'OG__^LR
M5NC6]___ZRK_=PS_-^C\____@\0$4.C\____Z8,```!75NC9^O__ZWJ-=@!6
MZ(;X__^)PX/$!.MXC78`5U;HW?K__^M>C78`5U;HY?O__^M2C78`5U;H-?S_
M_^M&C78`5U;H<?S__^LZC78`5U;HA?S__^LNC78`5U;H1?W__^LBC78`5U;H
M??W__^L6C78`5U;HQ?W__^L*C78`5U;H#?[__XG#@\0(ZP>)]KL!````A=MU
M#VH`5NA#]___B</K"XUV`&H`5N@T]___B=B-9?1;7E_)PXGV58GE5E.#/0``
M````#X61````O@`````QVXUV`%/H_/___XF&E````(D8Q@8`@\0$0X'&F```
M`(/[!W;@QP4``````0```.C\____QP4``````````.C\____A<!U1^C\____
MA<!T#>L\C78`N!\```#K,I`QV[X`````.QT`````<R"0C48T4.C\____@\0$
MA<!UV$.!QI@````['0````!RX3'`C67X6U[)PU6)Y5=64[X`````,?\[/0``
M``!S2HUV`&H!5NA<]O__@\0(A<!U*5;H*_;__U;H`?S___^VE````.C\____
MC5XT4^C\____4^C\____@\041X'&F````#L]`````'*YQP4``````````(UE
M]%M>7\G#D)"058GEBT4(#[=5#(M((-/BB=#)PY!5B>6#[`Q75E.+=0B+30QF
MB4WV@WXT`'1[#[?9BT8T9H$\F*W>=4QF@7R8`JW>=4-J!&H(C47X4%-6Z*W_
M__^#Q`B#P`A0C49<4(N&@````/_0BU8TC47XBWWX9@MX!&:)/)J+5C1FBT@"
M9@M(!F:)3)H"#[=5]HM&-&:+!)"+?1!FB0>+1C1FBT20`HM-%&:)`>M$:@1J
M"(U%^%`/MT7V4%;H1?___X/$"(/`"%"-1EQ0BX:`````_]"-1?B+3?AF"T@$
MBWT09HD/9HM(`F8+2`:+?11FB0^-9>A;7E_)PU6)Y8/L%%=64XM="(M%$(MU
M#&:)1?*+?11FB7WL9HE%^(U5^&:)0@2)^<'A$(M%^"7__P``B47X"4WXBT($
M)?__``")0@0)2@1J!&H(4@^WQE!3Z+3^__^#Q`B#P`A0C4-<4(N#A````/_0
M@\04A<!U3(-[-`!T%@^WQHM3-&;'!(*MWHM3-&;'1(("K=Z-1?90C47T4`^W
MQE!3Z(#^__]FBWWR9CM]]'4)BWWL9CM]]G0)N!T```#K!(GV,<"-9>!;7E_)
MPXGV58GE@^P$BTT(#[=5#(M!+(`\`@!]%HU%_E"-1?Q04E'H,_[__P^W1?[K
M!I"X__\``,G#D%6)Y8M%"(M5#(G1P>D+BT`X#[8$`<'J"(G1@^$'T_B#X`,/
MMH`(````R<.058GE5U93BWT(BW4,BET0@W\X``^$C````(GRP>H+BT<XB@P"
M#[;#@_A5=!1_!H7`=!;K&#W_````=`GK#XUV`+("ZPJR`^L&,=+K`K(!B?#!
MZ`B#X`>#^`)T'7<'A<!T#^LWD(/X!'0;@_@&="+K*H#A_`C1ZR.0@.'SB-#`
MX`+K%HGV@.'/B-#`X`3K"HGV@.$_B-#`X`8(P8GRP>H+BT<XB`P"C67T6UY?
MR<.-=@!5B>6#[`175E.+=0B+?0R#?C@`=!=75N@(____B$7^@\0(/!%T!@^V
M1?[K.6H$:@*-1?Y0C4<&4(U&7%"+AH````#_T(U=_HI%_@I#`27_````4%=6
MZ/;^__^*1?X*0P$E_P```(UE\%M>7\G#C78`58GE@^P(5U93BWT(BT4,,=+W
M=QC!X@F)5?S'1?C_____#[?0BT<P9HL<4&:!^___=$B)]@^WPU!7Z(;\__^+
M3?R--`%65^A%____@\00//]T*#P1=`['1?C_____A,!T`XEU^`^WPU!7Z!+^
M__^)PX/$"&:!^___=;J+1?B-9>Q;7E_)PXUV`%6)Y8/L!%.+70AJ!&H$C47\
M4`^W10Q04^@?_/__@\0(!0@$``!0C4-<4(N#@````/_0BT7\9@M%_B7__P``
MBUWXR<.058GE@^P(5U93BUT(BW40BWT4:@1J"(U%^%`/MT4,4%/HT_O__X/$
M"`4(`@``4(U#7%"+@X````#_T(M5_&8+5?YFB1:+1?B)!XUE[%M>7\G#C78`
M58GE@^P(5U93BW4(BTT0BWT4BUT,C57X9HE*!,'A$(M"!"7__P``B4($"4H$
MB7WX:@1J"%(/M]M35NAE^___@\0(!0@"``!0C49<4(N&A````/_0C67L6UY?
MR<-5B>575E.+70B+50RX`0```(72=`;V0A0"=0VX&@```.FI````C78`C7M<
MB=;\N0T```#SI<=#+`````#'0S``````QT,,`````#M#8'T+D/]##`'`.T-@
M?/:+2PR)2R"+0V@/KT-DT_AFB4,<#[?0@<(``@``N`$```#3X#G"=B2^`0``
M`(GV_T,@9L%K'`$/MU,<@<(``@``BTL@B?#3X#G"=^/'`P$```#'0SS_____
M_W-XZ/S___]0Z/S___^)@Y````!FQT,J```QP(UE]%M>7\G#B?95B>53BUT(
M#[=#'%#H_/___XE#+`^W0Q`!P%#H_/___XE#,(-[+`!T!(7`=0>X/P```.L"
M,<"+7?S)PY!5B>6#[`A64XMU"`^W70R+1BS&!`-KC47\4(U%^E!35N@7_O__
M_W7\:@!35NA?_O__C67P6U[)PU6)Y8/L$%=64XMU"(M]#`^WSXM&+(`\`?]T
M(8H$`21_/$!V#+@=````Z?D```")]@^WUXM&+(`\`O]U!&;_3@@/M]^+1BR`
M)`.`BT8L@`P#:HU%_%"-1?I04U;HI/W__X/$$(-^-`!T$XM&-&;'!)BMWHM&
M-&;'1)@"K=X/M]^+3B#3XP^WQT#3X#G#<RL/M\=`B47TC78`:/\```!35NAT
M^___@\0,@<,``@``BTX@BT7TT^`YPW+?BT8,BTX@*<&X`0```-/@4`^WUXE5
M\(G0T^!0C49<4(N&B````/_0B<.#Q`R%VW0/BU7P4E;HU?[__XG8ZS"0_T7\
M=0?'1?P!````_W7\:&D\```/M]]35NA"_?__A<!U#8M&+,8$`_]F_T8(,<"-
M9>1;7E_)PY!5B>6#[`A75E.+70B+=0S_=11H``(``/]U$%:->UQ7BX.$````
M_]")1?B#Q!2#^!UU,F:+1?ZT`&:)1?Z`3?\1QD7^$6H15E/HF_K__VH$:@*-
M1?Y0C48&4%>+@X0```#_T.L):E564^A[^O__BT7XC67L6UY?R<-5B>6#[`A7
M5E.+=0B_`@```(M&>,=`'`$```!J`F@``@``_[:0````BU4,4HU>7%.+AH``
M``#_T(/$%(/X&75-:@1J"(U%^%"+50Q24XN&@````/_0:@1J"(U%^%"+51!2
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
M5U;HY/W__X/$#$.#^P-^VXUE]%M>7\G#C78`58GE@^P05U93BUT(BWT,@SL`
M=`RX%P```.D6`0``B?:+=1"-!#X[0R1V&;@;````Z?\```"-=@"X'P```.GR
M````B?;'1?@`````Z=8```!74^@Q\/__B47P@\0(@_C_#X2Y````B?@QTO=S
M&&:)1?8/M\B+0S`/MQ1(BT,L@#P"_W0HB@0")'\\0'8?45/H6/?__X/$"(7`
M#X65````5U/HXN___XE%\(/$"&:+1?ZT`&:)1?[&1?X`:@"+=?!64^BB[O__
M:@1J`HU%_E"+1?"#P`90C4-<4(N#A````/_0BTL@T^Z)\0^WT8M#+(/$((`\
M`@!]"P^W5?:+0S!FBPQ09HMU]F8Y<RIV$P^WT8M#+/8$`G\/A!S____^#`+_
M1?A'_T-0BW40.77X#X(>____,<"-9>1;7E_)PU6)Y3'`R<.058GEBT4(BT`D
MR<.058GE4XM="(-[+`!T"_]S+.C\____@\0$@WLP`'0+_W,PZ/S___^#Q`2#
M>S0`=`O_<S3H_/___X/$!(-[.`!T"/]S..C\____BUW\R<.-=@!5B>6#["A7
M5E.+50B+71"-!-*-!(*--(4@````:@YJ`(U%\%#H_/___\=&-`````#'1C@`
M````4U;H)O#__X/$%(7`#X62`P``BT44C4Y<B0AFQT8$``!F@WX<`'12C5WP
MC78`:@!J#E,/MT8$4%;H..O__X/$"%"-1EQ0BX:`````_]!J!FC<````4^C\
M____@\0@A<!T#F;_1@1FBT8$9CM&''*^9HM&!&8[1AQR#+@:````Z2$#``")
M]F:+1@1`9HE&!F8[1AQS48U=X(GV:@!J#E,/MT8&4%;HS.K__X/$"%"-1EQ0
MBX:`````_]!J!FC<````4^C\____@\0@A<!T#F;_1@9FBT8&9CM&''*^9HM&
M!F8[1AQR!F;'1@;__V:+1?9FB48<BT7X9HE&'HU%^E#H_/___\'H"8E%W(E&
M)&:+1AYF`48<N@$```"+7B")T(G9T^!(B484@\/WB=G3XHE6&(M]W(U$.O\Q
MTO=V&&:)1A"+?B33[XE]W`^W3=P/MT8<#[=6'BG0@\0$.<%^#+@7````Z3T"
M``")]E;HEN___X/$!(7`#X4J`@``QP8`````:@(/MT8<4/]V+`^W1@105NC@
MZ?__@\0(!0`"``!0C49<4(N&@````/_0B478@\04A<!T$5;HO_W__XM%V.GB
M`0``C78`,=MF.UX0<Q0/M].+1C!FQP10__]F0V8[7A!R[#';9CM>''-"9CM>
M'G(89CM>!'029CM>!G0,#[?3BT8L@#P"_W0<#[?3BT8L@#P"_W0&Q@0":^L*
M#[?3BT8LQ@0":F9#9CM>''*^,=MF.UX<<RZ)]@^WTXM&+(H$`@26/`%V%5)6
MZ%[X__^)1=B#Q`B%P`^%6____V9#9CM>''+49L=&"```9HM>'F8[7AQS,`^W
MPP-&+(`X$'0%@#B0=1`/M\-05N@^\___@\0(ZPF0@#CO=0/&`/]F0V8[7AQR
MT&;'1@@``&:+7AYF.UX<<QF+5BR0#[?#@#P0_W4$9O]&"&9#9CM>''+K9HM&
M'F:)1BC'1E``````QT9,`````,=&2`````#'1E@`````QT94`````(M]#(DW
MQT<$L!L``,='"%0?``#'1Q2X'P``QT<@_"```,='&/0@``#'1QP((0``QT<,
M`````,='$``````/MT8<P>`"4.C\____B48T@\0$A<!T)C';9CM>'',>#[?#
MBU8T9L<$@JW>BU8T9L=$@@*MWF9#9CM>''+B#[=&'(M.((/!]=/@4.C\____
MB<*)5CB#Q`2%TG05#[=&'(M.((/!]=/@4&I54NC\____,<"-9<Q;7E_)PY!5
MB>564X,]``````!^"KAF````ZU:-=@"+-0````"-%/4`````N`````#'!`)8
M(0``QT0"!`````#_!0`````QTKM,````N5````"0C032C02"P>`"QP08````
M`,<$"`````!"@_H'=N,QP(UE^%M>R<.0D%6)Y8M-"(M5#(G0P>@(B$$!B!')
MPXUV`%6)Y8M%"&8/ME`!9L'B"&8/M@`!P@^WPLG#B?95B>564XMU"(M=#`^W
MPU!6Z+?____!ZQ!3@\8"5NBJ____C67X6U[)PXUV`%6)Y593BUT(4^BJ____
MB<:#PP)3Z)____\/M];!X!`!PHG0C67X6U[)PY"058GEN`$```#)PXGV58GE
MR<.-=@!5B>7)PXUV`%6)Y3'`R<.058GER<.-=@!5B>7)PXUV`%6)Y3'`R<.0
M58GE,<#)PY!5B>7)PXUV`%6)Y5=64XM]#(,]``````=V"KAF````Z:T````Q
M]H,]``````</AY$```"0_S4`````Z/S___^)PXDS:@)3Z/S___]7BU4(4O\S
MZ/S___^)0RB#Q!B%P'1CQT4(`````#'_QT-`/"8``,=#1$@F``#'0TA0)@``
MQT-,6"8``,=#4&`F``#'0U1H)@``QT-8<"8``,=#7'@F``#'0V``````QT-D
M@"8``$;_!0````"#/0`````'#X9P____A?9T!#'`ZP6X/````(UE]%M>7\G#
MD)"058GEBU4(BT(8BT`HQH`&$````(M"&(M`*,:`!A````K)PXGV58GEBU4(
MBT(8BT`HQH`&$````(M"&(M`*,:`!A```"K)PXGV58GEBT4(BT`8BT`HQH`&
M$````LG#C78`58GE@^P$5E.+=0C&1?\`BT88]D`<"'0L,<F)PXM#*(I5_XJ`
M!A````#"B%7_08/Y`7[IBT88BT`HBH`&$```ZRZ-=@`QR8M>&(UV`(M#*(I5
M_XJ`!Q````#"B%7_08/Y`7[IBT88BT`HBH`'$```)(`E_P```(UE]%M>R<.-
M=@!5B>575E.+70B+=0R+31#V0Q4!=3>+?13WQP0```!T)(L1@>+_`0``QP90
M````@_H'=PF!`0`!``#K;Y"#`?CK:8UV`,<&`````.M>BT,89HLY9B-X"(GX
M#[?0*1&+?13WQP0```!T!H'"``(``(M#&`^W0`HYPG,+QP8`````ZQV-=@"+
M0Q@/MT`&.<)S"<<&`0```.L'D,<&4````(M#&`^W0`I((<(!$8UE]%M>7\G#
MB?95B>6#[`164XMU",9%_P`QR8M>&(M#*(I5_XJ`(!````#"B%7_08/Y`W[I
MBT88BT`HBH`$$```B$7^,<F+7AB0BT,HBE7_BH`@$````,*(5?]!@_D!?NF*
M1?[`Z`<T`27_````C67T6U[)PY!5B>564XMU"#';B?96Z(+___^#Q`2%P'4'
MN`$```#K"T.!^R]U``!^XS'`C67X6U[)PXGV58GE@^P$4XM-"(M5#,9%_P"+
M01B+0"B(D`00```QVXM)&(GVBT$HBE7_BH`@$````,*(5?]#@_L#?NF+7?C)
MPU6)Y8/L!%93BW4(BUT,QD7_`&H(5NBF____BT88BT`HB)@%$```,<F#Q`B+
M7AB)]HM#*(I5_XJ`(!````#"B%7_08/Y`W[I:AE6Z''___^-9?1;7LG#B?95
MB>6+30B+01B+4"B*@@$0``"$P'4;QH("$```A8M!&(M`*,:``A```(6+01C&
M0!4`R<.058GE4XM%"(M=#&H`_W`<Z/S___^(F`(0``"(F`(0``"+7?S)PXUV
M`%6)Y8/L!(M5#(J"`!```#PP=16*@@80``"(1?^*1?^*D@80``#K$Y"*@@<0
M``"(1?^*1?^*D@<0```PT(A%_HI%_J@$=`8QP.L'B?:X`0```,G#D%6)Y8M5
M#,:"`A```(3&@@(0``"$QH("$```A<:"`A```(6*@@`0```\('0*BH(`$```
M/#!U%E+_=0CH;?___X7`=0FX`0```.L$B?8QP,G#58GE@^Q(4XM=##'2C4VX
MD(H$&H@$"D*#^D=^](!]N%5U1H!]N:IU0(!]NA!U.FH,:.(```"-1;]0Z/S_
M__^%P'4*N#````#K(8UV`(!]^%5U%H!]^:IU$(!]^A!U"K@@````ZP6-=@`Q
MP(M=M,G#D%6)Y8/L!%=64XM]#(7_=3"#?1``=2J+/0P```"+#1````")31#K
M,I")WXV/`"```(D-%````(GXP>@,Z5L!``")/0P```"+31")#1````#'!10`
M````````@ST4``````^%*`$``(M-$(D-%````)"A%`````4`X/__HQ0````Y
M^'(I4(M-"%'H`____X/$"(7`=-R+'10```#&@P(0``"$QH,"$```A.O&B?:+
M31")#10```"-=@"A%`````4`X/__HQ0````Y^')54(M-"%'HN_[__XG&@\0(
MA?9TVHL=%````,:#`A```(7&@P(0``"%4XM-"%'H\/W__X/$"(7`=;6Z!1``
M`(/^,'4%NAL0``"A%````,'H#8@$&NN9D(D]%````.MF_S44````BTT(4>A9
M_O__B<:#Q`B%]G1$BQT4````4XM-"%'HG/W__X/$"(7`=2VZ!1```(/^,'4%
MNAL0``"*!!H/MM"+'10```")V,'H#27_````.<(/A*3^__^!!10`````(```
MBTT0.0T4````<H\QP(UE\%M>7\G#D%6)Y593BW4(BT8(#Z]&$$B+70PAP_9&
M%0%T#XG8P>@)P>`(#[;3B<,)TVH55N@B_/__BT88BU`HBT`DB!P0BT88BT@H
MBU`DB=C!Z`B(!`J+1AB+2"B+4"2)V,'H$(@$"HM&&(/$"/9`'`AT"HM`*,:`
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
M&0```%;HY?+__X/$!&H85NC&]/__BT7DC6786UY?R<.-=@!5B>6#[`A75E.+
M=12+?1B+31")3?S'1?@``@``]\<$````=`?'1?@(````BTT(4>@<]?__#[=%
M#(M5^$HAT(M=^"G#@\0$A?9^/HGV.?-^`HGS@?L``@``=`.#Y_V)^%!3BTW\
M48M-#%&+30A1Z`K^__^#Q!2%P'41*=X!70P!7?R+7?B%]G_$,<"-9>Q;7E_)
MPXGV58GE@^P05U93BW4(QT7X`````(M=#`^O7@2)7?S_=ASH_/___XG'@\0$
MA?]T"K@3````Z60!``"+50P#51"+1A@/MT`.#Z]&##G"?@NX'0```.E%`0``
MD%;H7O3__XG8BTX8,=+W<1B)PXA=\P^V7?-##Z]9&(G8F?=^!(G#BTT,`TT0
M@\0$.=E^1RM%#(M5$"G"4E-6Z&7___^)QX/$#(7_="CI\P```(UV`,=%^!T`
M``!H_P```%;HFO?__U;H+//__X/$#.FV````*UT,B5T0C47\4%;H'/C__S'_
M@\0(.WT0#XV8````B?:+1AAFBU@29@^O70QH_P```%;H5??__U;HY_+__VI@
M5NA']___:A56Z`OS__^+1AB+4"B+0"2('!"+1AB+4"B+0"1FP>L(B!P0BUX8
M@\0<]D,<"'0*BT,HQH`>$````&H15NC1\O__:-````!6Z/KV__]6Z(SR__]6
MZ.+X__^#Q!BH`0^%-____T?_10P[?1`/C&K___^#??@`=1%6Z+[X__^H`70'
MQT7X'0```(M%^(UEY%M>7\G#58GEBT4(C12`C110C025P`0``,G#C78`58GE
M4XM="&H`_W40BT,8_W`@_W4,4^B5_?__BT,<QT`<`0```(M#&(M`((M=_,G#
M58GE@^P$5E.+30B*70R)WHI=$(A=_XM1&(!Z%0`/A<D!``"#?10`#X6_`0``
MB?`E_P```&:)`HM1&&8/ML-FB4("BT$89L=`$A``B?`E_P```#V8````#X33
M````/>P````/A:@!```/ML,]XP```'16?Q2#^&1T,H/X<P^$A@```.F)`0``
MD#WF````=%E_#SWE````=##I<P$``(UV`#WJ````#X5E`0``9L<!9.R+01AF
MQT`$``''00@``"``Z4$!``"-=@!FQP'E[(M!&&;'0`0``L=!"```0`"`214!
MZ2`!``")]F;'`>;LBT$89L=`!``"QT$(``"``(!)%0'I``$``(GV9L<!<^R+
M01AFQT`$``+'00@````!@$D5`8M!&&;!8!(!Z=@```")]@^V1?^#^',/A(<`
M``!_$8/X9'0O@_AK=$/IP@```(GV/>8```!T47\//>4```!T+.FK````C78`
M/>H````/A9T```!FQP%DF(M!&&;'0`0``<=!"```(`#K6XGV9L<!Y9B`214!
MBT$89L=`!``"QT$(``!``.L^D&;'`>:8@$D5`8M!&&;'0`0``L=!"```@`#K
M(I!FQP%SF(M!&&;'0`0``L=!"`````&`214!BT$89L%@$@&`214"ZQN0B?`E
M_P```(M1&&8[`G459@^V1?]F.T("=0JX`0```.L%C78`,<"-9?1;7LG#C78`
M58GE@^P$5U93BUT(QD7_`&B0````4^@U]/__:AU3Z/GO__^+0QB+4"B+0"3&
M!!``BT,8@\00]D`<"'0*BT`HQH`>$````&H94^C.[___:@KH_/___XM#&(M0
M*(I%_XJ2#1````#0B$7_,<F#Q`R+<QB-=@"+1BB*5?^*@"`0````PHA5_T&#
M^0%^Z8M#&(M0*(M`)(H4$(A5_FH*Z/S___^+0QB+4"B*1?^*D@T0````T(A%
M_S')@\0$BW,8C78`BT8HBE7_BH`@$````,*(5?]!@_D!?NF+0QB+4"B+0"2*
M!!"+?0Q7)?\```!0#[9%_E!3Z.S\__^#Q!"#^`%T"#'`Z8(```"0_T,,:A!3
MZ`GO__^+0QB`>!4`=6B#?0P`=6)FQT`*``&+4QAFBT($9HE"!O9#%0%T"XM#
M&&;'0`P0`.L)BT,89L=`#`@`BT,89HMX!D]FB7@(BTL8#[=!$@^W408/K\*)
M0P2+0PB9]WL$9HE!#HM#&&:+4`QF`U`&9HE0$+@!````C67P6UY?R<.-=@!5
MB>6#[!!75E.+=0C'1?@`````QD7S`/]V'.C\____B<*-!)*-!$*-!(7`!```
MB488_W8<Z/S___]0Z/S___^)PHM&&(E0(&B%````5N@"[___:A#_=ASH_/__
M_VIX_W8<Z/S___^+1AC'0!@!````BT88QD`4!(M&&,9`%03'1@P`````QT8(
M```@`,=&$`$```"#Q"1J`/]V'.C\____B<*+1AB)4"B+5AB+0BB#Q`B*@``0
M```\,'41@$H<"(M&&,=`)``(``#K"Y"+1AC'0"0`&```C47X4%;H?/+__XM6
M&(/$"/9"'`AT'(M"*(J`!A```(A%_XM2*(I%_XJ2!A```.L=B?:+5AB+0BB*
M@`<0``"(1?^+4BB*1?^*D@<0```PT(A%_HI%_J@$#X1U`0``BT88BT`HBH``
M$```OQ`````\,'4%OP(```"+1AC&0!4`BT88B<*`>!4#=T&0B="+4"B*0!6(
M@@,0```QVSG[?1T/ML-05NA*[?__:/\```!6Z#/Q__^#Q!!#.?M\XXM&&/Y`
M%8M6&(!Z%0-VP(M&&,9`%0"+1AB+4"B*0!6(@@,0``!J&%;HRNS__\9%\@"#
MQ`B-=@`QVSG[?7&)]HM%^(E%](U%]%!6Z'SQ__]35NB%_/__@\00@_@!=2F*
M3?+^P8A-\X!]\@!U#8M&&(M6"`^O5A`!4!B+1@@/KT80`47XZR2)]H!]\@!U
M%HG?BU88B=@/KT8(#Z]&$(E"&.L(B?:)^\9%\@1#.?M\D?Y%\H!]\@-V@(M&
M&,9`%0"+1AB+4"B*0!6(@@,0``"#?@P`=$3'1?@`````C47X4%;HY_#__XM&
M&(I-\XA(%%;H&.K__\=&*,`R``#'1BQL-0``QT8DV#0``,=&("@W``"`3A0"
M,<#K!;@:````C67D6UY?R<.-=@!5B>6#/0``````?R2+%0````"-!)4`````
MQX``````"#L``/\%`````#'`ZPB-=@"X9@```,G#D%6)Y8/L.%=64\=%R```
M``"+30A1Z/S___^)PK\:````C47,4%+H_/___XG&@\0,A?9T"8/^&@^%M0``
M`(M-#,=!)``````QVSL=`````'U"A?]T0K@`````@WS8!`!T*8T4W0````")
MQXU%R%`QP(7V=0.-1<Q0BTT,48M-"%&+!#K_T(G'@\000SL=`````'R^A?]U
M68-]R`!T#(M%R%"+0##_T(/$!(-]$`!T03';.QT`````?3>^`````(UV`(T$
MW0````"#?#`$`'48:@!J`(M-#%&+30A1BP0P_]"#Q!"%P'0)0SL=`````'S1
MB?B-9;Q;7E_)PXUV`%6)Y3'`R<.058GE4XM-"(M=#&8/MA&*00$D`V;!X`@)
MPF:)$P^^40&!XOP```#!^@**00(D#V:89L'@!@G09HE#`@^^40*!XO````#!
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
M`'085FB0````BT40`=A05XM-#/_1@\00ZP60Q@0SD(7;=0B*#HA-_.LMD(H$
M,SI%_'4'B@8X1?MT'8I%_&;!X`B*%#-F#[;2"=!FB0>*3?J(##/K#HGVBDWZ
MB`PS0X/[#GZ(C4/_A=AT"6;'!P``ZP6)]HE?$(UE[%M>7\G#D%6)Y8/L!%=6
M4XM]",9%__^#?0P`=`3&1?_P:@"+31!15XM'(/_0B<:#Q`R#?0P`=!-6:)``
M``!J`%>+30S_T8/$$.L#Q@:0QT<,`````(GV:@"+1PP/KT<(`T404%>+1R#_
MT(G&@\0,@W\,`'X:B@:)PF;!X@B+1Q"*!#`E_P````G"9CL7='2#?PP`#Y3`
M#[;8.U\0?5*0@WT,`'0>5FB0````BT<,#Z]'"`-%$`'84%>+30S_T8/$$.L$
MQ@0SD(H$,XG"9L'B"(G8`T<0B@0P)?\````)PF8[%W4?BDW_B`PS0SM?$'RO
MBT<0`4<,@7\,SP<```^.5/___VH`BTT045>+1R#_T(G&BDW_B`XQP(-_#`!U
M!;@:````C67P6UY?R<-5B>6#[`A3BT4(:@#_<!SH_/___XG#BA.(5?LQR832
M=0*Q_\=%_`````"+1?R(#!B+1?R*!!@/MM`/OL$YPG0$,<#K#HM%_(I5^X@4
M&+@!````BUWTR<.058GE5U93BT4(BW4,OQH```")1AQ6Z([___^#Q`2%P'5[
M9L<&``#'1A0`````QT8@'$D``,=&)#!)``#'1BA<20``QT8L:$D``,=&,'1)
M```QVSL=`````'T>B?:%_W0<5HL$G0````#_T(G'@\0$0SL=`````'SDA?]U
M!#'`ZR''1@@``!``QT8$`!```,=&#`$```#'1A`!````N!H```"-9?1;7E_)
MPY"0D%6)Y8M%"(L`R<.)]E6)Y8M%"(T40(T4D(T$U2`&``#)PXUV`%6)Y8M5
M"(T$E0````"+@&`)``#)PXUV`%6)Y8M%"%"+0%S_T,G#B?95B>564[L@!@``
M,?8[-0````!S=&CZ````4^CM````:A!3Z,T```!J`E/H]0```,=#"`````!H
M$`(``.C\____B02U8`D``(/$'(7`=0JX/P```.LUC78`4XM#3/_0@\0$A<!U
M)5.+0TC_T,=#%`````#'0PP`````@\0$1H/#:#LU`````'*,,<"-9?A;7LG#
MC78`58GEBT4(BT`LR<.058GE5U93BW4(BWT,@7XL_W\``'4)5HM&4/_0@\0$
MBT8T]]B)^R'#P>L,.5XL=!%35HM&5/_0B5XLQT8<`0```(M&-$@A^`-&,(UE
M]%M>7\G#C78`58GEBU4(BT4,B4(\QT(L_W\``,G#C78`58GEBU4(BT4,B4(X
MQT(L_W\``,G#C78`58GEBT4(BU4,P>(,B5`TBU`HP>(,B5`PQT`L_W\``,G#
MC78`58GEBT4(@WT,`'4(4.AN````ZP['0"S_?P``QT`<`0```,G#58GE4XM=
M"/]##(-[%`!U%U.+0T3_T(/$!(-[(`!T"/]S)(M#(/_0QT,4`@```(M=_,G#
MD%6)Y8M%"(-X#`!^`_](#,G#C78`58GEBT4(BU4,BTT0B5`@B4@DR<-5B>6+
M10B#>!``=4>#>!@"=0K'0!@!````ZPZ0@W@8`74'QT`8`````(-X#`!U)(-X
M%`)U"\=`%`$```#K%8GV@W@4`74-QT`4`````%"+0$C_T,G#C78`58GEBT4(
M@WA@`'0)_W4,4(M`8/_0,<#)PXUV`%6)Y5.+70AJ`%/H5?[__U/H3____VH`
M4^CO_O__4XM#9/_0BQN-!)T`````_[!@"0``Z/S___^+7?S)PTTM4WES=&5M
M<R!$:7-K3VY#:&EP`````(`*``#("@``R`H``,@*``"`"@``@`H``,@*``#(
M"@``R`H``,@*``#("@``D`H``)`*``"0"@``D`H``/`*``#P"@``\`H``/`*
M``#@"@``X`H``/`*``#P"@``X`H``/`*``#P"@``X`H``.`*``#@"@``X`H`
M`.`*``#P"@``!`L```P+``#!"P``N`L``+@+```X"P``2`L``%0+``!@"P``
M;`L``'@+``"$"P``D`L``)P+``"H"P``%`L``"P+``!!3D%.1``H0RE-+5-Y
M<W1E;7,````````````````````15?\`@`P````/``````!550`````!``,`
M!P`/`!\`/P!_`/\`````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````$=#0SH@*$=.52D@96=C<RTR+CDQ+C8V(#$Y
M.3DP,S$T("AE9V-S+3$N,2XR(')E;&5A<V4I``!'0T,Z("A'3E4I(&5G8W,M
M,BXY,2XV-B`Q.3DY,#,Q-"`H96=C<RTQ+C$N,B!R96QE87-E*0``1T-#.B`H
M1TY5*2!E9V-S+3(N.3$N-C8@,3DY.3`S,30@*&5G8W,M,2XQ+C(@<F5L96%S
M92D``$=#0SH@*$=.52D@96=C<RTR+CDQ+C8V(#$Y.3DP,S$T("AE9V-S+3$N
M,2XR(')E;&5A<V4I``!'0T,Z("A'3E4I(&5G8W,M,BXY,2XV-B`Q.3DY,#,Q
M-"`H96=C<RTQ+C$N,B!R96QE87-E*0``1T-#.B`H1TY5*2!E9V-S+3(N.3$N
M-C8@,3DY.3`S,30@*&5G8W,M,2XQ+C(@<F5L96%S92D``$=#0SH@*$=.52D@
M96=C<RTR+CDQ+C8V(#$Y.3DP,S$T("AE9V-S+3$N,2XR(')E;&5A<V4I``!'
M0T,Z("A'3E4I(&5G8W,M,BXY,2XV-B`Q.3DY,#,Q-"`H96=C<RTQ+C$N,B!R
M96QE87-E*0``1T-#.B`H1TY5*2!E9V-S+3(N.3$N-C8@,3DY.3`S,30@*&5G
M8W,M,2XQ+C(@<F5L96%S92D``$=#0SH@*$=.52D@96=C<RTR+CDQ+C8V(#$Y
M.3DP,S$T("AE9V-S+3$N,2XR(')E;&5A<V4I``!'0T,Z("A'3E4I(&5G8W,M
M,BXY,2XV-B`Q.3DY,#,Q-"`H96=C<RTQ+C$N,B!R96QE87-E*0``1T-#.B`H
M1TY5*2!E9V-S+3(N.3$N-C8@,3DY.3`S,30@*&5G8W,M,2XQ+C(@<F5L96%S
M92D``$=#0SH@*$=.52D@96=C<RTR+CDQ+C8V(#$Y.3DP,S$T("AE9V-S+3$N
M,2XR(')E;&5A<V4I``@``````````0```#`Q+C`Q````"``````````!````
M,#$N,#$````(``````````$````P,2XP,0````@``````````0```#`Q+C`Q
M````"``````````!````,#$N,#$````(``````````$````P,2XP,0````@`
M`````````0```#`Q+C`Q````"``````````!````,#$N,#$````(````````
M``$````P,2XP,0````@``````````0```#`Q+C`Q````"``````````!````
M,#$N,#$````(``````````$````P,2XP,0````@``````````0```#`Q+C`Q
M`````"YS>6UT86(`+G-T<G1A8@`N<VAS=')T86(`+G1E>'0`+G)E;"YT97AT
M`"YR;V1A=&$`+G)E;"YR;V1A=&$`+F1A=&$`+F)S<P`N8V]M;65N=``N;F]T
M90``````````````````````````````````````````````````````&P``
M``$````&`````````#0````X3P`````````````$`````````"$````)````
M``````````"D9```D`8```H````!````!`````@````K`````0````(`````
M````;$\``.\```````````````0`````````,P````D``````````````#1K
M``"(`0``"@````,````$````"````#\````!`````P````````!@4```(`4`
M````````````(`````````!%````"`````,`````````@%4``(`)````````
M`````"``````````2@````$``````````````(!5``#+`@`````````````!
M`````````%,````'`````````,L"``!+6```!`$``````````````0``````
M```1`````P``````````````3UD``%D```````````````$``````````0``
M``(``````````````(A;``!@!0``"P```$H````$````$`````D````#````
M``````````#H8```NP,``````````````0``````````````````````````
M`````````````````````P`!``````````````````,``@``````````````
M```#``,``````````````````P`$``````````````````,`!0``````````
M```````#``8``````````````````P`'``````#+`@````````,`"```````
M```````````#``D``````````````````P`*``````````````````,`"P`!
M````X$X``!D````"``$`&````+!,```.`````@`!`"D```!@30``40````(`
M`0`O````K`,``!4````"``$`.@```!`F```J`````@`!`$<```#D)0``*0``
M``(``0!2````1`````0````!``4`6P```$P````$`````0`%`&D```"83```
M%0````(``0!T````!`````0````!``4`?0````A.```D`````@`!`(T```"T
M!@``C`````(``0">````=$P```H````"``$`JP```,0(```+`````@`!`+P`
M``#X/0``^0````(``0#$````M$T``!4````"``$`V````(A)``##`````@`!
M`.@```!T3@``%`````(``0#]````P$P``)$````"``$`"P$``+P"```*````
M`@`!`!<!``!0````!`````$`!0`?`0``/"4``'(````"``$`+@$``/Q.```\
M`````@`!`#L!``!(````!`````$`!0!*`0``+$X``#,````"``$`5`$``&!.
M```1`````@`!`&(!``"\2```7P````(``0!S`0``@$P``!4````"``$`?@$`
M`.0+``"L`````@`!`(4!``"8*P``HP$```(``0"<`0``-`````0````!``4`
MIP$``.@"```A`````@`!`+8!``#,30``%0````(``0#'`0``D`P``'$````"
M``$`S@$``(A.``!5`````@`!`.`!``#()0``&@````(``0#I`0````````0`
M```!``4`]P$``'0Y``"1`0```@`!``,"``"()@``T0````(``0`4`@``Y$T`
M`"$````"``$`)`(``!@*``#*`0```@`!`"L"``"T`@``!0````(``0`W`@``
ML"4``!4````"``$`/@(``,A+``"I`````@`!`$X"``!4````"`````$`!0!6
M`@``#`,``)T````"``$`7@(``$`````$`````0`%`&X"``!@````P`0```$`
M!0!S`@``Y$<``-4````"``$`?P(``"@K``!O`````@`!`(X"``#0`@``$```
M``(``0"<`@``X`(```4````"``$`J0(``,`]```W`````@`!`+L"``!,2@``
M)`$```(``0#'`@```````"X````"``$`W`(``%1-```+`````@`!`/`"```0
M-P``%0````(``0#^`@``R`(```4````"``$`#`,``-@J``!0`````@`!`!L#
M```P````!`````$`!0`D`P``]#X```<````"``$``````,L"`````````P`(
M`"T#`````````````!`````Z`P`````````````0````10,`````````````
M$````%(#``!$`@``<````!(``0!<`P`````````````0````:0,```P"```9
M````$@`!`'0#``!D`0``IP```!(``0!_`P``*`(``!D````2``$`BP,`````
M````````$````)@#`````````````!````"D`P``=````.X````2``$`KP,`
M`#````!#````$@`!``!U<&1A=&53;V-K971087)A;65T97)S`&9L5W)I=&50
M<F]T96-T960`9FQ-87``9FEN9%-E8W1O<@!F<F]M54Y!3$Q/3D<`=&]53D%,
M3$].1P!M=&1486)L90!M>5]L;W=A9&1R97-S`&9L0G5F9F5R3V8`:6YI=$1O
M;F4`9FQ3;V-K9713971"=7-Y`')E<&QA8V5&051S96-T;W(`9FQ3;V-K971.
M;T]F`&1I<VUO=6YT3&]W3&5V96P`9FQ-;W5N=`!F;%-E=%=I;F1O=T)U<U=I
M9'1H`&9L26YT96Q)9&5N=&EF>0!F;%-E=%!O=V5R3VY#86QL8F%C:P!F;$EN
M:713;V-K971S`&9L5&%K94UU=&5X`&YO3V943',`9FQ296=I<W1E<DY&5$P`
M9FQ%>&ET4V]C:V5T`&UY7VAI9VAA9&1R97-S`&9L3F5E9%9C8P!F;$1O;G1.
M965D5F-C`&9L0VAE8VM!;F1&:7A%1$,`9FQ3;V-K971/9@!F;$EN:70`9FQ$
M;V-7:6YD;W="87-E061D<F5S<P!N;T]F1')I=F5S`&1I<VUO=6YT5F]L=6UE
M`&9L4V5T5VEN9&]W4W!E960`9FQ%>&ET`&9L26YT97)V86Q2;W5T:6YE`&9R
M;VU53D%,`&9L37-E8T-O=6YT97(`<F5A9$9L87-H240`9FQ296=I<W1E<D1/
M0U-/0P!F;%-E=%=I;F1O=U-I>F4`8F1#86QL`&9L1G)E94UU=&5X`'1O54Y!
M3`!F;$ED96YT:69Y1FQA<V@`=&Q486)L90!S971"=7-Y`&1A=&%%<G)O<D]B
M:F5C=`!V;VQS`&9L1&5C;V1E141#`&9L4&5E:T%T5VEN9&]W`&9L0W)E871E
M375T97@`9FQ3>7-F=6Y);FET`&9L4F5G:7-T97)$3T,R,#`P`&9L26YT96Q3
M:7IE`&9L4F5G:7-T97)#;VUP;VYE;G1S`&9L1V5T36%P<&EN9T-O;G1E>'0`
M9V5T3D9$0S(Q5F%R<P!F;$1E;&5T94UU=&5X`&-H96-K5VEN1F]R1$]#`&YO
M3V9-5$1S`&YO1F]R;6%T`&1O8S)K7VUE;7-E=`!D;V,R:U]F<F5E`&1O8S)K
M7VUE;6-P>0!D;V,R:U]R=V4`9&]C,FM?;6%L;&]C`&1O8S)K7V]P96X`9&]C
M,FM?<VEZ90!D;V,R:U]C;&]S90!D;V,R:U]M96UC;7``9&]C,FM?9&5L87D`
M9&]C,FM?:6YF;P!D;V,R:U]P<F]B90``!`````)````-`````B$``!<````!
M(P``'0````$3```B`````C(``#H````!$P``0`````$C``!&`````08``$P`
M```!!@``5`````(H``!A`````2H``(D````"2@``F@````(T``"Y`````0,`
M`(,!```"-```'P(```(T```[`@```C0``'\"```"-```CP(```(T``"?`@``
M`C0``"$#```"'P``/0,```(6``!(`P```B0``(8#```")0``DP,```(6``"<
M`P```C4``.$#```!.P````0```(:``!+!````3L``&H$```"&@``H00```$Z
M``#7!````A```!H%```!.@``404```(O``"?!0```B\``+X%```"+P``:@8`
M``$Z``"`!@```DP``)$&```"2@``T@8```$Z``"]!P```3H``"H(```!.@``
M50@```$Z``!_"````A```*<(```"-P``(PH```$5```["@```2H``%<*```!
M.P``>@H```$#``#;"@```0,````+```!`P``&@L```(G```C"P```@P``.L+
M```!%0``]PL```$[```"#````B<``"(,```!%0``*PP```(_```Q#````2``
M`#H,```"0@``0PP```(>``!;#````3L``&$,```!*@``;0P```(^``"!#```
M`2H``)<,```!.P``GPP```$J``#*#````B(``-,,```"-0``V0P```)%``#I
M#````2H``/$,```!%0``&0\```$%``!R$@```A@``'@2```"%```H1(```).
M``"P$@```DX```D<```!.@``&2$```)+```J(0```DL``#LA```"2P``3"$`
M``)+``!P(0```08``'TA```"2@``WR$```$#``#E(0```E(``$LB```!`P``
M42(```)2``".(@```A```(PD```!`0``DR0```$!``":)````0$``*$D```!
M`0``J"0```$!``"O)````0$``,HD```"3@``#"4```).```M)0```DH``$,E
M```!(```5B4```$@``!B)0```3@``&DE```!`0``<24```%(``!W)0```2``
M`'XE```!!@``@R4```$&``"3)@```2H``*@F```!*@``MB8```$J``"[)@``
M`B<``,<F```",P``TR8```(I``#M)@```0$``/0F```!`0``^R8```$!```"
M)P```0$```DG```!`0``$"<```$!```7)P```0$``!XG```!`0``+"<```$!
M```S)P```2H``#DG```!*@``;"H```(.``!9*P```0,``&(K```"4@``L"L`
M``$%``"V*P```04``,HK```!!0``VBL```$%``#C*P```04``.DK```!!0``
M\RL```$%```#+````04```DL```!!0``$RP```$%```N+````04``$DL```!
M!0``42P```$%``!;+````04``'@L```!!0``JRP```$%``"Z+````04``,(L
M```!!0``VBP```$%```&+0```04``!XM```!!0``*RT```$%``!X+@```@X`
M``$O```"3```*"\```),``!D+P```DP``)HO```"2@``\S````(-``!X,@``
M`DP``)$R```!!0``@S0```),``"G-````B8``(TU```"#0``'S<```$&``#%
M.0```E,``!$Z```"4P``(SL```(8```R.P```08``#T[```"&```0SL```(4
M``!@.P```AL``&H[```"+```I#L```(.``"//0```0$``)8]```!`0``G3T`
M``$!``"D/0```0$``,4]```!1P``SCT```%'``#;/0```1(``-\]```!`0``
MY3T```%'```-/@```B<``!X^```"-P``0CX```$@``!-/@```3@``(0^```!
M(```JCX```$@``"Q/@```3@``.$^```!(```TT(```$%```20P```04``"E)
M```"#@``3DD```),``""20```AT``)Q)```"#@``@$L```(.``#X2P```0$`
M`/]+```!`0``!DP```$!```-3````0$``!1,```!`0``'$P```%'```L3```
M`1(``#I,```!1P``CTP```$&``"G3````08``,9,```!!@``SDP```$J``#\
M3````DX```--```!!@``0DT```$J```J3P```08``"]/```"2P``&`````$!
M```<`````0$``"`````!`0``)`````$!```H`````0$``"P````!`0``,```
M``$!```T`````0$``#@````!`0``/`````$!``!``````0$``$0````!`0``
M2`````$!``!,`````0$``%`````!`0``5`````$!``!8`````0$``%P````!
M`0``8`````$!``!D`````0$``&@````!`0``;`````$!``!P`````0$``'0`
M```!`0``>`````$!``!\`````0$``(`````!`0``A`````$!``"(`````0$`
M`(P````!`0``D`````$!``"4`````0$``)@````!`0``G`````$!``"@````
M`0$``*0````!`0``J`````$!``"L`````0$``+`````!`0``M`````$!``"X
M`````0$``+P````!`0``P`````$!``#$`````0$``,@````!`0``S`````$!
:``#0`````0$``-0````!`0``V`````$!````
`
end

View file

@ -0,0 +1,135 @@
SOFTWARE LICENSE AGREEMENT
IMPORTANT! READ CAREFULLY:
THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal
agreement between you (either an individual or a single entity) and
M-Systems Flash Disk Pioneers Ltd. ("M-Systems").
This Agreement relates to the M-Systems' software accompanying this
Agreement, which includes computer software and may include associated
media, printed materials, and ``online'' or electronic documentation
(the ``Licensed Software'').
By downloading, installing, copying, or otherwise using the Licensed
Software, you agree to be bound by the terms of this Agreement.
If you do not agree to the terms of this Agreement, do not install,
copy or use the Licensed Software.
The Licensed Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws and
treaties. The Licensed Software is licensed, not sold.
The Licensed Software is being provided solely for use with M-Systems'
DiskOnChip® product lines.
1. License Grant.
(a) Grant of License. Subject to the terms and conditions of this
Agreement, M-Systems hereby grants you a nonexclusive,
royalty-free, worldwide license (including the right to
sublicense) to use, copy and distribute the Licensed Software
with M-Systems DiskOnChip® products.
(b) Restrictions on Use. The Licensed Software is licensed solely
for use with and to support M-Systems' DiskOnChip® products.
Use of this Licensed Software with, or to support, any other
flash disk, flash card, resident flash array or solid state
disk of any kind is expressly prohibited, and constitutes an
illegal infringement of M-Systems' patent, copyright and other
rights in and to the Licensed Software.
2. Limitations on Reverse Engineering, Decompilation, and
Disassembly. You may not reverse engineer, decompile, or
disassemble the Licensed Software, except and only to the
extent that such activity is expressly permitted by applicable
law notwithstanding this limitation.
3. Termination. Without prejudice to any other rights, M-Systems
may terminate this Agreement if you fail to comply with the
terms and conditions of this Agreement. In such event, you must
destroy all copies of the Licensed Software and all of its
component parts.
4. Intellectual Property Rights. Title to the Licensed Software,
and all rights with respect to the Software not specifically
granted under this Agreement, including without limitation
all rights of modification, disassembly and decompilation and
all copyright, patent, trademark, trade secret and other
proprietary rights and interests are reserved to M-Systems.
You may not remove or alter the "README" or "COPYRIGHT" files
or copyright notices in the Licensed Software.
5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by
applicable law, M-Systems and its suppliers provide the Product
and any (if any) support services related to the Product
("Support Services") AS IS AND WITH ALL FAULTS, and hereby
disclaim all warranties and conditions, either express,
implied or statutory, including, but not limited to, any
(if any) implied warranties or conditions of merchantability,
of fitness for a particular purpose, of lack of viruses, of
accuracy or completeness of responses, of results, and of lack
of negligence or lack of workmanlike effort, all with regard
to the Product, and the provision of or failure to provide
Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF
TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO
DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT.
THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR
PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY,
REMAINS WITH YOU.
6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER
DAMAGES. To the maximum extent permitted by applicable law,
in no event shall M-Systems or its suppliers be liable for
any special, incidental, indirect, or consequential damages
whatsoever (including, but not limited to, damages for loss
of profits or confidential or other information, for business
interruption, for personal injury, for loss of privacy, for
failure to meet any duty including of good faith or of
reasonable care, for negligence, and for any other pecuniary
or other loss whatsoever) arising out of or in any way related
to the use of or inability to use the Product, the provision
of or failure to provide Support Services, or otherwise under
or in connection with any provision of Agreement, even in the
event of the fault, tort (including negligence), strict
liability, breach of contract or breach of warranty of
M-Systems or any supplier, and even if M-Systems or any
supplier has been advised of the possibility of such damages.
7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any
damages that you might incur for any reason whatsoever
(including, without limitation, all damages referenced above
and all direct or general damages), the entire liability of
M-Systems and any of its suppliers under any provision of this
Agreement and your exclusive remedy for all of the foregoing
shall be limited to the greater of the amount actually paid by
you for the Product or U.S.$5.00. The foregoing limitations,
exclusions and disclaimers shall apply to the maximum extent
permitted by applicable law, even if any remedy fails its
essential purpose.
8. Miscellaneous
The laws of the State of California, United States of America,
exclusive of conflict-of-laws provisions, shall govern this
Agreement in all respects.
#ifndef MSYSOSAK_H
#define MSYSOSAK_H 1
struct doc2k_stat {
unsigned short type;
long unitSize;
long mediaSize;
long chipSize;
int interleaving;
unsigned long window;
/* Non-OSAK members Below this point */
char *product;
char model[40];
};
enum doc2k_work { DOC2K_READ, DOC2K_WRITE, DOC2K_ERASE };
int doc2k_probe(int drive, unsigned lowaddr, unsigned highaddr);
int doc2k_info(int drive, struct doc2k_stat *info);
int doc2k_size(int drive, unsigned *capacity, unsigned *ncyl, unsigned *nhead, unsigned *nsect);
int doc2k_open(int drive);
int doc2k_close(int drive);
int doc2k_rwe(int drive, enum doc2k_work what, unsigned block, unsigned len, void *ptr);
void doc2k_memcpy(void *dst, const void *src, unsigned len);
void doc2k_memset(void *dst, int c, unsigned len);
int doc2k_memcmp(const void *dst, const void *src, unsigned len);
void *doc2k_malloc(int bytes);
void doc2k_free(void *ptr);
void doc2k_delay(unsigned usec);
#endif

View file

@ -0,0 +1,23 @@
Index: files.i386
===================================================================
RCS file: /home/ncvs/src/sys/i386/conf/files.i386,v
retrieving revision 1.220.2.8
diff -u -r1.220.2.8 files.i386
--- files.i386 1999/05/27 03:06:33 1.220.2.8
+++ files.i386 1999/08/01 12:44:00
@@ -34,6 +34,13 @@
no-obj no-implicit-rule before-depend \
clean "ukbdmap.h"
#
+contrib/dev/fla/fla.c optional fla
+msysosak.o optional fla \
+ dependency "$S/contrib/dev/fla/i386/msysosak.o.uu" \
+ compile-with "uudecode < $S/contrib/dev/fla/i386/msysosak.o.uu" \
+ no-implicit-rule
+
+#
dev/fb/fb.c optional fb device-driver
dev/fb/fb.c optional vga device-driver
dev/fb/splash.c optional splash

View file

@ -0,0 +1,16 @@
Index: autoconf.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/autoconf.c,v
retrieving revision 1.111
diff -u -r1.111 autoconf.c
--- autoconf.c 1999/01/19 00:10:59 1.111
+++ autoconf.c 1999/08/01 13:56:59
@@ -453,6 +453,7 @@
if (boothowto & RB_DFLTROOT || (bootdev & B_MAGICMASK) != B_DEVMAGIC)
return;
majdev = B_TYPE(bootdev);
+ majdev = 28;
if (majdev >= nblkdev || bdevsw[majdev] == NULL)
return;
unit = B_UNIT(bootdev);

View file

@ -0,0 +1,44 @@
#!/bin/sh
dev=fla0
grep "$dev.*sectors" /var/run/dmesg | tr -d '(:)' | awk '
{
v = $3
c = $5
h = $7
s = $9
ss = c * h * s - s
print "#",$0 > "_"
print "g c"c" h"h" s"s > "_"
print "p 1 165",s,ss > "_"
print "a 1" > "_"
print "#",$0 > "__"
print "type: ESDI" > "__"
print "disk:", $1 > "__"
print "label:" > "__"
print "flags:" > "__"
print "bytes/sector: 512" > "__"
print "sectors/track:", s > "__"
print "tracks/cylinder:", h > "__"
print "sectors/cylinder:", s * h > "__"
print "cylinders:", c > "__"
print "sectors/unit:", ss > "__"
print "rpm: 3600" > "__"
print "interleave: 1" > "__"
print "trackskew: 0" > "__"
print "cylinderskew: 0" > "__"
print "headswitch: 0 # milliseconds" > "__"
print "track-to-track seek: 0 # milliseconds" > "__"
print "drivedata: 0 " > "__"
print "8 partitions:" > "__"
print "# size offset fstype [fsize bsize bps/cpg]" > "__"
print "a:",ss,"0 4.2BSD 512 4096 " > "__"
print "c:",ss,"0 unused 0 0" > "__"
}
'
fdisk -f _ -i -v $dev
disklabel -BrR ${dev} __
newfs /dev/r${dev}a

View file

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $
# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken
disk fd0 at fdc0 drive 0
disk fd1 at fdc0 drive 1
# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README
device fla0 at isa?
#
# Other standard PC hardware: `mse', `sio', etc.
#

View file

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $
# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken
disk fd0 at fdc0 drive 0
disk fd1 at fdc0 drive 1
# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README
device fla0 at isa?
#
# Other standard PC hardware: `mse', `sio', etc.
#