[BusyBox] new dd compile problem!

Matt Kraai kraai at alumni.carnegiemellon.edu
Sun Dec 17 19:50:44 UTC 2000


On Sun, Dec 17, 2000 at 10:31:37AM -0800, kent robotti wrote:
>    Matt Kraai kraai at alumni.carnegiemellon.edu
>    Sun, 17 Dec 2000 07:55:41 -0800
> 
> Thanks for testing it.  It compiled for me, so either the patch
> was wrong or things have changed under me.  Anyway, attached is a
> new patch that should work.
> 
> The other patch didn't have this that's why it failed.
> 
> --- busybox.h   2000/12/15 22:34:34     1.17
> +++ busybox.h   2000/12/15 22:39:35
> @@ -190,6 +190,13 @@
>  #endif
>  extern char *xstrndup (const char *s, int n);
> 
> +struct suffix_mult {
> +       char *suffix;
> +       int mult;
> +};
> +
> +extern unsigned long parse_number(const char *numstr, struct suffix_mult *suffixes);
> +
> 
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: attachment; filename=patch
> Content-Transfer-Encoding: quoted-printable
> 
> I don't know what quoted printable is, i can't
> apply the patch.
> 
> Uu or base64 encode it.

I think that certain constructs are escaped with equal signs.
Used by default in mutt.  I've attached this and a uuencoded
new version.

> These could use \n in utility.c.
> 
> +          error_msg_and_die("invalid number `%s'\n", numstr);
> +          error_msg_and_die("invalid number `%s'\n", numstr);

Fixed.  Thanks for the suggestion.

> These are a couple of breaks in tail.c that are
> probably not needed.
> 
>                         } else
>                                 usage(tail_usage);
>         -->             break;
>                case 'f':
>                        follow = 1;
>                        break;
>                case 'h':
>                        usage(tail_usage);
>         -->            break;
>                 default:
>                         error_msg("\nUnknown arg: %c.\n\n",optopt);
>                         usage(tail_usage);

The first break is necessary since usage is not always called.  It
could be moved inside the if, but that just makes things less
clear.  I simplified the second case to merge the default and 'h'
cases, as getopt already prints out a message about improper
arguments.

Thanks again for the testing.

Matt
-------------- next part --------------
Index: busybox.h
===================================================================
RCS file: /var/cvs/busybox/busybox.h,v
retrieving revision 1.17
diff -u -r1.17 busybox.h
--- busybox.h	2000/12/15 22:34:34	1.17
+++ busybox.h	2000/12/17 19:49:17
@@ -190,6 +190,13 @@
 #endif
 extern char *xstrndup (const char *s, int n);
 
+struct suffix_mult {
+	char *suffix;
+	int mult;
+};
+
+extern unsigned long parse_number(const char *numstr, struct suffix_mult *suffixes);
+
 
 /* These parse entries in /etc/passwd and /etc/group.  This is desirable
  * for BusyBox since we want to avoid using the glibc NSS stuff, which
Index: dd.c
===================================================================
RCS file: /var/cvs/busybox/dd.c,v
retrieving revision 1.36
diff -u -r1.36 dd.c
--- dd.c	2000/12/07 19:56:48	1.36
+++ dd.c	2000/12/17 19:49:20
@@ -2,16 +2,9 @@
 /*
  * Mini dd implementation for busybox
  *
- * Copyright (C) 1999, 2000 by Lineo, inc.
- * Written by Erik Andersen <andersen at lineo.com>, <andersee at debian.org>
  *
- * Based in part on code taken from sash. 
- *   Copyright (c) 1999 by David I. Bell
- *   Permission is granted to use, distribute, or modify this source,
- *   provided that this copyright notice remains intact.
+ * Copyright (C) 2000 by Matt Kraai <kraai at alumni.carnegiemellon.edu>
  *
- * Permission to distribute this code under the GPL has been granted.
- *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -28,154 +21,128 @@
  *
  */
 
-
 #include "busybox.h"
-#include <features.h>
-#include <stdio.h>
+
+#include <sys/types.h>
 #include <fcntl.h>
-#include <errno.h>
-#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)
-#include <inttypes.h>
-#else
-typedef unsigned long long int uintmax_t;
-#endif
 
