[29928] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 1168 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Jan 3 21:53:46 2008

Date: Thu, 3 Jan 2008 11:09:09 -0800 (PST)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Thu, 3 Jan 2008     Volume: 11 Number: 1168

Today's topics:
        "global watch-expressions" in perldb? <socyl@987jk.com.invalid>
    Re: "global watch-expressions" in perldb? <purlgurl@purlgurl.net>
    Re: anyone have a working captcha perl script for windo <jack_posemsky@yahoo.com>
    Re: How Do I Locate a value in a text file and evaluate <jurgenex@hotmail.com>
        how to simply parse raw image data and output to an ima <jack_posemsky@yahoo.com>
        How would I create a Regular Expression to check <nathan.stanford@gmail.com>
    Re: How would I create a Regular Expression to check <thepoet_nospam@arcor.de>
    Re: How would I create a Regular Expression to check <tzz@lifelogs.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: Thu, 3 Jan 2008 16:50:19 +0000 (UTC)
From: kj <socyl@987jk.com.invalid>
Subject: "global watch-expressions" in perldb?
Message-Id: <flj3ob$stb$1@reader2.panix.com>




What *exactly* is a "global watch-expression" in the context of
the perl debugger?  And what exactly needs to happen for a global
watch-expression to stop the execution of the program?  Does
"localizing" a global do it?  Can one use a global watch-expression
when detect when a method has been overridden by the run-time
definition of the overriding method in a subclass?

Of course, I tried to RTFM, but all it says is this:

    w expr  Add a global watch-expression.  We hope you know
            what one of these is, because they're supposed to
            be obvious.

TIA!

kj
-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.


------------------------------

Date: Thu, 03 Jan 2008 09:25:30 -0800
From: Purl Gurl <purlgurl@purlgurl.net>
Subject: Re: "global watch-expressions" in perldb?
Message-Id: <sYadnT47I5oQh-DanZ2dnUVZ_jGdnZ2d@giganews.com>

kj wrote:

(snipped)

> What *exactly* is a "global watch-expression" in the context of
> the perl debugger?

> Of course, I tried to RTFM, but all it says is this:

>     w expr  Add a global watch-expression.  We hope you know
>             what one of these is, because they're supposed to
>             be obvious.


Typical documentation comment written by a blithering idiot.

My presumption is you have discovered this idiotic comment
shows up just about everywhere you research.

I have read much worse. Perl is noted for having the worst
of documentation. Perl FAQ documentation was once entirely
laughable but improvements are being made. Nonetheless, do
not expect Perl documentation nor FAQ to be of much help.

Do make use of Perl documentation and FAQ, but keep in mind
a lot of this material is written by people who would not
be considered the brightest colors in the Crayon box.

This is a page which will introduce you to watch expressions
and will provide some detailed examples. This is a fairly
decent discussion of the debugger,

http://obsidianrook.com/web/perldb_talk.html

About 1/4 down the page, look for:

"watch expression. With a watch expression, you can tell the
perl debugger to keep an eye on something like the value of a
variable, and stop and tell you whenever it changes."

Clear code examples are provided right after those comments.

You will do well to simply start at the beginning of this page
and read your way down through the discussion. You will find
good information there.

Again, be careful about Perl documentation and FAQ. Some of
this documentation is good, some of this documentation is
clearly written by blithering idiots; ignorant illiterates.


-- 
Purl Gurl
--
So many are stumped by what slips right off the top of my mind
like a man's bad fitting hairpiece.


------------------------------

Date: Thu, 3 Jan 2008 07:53:56 -0800 (PST)
From: Jack <jack_posemsky@yahoo.com>
Subject: Re: anyone have a working captcha perl script for windows ?
Message-Id: <97af65d9-14d9-4fcd-9646-842f690396a3@e25g2000prg.googlegroups.com>

On Jan 2, 10:42=C2=A0pm, "lihao0...@gmail.com" <lihao0...@gmail.com> wrote:
> On Jan 3, 1:12 am, Jack <jack_posem...@yahoo.com> wrote:
>
>
>
>
>
> > Hi there, I have installed every CPAN Captcha image verification known
> > and cant get any of them to do a simple task - output to a directory a
> > set of Captcha images with codes and the code file..you would think
> > its simple, I tried GD:SecurityImage and this does nothing:
>
> > =C2=A0use GD::SecurityImage;
>
> > =C2=A0 =C2=A0# Create a normal image
> > =C2=A0 =C2=A0my $image =3D GD::SecurityImage->new(width =C2=A0 =3D> 80,
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 height =C2=A0=
=3D> 30,
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 lines =C2=A0 =
=3D> 10,
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 gd_font =3D> =
'giant');
> > =C2=A0 =C2=A0 =C2=A0 $image->random($your_random_str);
> > =C2=A0 =C2=A0 =C2=A0 $image->create(normal =3D> 'rect');
> > =C2=A0 =C2=A0my($image_data, $mime_type, $random_number) =3D $image->out=
;
>
> > It runs but you have no way of knowing "where" the images were
> > placed. =C2=A0can anyone reply with a true to life working SIMPLE script=

> > that just dumps the images and code file ??????
>
> I suppose you were in a web-context, so you need to print out the
> result to STDOUT. you need also send out content-type header before
> sending your image data.. what I did with HTML::Mason:
>
> =C2=A0 =C2=A0 my($image_data, $mime_type) =3D $image->out;
> =C2=A0 =C2=A0 binmode STDOUT;
> =C2=A0 =C2=A0 $m->clear_buffer();
> =C2=A0 =C2=A0 $r->content_type("image/$mime_type") ;
> =C2=A0 =C2=A0 $m->print($image_data);
> =C2=A0 =C2=A0 $m->flush_buffer();
> =C2=A0 =C2=A0 $m->abort();
>
> If you were using plain-CGI, and your script filename is captcha.cgi,
> then you probably can do things like:[sorry I have no experience with
> plain CGI]
>
> =C2=A0 =C2=A0 {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 local $|++;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 my($image_data, $mime_type) =3D $image->out;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 binmode STDOUT;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 print "Content-type=3Dimage/$mime_type";
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 print $image_data;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 close STDOUT;
> =C2=A0 =C2=A0 }
>
> or something like that to print out image data to the web with a
> proper content-type(make sure no other data are outputted before
> sending content-type header), and then you can fetch it from the other
> side with:
> =C2=A0 =C2=A0 <img src=3D"/path/to/captcha.cgi?R=3D..." alt=3D"" />
>
> For me, the random number is generated from outside captcha.cgi, and
> passed in with an encrypted query string(i.e. R=3D#### as in the above
> sample). you can then decrypt it at the beginning of your Perl script
> captcha.cgi.. If you like this approach, you need also check out CPAN
> for some Crypt:: modules(I am using Crypt::RC4 for this).
>
> BTW. with GD::ImageSecurity, you dont need any temporary file to save
> the images....
>
> Good luck,
> lihao- Hide quoted text -
>
> - Show quoted text -

Hey thanks but that doesnt help - looking for a simple script that
dumps to a DIRECTORY on WINDOWS captcha images and their code file.

Your code produces errors when I integrate it:

   use GD::SecurityImage;
use HTML::Mason;

   # Create a normal image
   my $image =3D GD::SecurityImage->new(width   =3D> 80,
                                      height  =3D> 30,
                                      lines   =3D> 10,
                                      gd_font =3D> 'giant');
$your_random_str =3D '2345';
      $image->random($your_random_str);
      $image->create(normal =3D> 'rect');
   my($image_data, $mime_type, $random_number) =3D $image->out;

 print " 1  $image_data   2   $mime_type  3  $random_number 4 $image
";

    binmode STDOUT;
    $m->clear_buffer();
    $r->content_type("$image/$mime_type") ;
    $m->print($image_data);
    $m->flush_buffer();
    $m->abort();

##### I Tried adding this but it doesnt help:
$filename1 =3D 'c:\tmp\test.png';
open(OUTFILE,">$filename1")|| die 'ERROR : external table not found :'.
$filename1."\n";
print OUTFILE $image_data;
#  print OUTFILE out;