-extern int dd_main(int argc, char **argv)
+static struct suffix_mult dd_suffixes[] = {
+	{ "c", 1 },
+	{ "w", 2 },
+	{ "b", 512 },
+	{ "kD", 1000 },
+	{ "k", 1024 },
+	{ "MD", 1000000 },
+	{ "M", 1048576 },
+	{ "GD", 1000000000 },
+	{ "G", 1073741824 },
+	{ NULL, 0 }
+};
+
+int dd_main(int argc, char **argv)
 {
-	char *inFile = NULL;
-	char *outFile = NULL;
-	int inFd;
-	int outFd;
-	int inCc = 0;
-	int outCc;
-	int trunc=TRUE;
-	int sync=FALSE;
-	long blockSize = 512,ibs;
-	uintmax_t skipBlocks = 0;
-	uintmax_t seekBlocks = 0;
-	uintmax_t count = (uintmax_t) - 1;
-	uintmax_t inTotal = 0;
-	uintmax_t outTotal = 0;
-	uintmax_t totalSize;
-
-	unsigned char buf[BUFSIZ];
-	char *keyword = NULL;
-
-	argc--;
-	argv++;
-
-	/* Parse any options */
-	while (argc) {
-		if (inFile == NULL && (strncmp(*argv, "if", 2) == 0))
-			inFile = ((strchr(*argv, '=')) + 1);
-		else if (outFile == NULL && (strncmp(*argv, "of", 2) == 0))
-			outFile = ((strchr(*argv, '=')) + 1);
-		else if (strncmp("count", *argv, 5) == 0) {
-			count = atoi_w_units((strchr(*argv, '=')) + 1);
-			if (count < 0) {
-				error_msg("Bad count value %s\n", *argv);
-				goto usage;
-			}
-		} else if (strncmp(*argv, "bs", 2) == 0) {
-			blockSize = atoi_w_units((strchr(*argv, '=')) + 1);
-			if (blockSize <= 0) {
-				error_msg("Bad block size value %s\n", *argv);
-				goto usage;
-			}
-		} else if (strncmp(*argv, "skip", 4) == 0) {
-			skipBlocks = atoi_w_units((strchr(*argv, '=')) + 1);
-			if (skipBlocks <= 0) {
-				error_msg("Bad skip value %s\n", *argv);
-				goto usage;
+	int i, ifd, ofd, sync = FALSE, trunc = TRUE;
+	size_t in_full = 0, in_part = 0, out_full = 0, out_part = 0;
+	size_t bs = 512, count = -1;
+	ssize_t n;
+	off_t seek = 0, skip = 0;
+	FILE *statusfp;
+	char *infile = NULL, *outfile = NULL, *buf;
+
+	for (i = 1; i < argc; i++) {
+		if (strncmp("bs=", argv[i], 3) == 0)
+			bs = parse_number(argv[i]+3, dd_suffixes);
+		else if (strncmp("count=", argv[i], 6) == 0)
+			count = parse_number(argv[i]+6, dd_suffixes);
+		else if (strncmp("seek=", argv[i], 5) == 0)
+			seek = parse_number(argv[i]+5, dd_suffixes);
+		else if (strncmp("skip=", argv[i], 5) == 0)
+			skip = parse_number(argv[i]+5, dd_suffixes);
+		else if (strncmp("if=", argv[i], 3) == 0)
+			infile = argv[i]+3;
+		else if (strncmp("of=", argv[i], 3) == 0)
+			outfile = argv[i]+3;
+		else if (strncmp("conv=", argv[i], 5) == 0) {
+			buf = argv[i]+5;
+			while (1) {
+				if (strncmp("notrunc", buf, 7) == 0) {
+					trunc = FALSE;
+					buf += 7;
+				} else if (strncmp("sync", buf, 4) == 0) {
+					sync = TRUE;
+					buf += 4;
+				} else {
+					error_msg_and_die("invalid conversion `%s'", argv[i]+5);
+				}
+				if (buf[0] == '\0')
+					break;
+				if (buf[0] == ',')
+					buf++;
 			}
+		} else
+			usage(dd_usage);
+	}
 
-		} else if (strncmp(*argv, "seek", 4) == 0) {
-			seekBlocks = atoi_w_units((strchr(*argv, '=')) + 1);
-			if (seekBlocks <= 0) {
-				error_msg("Bad seek value %s\n", *argv);
-				goto usage;
-			}
-		} else if (strncmp(*argv, "conv", 4) == 0) {
-			keyword = (strchr(*argv, '=') + 1);
-                	if (strcmp(keyword, "notrunc") == 0) 
-				trunc=FALSE;
-			if (strcmp(keyword, "sync") == 0) 
-				sync=TRUE;
-		} else {
-			goto usage;
-		}
-		argc--;
-		argv++;
+	buf = xmalloc(bs);
+
+	if (infile != NULL) {
+		if ((ifd = open(infile, O_RDONLY)) < 0)
+			perror_msg_and_die("%s", infile);
+	} else {
+		ifd = STDIN_FILENO;
+		infile = "standard input";
 	}
 
-	if (inFile == NULL)
-		inFd = fileno(stdin);
-	else
-		inFd = open(inFile, 0);
-
-	if (inFd < 0) {
-		/* Note that we are not freeing buf or closing
-		 * files here to save a few bytes. This exits
-		 * here anyways... */
-
-		/* free(buf); */
-		perror_msg_and_die("%s", inFile);
-	}
-
-	if (outFile == NULL)
-		outFd = fileno(stdout);
-	else
-		outFd = open(outFile, O_WRONLY | O_CREAT, 0666);
-
-	if (outFd < 0) {
-		/* Note that we are not freeing buf or closing
-		 * files here to save a few bytes. This exits
-		 * here anyways... */
-
-		/* close(inFd);
-		   free(buf); */
-		perror_msg_and_die("%s", outFile);
-	}
-
-	lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
-	lseek(outFd, (off_t) (seekBlocks * blockSize), SEEK_SET);
-	totalSize=count*blockSize;
-
-	ibs=blockSize;
-	if (ibs > BUFSIZ)
-		ibs=BUFSIZ;
-			
-	while (totalSize > outTotal) {
-		inCc = full_read(inFd, buf, ibs);
-		inTotal += inCc;
-		if ( (sync==TRUE) && (inCc>0) )
-			while (inCc<ibs)
-				buf[inCc++]='\0';
-
-		if ((outCc = full_write(outFd, buf, inCc)) < 1){
-			if (outCc < 0 ){
-				perror("Error during write");
-			}
+	if (outfile != NULL) {
+		if ((ofd = open(outfile, O_WRONLY | O_CREAT, 0666)) < 0)
+			perror_msg_and_die("%s", outfile);
+		statusfp = stdout;
+	} else {
+		ofd = STDOUT_FILENO;
+		outfile = "standard output";
+		statusfp = stderr;
+	}
+
+	if (skip) {
+		if (lseek(ifd, skip * bs, SEEK_CUR) < 0)
+			perror_msg_and_die("%s", infile);
+	}
+
+	if (seek) {
+		if (lseek(ofd, seek * bs, SEEK_CUR) < 0)
+			perror_msg_and_die("%s", outfile);
+	}
+
+	if (trunc) {
+		if (ftruncate(ofd, seek * bs) < 0)
+			perror_msg_and_die("%s", outfile);
+	}
+
+	while (in_full + in_part != count) {
+		n = safe_read(ifd, buf, bs);
+		if (n < 0)
+			perror_msg_and_die("%s", infile);
+		if (n == 0)
 			break;
+		if (n == bs)
+			in_full++;
+		else
+			in_part++;
+		if (sync) {
+			memset(buf + n, '\0', bs - n);
+			n = bs;
 		}
-		outTotal += outCc;
-        }
-	if (trunc == TRUE) {
-		ftruncate(outFd, lseek(outFd, 0, SEEK_CUR));
-	}
-	/* Note that we are not freeing memory or closing
-	 * files here, to save a few bytes. */
-#ifdef BB_FEATURE_CLEAN_UP
-	close(inFd);
-	close(outFd);
-#endif
-
-	printf("%ld+%d records in\n", (long) (inTotal / blockSize),
-		   (inTotal % blockSize) != 0);
-	printf("%ld+%d records out\n", (long) (outTotal / blockSize),
-		   (outTotal % blockSize) != 0);
-	return EXIT_SUCCESS;
-  usage:
+		n = full_write(ofd, buf, n);
+		if (n < 0)
+			perror_msg_and_die("%s", outfile);
+		if (n == bs)
+			out_full++;
+		else
+			out_part++;
+	}
 
-	usage(dd_usage);
+	fprintf(statusfp, "%d+%d records in\n", in_full, in_part);
+	fprintf(statusfp, "%d+%d records out\n", out_full, out_part);
+
+	return EXIT_SUCCESS;
 }
Index: tail.c
===================================================================
RCS file: /var/cvs/busybox/tail.c,v
retrieving revision 1.27
diff -u -r1.27 tail.c
--- tail.c	2000/12/07 19:56:48	1.27
+++ tail.c	2000/12/17 19:49:22
@@ -61,6 +61,13 @@
 
 static off_t units=0;
 
+static struct suffix_mult tail_suffixes[] = {
+	{ "b", 512 },
+	{ "k", 1024 },
+	{ "m", 1048576 },
+	{ NULL, 0 }
+};
+
 static int tail_stream(int fd)
 {
 	ssize_t startpoint;
@@ -170,32 +177,6 @@
 
 		switch (opt) {
 #ifndef BB_FEATURE_SIMPLE_TAIL
-		case 'c':
-			unit_type = BYTES;
-			test = atoi(optarg);
-			if(test==0)
-				usage(tail_usage);
-			if(optarg[strlen(optarg)-1]>'9') {
-				switch (optarg[strlen(optarg)-1]) {
-				case 'b':
-					test *= 512;
-					break;
-				case 'k':
-					test *= 1024;
-					break;
-				case 'm':
-					test *= (1024 * 1024);
-					break;
-				default:
-					fprintf(stderr,"Size must be b,k, or m.");
-					usage(tail_usage);
-				}
-			}
-			if(optarg[0]=='+')
-				units=test+1;
-			else
-				units=-(test+1);
-			break;
 		case 'q':
 			show_headers = 0;
 			break;
@@ -207,15 +188,12 @@
 		case 'v':
 			verbose = 1;
 			break;
+		case 'c':
+			unit_type = BYTES;
+			/* FALLS THROUGH */
 #endif
-		case 'f':
-			follow = 1;
-			break;
-		case 'h':
-			usage(tail_usage);
-			break;
 		case 'n':
-			test = atoi(optarg);
+			test = parse_number(optarg, tail_suffixes);
 			if (test) {
 				if (optarg[0] == '+')
 					units = test;
@@ -224,8 +202,10 @@
 			} else
 				usage(tail_usage);
 			break;
+		case 'f':
+			follow = 1;
+			break;
 		default:
-			error_msg("\nUnknown arg: %c.\n\n",optopt);
 			usage(tail_usage);
 		}
 	}
Index: utility.c
===================================================================
RCS file: /var/cvs/busybox/utility.c,v
retrieving revision 1.175
diff -u -r1.175 utility.c
--- utility.c	2000/12/15 22:34:34	1.175
+++ utility.c	2000/12/17 19:49:47
@@ -536,7 +536,7 @@
 }
 #endif /* BB_TAR || BB_AR */
 
-#if defined BB_AR || defined BB_CP_MV || defined BB_DD || defined BB_NC || defined BB_TAR
+#if defined BB_TAR || defined BB_CP_MV || defined BB_AR || defined BB_DD
 /*
  * Write all of the supplied buffer out to a file.
  * This does multiple writes as necessary.
@@ -565,7 +565,7 @@
 #endif /* BB_TAR || BB_CP_MV || BB_AR */
 
 
-#if defined BB_TAR || defined BB_TAIL || defined BB_AR || defined BB_SH || defined BB_CP_MV || defined BB_DD
+#if defined BB_AR || defined BB_CP_MV || defined BB_SH || defined BB_TAIL || defined BB_TAR
 /*
  * Read all of the supplied buffer from a file.
  * This does multiple reads as necessary.
@@ -1215,58 +1215,6 @@
 }
 #endif							/* BB_DF || BB_MTAB */
 
-
-
-#if defined BB_DD || defined BB_TAIL
-/*
- * Read a number with a possible multiplier.
- * Returns -1 if the number format is illegal.
- */
-extern long atoi_w_units(const char *cp)
-{
-	long value;
-
-	if (!is_decimal(*cp))
-		return -1;
-
-	value = 0;
-
-	while (is_decimal(*cp))
-		value = value * 10 + *cp++ - '0';
-
-	switch (*cp++) {
-	case 'M':
-	case 'm':					/* `tail' uses it traditionally */
-		value *= 1048576;
-		break;
-
-	case 'k':
-		value *= 1024;
-		break;
-
-	case 'b':
-		value *= 512;
-		break;
-
-	case 'w':
-		value *= 2;
-		break;
-
-	case '\0':
-		return value;
-
-	default:
-		return -1;
-	}
-
-	if (*cp)
-		return -1;
-
-	return value;
-}
-#endif							/* BB_DD || BB_TAIL */
-
-
 #if defined BB_INIT || defined BB_SYSLOGD 
 /* try to open up the specified device */
 extern int device_open(char *device, int mode)
@@ -1790,8 +1738,35 @@
 
 	return strcmp(applet1->name, applet2->name);
 }
+
+#if defined BB_DD || defined BB_TAIL
+unsigned long parse_number(const char *numstr, struct suffix_mult *suffixes)
+{
+	struct suffix_mult *sm;
+	unsigned long int ret;
+	int len;
+	char *end;
+	
+	ret = strtoul(numstr, &end, 10);
+	if (numstr == end)
+		error_msg_and_die("invalid number `%s'\n", numstr);
+	while (end[0] != '\0') {
+		for (sm = suffixes; sm->suffix != NULL; sm++) {
+			len = strlen(sm->suffix);
+			if (strncmp(sm->suffix, end, len) == 0) {
+				ret *= sm->mult;
+				end += len;
+				break;
+			}
+		}
+		if (sm->suffix == NULL)
+			error_msg_and_die("invalid number `%s'\n", numstr);
+	}
+	return ret;
+}
+#endif
 
-#if defined BB_NC
+#if defined BB_DD || defined BB_NC
 ssize_t safe_read(int fd, void *buf, size_t count)
 {
 	ssize_t n;
-------------- next part --------------
begin 644 ../patch.uu
M26YD97 at Z(&)U<WEB;W at N:`H]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"E)#4R!F
M:6QE.B`O=F%R+V-V<R]B=7-Y8F]X+V)U<WEB;W at N:"QV"G)E=')I979I;F<@
M<F5V:7-I;VX@,2XQ-PID:69F("UU("UR,2XQ-R!B=7-Y8F]X+F@*+2TM(&)U
M<WEB;W at N:`DR,#`P+S$R+S$U(#(R.C,T.C,T"3$N,3<**RLK(&)U<WEB;W at N
M:`DR,#`P+S$R+S$W(#$Y.C0Y.C$W"D!`("TQ.3`L-B`K,3DP+#$S($!`"B`C
M96YD:68*(&5X=&5R;B!C:&%R("IX<W1R;F1U<"`H8V]N<W0 at 8VAA<B`J<RP@
M:6YT(&XI.PH@"BMS=')U8W0@<W5F9FEX7VUU;'0@>PHK"6-H87(@*G-U9F9I
M>#L**PEI;G0@;75L=#L**WT["BL**V5X=&5R;B!U;G-I9VYE9"!L;VYG('!A
M<G-E7VYU;6)E<BAC;VYS="!C:&%R("IN=6US='(L('-T<G5C="!S=69F:7A?
M;75L="`J<W5F9FEX97,I.PHK"B`*("\J(%1H97-E('!A<G-E(&5N=')I97,@
M:6X at +V5T8R]P87-S=V0 at 86YD("]E=&,O9W)O=7`N("!4:&ES(&ES(&1E<VER
M86)L90H@("H at 9F]R($)U<WE";W@@<VEN8V4@=V4@=V%N="!T;R!A=F]I9"!U
M<VEN9R!T:&4 at 9VQI8F, at 3E-3('-T=69F+"!W:&EC:`I);F1E>#H at 9&0N8PH]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]"E)#4R!F:6QE.B`O=F%R+V-V<R]B=7-Y
M8F]X+V1D+F,L=@IR971R:65V:6YG(')E=FES:6]N(#$N,S8*9&EF9B`M=2`M
M<C$N,S8 at 9&0N8PHM+2T at 9&0N8PDR,#`P+S$R+S`W(#$Y.C4V.C0X"3$N,S8*
M*RLK(&1D+F,),C`P,"\Q,B\Q-R`Q.3HT.3HR,`I`0"`M,BPQ-B`K,BPY($!`
M"B`O*@H@("H at 36EN:2!D9"!I;7!L96UE;G1A=&EO;B!F;W(@8G5S>6)O>`H@
M("H*+2`J($-O<'ER:6=H="`H0RD@,3DY.2P@,C`P,"!B>2!,:6YE;RP@:6YC
M+ at HM("H at 5W)I='1E;B!B>2!%<FEK($%N9&5R<V5N(#QA;F1E<G-E;D!L:6YE
M;RYC;VT^+"`\86YD97)S965`9&5B:6%N+F]R9SX*("`J"BT@*B!"87-E9"!I
M;B!P87)T(&]N(&-O9&4@=&%K96X at 9G)O;2!S87-H+B`*+2`J("`@0V]P>7)I
M9VAT("AC*2`Q.3DY(&)Y($1A=FED($DN($)E;&P*+2`J("`@4&5R;6ES<VEO
M;B!I<R!G<F%N=&5D('1O('5S92P at 9&ES=')I8G5T92P@;W(@;6]D:69Y('1H
M:7,@<V]U<F-E+`HM("H@("!P<F]V:61E9"!T:&%T('1H:7, at 8V]P>7)I9VAT
M(&YO=&EC92!R96UA:6YS(&EN=&%C="X**R`J($-O<'ER:6=H="`H0RD@,C`P
M,"!B>2!-871T($MR86%I(#QK<F%A:4!A;'5M;FDN8V%R;F5G:65M96QL;VXN
M961U/@H@("H*+2`J(%!E<FUI<W-I;VX@=&\@9&ES=')I8G5T92!T:&ES(&-O
M9&4@=6YD97(@=&AE($=03"!H87, at 8F5E;B!G<F%N=&5D+ at HM("H*("`J(%1H
M:7,@<')O9W)A;2!I<R!F<F5E('-O9G1W87)E.R!Y;W4 at 8V%N(')E9&ES=')I
M8G5T92!I="!A;F0O;W(@;6]D:69Y"B`@*B!I="!U;F1E<B!T:&4@=&5R;7,@
M;V8@=&AE($=.52!'96YE<F%L(%!U8FQI8R!,:6-E;G-E(&%S('!U8FQI<VAE
M9"!B>0H@("H@=&AE($9R964 at 4V]F='=A<F4 at 1F]U;F1A=&EO;CL at 96ET:&5R
M('9E<G-I;VX@,B!O9B!T:&4 at 3&EC96YS92P@;W(*0$`@+3(X+#$U-"`K,C$L
M,3(X($!`"B`@*@H@("HO"B`*+0H@(VEN8VQU9&4@(F)U<WEB;W at N:"(*+2-I
M;F-L=61E(#QF96%T=7)E<RYH/@HM(VEN8VQU9&4@/'-T9&EO+F@^"BL**R-I
M;F-L=61E(#QS>7,O='EP97,N:#X*("-I;F-L=61E(#QF8VYT;"YH/@HM(VEN
M8VQU9&4@/&5R<FYO+F@^"BTC:68@*%]?1TQ)0D-?7R`^/2`R*2`F)B`H7U]'
M3$E"0U]-24Y/4E]?(#X](#$I"BTC:6YC;'5D92`\:6YT='EP97,N:#X*+2-E
M;'-E"BUT>7!E9&5F('5N<VEG;F5D(&QO;F<@;&]N9R!I;G0@=6EN=&UA>%]T
M.PHM(V5N9&EF"B`*+65X=&5R;B!I;G0 at 9&1?;6%I;BAI;G0 at 87)G8RP at 8VAA
M<B`J*F%R9W8I"BMS=&%T:6,@<W1R=6-T('-U9F9I>%]M=6QT(&1D7W-U9F9I
M>&5S6UT@/2!["BL)>R`B8R(L(#$@?2P**PE[(")W(BP@,B!]+`HK"7L@(F(B
M+"`U,3(@?2P**PE[(")K1"(L(#$P,#`@?2P**PE[(")K(BP@,3`R-"!]+`HK
M"7L@(DU$(BP@,3`P,#`P,"!]+`HK"7L@(DTB+"`Q,#0X-3<V('TL"BL)>R`B
M1T0B+"`Q,#`P,#`P,#`P('TL"BL)>R`B1R(L(#$P-S,W-#$X,C0@?2P**PE[
M($Y53$PL(#`@?0HK?3L**PHK:6YT(&1D7VUA:6XH:6YT(&%R9V,L(&-H87(@
M*BIA<F=V*0H@>PHM"6-H87(@*FEN1FEL92`]($Y53$P["BT)8VAA<B`J;W5T
M1FEL92`]($Y53$P["BT):6YT(&EN1F0["BT):6YT(&]U=$9D.PHM"6EN="!I
M;D-C(#T@,#L*+0EI;G0@;W5T0V,["BT):6YT('1R=6YC/512544["BT):6YT
M('-Y;F,]1D%,4T4["BT);&]N9R!B;&]C:U-I>F4@/2`U,3(L:6)S.PHM"75I
M;G1M87A?="!S:VEP0FQO8VMS(#T@,#L*+0EU:6YT;6%X7W0@<V5E:T)L;V-K
M<R`](#`["BT)=6EN=&UA>%]T(&-O=6YT(#T@*'5I;G1M87A?="D at +2`Q.PHM
M"75I;G1M87A?="!I;E1O=&%L(#T@,#L*+0EU:6YT;6%X7W0@;W5T5&]T86P@
M/2`P.PHM"75I;G1M87A?="!T;W1A;%-I>F4["BT*+0EU;G-I9VYE9"!C:&%R
M(&)U9EM"549325I=.PHM"6-H87(@*FME>7=O<F0@/2!.54Q,.PHM"BT)87)G
M8RTM.PHM"6%R9W8K*SL*+0HM"2\J(%!A<G-E(&%N>2!O<'1I;VYS("HO"BT)
M=VAI;&4@*&%R9V,I('L*+0D):68@*&EN1FEL92`]/2!.54Q,("8F("AS=')N
M8VUP*"IA<F=V+"`B:68B+"`R*2`]/2`P*2D*+0D)"6EN1FEL92`]("@H<W1R
M8VAR*"IA<F=V+"`G/2<I*2`K(#$I.PHM"0EE;'-E(&EF("AO=71&:6QE(#T]
M($Y53$P@)B8@*'-T<FYC;7`H*F%R9W8L(")O9B(L(#(I(#T](#`I*0HM"0D)
M;W5T1FEL92`]("@H<W1R8VAR*"IA<F=V+"`G/2<I*2`K(#$I.PHM"0EE;'-E
M(&EF("AS=')N8VUP*")C;W5N="(L("IA<F=V+"`U*2`]/2`P*2!["BT)"0EC
M;W5N="`](&%T;VE?=U]U;FET<R at H<W1R8VAR*"IA<F=V+"`G/2<I*2`K(#$I
M.PHM"0D):68@*&-O=6YT(#P@,"D@>PHM"0D)"65R<F]R7VUS9R at B0F%D(&-O
M=6YT('9A;'5E("5S7&XB+"`J87)G=BD["BT)"0D)9V]T;R!U<V%G93L*+0D)
M"7T*+0D)?2!E;'-E(&EF("AS=')N8VUP*"IA<F=V+"`B8G,B+"`R*2`]/2`P
M*2!["BT)"0EB;&]C:U-I>F4@/2!A=&]I7W=?=6YI=',H*'-T<F-H<B at J87)G
M=BP@)STG*2D@*R`Q*3L*+0D)"6EF("AB;&]C:U-I>F4@/#T@,"D@>PHM"0D)
M"65R<F]R7VUS9R at B0F%D(&)L;V-K('-I>F4@=F%L=64@)7-<;B(L("IA<F=V
M*3L*+0D)"0EG;W1O('5S86=E.PHM"0D)?0HM"0E](&5L<V4@:68@*'-T<FYC
M;7`H*F%R9W8L(")S:VEP(BP at -"D@/3T@,"D@>PHM"0D)<VMI<$)L;V-K<R`]
M(&%T;VE?=U]U;FET<R at H<W1R8VAR*"IA<F=V+"`G/2<I*2`K(#$I.PHM"0D)
M:68@*'-K:7!";&]C:W,@/#T@,"D@>PHM"0D)"65R<F]R7VUS9R at B0F%D('-K
M:7`@=F%L=64@)7-<;B(L("IA<F=V*3L*+0D)"0EG;W1O('5S86=E.PHK"6EN
M="!I+"!I9F0L(&]F9"P@<WEN8R`]($9!3%-%+"!T<G5N8R`](%12544["BL)
M<VEZ95]T(&EN7V9U;&P@/2`P+"!I;E]P87)T(#T@,"P@;W5T7V9U;&P@/2`P
M+"!O=71?<&%R="`](#`["BL)<VEZ95]T(&)S(#T at -3$R+"!C;W5N="`]("TQ
M.PHK"7-S:7IE7W0@;CL**PEO9F9?="!S965K(#T@,"P@<VMI<"`](#`["BL)
M1DE,12`J<W1A='5S9G`["BL)8VAA<B`J:6YF:6QE(#T at 3E5,3"P@*F]U=&9I
M;&4@/2!.54Q,+"`J8G5F.PHK"BL)9F]R("AI(#T@,3L@:2`\(&%R9V,[(&DK
M*RD@>PHK"0EI9B`H<W1R;F-M<"@B8G,](BP at 87)G=EMI72P@,RD@/3T@,"D*
M*PD)"6)S(#T@<&%R<V5?;G5M8F5R*&%R9W9;:5TK,RP at 9&1?<W5F9FEX97,I
M.PHK"0EE;'-E(&EF("AS=')N8VUP*")C;W5N=#TB+"!A<F=V6VE=+"`V*2`]
M/2`P*0HK"0D)8V]U;G0@/2!P87)S95]N=6UB97(H87)G=EMI72LV+"!D9%]S
M=69F:7AE<RD["BL)"65L<V4@:68@*'-T<FYC;7`H(G-E96L](BP at 87)G=EMI
M72P at -2D@/3T@,"D**PD)"7-E96L@/2!P87)S95]N=6UB97(H87)G=EMI72LU
M+"!D9%]S=69F:7AE<RD["BL)"65L<V4@:68@*'-T<FYC;7`H(G-K:7`](BP@
M87)G=EMI72P at -2D@/3T@,"D**PD)"7-K:7`@/2!P87)S95]N=6UB97(H87)G
M=EMI72LU+"!D9%]S=69F:7AE<RD["BL)"65L<V4@:68@*'-T<FYC;7`H(FEF
M/2(L(&%R9W9;:5TL(#,I(#T](#`I"BL)"0EI;F9I;&4@/2!A<F=V6VE=*S,[
M"BL)"65L<V4@:68@*'-T<FYC;7`H(F]F/2(L(&%R9W9;:5TL(#,I(#T](#`I
M"BL)"0EO=71F:6QE(#T at 87)G=EMI72LS.PHK"0EE;'-E(&EF("AS=')N8VUP
M*")C;VYV/2(L(&%R9W9;:5TL(#4I(#T](#`I('L**PD)"6)U9B`](&%R9W9;
M:5TK-3L**PD)"7=H:6QE("@Q*2!["BL)"0D):68@*'-T<FYC;7`H(FYO=')U
M;F,B+"!B=68L(#<I(#T](#`I('L**PD)"0D)=')U;F,@/2!&04Q313L**PD)
M"0D)8G5F("L](#<["BL)"0D)?2!E;'-E(&EF("AS=')N8VUP*")S>6YC(BP@
M8G5F+"`T*2`]/2`P*2!["BL)"0D)"7-Y;F,@/2!44E5%.PHK"0D)"0EB=68@
M*ST at -#L**PD)"0E](&5L<V4@>PHK"0D)"0EE<G)O<E]M<V=?86YD7V1I92 at B
M:6YV86QI9"!C;VYV97)S:6]N(&`E<R<B+"!A<F=V6VE=*S4I.PHK"0D)"7T*
M*PD)"0EI9B`H8G5F6S!=(#T]("=<,"<I"BL)"0D)"6)R96%K.PHK"0D)"6EF
M("AB=69;,%T@/3T@)RPG*0HK"0D)"0EB=68K*SL*(`D)"7T**PD)?2!E;'-E
M"BL)"0EU<V%G92AD9%]U<V%G92D["BL)?0H@"BT)"7T at 96QS92!I9B`H<W1R
M;F-M<"@J87)G=BP@(G-E96LB+"`T*2`]/2`P*2!["BT)"0ES965K0FQO8VMS
M(#T at 871O:5]W7W5N:71S*"AS=')C:'(H*F%R9W8L("<])RDI("L@,2D["BT)
M"0EI9B`H<V5E:T)L;V-K<R`\/2`P*2!["BT)"0D)97)R;W)?;7-G*")"860@
M<V5E:R!V86QU92`E<UQN(BP@*F%R9W8I.PHM"0D)"6=O=&\@=7-A9V4["BT)
M"0E]"BT)"7T at 96QS92!I9B`H<W1R;F-M<"@J87)G=BP@(F-O;G8B+"`T*2`]
M/2`P*2!["BT)"0EK97EW;W)D(#T@*'-T<F-H<B at J87)G=BP@)STG*2`K(#$I
M.PHM("`@("`@("`@("`@("`@(`EI9B`H<W1R8VUP*&ME>7=O<F0L(")N;W1R
M=6YC(BD@/3T@,"D@"BT)"0D)=')U;F,]1D%,4T4["BT)"0EI9B`H<W1R8VUP
M*&ME>7=O<F0L(")S>6YC(BD@/3T@,"D@"BT)"0D)<WEN8SU44E5%.PHM"0E]
M(&5L<V4@>PHM"0D)9V]T;R!U<V%G93L*+0D)?0HM"0EA<F=C+2T["BT)"6%R
M9W8K*SL**PEB=68@/2!X;6%L;&]C*&)S*3L**PHK"6EF("AI;F9I;&4@(3T@
M3E5,3"D@>PHK"0EI9B`H*&EF9"`](&]P96XH:6YF:6QE+"!/7U)$3TY,62DI
M(#P@,"D**PD)"7!E<G)O<E]M<V=?86YD7V1I92 at B)7,B+"!I;F9I;&4I.PHK
M"7T at 96QS92!["BL)"6EF9"`](%-41$E.7T9)3$5.3SL**PD):6YF:6QE(#T@
M(G-T86YD87)D(&EN<'5T(CL*(`E]"B`*+0EI9B`H:6Y&:6QE(#T]($Y53$PI
M"BT)"6EN1F0@/2!F:6QE;F\H<W1D:6XI.PHM"65L<V4*+0D):6Y&9"`](&]P
M96XH:6Y&:6QE+"`P*3L*+0HM"6EF("AI;D9D(#P@,"D@>PHM"0DO*B!.;W1E
M('1H870@=V4 at 87)E(&YO="!F<F5E:6YG(&)U9B!O<B!C;&]S:6YG"BT)"2`J
M(&9I;&5S(&AE<F4@=&\@<V%V92!A(&9E=R!B>71E<RX at 5&AI<R!E>&ET<PHM
M"0D@*B!H97)E(&%N>7=A>7,N+BX@*B\*+0HM"0DO*B!F<F5E*&)U9BD[("HO
M"BT)"7!E<G)O<E]M<V=?86YD7V1I92 at B)7,B+"!I;D9I;&4I.PHM"7T*+0HM
M"6EF("AO=71&:6QE(#T]($Y53$PI"BT)"6]U=$9D(#T at 9FEL96YO*'-T9&]U
M="D["BT)96QS90HM"0EO=71&9"`](&]P96XH;W5T1FEL92P at 3U]74D].3%D@
M?"!/7T-214%4+"`P-C8V*3L*+0HM"6EF("AO=71&9"`\(#`I('L*+0D)+RH@
M3F]T92!T:&%T('=E(&%R92!N;W0 at 9G)E96EN9R!B=68@;W(@8VQO<VEN9PHM
M"0D@*B!F:6QE<R!H97)E('1O('-A=F4 at 82!F97<@8GET97,N(%1H:7, at 97AI
M=',*+0D)("H@:&5R92!A;GEW87ES+BXN("HO"BT*+0D)+RH at 8VQO<V4H:6Y&
M9"D["BT)"2`@(&9R964H8G5F*3L@*B\*+0D)<&5R<F]R7VUS9U]A;F1?9&EE
M*"(E<R(L(&]U=$9I;&4I.PHM"7T*+0HM"6QS965K*&EN1F0L("AO9F9?="D@
M*'-K:7!";&]C:W,@*B!B;&]C:U-I>F4I+"!3145+7U-%5"D["BT);'-E96LH
M;W5T1F0L("AO9F9?="D@*'-E96M";&]C:W,@*B!B;&]C:U-I>F4I+"!3145+
M7U-%5"D["BT)=&]T86Q3:7IE/6-O=6YT*F)L;V-K4VEZ93L*+0HM"6EB<SUB
M;&]C:U-I>F4["BT):68@*&EB<R`^($)51E-)6BD*+0D):6)S/4)51E-)6CL*
M+0D)"0HM"7=H:6QE("AT;W1A;%-I>F4@/B!O=714;W1A;"D@>PHM"0EI;D-C
M(#T at 9G5L;%]R96%D*&EN1F0L(&)U9BP@:6)S*3L*+0D):6Y4;W1A;"`K/2!I
M;D-C.PHM"0EI9B`H("AS>6YC/3U44E5%*2`F)B`H:6Y#8SXP*2`I"BT)"0EW
M:&EL92`H:6Y#8SQI8G,I"BT)"0D)8G5F6VEN0V,K*UT])UPP)SL*+0HM"0EI
M9B`H*&]U=$-C(#T at 9G5L;%]W<FET92AO=71&9"P at 8G5F+"!I;D-C*2D@/"`Q
M*7L*+0D)"6EF("AO=71#8R`\(#`@*7L*+0D)"0EP97)R;W(H(D5R<F]R(&1U
M<FEN9R!W<FET92(I.PHM"0D)?0HK"6EF("AO=71F:6QE("$]($Y53$PI('L*
M*PD):68@*"AO9F0@/2!O<&5N*&]U=&9I;&4L($]?5U)/3DQ9('P at 3U]#4D5!
M5"P@,#8V-BDI(#P@,"D**PD)"7!E<G)O<E]M<V=?86YD7V1I92 at B)7,B+"!O
M=71F:6QE*3L**PD)<W1A='5S9G`@/2!S=&1O=70["BL)?2!E;'-E('L**PD)
M;V9D(#T at 4U1$3U547T9)3$5.3SL**PD);W5T9FEL92`](")S=&%N9&%R9"!O
M=71P=70B.PHK"0ES=&%T=7-F<"`]('-T9&5R<CL**PE]"BL**PEI9B`H<VMI
M<"D@>PHK"0EI9B`H;'-E96LH:69D+"!S:VEP("H at 8G,L(%-%14M?0U52*2`\
M(#`I"BL)"0EP97)R;W)?;7-G7V%N9%]D:64H(B5S(BP@:6YF:6QE*3L**PE]
M"BL**PEI9B`H<V5E:RD@>PHK"0EI9B`H;'-E96LH;V9D+"!S965K("H at 8G,L
M(%-%14M?0U52*2`\(#`I"BL)"0EP97)R;W)?;7-G7V%N9%]D:64H(B5S(BP@
M;W5T9FEL92D["BL)?0HK"BL):68@*'1R=6YC*2!["BL)"6EF("AF=')U;F-A
M=&4H;V9D+"!S965K("H at 8G,I(#P@,"D**PD)"7!E<G)O<E]M<V=?86YD7V1I
M92 at B)7,B+"!O=71F:6QE*3L**PE]"BL**PEW:&EL92`H:6Y?9G5L;"`K(&EN
M7W!A<G0@(3T at 8V]U;G0I('L**PD);B`]('-A9F5?<F5A9"AI9F0L(&)U9BP@
M8G,I.PHK"0EI9B`H;B`\(#`I"BL)"0EP97)R;W)?;7-G7V%N9%]D:64H(B5S
M(BP@:6YF:6QE*3L**PD):68@*&X@/3T@,"D*(`D)"6)R96%K.PHK"0EI9B`H
M;B`]/2!B<RD**PD)"6EN7V9U;&PK*SL**PD)96QS90HK"0D):6Y?<&%R="LK
M.PHK"0EI9B`H<WEN8RD@>PHK"0D);65M<V5T*&)U9B`K(&XL("=<,"<L(&)S
M("T@;BD["BL)"0EN(#T at 8G,["B`)"7T*+0D);W5T5&]T86P@*ST@;W5T0V,[
M"BT@("`@("`@('T*+0EI9B`H=')U;F,@/3T at 5%)512D@>PHM"0EF=')U;F-A
M=&4H;W5T1F0L(&QS965K*&]U=$9D+"`P+"!3145+7T-54BDI.PHM"7T*+0DO
M*B!.;W1E('1H870@=V4 at 87)E(&YO="!F<F5E:6YG(&UE;6]R>2!O<B!C;&]S
M:6YG"BT)("H at 9FEL97,@:&5R92P@=&\@<V%V92!A(&9E=R!B>71E<RX@*B\*
M+2-I9F1E9B!"0E]&14%455)%7T-,14%.7U50"BT)8VQO<V4H:6Y&9"D["BT)
M8VQO<V4H;W5T1F0I.PHM(V5N9&EF"BT*+0EP<FEN=&8H(B5L9"LE9"!R96-O
M<F1S(&EN7&XB+"`H;&]N9RD@*&EN5&]T86P at +R!B;&]C:U-I>F4I+`HM"0D@
M("`H:6Y4;W1A;"`E(&)L;V-K4VEZ92D@(3T@,"D["BT)<')I;G1F*"(E;&0K
M)60@<F5C;W)D<R!O=71<;B(L("AL;VYG*2`H;W5T5&]T86P at +R!B;&]C:U-I
M>F4I+`HM"0D@("`H;W5T5&]T86P@)2!B;&]C:U-I>F4I("$](#`I.PHM"7)E
M='5R;B!%6$E47U-50T-%4U,["BT@('5S86=E. at HK"0EN(#T at 9G5L;%]W<FET
M92AO9F0L(&)U9BP@;BD["BL)"6EF("AN(#P@,"D**PD)"7!E<G)O<E]M<V=?
M86YD7V1I92 at B)7,B+"!O=71F:6QE*3L**PD):68@*&X@/3T at 8G,I"BL)"0EO
M=71?9G5L;"LK.PHK"0EE;'-E"BL)"0EO=71?<&%R="LK.PHK"7T*(`HM"75S
M86=E*&1D7W5S86=E*3L**PEF<')I;G1F*'-T871U<V9P+"`B)60K)60@<F5C
M;W)D<R!I;EQN(BP@:6Y?9G5L;"P@:6Y?<&%R="D["BL)9G!R:6YT9BAS=&%T
M=7-F<"P@(B5D*R5D(')E8V]R9',@;W5T7&XB+"!O=71?9G5L;"P@;W5T7W!A
M<G0I.PHK"BL)<F5T=7)N($58251?4U5#0T534SL*('T*26YD97 at Z('1A:6PN
M8PH]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"E)#4R!F:6QE.B`O=F%R+V-V<R]B
M=7-Y8F]X+W1A:6PN8RQV"G)E=')I979I;F<@<F5V:7-I;VX@,2XR-PID:69F
M("UU("UR,2XR-R!T86EL+F,*+2TM('1A:6PN8PDR,#`P+S$R+S`W(#$Y.C4V
M.C0X"3$N,C<**RLK('1A:6PN8PDR,#`P+S$R+S$W(#$Y.C0Y.C(R"D!`("TV
M,2PV("LV,2PQ,R!`0`H@"B!S=&%T:6,@;V9F7W0@=6YI=',],#L*(`HK<W1A
M=&EC('-T<G5C="!S=69F:7A?;75L="!T86EL7W-U9F9I>&5S6UT@/2!["BL)
M>R`B8B(L(#4Q,B!]+`HK"7L@(FLB+"`Q,#(T('TL"BL)>R`B;2(L(#$P-#@U
M-S8@?2P**PE[($Y53$PL(#`@?0HK?3L**PH@<W1A=&EC(&EN="!T86EL7W-T
M<F5A;2AI;G0 at 9F0I"B!["B`)<W-I>F5?="!S=&%R='!O:6YT.PI`0"`M,3<P
M+#,R("LQ-S<L-B!`0`H@"B`)"7-W:71C:"`H;W!T*2!["B`C:69N9&5F($)"
M7T9%05154D5?4TE-4$Q%7U1!24P*+0D)8V%S92`G8R<Z"BT)"0EU;FET7W1Y
M<&4@/2!"651%4SL*+0D)"71E<W0@/2!A=&]I*&]P=&%R9RD["BT)"0EI9BAT
M97-T/3TP*0HM"0D)"75S86=E*'1A:6Q?=7-A9V4I.PHM"0D):68H;W!T87)G
M6W-T<FQE;BAO<'1A<F<I+3%=/B<Y)RD@>PHM"0D)"7-W:71C:"`H;W!T87)G
M6W-T<FQE;BAO<'1A<F<I+3%=*2!["BT)"0D)8V%S92`G8B<Z"BT)"0D)"71E
M<W0@*CT at -3$R.PHM"0D)"0EB<F5A:SL*+0D)"0EC87-E("=K)SH*+0D)"0D)
M=&5S="`J/2`Q,#(T.PHM"0D)"0EB<F5A:SL*+0D)"0EC87-E("=M)SH*+0D)
M"0D)=&5S="`J/2`H,3`R-"`J(#$P,C0I.PHM"0D)"0EB<F5A:SL*+0D)"0ED
M969A=6QT. at HM"0D)"0EF<')I;G1F*'-T9&5R<BPB4VEZ92!M=7-T(&)E(&(L
M:RP@;W(@;2XB*3L*+0D)"0D)=7-A9V4H=&%I;%]U<V%G92D["BT)"0D)?0HM
M"0D)?0HM"0D):68H;W!T87)G6S!=/3TG*R<I"BT)"0D)=6YI=',]=&5S="LQ
M.PHM"0D)96QS90HM"0D)"75N:71S/2TH=&5S="LQ*3L*+0D)"6)R96%K.PH@
M"0EC87-E("=Q)SH*(`D)"7-H;W=?:&5A9&5R<R`](#`["B`)"0EB<F5A:SL*
M0$`@+3(P-RPQ-2`K,3 at X+#$R($!`"B`)"6-A<V4@)W8G. at H@"0D)=F5R8F]S
M92`](#$["B`)"0EB<F5A:SL**PD)8V%S92`G8R<Z"BL)"0EU;FET7W1Y<&4@
M/2!"651%4SL**PD)"2\J($9!3$Q3(%1(4D]51T@@*B\*("-E;F1I9 at HM"0EC
M87-E("=F)SH*+0D)"69O;&QO=R`](#$["BT)"0EB<F5A:SL*+0D)8V%S92`G
M:"<Z"BT)"0EU<V%G92AT86EL7W5S86=E*3L*+0D)"6)R96%K.PH@"0EC87-E
M("=N)SH*+0D)"71E<W0@/2!A=&]I*&]P=&%R9RD["BL)"0ET97-T(#T@<&%R
M<V5?;G5M8F5R*&]P=&%R9RP@=&%I;%]S=69F:7AE<RD["B`)"0EI9B`H=&5S
M="D@>PH@"0D)"6EF("AO<'1A<F=;,%T@/3T@)RLG*0H@"0D)"0EU;FET<R`]
M('1E<W0["D!`("TR,C0L."`K,C`R+#$P($!`"B`)"0E](&5L<V4*(`D)"0EU
M<V%G92AT86EL7W5S86=E*3L*(`D)"6)R96%K.PHK"0EC87-E("=F)SH**PD)
M"69O;&QO=R`](#$["BL)"0EB<F5A:SL*(`D)9&5F875L=#H*+0D)"65R<F]R
M7VUS9R at B7&Y5;FMN;W=N(&%R9SH@)6,N7&Y<;B(L;W!T;W!T*3L*(`D)"75S
M86=E*'1A:6Q?=7-A9V4I.PH@"0E]"B`)?0I);F1E>#H@=71I;&ET>2YC"CT]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T*4D-3(&9I;&4Z("]V87(O8W9S+V)U<WEB
M;W at O=71I;&ET>2YC+'8*<F5T<FEE=FEN9R!R979I<VEO;B`Q+C$W-0ID:69F
M("UU("UR,2XQ-S4@=71I;&ET>2YC"BTM+2!U=&EL:71Y+F,),C`P,"\Q,B\Q
M-2`R,CHS-#HS-`DQ+C$W-0HK*RL@=71I;&ET>2YC"3(P,#`O,3(O,3<@,3DZ
M-#DZ-#<*0$`@+34S-BPW("LU,S8L-R!`0`H@?0H@(V5N9&EF("\J($)"7U1!
M4B!\?"!"0E]!4B`J+PH@"BTC:68 at 9&5F:6YE9"!"0E]!4B!\?"!D969I;F5D
M($)"7T-07TU6('Q\(&1E9FEN960 at 0D)?1$0@?'P at 9&5F:6YE9"!"0E].0R!\
M?"!D969I;F5D($)"7U1!4 at HK(VEF(&1E9FEN960 at 0D)?5$%2('Q\(&1E9FEN
M960 at 0D)?0U!?358@?'P at 9&5F:6YE9"!"0E]!4B!\?"!D969I;F5D($)"7T1$
M"B`O*@H@("H at 5W)I=&4 at 86QL(&]F('1H92!S=7!P;&EE9"!B=69F97(@;W5T
M('1O(&$@9FEL92X*("`J(%1H:7, at 9&]E<R!M=6QT:7!L92!W<FET97, at 87,@
M;F5C97-S87)Y+ at I`0"`M-38U+#<@*S4V-2PW($!`"B`C96YD:68 at +RH@0D)?
M5$%2('Q\($)"7T-07TU6('Q\($)"7T%2("HO"B`*(`HM(VEF(&1E9FEN960@
M0D)?5$%2('Q\(&1E9FEN960 at 0D)?5$%)3"!\?"!D969I;F5D($)"7T%2('Q\
M(&1E9FEN960 at 0D)?4T@@?'P at 9&5F:6YE9"!"0E]#4%]-5B!\?"!D969I;F5D
M($)"7T1$"BLC:68 at 9&5F:6YE9"!"0E]!4B!\?"!D969I;F5D($)"7T-07TU6
M('Q\(&1E9FEN960 at 0D)?4T@@?'P at 9&5F:6YE9"!"0E]404E,('Q\(&1E9FEN
M960 at 0D)?5$%2"B`O*@H@("H at 4F5A9"!A;&P@;V8@=&AE('-U<'!L:65D(&)U
M9F9E<B!F<F]M(&$@9FEL92X*("`J(%1H:7, at 9&]E<R!M=6QT:7!L92!R96%D
M<R!A<R!N96-E<W-A<GDN"D!`("TQ,C$U+#4X("LQ,C$U+#8 at 0$`*('T*("-E
M;F1I9 at D)"0D)"0DO*B!"0E]$1B!\?"!"0E]-5$%"("HO"B`*+0HM"BTC:68@
M9&5F:6YE9"!"0E]$1"!\?"!D969I;F5D($)"7U1!24P*+2\J"BT@*B!296%D
M(&$@;G5M8F5R('=I=&@@82!P;W-S:6)L92!M=6QT:7!L:65R+ at HM("H at 4F5T
M=7)N<R`M,2!I9B!T:&4@;G5M8F5R(&9O<FUA="!I<R!I;&QE9V%L+ at HM("HO
M"BUE>'1E<FX@;&]N9R!A=&]I7W=?=6YI=',H8V]N<W0 at 8VAA<B`J8W`I"BU[
M"BT);&]N9R!V86QU93L*+0HM"6EF("@A:7-?9&5C:6UA;"@J8W`I*0HM"0ER
M971U<FX at +3$["BT*+0EV86QU92`](#`["BT*+0EW:&EL92`H:7-?9&5C:6UA
M;"@J8W`I*0HM"0EV86QU92`]('9A;'5E("H@,3`@*R`J8W`K*R`M("<P)SL*
M+0HM"7-W:71C:"`H*F-P*RLI('L*+0EC87-E("=-)SH*+0EC87-E("=M)SH)
M"0D)"2\J(&!T86EL)R!U<V5S(&ET('1R861I=&EO;F%L;'D@*B\*+0D)=F%L
M=64@*CT@,3`T.#4W-CL*+0D)8G)E86L["BT*+0EC87-E("=K)SH*+0D)=F%L
M=64@*CT@,3`R-#L*+0D)8G)E86L["BT*+0EC87-E("=B)SH*+0D)=F%L=64@
M*CT at -3$R.PHM"0EB<F5A:SL*+0HM"6-A<V4@)W<G. at HM"0EV86QU92`J/2`R
M.PHM"0EB<F5A:SL*+0HM"6-A<V4@)UPP)SH*+0D)<F5T=7)N('9A;'5E.PHM
M"BT)9&5F875L=#H*+0D)<F5T=7)N("TQ.PHM"7T*+0HM"6EF("@J8W`I"BT)
M"7)E='5R;B`M,3L*+0HM"7)E='5R;B!V86QU93L*+7T*+2-E;F1I9 at D)"0D)
M"0DO*B!"0E]$1"!\?"!"0E]404E,("HO"BT*+0H@(VEF(&1E9FEN960 at 0D)?
M24Y)5"!\?"!D969I;F5D($)"7U-94TQ/1T0@"B`O*B!T<GD@=&\@;W!E;B!U
M<"!T:&4@<W!E8VEF:65D(&1E=FEC92`J+PH at 97AT97)N(&EN="!D979I8V5?
M;W!E;BAC:&%R("ID979I8V4L(&EN="!M;V1E*0I`0"`M,3<Y,"PX("LQ-S,X
M+#,U($!`"B`*(`ER971U<FX@<W1R8VUP*&%P<&QE=#$M/FYA;64L(&%P<&QE
M=#(M/FYA;64I.PH@?0HK"BLC:68 at 9&5F:6YE9"!"0E]$1"!\?"!D969I;F5D
M($)"7U1!24P**W5N<VEG;F5D(&QO;F<@<&%R<V5?;G5M8F5R*&-O;G-T(&-H
M87(@*FYU;7-T<BP@<W1R=6-T('-U9F9I>%]M=6QT("IS=69F:7AE<RD**WL*
M*PES=')U8W0@<W5F9FEX7VUU;'0@*G-M.PHK"75N<VEG;F5D(&QO;F<@:6YT
M(')E=#L**PEI;G0@;&5N.PHK"6-H87(@*F5N9#L**PD**PER970@/2!S=')T
M;W5L*&YU;7-T<BP@)F5N9"P@,3`I.PHK"6EF("AN=6US='(@/3T at 96YD*0HK
M"0EE<G)O<E]M<V=?86YD7V1I92 at B:6YV86QI9"!N=6UB97(@8"5S)UQN(BP@
M;G5M<W1R*3L**PEW:&EL92`H96YD6S!=("$]("=<,"<I('L**PD)9F]R("AS
M;2`]('-U9F9I>&5S.R!S;2T^<W5F9FEX("$]($Y53$P[('-M*RLI('L**PD)
M"6QE;B`]('-T<FQE;BAS;2T^<W5F9FEX*3L**PD)"6EF("AS=')N8VUP*'-M
M+3YS=69F:7 at L(&5N9"P@;&5N*2`]/2`P*2!["BL)"0D)<F5T("H]('-M+3YM
M=6QT.PHK"0D)"65N9"`K/2!L96X["BL)"0D)8G)E86L["BL)"0E]"BL)"7T*
M*PD):68@*'-M+3YS=69F:7@@/3T at 3E5,3"D**PD)"65R<F]R7VUS9U]A;F1?
M9&EE*")I;G9A;&ED(&YU;6)E<B!@)7,G7&XB+"!N=6US='(I.PHK"7T**PER
M971U<FX@<F5T.PHK?0HK(V5N9&EF"B`*+2-I9B!D969I;F5D($)"7TY#"BLC
M:68 at 9&5F:6YE9"!"0E]$1"!\?"!D969I;F5D($)"7TY#"B!S<VEZ95]T('-A
M9F5?<F5A9"AI;G0 at 9F0L('9O:60@*F)U9BP@<VEZ95]T(&-O=6YT*0H@>PH@
,"7-S:7IE7W0@;CL*
`
end
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 232 bytes
Desc: not available
Url : http://lists.busybox.net/pipermail/busybox/attachments/20001217/73a1745d/attachment.pgp 


More information about the busybox mailing list