########
Results Errors:
1  5=E2=88=9E=CF=83=C3=B7w?=E2=8C=82=C2=AB=E2=89=A4       =E2=89=88=E2=95=91=
=C2=B1L=C3=B2=E2=98=BA-    IEND=C2=ABB`=C3=A9   2   png  3  671027 4
GD::SecurityImage=3DHAS
H(0x18300bc) Can't call method "content_type" on an undefined value at
cap.pl li
ne 21.  (same with clear_buffer and flush_buffer


------------------------------

Date: Thu, 03 Jan 2008 18:20:42 GMT
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: How Do I Locate a value in a text file and evaluate it and then  write out that line based on the value?
Message-Id: <4b9qn3hogid2p5da1ekf2uiqds1o5i8sq8@4ax.com>

kwalike57 <karinwalike@comcast.net> wrote:
>Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
>/dev/hd4           131072     38912   71%     4261    32% /
>Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
>/dev/inputlv    255328256 118925432   54%      564     1% /IPW/input
>
>From this example, I want to evaluate the column labeled %Used for

Ok, that would be the fourth column.

>values greater than 60% and if that value is greater than 60%, I then
>want to write that entire line, (/dev/hd4           131072     38912
>71%     4261    32% /

Assuming the the data is stored in @t:

	for (@t) {
	    print if ((split)[3] >= 60);
	}

Note: this is not warning safe, so you will have to disable warnings for
this line.

>) out to a text file that will be emailed out to report on filesystems
>that are now at a capacity of 60% or greater.

Above you wrote greater than 60% and here 60% or greater. Which one is it?

>I already have the script written to create the original df -k output
>to a text file and create the email generation. 

Why writing the df output to a file instead of storing it in an array? That
output can't be that large.
Anyway, if you want to use that temporary file and process it line by line
instead (which IMO is totally unnecessary in this case) then use the
standard 
	while(<FILE>)
loop instead of the for() loop.

jue


------------------------------

Date: Thu, 3 Jan 2008 08:19:47 -0800 (PST)
From: Jack <jack_posemsky@yahoo.com>
Subject: how to simply parse raw image data and output to an image file ?
Message-Id: <84b35f3c-cbc4-4ecc-9b97-64502b7e89c6@e25g2000prg.googlegroups.com>

Hi I have the text file of an email with an image attachment - I am
ONLY looking to take the raw image (jpg) data that came in from an
email attachment (I have ALREADY parsed it) and SIMPLY decode and dump
the contents to an image file so it becomes an image again.  I am not
looking for fancy programs and all kinds of complex MIME:: programs.
So I did the following assuming the jpg data that came in on an email
was Base64, and that was wrong since the below didnt work - any ideas
how to do this ?  I am on windows and just want to create the image to
a directory.  I dont work with Perl on unix.
##########################################
use MIME::Base64::Perl;

$body = '/9j/6wNeRVBTAHic7ZjZT1pBFMbBre7UFVxqqbZ9aNKk6VP/
ZGhco4lgoo1BEo1bYlhqQ1VU9uXS
KAUhtE3O3O/hGoSZuwA2fA/
3B5c5sxxmzpwZk6mttp6fenoGm92FFlU3PS2WCcXbyl9GSZKIR0dH
RI/HQ3Q6ncRS+aFm7efn58TNzU3i4uIi8erqSmO/jZW5c0D+1KV473B+ZXSw8a+urhL39/
eJ8JPf
7ye63C6ZyvE7HA723sV+9/l8Crv19XViNBrVa0ga1UFPi2WGaLUuVC2VzvwSqjWZShJ9fjb
+ZDLJ
ZVepVIjwn+GS58OLbhtxoG
+W2Ndrkwv0N6Yfgrq8vNS5xk727BmWv3c9XbQJKpVKQuUR34rFoqZ2
h16yeTBhs2uqx2ghHosqFAqpbLGXnmMTdpX2jVGhWNBkf3p6qs7QzPKST5+/
aGpfLyWSCaKUk3St
F/ubuFh+MjX1TqeemGV21iwVjaWIiA9GKxKJqLIbHp4mzs19ELRk45+ZfU+cX/hItM
+zekbHZ1X1
xyg9PLA8M51OC1qy/3tq+i1xbHyOy6p/cJyr3MjopGB/jBXyR1ENDlmJmAf11StU/
6R1pubvhQKL
v1tbW8Tt7W3izrcdJXeUjMfjQv1QHadl2ax2YodZ33zv1Wt71fdra2vEg4MDYj6fF6oX+Z/
b7eYq
HwwGhep/rNERFo/m34jGIz5VKn+ILhffeEQVDodr/p5KsX2hXC6rbIGdo
+qtB7WCX0olsf4hvsZi
MeLx8TER/kD+d3t7W9Ue6xe6ubkRal9UwR8XQuVDF2wd5PO/
ucrjHI9zOtbhxsYGEfFnd3eXuLKy
QkS+8HgePc5/rq+vhfovKknKEX+G+drxePaIT82bu7s7IvyB8eN/
5l0PiF845+MeKZfLcdnrLd44
EvjOzk3prDIfhF+WlpaImUxGx96ZTNlsVtf6RJVIsPNAvX0H+SvmP+IJ/
NKoPLpZ8nq9QuVxv9co
vzRrfUEnJydc5eAPo/2iNk82Slhf2Hefkv73edWFe/5WE/YdnBOwHy0vLxMPDw
+r2p2dnWlqF/tb
q8cz3H8i38B9X734Db8GAgGudpAHIx9qdb9oFfwKP2Hegchj8B3xHf+D6L30c9f9/
T0ReR6IvKCt
ttpq63/TP+szoVb/4AAQSkZJRgABAgAAYABgAAD//
gAmQ3JlYXRlZCBieSBJbWFnZUdlYXIsIEFj
Y3VTb2Z0IENvcnAu/8AAEQgBLAEsAwEiAAIRAQMRAf/
bAIQABwUFBgUEBwYGBggIBwkLEwwLCgoL
GBESDhMcGR4dHBkbGx8jLSYfISsiGxsnNigrLzAzMzMeJjg8NzE7LTIzMQEICAgLCgsXDAwXMSAb
ICAxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx/
8QBogAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYT
UWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZX
WFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/
T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgME
BQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6
goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6RooooA8y8UfHDw94S8WXfh/
UrHUjNbBC00Ua
Mh3KGH8Weh9KLT45eEdQwLbUII2PRbmTyT/48MV4R8dLiWX4ya7E7bo4xAqg/
wAI8lDgfiSfxrgM
g9v1p8txXPtK28eRXq5sra3uR/0xvFf/ANBBpzeNZozhtKAPobjH/stfFkaiN90eVYd1GD
+Yrcsv
GPiOxQR22vakqDov2gsB+DZpOEu4+ZH1k3jm5wdumxj6zk/+y1AfHGojpZWw/wCBsa
+dLP4t+JrQ
AXEtneKO9zagE/8AAk2mt61+Mxkx9q0GI+ptrsjP4Mp/nUuMx3iezyeOdWBwLazH1DH
+tQnx3rXa
Gw/79v8A/FV5xafFDw3c4E41CzY/89rcOPzQk/pWtB4q8PXhAt9dsCx6B5DH/wChgVm
+YpWOrfx3
rp6CyH0ib/4qoW8c6/8A89rYfSH/AOvWakTTRebDH56Y+/
CRIv5rkVXfCnawwfepux2Rqt438Qnp
eQj/ALYCoG8beIscago+kKf4VmMo9KhZfl+lO7CyNQ+N/Ean/kJZ9jDHj/
0GrkPxI1uFcSx2c/8A
vRlT+h/pXMsmOf6VEy+gxRdg0ju4fiodoFzpGPVop/6ED+daEfxR0ZgA9tfRnuTGpA/
Jq8vYcdqj
PH41SbJsj2e38deHJyqjVY0J/wCeqMn6kAVqwazpV0MW+p2cp/
6Zzqf5Gvn88nmo2RT96MH1yKfM
xWPpSivm62u7izk3WlxPAfWGRk/ka0ofF+v24Bi1q84/vvv/APQgarmCx7/
RXidv8TvEdv8AfuLW
5H/TWAD/ANBIrVg+L19HH/pOj28h9Ypyn6EH+dO4WPV6K86tfi/prJ/pWmXsR/6ZlXA/Mg/
pWtB8
SvDEyANfyQN/dlt3GPxAx+tFxHX0ViWnizw/dhRBrdizHgKZ1B/
InNa8bpKgdGDKehByDTAkoooo
AKKKKACiiigAooooAKKKKACiiigD43+OQ/4vV4h+sH/pPHXBj7td38cv+S0eIvrb/
wDpPHXBA9qp
EkoqUVCKkWmIlQd6lRAeoH41Ep5qZaoB4iXHyll
+hqUIcY3H8QDSCpB2qRhCHgk3xYRv70ZKH9K3
LLxb4i09AsGrX+wc7HcTL/3y+f5VkAVIKVgudTD8RtVSP/SLfTph3ZrcxH8dpUfpWpa/
EOxlUfat
JuIj3a1ug4/75Zf/
AGauGTIIwSPpSmOOTrGpPrjn86XImPmZ6PH4s0GYjbfXEOR0uLQjH4oWq7Hc
2t3zaarp059EulVv++X2n9K8u2g4HzDHdWx/PIpTGTj5sjvuUH
+WP5VPs0PnZ6sbK7aLeLOd1H8a
IWH5jiqbMM4yBjt0Ned25uLOUPZ3BhYdGhkaNv6fzrZi8W+IxFsbULm4Qfw3KpcY/wC
+gxo9mPmO
nY854xUZIIyOKxNN8ZefPcw6jptvcImxQ9qxtpEOCT0BXPTqvatm21HQLskf2hd2L9lvIy6f99x5
/wDQalpoE0DdTjNRMpK8frVLWfEOiaDdxwXt8XMsInjaBXdXQ5wQePQ9R2rKf4h+Fl/
5bXj/AEhP
9WFGozeOeMCm8gc1zJ+JXh4sQlnqTn/rmv8A8XTX+Jmjj/V6Tet/vBR/
U07PsLQ6cnnvSZ7bq5Nv
ifY/8s9BnPfmVR/7LUR+KUanK6Acjjm5H/xNHLLsGh2JIPXBA9aIm8py0JMTdmQkH9K4v/
hazn7u
gr+Nz/8AY02T4s3aAFdHtwPeYn+VPlkK6PSbfxHrlmALbWdQUDoPtDMB+DZFbNv8R/FkB/
4/UuAO
MTWy/wDsoFeL/wDC2NVkz5enWY9iXP8AWmxfEvxFduwt7CwYjqBG5x/49RysLo9+g+LevI/
+kabY
yr6Rq8Z/Mlv5Vs2nxfhY/wCmaDdxj1gkWT+e2vl64+JniGKQxtDZIw6gQnj9art8S/
ELniW1T/dt
1/rRZj0Pr+1+KGgTsFlW+ts/89bYnH/fOa3bDxJpGqfLZ6lbu2cbC21v++Tg18ON8RvEx
+7qCr9L
eP8A+Jpp+Inihhg6ocf9cI//AImjUR9+UV8JWfxb8dWMRjtvE96iYwF
+UgfQEcfhX2Z4Gv7rU/AG
gX97MZrq50+CWWUgAszICTxx1NMDoaKKKACiiigD43+Of/JaPEP1g/8ASeOuABrvvjp/
yWvxD9bf
/
wBER1wPeqRJKvQU8VGpp4piJkOamTmq6mpozVAWAalXg1CnsalU81IydTUi1EvWpBQIlH3aeKYK
kFADh14qT+GmD7tPoAUc0FaBTsfKaAGW5Ju7nJJwI8DPTg1aFVrUf6Vcn2j/
AA4NWh7UgML4t/8A
IV8OkADOhWvTv96vP67/AOK7Aan4eUHO3QrYH82NcBSLLNn96TP93+oqzK0XnkxRlU/
uk5qtakAy
AsBleMn3FT5TvKv51rHYlimXkkRgKO1RysGkyOAfSneciEYcde1JvjMu5cjHbBp3FYRFZiAoLE9g
KjuVZAgYEHng1cilVZi4VwpUj5VPBNV71vNaPYHwq4+YYpPYS3IoGEa7iMjNXLDUUs1nV4TIsgUY
zjoc1SQlUKnHXPUUoRmOFXd9DQnoUF5MZ7t5iMbznHpVc1c
+w3c2NlrMeOyk1Iuh6kwyLKfH/XJv
8Kza1GZ9Fao8Oakf+XK4/wC/D/4V0FpHd29pBb/8IbYXDRggyzQT7nz1Jww/+t2xSsFziq
+/fhuN
vwt8LD/qE2p/8hLXx4sV3dWc2ny6HomnQ3B/4+ZIXLwjIPynLN2x0PFfZXg6zXT/
AARoVmkyzrb6
fBEJVBAfbGo3AHkA4zzzQxm/RRRSAKKKKAPjb46f8lo8Q/W3/wDREdcAK7/46f8AJa/
EP1t//REd
cAKtEkgPy04VHwKeDQIkU1PGarDrU6npVAWQelTA1XWpVqRlhD6VMvaq8ZqZTQImU1KKiTing0AS
jinj7tRr0qSkA4dakFRin/w0AMgP+mXX/bP+RqlfXM0PiLTreOZ1iljcuqnAJGcfyq3an/
Tbv6R/
yNUNRGfFuj5/54yfyagOpr+JR4as7fRJNY0vUdRu7jT1cOL4IqqrsgUDaSB8v61gf2n4Pj/
1fg13
/wCumpv/AEWrvxAG5PDH/YKx/wCR5K5IR8dKqMboTlY6BNb8Nr93wNaH/fv5TU3/
AAkekqP3XgvS
F/3ppW/rXNAVNGarlQuZm1ca/DHAXi8MaGmOxjdv/Zqm8Ka6uq
+K9MsbjQtDFtcXCxuEslyR7E5x
WBcH/Rm+lXPh+AfG2i5/5+x/I1MkrFJs9OfwzBBFBIZrc
+ZGJCsem267cgHup9cUiaLCCB5u046+
TbqAf+/R4PbvWtqZgi0hc3HkyfZY+QdpbKjjdjgZwPx7VzHnXa48ueATE/
ca5fb9oJ5TGcbAMEA8
Z7mslctmuNOVUOLy5CkZChkHOeV+VBz79Kge3jHPnXZXOSftTj5cdeMf/
XrGmnjYllvYngAyGaSV
nMA++3P8eeAeuPQVWLAIT51qfmUOBA5BZh
+4wD2A5Pr33U7Cub7RKAAfN5GMtLI2G4wOW6H9PfNQ
zR24LHavBzhi3bqDk9sj3rH2OSvlSjexeNWW1+66jMzc9Nw4/
TilwAGaOCYw8SiJbReYjwkXvtJz
j8adhXLs0NoVXcICWOwAkZJJ4AyfvYxVMnSgSyvaMoUyZUIRsBwW
+mePqOtR3au2nxWIN2kxuWje
+UKCMgEyk+gAxnIOCee1ZvnS7zO1veIxKXC25nVcOpKrBjHVh8+MZIxgd6ANHUrWIaFdy
+UoVIRu
wijJYgjt6d6+tfCv/In6N/14w/8AoAr4/u7e3j8MY
+0+YUiIjJmD7y3LkkcNt5HHpntX2F4Y/wCR
T0f/AK8of/QBQxo1aKKKQwooooA+Nvjr/wAlp8Q/9u//AKIjrz8Gu/8Ajp/yWrxD/wBsP/
REdcAK
tEjhTx7UwUooESiplzmoB1qZe3NAE69KmT0qCOp0+77UATp6VMpqCOploAlWpowCrE9hmoQeamh/
1c3+5QA5WHcMp9xUvt0OM88U
+8N3Lb2T3UY2mL9zgDlNxx098+9S3bAwRK03mv5krFjnO1myoIPT
A49OKSWgEQoJz9aZD/q8e5/nT8c0AR2p/wBMux7R/wAjVC//AORu0n/rnJ/JqvW4/
wBPuvdY/wD2
aqF+f+Kq0j/rnJ/I0B1LfjsboPDfPP8AZjf+j5K5TYR1rq/GxP2bw3/2D3H/
AJHkrlTWkdiHuJin
InNNwc8GnBsCqEJcD/RnPtVrwC2fGujD/p7B/Q1Vuj/oj/
SrHgFvL8b6OfS6H8jSlsUj2fWJI18O
wNNEzRGKIIeGG/
aP4fqR9cd65wx3DMI43nEhkaIOlqOJeryflxXR6lK48P2xhiWSR44kKglHQbB8
27p0J/KuYmihdNkzBYChhJa8/wCWAOQ/HXJ4/p3rCBoyJpZmw8UN8qbPOEIiUDYpx5P/
AAI84/Q9
aiY3wG0i/LoWUFplUuXHzH/tmPy9qbNGWnZ5hYi5LpIy
+exxcjIjXgnjHPp79qqbbVYVwdOx84jO
2Rhtx+/J/p7dPWqETvvaREmWQRGPYzNeD5Y0/wBW+O/mH/
HvRKzF3fy4ftHmNIFa5/5bNwy/QLz/
AFPSmIYRJG5FrtCbnCWp5jIxAoz0weT/
AFp1x9pVtqzYkeT7OrpZgkT9ZJOo4KgjPv2FAFW5lsVt
Ut53svsAPVncsbbPJGOdxfj+mKoFczkO
+npemRFJSNyBdlj5Z9NoTPqM5yDWlO8sQ81re8aMHz/s
62yDMe7aIDyRjPzd
+OcVUMc8eYJJr98EQNO0qqCGJZrjv937mc9MDcOlAIluDZt4QkNmpaP7M3kk
JtAAJDnB5GWzjrxx3xX2F4X/AORS0f8A68of/QBXx/fzTS+FLovbmFjB
+8R5NzIAcKM9yfvH1zmv
sDwx/wAino//AF5Q/wDoApMaNWiiikMKKKKAPjX46f8AJadf/wC3f/0RHXACvQPjr/yWjX/
+2H/o
iOvPxVIkUU4U2nDrTESAVMvWoR1qYUATRmplqGPNTpigZMtSrUSipk4oAkHtU8P+rm/
3KgFTQjKS
DIGV6mkIs/u4bGEx3SSOSr7ADmM/
Nwf0P41Y1KW9mmglvhiRrdChwBlMfKcD2ptzFBPDE9lAxYD9
4VYNu98Dp9KjnhWKK3ZLoT7kGQAfkOASvPpk0DGw/wCr/E/zqT+HrUcOBH+J/nUv8NAiCH/
j/uf9
2P8A9mrP1H/kadI/3JP5GtCPi/uP9yP+bVnX/wDyNGkf7sn8jTQdS343OLTw8T0Wwkz/AN/
5K1bL
4K
+O7+3gni0eJIZ0Dxu93GAQRkcAkjj2rL8XkCz0B2+6tnJn8Jnr3XwZ4b1e28MeATdbVa08ySbd
ISSjFnQZ6H5SOO3SleyGldnkcPwI8bS6uunywafbkwmUTS3JMZwQCuVUncM5xjpVCb4UazaeDr3x
DqN3ZWEdrLLF9mnLLJK0bbcJxg5IOPXFfQk19ptp4o06G51LTdOntI7m5e0WZVQq/
wAqvkgAOSeR
9fx4Tx54z8P+PPhZfC11axtJ4DBdpbTTjzJW2b2jVM5LbmK555BoU2xuKPAZwRYuPapvA2f
+E00n
/r5H8jTJxm1f6VJ4J/5HLScdftY/
rWstjOJ7Jq7OnhqLypfKHlxmYyLuj27OOAM5A31ypvbFYvMy
XgEXnbUsWbdblgETkdd3P65NdNqcO/RoI1mZHEEbMY32uRtBxzx2x
+PesAy3W5ZViumkDfaBG12F
/engRY64C846/SsImjIJXnSdoG+1tOJFhZ1sQo85uRLk/
wB1eM9R7ZqHz7lo1bydUUMdwHlohQJ1
Xrx5jfn70jxxAGPdG8IjMIdrzJMJJMj8dweB/I1Wke2MbM0VhyymRWmdgGAxAMjqD3/
XFUItLNP5
0e5Lwld7rvuVG5nGGTH/AEzGfp7VG6RJeRlfmJMcJL3Y/wBQr5WTH
+0+Bj8Mc5qOFoTNEsZsxId6
xlUdv3uMznntjgfpjrSs8Et5EINigNHKcWucwFsRpk992Dn8cnFIBuo5e5TyUszciTzIVkmYfvwe
B+C888Z79qx1GmCNjE9kbQRjjZIW+yhzv6/xF+nQ+4GK3bwTXF20Vu91C/ntbeZHbr
+6l6mTPGAF
4zwcVmLLccTRWuoRqdsyW+FQYVsLbgAc7vvkY5/
un71A0T3nnjwndec6Fhbr5nlJhST9wAHoAmOw
+nOa+wvDX/IpaT/15Rf+gCvju8QL4ZnR7lpmERVXaXeXZmy5JHBweM+3tX2N4cGPCukj/
pzi/wDQ
BQwRp0UUUhhRRRQB8b/HT/ktPiD/ALd//REdef4r0D46D/i9HiD/ALYf
+iI64DHNUSAp6imgU9RT
EOAqZRTAO9SqKAJVHSplFRqOlTLQBIgxUq1GKlWkA9aniQsrqOpXAycVCtTKD5cmOpU0AX72e2m3
y/YpoJyF2yFuGIJ3E++Co49Pep44wYYiLr7QrQFyrqDsYYyOcn8ar3c9mkynSzPDEw/
eI54z7D0+
vvTps2RhLCCQyx7t8DY4JIxkcdu4pDK8Z3ISABkngVKKijxsO3OMnr1p460CIV41Cf8A65x/
zas/
Uf8AkZtH/wB1/wCRq8DjUZv+ucf82qhqPPiXSP8Adf8AkapAXvFZBs9ABP8Ay6S/
+jnrm3UMcvlv
945xXQ+KP+PbQP8Ar1l/9HNWJirjsJ7lfyYwuBGuM54FLsyak280AGqJIph/
osv0o8DnHjTSM/8A
P0P6064H+jP9Kh8FH/isNJ/6+lqZbDiew621r/
wj8H2nAjWONgXB2lto7jnrjpXNvzKBE9iLkyMq
nymb/Sf4j9APw9u9dLqMzJo0Ijt5ZG8uEKIQGbdtGDtP1z+HbrXPzRXTI0LT6hGh3W7S
+YqYUHLT
fj93Pf1PSsYGjKYliZS0Cr9mMfmKqWWc26kh0yeu5uf69qA13zzd71IDbLNVLs4+Q4/6Zj8u2KfK
9w0hmlinRy6T+S96PllUYjix7jn1+lVWji2KpjtyE3IjPeFshgTOSR/d6D+tUSTqZmkVGN
+EZTGx
ZlUKE53n/rof6/eqaN5W1AGWORBkyjdcg/vWBBjx/srk+3eqYFtGQxjsVQIAww7HywMQge
+cE/rT
5PMSVgLmFZWLRK0VoW23XJkfpyNvH9B1oAXWxBJAI70wC2DsspklZSIAVJYY5JLYAGPw71jOqm4O
99NS9aVC23ewF0WOzPUbQmfUZznNW/tEckIufKup4ShuhH9iX5oC+1Yjkn
+L5u4xzVvT9Fu7yS+i
uNQubY28TL584VPNk
+8ZF55YDCDvgjkDICKKcv2UeEZPsIzD5HyMEIAUP8x555bOM54474r7J8O/
8ivpX/XpF/6AK+PdS87/AIRmZpoDA7QqXRn3EANgDPAJPU8d6+wvD/8AyLWmf9ekX/
oIoYkaVFFF
IoKKKKAPjn45D/i8/iD/ALYf+iI64LFegfHEf8Xn1/8A7Yf
+iI64HFUSJjFOAoA9qkApiFQe1SKO
RSKKmUcigB0YqVRTEGDUwHPWkMcB7VKvQU1RT1oESLTx6etIBTxQAeXxxShTgD0pwqodVso7t7aW
4WKZccNwOeep47+tAF6LhD9al71BFPHJNJFGSfLIyexyMjFS/wAQpMCH/l9m/
wBxP5tWff8AHiTS
T/sv/I1eH/H/ADf9ck/m1UL/AP5GPSf91/5GmgLniXm10TI6W0o/8jNWMB0rZ8REm20YD/
n3l/8A
RrVkgYFXHYT3GHGaMdcdKfjNNI71RJBcf8ez/Sqvg3jxhpJ/6elqzcn9y/0qr4POPFul/
wDX0tKW
w4nsOrm7bRoY7eKJ3eCJFR32DBUAnd24J/8Ar9K5/
wDseWWRITaW3kktbfNK5YwIcjpjDk5z0/Ku
jv1nGlo0TDeLZdp2lyBsHRcjJ4P581z0mpajJslW1vmG0XPlpbKpKnhYskn5v4jgcjt3rFGgxNO1
BlaZjpqzmL7QSqsR5+SI2GegC9sdex60/wDsiZA0ZvLdVDoqGK1HyrjMvXs56/
karm5vI5PLknuX
AOwzebEgKk/PMBg8L0x0z71Xe+cx5DhUIO9JdRHyYB8pcjHEnU/oVFMRorpc6yRym
+nJUyMQqBQd
wwiHHZRyPx6VDNoiPDJHJd3zK0CwFvNAJVWDFvYkjrzwaqyysZETz7czNv2bppGzIADL7YUdM9O3
NVZBaPL8piaMhHdfJd91uXAjXn+Lfgk/
qelAGidLtUvEnLyGX7YblQ8vWU8KPcDjj9e1ZniGdmvJ
AqhnhyGYkABQAcL9ck
+p49Ke9tcm4EcU0scxlMRljsh8s2dzTZ7YX5cjB78Ul5dQ3sQuJdBummMA
OXbYzuG2qnA5YjLY646DFMCGFkPgTUI5kmLCRRbHICquVLA/iTivs3w+MeG9MB/59Iv/
AEEV8b6u
9u3h+cxCJVEQWNUfcF5G7BHXBz9fwr7H8Pf8i1pf/XpF/wCgikwRp0UUUigooooA
+P8A43jPxl1/
6wf+iI64PbXf/Gxc/GPXz/1w/wDREdcIF54qiRgFPCmnBPanhaYgAxUiJ
+dCrUoWkMUDvTwKAM1I
BQIUD86lUU0CnqKQDhT09aQCnigBwHy1wviYY1+cD0T/ANBFd2BXDeJ/+Rimx6J/
6CKBo6PQc7ZU
IIxHDwe3yVtj1rE0MOstwsgIcJCGBGCDs5rboYiuf+P6T/rmn82rPv8A/kYdJ+j/
AMjWif8Aj8l/
65p/NqztR/5GDSfo/wDKmgLfiD/j10f/AK95f/RrVkjmtbxAc2uj+n2eX/0a1ZIq4ksl2/
L0pjDg
1IDzUTHrVCKl2P3L/SqXhT/katM/6+V/nV28Obdx7VS8Kf8AI1aZ/wBfK/
zoZUT17VobK40RYbhv
l8iJ2G8pnAUgbh7gViG1tkkDLbWhuPPaXLys3+kNjPfoBj29zW1qcsUelxEwFwI4gAE8wFtoA
+X6
4+uO9ZWbsuVjNwpDNEZFtwMP1eTPGBjjPX
+VYItlCVdPgQCG3sRbquCfJY4twSZO3Un6fUUluzEM
UMG9CPMENhjLMP3OMgfdX8v1q5LNcZ80xXaDKyCMuq4I+5Fj/
a6/071TkDMAHOSuVVpL0fNu5lJI
/
u9OP1qhDmDmZFQXYDh18xYlTZsALN7bzx7+9Mc3LXCsYrmMiRJgGuVUbyceVj0Vctjr9M1FIbYI
DObMJt+YeY7HyxgQ9O5PJ/
XFIV3TMomthcmRkBS3dgLjGZCR3G3juM9h1oFcjvltJEMk8yG2dSjv
9qJHk78lgB1JbjH6d6zy
+ZWMi6cl2ZVJxvcC5JIQdxtCZPcZ656VdLKII3S3mltgglEK2QJaANhY
uf8Aay3f15qGT7VGWt5J74n/
AFTz5WMctl5+vYYTJ7fxDpQNDrs248KSi0H7owjYUjIAQNyeecFs
9efzxX2b4c/5FbSc/wDPnF/6AK+NdQmM/hydvIaEmJS6ySbmADYUdBkkcnjvX2V4cOfC
+lH/AKdI
v/QBSY0adFFFIYUUUUAfI/xqH/F39d/7Yf8AoiOuEA5r0D40r/xd7XD/ANcP/
RKVwmzNUSNC/nTg
tSBM0/y+aAGhaeop22ngUgEAp4FAFSAUCACngUgFOApAKKkFIKUUAKBziuG8U4/4SCb/
AHU/9BFd
1jNcN4r/AOQ/J/uJ/wCgimNHR6LO9xdXU0hzI6Qlj6nZzW10rD8P8vMT1MEH/
oFbtDEVyf8ATXH/
AEzT+bVnah/yMOlf8D/lWh/y/v8A9cU/9CaqF9x4g0n/AIH/ACNNAWdf4g0nn/
ljKP8AyKaylxxW
tr2Ps2l+0Mv/AKNNZHSmtiWOzjvTWPBoJ60xuaskqXbHyXx6VV8LDPijS/8Ar4X+dWbk/uW
+lVvC
5x4l04/9PK0PYuJ7DqMs0elQmOMZEKAZk8vHyD5tx4HGT
+FczNdaakY8+SDyBEAS10zE24bhhjuW
4x+g61van9obS0ETxqDAn303gLtGeMc8Z/Pt1rnTsRs/Z5JYAonEUWnKd1uTiOE5/wBr5u/
rkkVk
iga7iknZT9k+0+YqsER2AuGzsHpgLnPUeuajiubWWNPKlBicOYzHYk/IgzN1/vH/
ACOla9ra7kaK
ae7mZVKM8shXzCeWbg9e2eo9R0qDUbG2RGIiyjFGO+8YHKD92OT69fz96LgVxHIFL/
6c4ChyqWfB
Dj90v/AOvt7U2WGdYXilk1PYf9HeR5AgAU5Mmf8AaPAPf3rOkEaMPJ/s/wA794Yy87t
+9Zf3/TsB
0/
TJpfP08QuyLYfZQoLZjlZvIDARZHTcWxmmFhZ55FmWXyYftPneYsclyfluTwEOOwTB69TjPaqG
7TVizEtp9kVB1EjFrYP82enzF+nQ/QVov9pllZEnMUxdopJLe1wEnzl5MnGAF+XPB
+lVjNJlZEiv
k5WZISUixg7VgAx3+/juP4f4qQDr8XH/AAj0n2h1ysYMipFtVmYjaO2AFxxj/Gvs/
wANf8ippH/X
nF/6AK+LtRiiTw++JzMUjIRjNv3EtlzkcH0z049q+0vDnHhXSf8Arzi/
9AFDGjTooopDCiiigD5O
+NAJ+Lmt/wDbH/0SlcQFrvPjIP8Ai7Ot/wDbH/0SlcTigkao5p
+KUCnAUCG4pwFPAp2KAExSgUuO
lOxigAAp4FHelxQAUoFGPSlFAC1w/in/AJD0n/
XNP5Cu4PFcZ4rt5RqzXHlP5RVQHxxnHrQNG3oS
hZJADn9xB/6Aa26xdCySWPJMEHP/AAE1tUMRW/5iMn/XFP8A0Jqo6jxr+l/8Cq9j/
iYSf9ck/wDQ
mqjqP/Id0v6tTQFjxAf9H0v/AK5Sn/yIayQcp71peIT/AKPpn/XOT/0Yay155q1sSx2MCmt
+lLUb
HtVCKt2P9Hc+1VfDJx4j07/r4WrV1/x7PVTw4f8AiotP/wCu6/zpspHsf9n/
ANqJBZrPMjPHEWMG
dwUAE9M+n5VyN3IYbyZoEhnlFw8sfmX/
AMrXRYLswCOAnzc49Ce1burz20Gihp0yoSPlgxBbAAHy
nOM4z6+/SsBY5ZpmijlSO4LtEXgsAQtzkNJICeQNvy5/
HAxWCL0FttUigObWXTktoyHjP713NupP
mN067uB0PXtzThf3V5Hn7QsrIV3i30/cC0oJiI3f3Ryc/
TnrVqKwaQCVJLiOMukiRLCkYWMZ/d4H
ZjyR09j1qpPZNGqpLd3Luu9N094q7g4/eMT/ALI/
X16UxD1gkaINjUI1G9S6iGHGAMuM9N7DB/Ko
5p72OQnbeJIrF1hGpRqPMOB5QAHARcn29qrG9tra2/
ex6YYljG5ZD5p8sDEPY5yeSOw7LmnyBpEB
McAnLPHui07cqyj/AFj7u4xx9fpmgZWnktnRY7l1ktQvlNJJelibcPnzAF6ktx
+AGO9QyKjyMWOn
x3TOoOxJHC3JPy+vAXPqM9jVsuPIDi0meHYJRCtkozFu2pEc5/i
+Y9fWonhli3QvPeED900zzqmV
zl5u/wDuZ9OM9qAC8eFvDEv2VG8owDb+72gIH6+2W/8A119p+HP+RX0r/r0i/
wDQBXxdqBkfw9OZ
IhExjUspfeRzhRnucck+/wCFfaXh/jw1pg/6dIv/AEEUMEaVFFFIYUUUUAfK3xjH/F19a/
7Y/wDo
lK4fFd18Y/8Akq2s/wDbH/0SlcPjmgkXFSAce9JyaeKBABmnYxSAU/
FAwxS0AUvegApcUlLQAtLS
dTTsUAFLyOOx6ilooArQ2iQ3U0q7VR1RVRRjbtz/AI1Z6Ufw0e9AFdj/AMTBx/0wT/
0Jqzr/AD/b
ml/Vq0T/AMhF/wDrgv8A6E1Z1/8A8hzTPq1NCJdfwIdN/wCucn/ow1lg/LWlr/
8AqdO9PLk/9DNZ
a8itEA4/dpjfd+tPPFMb3qkQVrv/AI9n+lU/DvHiHT/+u6/zqzdtiJx6iq3h3nxHp/
8A18L/ADoZ
SPVrxrkaZGLS3lkmZECLHIEbdtAyCeOhJ/DtXPSiOGUwXfmRJGpt3ae+wRAjf6zaOcs/
HfpjHeuj
uWvk0+E2E8UNwUi8t3XIHQlj
+GaypdLnvL2S4upbIiWeRnC2YYvCDlUOcYy2Tn36nAFYlkEWqwrL
iV7aO5ZlSRFYviVs7VzyOnfkdec8VBPdWc0aNE8bxMshRxZlvkT/
AFp59egP8qtx6LP5fz6hctOY
2y4jVMykn5/Xcq8Z/UdKk/spFQmS
+vni3xPgz4+RBgfmeT7jPHWgRQjt5yA3nTAYDlVtNudy/ul4
U/c6jrg+nWkmhSO3aG6lkmj2+XLJNcshManO70G5uM/qc1Z+yafbEK0ib90pzJck/M4+Y/
gv5deT
zUTtpCxylTbGNUXICtJ
+7BAQHrnLEfX1NMDLmQCZXC2SXTSlwjzu2LksMr9AmDz3OMnpUEg09Iy0
TW5tkj3bUhdi1uH5B3fxGT6Y9QOK32MQlbarCRZ2VmFvgK/
8bEnGMDjP69qrNdhVCiCePG3ajMke
Dn5IwMjBx82OOKAK2oiZfDU32l90gQFiECAsSOMYGMDAxjj8a+0PD/PhvTP+vSL/ANBFfF
+qSxS6
DO6tFJuTCspzk7vmI/l/nNfaOgf8i5pn/XrH/wCgikxo0aKKKQwooooA+WfjF/yVXWv
+2P8A6JSu
HOMZruPjF/yVXWf+2P8A6JSuHJoJHj1p4pi04GgB4/
Gnj2pgOKeKQBS0lLTAWiigUAKKUfSkFKP0
oAcPuUtNFOoAKaT8tOppPy0AQP8A8hF/+uK/+hNWfqP/ACG9M/3mq+T/AKa3/XFf/
QmqhqP/ACG9
M/3mpoQ/Xj+60/8A3JP/AEM1mg/LWjruPLsc9kk/9DrLB9KpAPJqKTHanmo5R1NWQyjd/
cb6VH4a
P/FS6b/18p/OnXZ/dt9Kb4b/AORk07/r5T
+dNlQPVbnJ0xSszqfIQERY3bcDIGeM8YH171iSXt0Z
chiXyHCS3yKPNJGISAMnaOex9fStxNW/sa0g1LesbQxhkZ
+AcqFK5wcZyO1coyxS35FoyRTNO0aC
KzMuy4zukbLdguBn8doxmsCzQiurONCTe2rRqpKuZmdjGD8z/
XPAprXMMqH7N5TsrIcR2hcb3U+X
jPoOf8aqK0wRJbaC8SIqJo41gSIbFYhYeOu9vmI5zwcHOaQLM4CXDO7jeoaa7B37x+
+J29dv3f8A
OKoQs0UwRhvvIYwu0sIo4tuOXbk8eYeB6984xStc3ADMftCSq5cRm/
iUbzj937BAc9sd8cVYMFuY
g3kWpXb91rUuSgGIx1+h/wDiaqSW7lvLD/vCWjDx6apxIADJJ75HH
+FICtMll5ZE0kMluq7CzzM7
NbhwQw2/xM/H4dB1ppV2mKotsbgy7C0VszAXBOd3PZU49jzjvU+
+5jQSQ294UwJFgFuibk3YSHv0
5fofXHeqsxDRtFNcSyxFfKeZ7sHdHvy0oxnqcL3z05NMZZvZFfw3M0EUiRNEuFKhdqhhjjPGTzj
+
dfauhDHh/Th6Wsf/AKCK+Kb5nm8PzPIkMchjVmVGLdW+UA5PQc596+2dF/5ANh/17x/
+gikwRdoo
opDCiiigD5i+M2nXVt8SNRu5YSLe5ERifs2I1U/jkGvPiMdq
+yda0DTdfsmtdQtklRhgEjkfSvmP
4neE4PAOuW1v55ktrpGlRsZ8tQQOe/
egTRygp4+7USkMgZSGUjIKnINPBoJHinDk0wGnCkMkpaaD
mlB5pgLS0gpaAFFL2zSCloAXPy06mCl/hoAcT6031p1MoAgPF+w/6ZL/AOhNVDUP+Q1pf
+8avN/y
EG/64L/6E1Ur7/kLab/vGmhDdaOUsfZZP/Q6zhWnrA+S0/3X/
wDQqz8VS2AMjFRSDPapOg96kgsr
i/uVgtoi7nk
+ij1J7CrRLMqeFpf3calmPQAZJqDw4NviXTs9rlP516hpPh210y1KDElxIuJJiOvs
PQV56lqbHx9bwEdLxCPxYVLZSO+vnli0CJobeSd2WNUSI4cPgAHkHHXP4dutc/
NHu3RTyXCQYaGR
5tQUZgD5MuMc7m4HUHpz1re1BXbw0vlyQjciJIZ1JRVwPm45PG6uZZrbl0WJ7cJ52yKyLZtg4CJ8
3Qlskn9T0qBoezL9pLzLYC7aRGZfMeTFwc
+UvUjaF5PJGcgntRaSwLFGqPaiEghGjtWbEa8zHnnk
9PbjjpU7R3qPIsj3pdT5TSiBYx5jZLTE/
wCwuBnjHHIzio1kfaGkW62NtYrLqCpjYD5anH988/qP
WgZfXc6biJZCMMQtqRyw/djn+6Ofb2qpewxLEyTDEGNkhlmK/
u1OQ3H95/8APelVojGFb7KzDdzJ
fM+WZcydP7o/xHrUbLAFZ7ZEdV2nZDGX3pnES/N78+/qcUxFVwrTLj+z/tRkOM
+Y4FySN3qMBceo
z61EjxFN0SD7OFEgSO03EwB8BPmPJL8nr65PSrc32hFeKa4vF6xPN5qoMbsvN
+P3M9xxk9KrSSu8
hd4lEzSCVYprzOJidqocYxhee3oT2oGWtRSSLw/
Ms8kkjqgBZsLlywJyPYYGO36V9saNxoNh/wBe
8f8A6CK+IrkWy+HXFrsaLywIyATwG+Y5PqSfyr7e0j/kC2X/AFwT/
wBBFJgi5RRRSGFFFFABXL+L
PAvh/wAbWaW+u2AnKf6uVSVkTPUBhyAccjpXUUUAeP3/AOzz4ZisHGhNdWdweRvnZ1J
+hryDxH4O
1jwpdNHqNqRGDxMvKn/Cvr+ql/p1rqdq1veQJNCwwVYZoFY+MAaUGvbPGnwQyXvPDbY7m2b
+leN3
2nXemXbW17bvBMOCGGPyoFYhyKXNMzS5oAlFLmo/4acDQA
+lHWmiloAXpS0gpc0AL360gopSPyoA
rNn+0W/64L/6E1UtQ/5C2m/7xq6//IRf/riv/oTVRvv+Qrp3sxpoQ/VBmO0+j/
8AoVZ5HrWhqR/d
2v0f/wBCqzougS6pi4n3RWgP3uhk9l/xqlsBU0vSJ9VnKx4WJT88p6L7e59q7G0sodMt/
It1wP4m
PVj7mrMcMVvDHDDGI4kHyoBUUzA9Tk0rgTRyAj6VxPiay8nxto18B+7lljBPuGH
+NdT9oCHkYHrV
LVrY6hbWrRKWe1uo5hgdgcH9Dn8KAC9Hm+Hwscs0TBFLNC2HK4HTJAB4xn/
a71z8zXQlEu2Uy+b5
yxTX6riYnCxEAj7q844POOM1qas1sfDYW7CeWqKw37sE8cfLz121iAN9p2W7wfaGmaLdFZlwLgnL
uN3QBePbqAOtIaI4xZRlUUWTW6x7FZ5HdmgBJkbjHJbIHAPXjvVi3JkQNCkRcMpYWunbxvZf3WN3
ZV5/xzmlWZ12yQxXccW0SRxrEsQ2qSBDx/fb5sc544Oc00rujVJtrMu5Q1ze7gwYZmPy/
wB0cf49
KBlopcLCSFvIV2lSRHFFgAfM3/bRuP8AGobh5gxMjtvViVR79AN5ABTA6BF5/
wD14qJmt1Tds084
UNtW3eQlCAIRyOfU/h9KUrOikFjvy0Yki05eHGDI+TjqPl9/
bFMRVkayhjwwtjbIgPCs5eBWwvpy
X69Py4p5SdlMXmSeaX8p5ILNV2y53O4PHReM8evHeYyyoQ8UVySD5scTSLEAScJFgf3V
+bH6DOao
yLapEQWtzAFCEvOzkwB8lvl7l
+OPyxzQM0bvLeH5CsDQgxqDG7AFV3DaMDuetfbOmDGkWY9IU/kK
+J7rzP7BbzjHvCKX8teDlhtAz0wK+2tO/wCQVaf9ck/
kKTBFqiiikMKKKKACiiigAooooAK5/wAS
+DdH8U2jQ6haoz9pAPmFdBRQB80+MvhDq3h1nudPDXtkOcqPmWvPOVYqwIYcEEcivtcqGUgjIPUG
uB8ZfCfR/EqNcW8YtL3s8fAP1oFY+ZgcU4HpW/
4n8Daz4TnK31szQZ4nQZUiueB7560CJgaUYqIH
5aeDQA8UtNFL/KgB30pTSA+9FIZWk/4/2/65L/6E1VLznVdP/wB41bk/4/2/64r/
AOhNVO8/5Cun
/wC8aaEacK6d5kEuo+c6oGKwIv3zu7nPT271ozeKo8/urNwoGANwUAemADWFefdg/wCB/
wA6qMcr
xVWA2LjxXP8Aw2cRP+1IT/LFZUviTV7mYQ2kVuJHOFVINxJ/4ETUdrZT31wILeMu5/
ID1PoK7LSN
Dt9JhyPnuXGGlI/Qegp6IRmWmi6vNb5vtWdZ2H3YtqhPbgVxkc+ow+L7ayuL
+6mC3aDDysQRuHvX
qwVVbd3zXB+J9PNp490u5UYSaRD
+IbmkNGtcyyLpUfk28kzhYyqxgZL8Y6+nX8O1YVxyDFcTXBhK
mJpJL5Ruh35MvAOcnjv0xya1r0ynREwYQPIUAzZ2jgZJxzjbu/
GsRGhwhjhRoAPMCRWe8m3D4VPm
7lskk/XJ4FIEPyssm50sI7pmQn55JCJzkRDqRgLz3HXPYURlDEghLGMqTGYLLoiD951/vtx
+hx0q
bNwJNkkl45OY3kwsQJbJaX/gAwvPTjkdKhdC0Rdl+UosjrLebiAoxF931PJ/
P5aYEzzXSE7PtTPg
ssbzCMFnH3cf9Mx+XtVSR7RIpFYRPFt2uZbl2zCpGw4X+83p09BnNTizfcI4oYQ
+4pv8l2w5AMp5
7Y4B/lyak8icAPCZVGS6xxxImR0jTPPTryD/
AFoAr8SyhEa2S6eRlJjt2fbPnMjc54C4HHGeQO9I
PM8oTQQ3IQgSxxrCse5d2Fi75/v9+mcd6sPYNLELeWeVlK
+U7NccsgO5mxjrnjvxxk9Qi2Cli0rW
/nF/MyqM+JG+6cE8gDt+PNAC3QX+yMNcNO4T5XaXdvbcC59+3Oa+3dO/5BVp/wBck/kK
+J7tY4dI
eOFf3KoqjavAUMOc/wC0f5da+19O/wCQTaf9ck/
kKTGi3RRRSGFFFFABRRRQAUUUUAFFFFABRRRQ
BWvLK2v7Zre6hSWJhgqwzXkfjP4Iwzl7zw6wikJybduh
+ley0UAfGepaXf6NeNbahbPbyg9GHX6G
qgNfXuv
+FtK8SWTQajaJJkcPtG4fjXhnjH4OanoZe60ndeWYydv8SigVjzkdM0uaQq0chjdSrqcF
WGCDSikIXNLkUlLRcCtJ/wAf7f8AXFf/AEJqq3Zzqmn/AO81WZP+Qi3/AFwX/
wBCaq93FKbu1njX
ckTHfg8gfTvTAmuwSsX/AAP+dP03RrnVJykPCL9+Qj5UH
+PtU9nDZ30kDXGoQW1sN25y43Hnoo9a
6c+IPD+n2otraciFBwIo2bPuTjk07gLp9lbabbeTBGR/ec/eY+p/wqZ5AeTWBc
+MdOiz5VvdyY/2
VUfqayX8cyyymK10jcfWSbp+Qp2YrnYMwx1HFY/ia3Fza6dcxj57a8jcn/
ZJwf5iueuPFWtRxGSG
wsUGc/
dZiPzNZEHizWNR1C3tJ7zy4JpVR1ijReCcHnFFmhrU6sRO9nbqPOw8AU7AQQuASc9v6579
Kinl8mNTKCgyZMPcBcEfd7j0Bx2HHHSshorsFo/
sdswUkAyM7cduC3pTfstw6ECO0hJGMx26gj6G
nZkXLgvNPhZVinso9pCgw5crnl2G0dD0A479KlW6ZQpginIB3ALaNgYHyr82OB1z/
wDrrOisbuKM
xjUrsKeSBIak/
s6M582WWQnqXcmnYOYBqkcimOMyNtQIxe5iTIzls8nkn8vekm1SA7nd7RTuLt++
eTnt91QOO39afHp1rGMeRH+VTtawtGVES8jHSiwXMu01FtT1GKyt5IV8zK
+YbbIwMtnlieSPbPet
4aTd4/ea1OTktmKJI
+T16Z61yOgQG08YQwkfcZxz6bTXcG4JpFMonR7dIWaW4u7gxjcPOmJXI6cd
K+0LMf6DBkAHy14AwOnpXxbqWqRW0BQ/
PJJ8scaDczN6V9gpf6jDZof7ImKpGCcMuenpnOfapY4m
1RWT/
aV5HF502myRwAbmbepKj6ZzWlHL5kYdcYNIokooooAKKKKACiiigAooooAKKKKACiiigAoo
ooA4jxf8MdE8URtKIhbXnaaPjn3rwrxT4A1rwpMftVu01tn5Z4xkfjX1ZUFxbw3cDQ3ESyRMMFWG
QaAPjTOVzTsnFe4+NPgvbXm+98PkQTnJNufut9K8OcGG7uLZ+J4HaORT1BBwf1FIRVb/
AJCLf9cF
/wDQmp/0qKU/8TFv+uKf+hNTweaYht4f9Gtj3zJz+Iqk7fjVq+P+iW3+9J/
MVUhha4l8uMc9z6Va
EQiCW5l8uMZPcntWva2UdpF5cYznktjkmrUFksEQCjr1J/
iqfy8c4zmquQUXhBQo3Q9RXFpamz8V
20R+79pQj6bhXoDKMdORXPaxYj+1tMvE5xcIjYH+1x/
Wgpbm1KvJquUAxmrE0eGNV2oJDA7UMAUp
hbHpSrKFkV8BgCDj19qASu7CY+bBBB9CKsR28rHCxOSe201Yn1V5pQYIgBjHzgZ/D/
PepIv7TuT+
6ikYkg8Keo71Kbe5pOKUrRd0c5JZ+T4qsblFwHV1b/eCn+n8qvaPDp
+s6pqK6zfXkNrZ7ES2sWVZ
Zi2edzDCqNvofvLXQ2/gvXL6RHi0uZ2UllwuOcEf1qtcfC/
xZpeu22rDTjFbyMEmLNjAPf8Az6Ur
k2ZF/bfhDSLgQ6HodnFqBUiO7ubmS5mRh0ZeiKw/3a
+k2vdYttVW51LWbeytRIWS1bazvH2+VRn9
a8WvvgS8viOazuZo7S2vZ45YfJVWMPmH5l57K25R7AV7hYactuz2+i6ZbRwQu0cuoXy7mZl
+Vto6
np6qvBpMqKsWNP1uTUvEc9nIwbTriE
+TG6bWOMZH0+9WppLM2nRrJ8sifI49CODWdHpcNzd2l9Z3
FjJeW8371rVdilD97K7m
+b3zUhnWG7uo7c5QTEnDfxHBb9SaRR0FFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAV8/
wDjj9nzVtR1m41HwvrUMK3Vw1xJDfMwMbsxY7XUHIyehH4mvoCigD5h
ufgZ4zsInuLmbTryQIF/0Tdk4yecgevYVxl7pt5pdyYb60lgcHB3rj9a
+0aydW8OaVrsRg1CyjmX
1I5/OgVj48ltZbyO0hhGWLPk9gM9TWtbaatpCI4xn+82OSa9Puvh7otnrUtpbtdRwq/CrL/
9aup0
f4V+GJhumguJT/tzE07i5TwtoiOC0Y+rDNILV3/1YZyR/AhP9K
+mrP4feF7RFMekQEjuwzWrFpOm
2i/uLC2T6Rii4cp8uQeG9Uu8CDTbx+eCIsfzrRh+FniO/
Uf8SiYDcGBkbGCDkHpX1Aqqh2qoA9AK
fRzMORHzvbfBHxJc4M81tCPc1rWv7P0hwbrVk9woJr3KijmYcqPKbT4DaFFj7ReXEh9BxW3afB/
w
na4P2JpD6u2a7uikUYFr4J8O2ePJ0m3B9Sua1IdNsoABDaQJj0QVbooAQAAYAwKztWsV1DTZLdl
+
8taVRUAcjp8K6rp1rDeXbWt3pMvzMQPmjz8vX6Dn/
ZNaGqWv9vtbXNjNBe2ce5WhMnyM3Y8da1bn
TbG5Iee0hlZPul0BxVc6DYNJ50aSQSN95oJGjJ/75IoAxRZDQbuS9Zbf+0po/
JtraAfL9TW3pmmx
2enxxMhd+rMepJ6mn2mlWWny7oIFEj/ekblj9SeavUAf/9k=';

$body = decode_base64($body) ;
$filename1 = 'c:\tmp\test.jpg';
open(OUTFILE,">$filename1")|| die 'ERROR : external table not found :'.
$filename1."\n";
print OUTFILE $body;



------------------------------

Date: Thu, 3 Jan 2008 07:17:12 -0800 (PST)
From: Nathan <nathan.stanford@gmail.com>
Subject: How would I create a Regular Expression to check
Message-Id: <b68a982f-a7c1-4dca-a418-ef09e7057002@i72g2000hsd.googlegroups.com>

How would I create a Regular Expression to check Street address for
any of the below items:

If the first character is a P ...
p.o. box
po box
po. box
p.o box
post office box
POB
POX
PODRAWER
POSTOFFICE
PO BX
POBOX
P/O

If the first character is a B ...
BX
BOX
Buzon      -- (Means 'Box' in Spanish)

If the first character is a A ...
Apartado   -- (is 'PO Box in Spanish)
Aptdo	   -- (is POB abbreviated in Spanish)



Thanks,
Nathan


------------------------------

Date: Thu, 03 Jan 2008 17:22:00 +0100
From: Christian Winter <thepoet_nospam@arcor.de>
Subject: Re: How would I create a Regular Expression to check
Message-Id: <477d0baf$0$16568$9b4e6d93@newsspool1.arcor-online.net>

Nathan wrote:
> How would I create a Regular Expression to check Street address for
> any of the below items:
> 
> If the first character is a P ...
> p.o. box
> po box
> po. box
> p.o box
> post office box
> POB
> POX
> PODRAWER
> POSTOFFICE
> PO BX
> POBOX
> P/O
> 
> If the first character is a B ...
> BX
> BOX
> Buzon      -- (Means 'Box' in Spanish)
> 
> If the first character is a A ...
> Apartado   -- (is 'PO Box in Spanish)
> Aptdo	   -- (is POB abbreviated in Spanish)

The short answer: you can't. At least not one single, reasonably
short regex that can cover it in one go. I'd simply iterate
over all the possibilities and compare each one to the street address,
like:

my @potokens = ("p.o. box", "po box", "po. box", "P/O", "etc.");
my $streetaddr = "po box 12345";

if( grep { $streetaddr =~ /^\Q$_\E/ ) @potokens )
{
	print "Is a PO address!" . $/;
}

# or completely without regex:
foreach( @potokens )
{
	if( substr( $streetaddr, 0, length($_) ) eq $_ )
	{
		print "Is a PO address!" . $/;
	}
}

-Chris


------------------------------

Date: Thu, 03 Jan 2008 13:01:29 -0600
From: Ted Zlatanov <tzz@lifelogs.com>
Subject: Re: How would I create a Regular Expression to check
Message-Id: <86lk76vily.fsf@lifelogs.com>

On Thu, 03 Jan 2008 17:22:00 +0100 Christian Winter <thepoet_nospam@arcor.de> wrote: 

CW> Nathan wrote:
>> How would I create a Regular Expression to check Street address for
>> any of the below items:

CW> The short answer: you can't. At least not one single, reasonably
CW> short regex that can cover it in one go. I'd simply iterate
CW> over all the possibilities and compare each one to the street address,
CW> like:

An alternate approach is to use Parse::RecDescent.  It's really good in
my experience for parsing this kind of disparate input, and will
organize it for you (so you can tell that the street adress was in
Spanish, for example).

Ted


------------------------------

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc.  For subscription or unsubscription requests, send
#the single line:
#
#	subscribe perl-users
#or:
#	unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.  

NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice. 

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.

#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V11 Issue 1168
***************************************


home help back first fref pref prev next nref lref last post