diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1996-12-06 18:56:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1996-12-06 18:56:00 +1200 |
commit | 36477c247f3c188fb8cc7e276c87b739d3e6ab7c (patch) | |
tree | dd3bdaf17bd878ce5754aa009c6bfd8df5d5f275 /perly.c | |
parent | 275cf23a58ea6c48d7ec989fc038d3e39de93af7 (diff) | |
download | perl-36477c247f3c188fb8cc7e276c87b739d3e6ab7c.tar.gz |
[inseparable changes from patch from perl5.003_10 to perl5.003_11]
CORE LANGUAGE CHANGES
Subject: Fix precedence problems with subs as uniops or listops
From: Chip Salzenberg <chip@atlantic.net>
Files: perly.c perly.c.diff perly.h perly.y
Subject: Don't reset $. on open()
From: Chip Salzenberg <chip@atlantic.net>
Files: pp_sys.c
Subject: Support *glob{IO} (eventually deprecate *glob{FILEHANDLE})
From: Chip Salzenberg <chip@atlantic.net>
Files: pod/perlref.pod pp_hot.c sv.c
Subject: Don't let expression context force return context
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c
Subject: Properly convert "1E2" et al to IV/UV
From: Chip Salzenberg <chip@atlantic.net>
Files: doio.c sv.c
Subject: Fix modulo operator in UV realm
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c
Subject: Fix stat(_) after stat(HANDLE)
From: Chip Salzenberg <chip@atlantic.net>
Files: pp_sys.c
Subject: Fix: s/// and "$x =~ $y" under 'use locale'
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c toke.c
LIBRARY AND EXTENSIONS
Subject: {in,ob}structive pods
Date: Sat, 30 Nov 1996 09:52:57 -0700
From: Tom Christiansen <tchrist@mox.perl.com>
Files: MANIFEST lib/Class/Template.pm lib/File/stat.pm lib/Net/hostent.pm lib/Net/netent.pm lib/Net/protoent.pm lib/Net/servent.pm lib/Time/gmtime.pm lib/Time/localtime.pm lib/Time/tm.pm lib/User/grent.pm lib/User/pwent.pm
These "should" be ready for inclusion in 5.004, although I'd like to
update Class::Template's doc for legibility. Dean, may we please have
your permission to include this in the distribution?
(I did look a bit into using Class::MethodMaker, but it seemed
a bit complicated.)
I know: these all look remarkably similar on the inside. I keep trying
to find a way to abstract out some of it. Hopefully, they're reasonably
legible at least in code, if not in docs. :-)
Chip/Tim, please check the stat function for proper use of Symbol.
thanks,
--tom
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1996-11-30 09:52 MST by <tchrist@toy.perl.com>.
# Source directory was `/home/tchrist/hack'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 5024 -rw-r--r-- obstructs/Class/Template.pm
# 2782 -rw-r--r-- obstructs/File/stat.pm
# 3961 -rw-r--r-- obstructs/Net/hostent.pm
# 4435 -rw-r--r-- obstructs/Net/netent.pm
# 2973 -rw-r--r-- obstructs/Net/protoent.pm
# 3424 -rw-r--r-- obstructs/Net/servent.pm
# 2476 -rw-r--r-- obstructs/Time/gmtime.pm
# 2307 -rw-r--r-- obstructs/Time/localtime.pm
# 622 -rw-r--r-- obstructs/Time/tm.pm
# 2848 -rw-r--r-- obstructs/User/grent.pm
# 2899 -rw-r--r-- obstructs/User/pwent.pm
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
shar_touch=touch
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 1231235999 $$.touch
#
if mkdir _sh24166; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
# ============= obstructs/Class/Template.pm ==============
if test ! -d 'obstructs'; then
$echo 'x -' 'creating directory' 'obstructs'
mkdir 'obstructs'
fi
if test ! -d 'obstructs/Class'; then
$echo 'x -' 'creating directory' 'obstructs/Class'
mkdir 'obstructs/Class'
fi
if test -f 'obstructs/Class/Template.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Class/Template.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Class/Template.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Class/Template.pm' &&
package Class::Template;
require 5.000;
require Exporter;
X
@ISA = qw(Exporter);
@EXPORT = qw(members struct);
use strict;
X
# Template.pm --- struct/member template builder
# 12mar95
# Dean Roehrich
#
# changes/bugs fixed since 28nov94 version:
# - podified
# changes/bugs fixed since 21nov94 version:
# - Fixed examples.
# changes/bugs fixed since 02sep94 version:
# - Moved to Class::Template.
# changes/bugs fixed since 20feb94 version:
# - Updated to be a more proper module.
# - Added "use strict".
# - Bug in build_methods, was using @var when @$var needed.
# - Now using my() rather than local().
#
# Uses perl5 classes to create nested data types.
# This is offered as one implementation of Tom Christiansen's "structs.pl"
# idea.
X
=head1 NAME
X
Class::Template - struct/member template builder
X
=head1 EXAMPLES
X
=item * Example 1
X
X use Class::Template;
X
X struct( rusage => {
X ru_utime => timeval,
X ru_stime => timeval,
X });
X
X struct( timeval => [
X tv_secs => '$',
X tv_usecs => '$',
X ]);
X
X my $s = new rusage;
X
=item * Example 2
X
X package OBJ;
X use Class::Template;
X
X members OBJ {
X 'a' => '$',
X 'b' => '$',
X };
X
X members OBJ2 {
X 'd' => '@',
X 'c' => '$',
X };
X
X package OBJ2; @ISA = (OBJ);
X
X sub new {
X my $r = InitMembers( &OBJ::InitMembers() );
X bless $r;
X }
X
=head1 NOTES
X
Use '%' if the member should point to an anonymous hash. Use '@' if the
member should point to an anonymous array.
X
When using % and @ the method requires one argument for the key or index
into the hash or array.
X
Prefix the %, @, or $ with '*' to indicate you want to retrieve pointers to
the values rather than the values themselves.
X
=cut
X
Var: {
X $Class::Template::print = 0;
X sub printem { $Class::Template::print++ }
}
X
X
sub struct {
X my( $struct, $ref ) = @_;
X my @methods = ();
X my %refs = ();
X my %arrays = ();
X my %hashes = ();
X my $out = '';
X
X $out = "{\n package $struct;\n sub new {\n";
X parse_fields( $ref, \$out, \@methods, \%refs, \%arrays, \%hashes, 0 );
X $out .= " bless \$r;\n }\n";
X build_methods( $ref, \$out, \@methods, \%refs, \%arrays, \%hashes );
X $out .= "}\n1;\n";
X
X ( $Class::Template::print ) ? print( $out ) : eval $out;
}
X
sub members {
X my( $pkg, $ref ) = @_;
X my @methods = ();
X my %refs = ();
X my %arrays = ();
X my %hashes = ();
X my $out = '';
X
X $out = "{\n package $pkg;\n sub InitMembers {\n";
X parse_fields( $ref, \$out, \@methods, \%refs, \%arrays, \%hashes, 1 );
X $out .= " bless \$r;\n }\n";
X build_methods( $ref, \$out, \@methods, \%refs, \%arrays, \%hashes );
X $out .= "}\n1;\n";
X
X ( $Class::Template::print ) ? print( $out ) : eval $out;
}
X
X
sub parse_fields {
X my( $ref, $out, $methods, $refs, $arrays, $hashes, $member ) = @_;
X my $type = ref $ref;
X my @keys;
X my $val;
X my $cnt = 0;
X my $idx = 0;
X my( $cmt, $n );
X
X if( $type eq 'HASH' ){
X if( $member ){
X $$out .= " my(\$r) = \@_ ? shift : {};\n";
X }
X else{
X $$out .= " my(\$r) = {};\n";
X }
X @keys = keys %$ref;
X foreach (@keys){
X $val = $ref->{$_};
X if( $val =~ /^\*(.)/ ){
X $refs->{$_}++;
X $val = $1;
X }
X if( $val eq '@' ){
X $$out .= " \$r->{'$_'} = [];\n";
X $arrays->{$_}++;
X }
X elsif( $val eq '%' ){
X $$out .= " \$r->{'$_'} = {};\n";
X $hashes->{$_}++;
X }
X elsif( $val ne '$' ){
X $$out .= " \$r->{'$_'} = \&${val}::new();\n";
X }
X else{
X $$out .= " \$r->{'$_'} = undef;\n";
X }
X push( @$methods, $_ );
X }
X }
X elsif( $type eq 'ARRAY' ){
X if( $member ){
X $$out .= " my(\$r) = \@_ ? shift : [];\n";
X }
X else{
X $$out .= " my(\$r) = [];\n";
X }
X while( $idx < @$ref ){
X $n = $ref->[$idx];
X push( @$methods, $n );
X $val = $ref->[$idx+1];
X $cmt = "# $n";
X if( $val =~ /^\*(.)/ ){
X $refs->{$n}++;
X $val = $1;
X }
X if( $val eq '@' ){
X $$out .= " \$r->[$cnt] = []; $cmt\n";
X $arrays->{$n}++;
X }
X elsif( $val eq '%' ){
X $$out .= " \$r->[$cnt] = {}; $cmt\n";
X $hashes->{$n}++;
X }
X elsif( $val ne '$' ){
X $$out .= " \$r->[$cnt] = \&${val}::new();\n";
X }
X else{
X $$out .= " \$r->[$cnt] = undef; $cmt\n";
X }
X ++$cnt;
X $idx += 2;
X }
X }
}
X
X
sub build_methods {
X my( $ref, $out, $methods, $refs, $arrays, $hashes ) = @_;
X my $type = ref $ref;
X my $elem = '';
X my $cnt = 0;
X my( $pre, $pst, $cmt, $idx );
X
X foreach (@$methods){
X $pre = $pst = $cmt = $idx = '';
X if( defined $refs->{$_} ){
X $pre = "\\(";
X $pst = ")";
X $cmt = " # returns ref";
X }
X $$out .= " sub $_ {$cmt\n my \$r = shift;\n";
X if( $type eq 'ARRAY' ){
X $elem = "[$cnt]";
X ++$cnt;
X }
X elsif( $type eq 'HASH' ){
X $elem = "{'$_'}";
X }
X if( defined $arrays->{$_} ){
X $$out .= " my \$i;\n";
X $$out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
X $idx = "->[\$i]";
X }
X elsif( defined $hashes->{$_} ){
X $$out .= " my \$i;\n";
X $$out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
X $idx = "->{\$i}";
X }
X $$out .= " \@_ ? (\$r->$elem$idx = shift) : $pre\$r->$elem$idx$pst;\n";
X $$out .= " }\n";
X }
}
X
1;
SHAR_EOF
$shar_touch -am 1108060296 'obstructs/Class/Template.pm' &&
chmod 0644 'obstructs/Class/Template.pm' ||
$echo 'restore of' 'obstructs/Class/Template.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Class/Template.pm:' 'MD5 check failed'
4ccfb1ef6cb0ef795d19325556a78797 obstructs/Class/Template.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Class/Template.pm'`"
test 5024 -eq "$shar_count" ||
$echo 'obstructs/Class/Template.pm:' 'original size' '5024,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/File/stat.pm ==============
if test ! -d 'obstructs/File'; then
$echo 'x -' 'creating directory' 'obstructs/File'
mkdir 'obstructs/File'
fi
if test -f 'obstructs/File/stat.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/File/stat.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/File/stat.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/File/stat.pm' &&
package File::stat;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(stat lstat);
X @EXPORT_OK = qw( $st_dev $st_ino $st_mode
X $st_nlink $st_uid $st_gid
X $st_rdev $st_size
X $st_atime $st_mtime $st_ctime
X $st_blksize $st_blocks
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'File::stat' => [
X map { $_ => '$' } qw{
X dev ino mode nlink uid gid rdev size
X atime mtime ctime blksize blocks
X }
];
X
sub populate (@) {
X return unless @_;
X my $stob = new();
X @$stob = (
X $st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev,
X $st_size, $st_atime, $st_mtime, $st_ctime, $st_blksize, $st_blocks )
X = @_;
X return $stob;
}
X
sub lstat (*) { populate(CORE::lstat(shift)) }
X
sub stat ($) {
X my $arg = shift;
X my $st = populate(CORE::stat $arg);
X return $st if $st;
X no strict 'refs';
X require Symbol;
X return populate(CORE::stat \*{Symbol::qualify($arg)});
}
X
1;
__END__
X
=head1 NAME
X
File::stat.pm - by-name interface to Perl's built-in stat() functions
X
=head1 SYNOPSIS
X
X use File::stat;
X $st = stat($file) or die "No $file: $!";
X if ( ($st->mode & 0111) && $st->nlink > 1) ) {
X print "$file is executable with lotsa links\n";
X }
X
X use File::stat qw(:FIELDS);
X stat($file) or die "No $file: $!";
X if ( ($st_mode & 0111) && $st_nlink > 1) ) {
X print "$file is executable with lotsa links\n";
X }
X
=head1 DESCRIPTION
X
This module's default exports override the core stat()
and lstat() functions, replacing them with versions that return
"File::stat" objects. This object has methods that
return the similarly named structure field name from the
stat(2) function; namely,
dev,
ino,
mode,
nlink,
uid,
gid,
rdev,
size,
atime,
mtime,
ctime,
blksize,
and
blocks.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your stat() and lstat() functions.) Access these fields as
variables named with a preceding C<st_> in front their method names.
Thus, C<$stat_obj-E<gt>dev()> corresponds to $st_dev if you import
the fields.
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1129130296 'obstructs/File/stat.pm' &&
chmod 0644 'obstructs/File/stat.pm' ||
$echo 'restore of' 'obstructs/File/stat.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/File/stat.pm:' 'MD5 check failed'
4d121fbb2e918b7f35c2b6fa2df6ffed obstructs/File/stat.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/File/stat.pm'`"
test 2782 -eq "$shar_count" ||
$echo 'obstructs/File/stat.pm:' 'original size' '2782,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Net/hostent.pm ==============
if test ! -d 'obstructs/Net'; then
$echo 'x -' 'creating directory' 'obstructs/Net'
mkdir 'obstructs/Net'
fi
if test -f 'obstructs/Net/hostent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Net/hostent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Net/hostent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Net/hostent.pm' &&
package Net::hostent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(gethostbyname gethostbyaddr gethost);
X @EXPORT_OK = qw(
X $h_name @h_aliases
X $h_addrtype $h_length
X @h_addr_list $h_addr
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'Net::hostent' => [
X name => '$',
X aliases => '@',
X addrtype => '$',
X 'length' => '$',
X addr_list => '@',
];
X
sub addr { shift->addr_list->[0] }
X
sub populate (@) {
X return unless @_;
X my $hob = new();
X $h_name = $hob->[0] = $_[0];
X @h_aliases = @{ $hob->[1] } = split ' ', $_[1];
X $h_addrtype = $hob->[2] = $_[2];
X $h_length = $hob->[3] = $_[3];
X $h_addr = $_[4];
X @h_addr_list = @{ $hob->[4] } = @_[ (4 .. $#_) ];
X return $hob;
}
X
sub gethostbyname ($) { populate(CORE::gethostbyname(shift)) }
X
sub gethostbyaddr ($;$) {
X my ($addr, $addrtype);
X $addr = shift;
X require Socket unless @_;
X $addrtype = @_ ? shift : Socket::AF_INET();
X populate(CORE::gethostbyaddr($addr, $addrtype))
}
X
sub gethost($) {
X if ($_[0] =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
X require Socket;
X &gethostbyaddr(Socket::inet_aton(shift));
X } else {
X &gethostbyname;
X }
}
X
1;
__END__
X
=head1 NAME
X
Net::hostent - by-name interface to Perl's built-in gethost*() functions
X
=head1 SYNOPSIS
X
X use Net::hostnet;
X
=head1 DESCRIPTION
X
This module's default exports override the core gethostbyname() and
gethostbyaddr() functions, replacing them with versions that return
"Net::hostent" objects. This object has methods that return the similarly
named structure field name from the C's hostent structure from F<netdb.h>;
namely name, aliases, addrtype, length, and addresses. The aliases and
addresses methods return array reference, the rest scalars. The addr
method is equivalent to the zeroth element in the addresses array
reference.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as variables named
with a preceding C<h_>. Thus, C<$host_obj-E<gt>name()> corresponds to
$h_name if you import the fields. Array references are available as
regular array variables, so for example C<@{ $host_obj-E<gt>aliases()
}> would be simply @h_aliases.
X
The gethost() funtion is a simple front-end that forwards a numeric
argument to gethostbyaddr() by way of Socket::inet_aton, and the rest
to gethostbyname().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 EXAMPLES
X
X use Net::hostent;
X use Socket;
X
X @ARGV = ('netscape.com') unless @ARGV;
X
X for $host ( @ARGV ) {
X
X unless ($h = gethost($host)) {
X warn "$0: no such host: $host\n";
X next;
X }
X
X printf "\n%s is %s%s\n",
X $host,
X lc($h->name) eq lc($host) ? "" : "*really* ",
X $h->name;
X
X print "\taliases are ", join(", ", @{$h->aliases}), "\n"
X if @{$h->aliases};
X
X if ( @{$h->addr_list} > 1 ) {
X my $i;
X for $addr ( @{$h->addr_list} ) {
X printf "\taddr #%d is [%s]\n", $i++, inet_ntoa($addr);
X }
X } else {
X printf "\taddress is [%s]\n", inet_ntoa($h->addr);
X }
X
X if ($h = gethostbyaddr($h->addr)) {
X if (lc($h->name) ne lc($host)) {
X printf "\tThat addr reverses to host %s!\n", $h->name;
X $host = $h->name;
X redo;
X }
X }
X }
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1129133896 'obstructs/Net/hostent.pm' &&
chmod 0644 'obstructs/Net/hostent.pm' ||
$echo 'restore of' 'obstructs/Net/hostent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Net/hostent.pm:' 'MD5 check failed'
27e11c684fe0e621da0109fa7ecef0d9 obstructs/Net/hostent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Net/hostent.pm'`"
test 3961 -eq "$shar_count" ||
$echo 'obstructs/Net/hostent.pm:' 'original size' '3961,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Net/netent.pm ==============
if test -f 'obstructs/Net/netent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Net/netent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Net/netent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Net/netent.pm' &&
package Net::netent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(getnetbyname getnetbyaddr getnet);
X @EXPORT_OK = qw(
X $n_name @n_aliases
X $n_addrtype $n_net
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'Net::netent' => [
X name => '$',
X aliases => '@',
X addrtype => '$',
X net => '$',
];
X
sub populate (@) {
X return unless @_;
X my $nob = new();
X $n_name = $nob->[0] = $_[0];
X @n_aliases = @{ $nob->[1] } = split ' ', $_[1];
X $n_addrtype = $nob->[2] = $_[2];
X $n_net = $nob->[3] = $_[3];
X return $nob;
}
X
sub getnetbyname ($) { populate(CORE::getnetbyname(shift)) }
X
sub getnetbyaddr ($;$) {
X my ($net, $addrtype);
X $net = shift;
X require Socket if @_;
X $addrtype = @_ ? shift : Socket::AF_INET();
X populate(CORE::getnetbyaddr($net, $addrtype))
}
X
sub getnet($) {
X if ($_[0] =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
X require Socket;
X &getnetbyaddr(Socket::inet_aton(shift));
X } else {
X &getnetbyname;
X }
}
X
1;
__END__
X
=head1 NAME
X
Net::netent - by-name interface to Perl's built-in getnet*() functions
X
=head1 SYNOPSIS
X
X use Net::netent qw(:FIELDS);
X getnetbyname("loopback") or die "bad net";
X printf "%s is %08X\n", $n_name, $n_net;
X
X use Net::netent;
X
X $n = getnetbyname("loopback") or die "bad net";
X { # there's gotta be a better way, eh?
X @bytes = unpack("C4", pack("N", $n->net));
X shift @bytes while @bytes && $bytes[0] == 0;
X }
X printf "%s is %08X [%d.%d.%d.%d]\n", $n->name, $n->net, @bytes;
X
=head1 DESCRIPTION
X
This module's default exports override the core getnetbyname() and
getnetbyaddr() functions, replacing them with versions that return
"Net::netent" objects. This object has methods that return the similarly
named structure field name from the C's netent structure from F<netdb.h>;
namely name, aliases, addrtype, and net. The aliases
method returns an array reference, the rest scalars.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as variables named
with a preceding C<n_>. Thus, C<$net_obj-E<gt>name()> corresponds to
$n_name if you import the fields. Array references are available as
regular array variables, so for example C<@{ $net_obj-E<gt>aliases()
}> would be simply @n_aliases.
X
The getnet() funtion is a simple front-end that forwards a numeric
argument to getnetbyaddr(), and the rest
to getnetbyname().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 EXAMPLES
X
The getnet() functions do this in the Perl core:
X
X sv_setiv(sv, (I32)nent->n_net);
X
The gethost() functions do this in the Perl core:
X
X sv_setpvn(sv, hent->h_addr, len);
X
That means that the address comes back in binary for the
host functions, and as a regular perl integer for the net ones.
This seems a bug, but here's how to deal with it:
X
X use strict;
X use Socket;
X use Net::netent;
X
X @ARGV = ('loopback') unless @ARGV;
X
X my($n, $net);
X
X for $net ( @ARGV ) {
X
X unless ($n = getnetbyname($net)) {
X warn "$0: no such net: $net\n";
X next;
X }
X
X printf "\n%s is %s%s\n",
X $net,
X lc($n->name) eq lc($net) ? "" : "*really* ",
X $n->name;
X
X print "\taliases are ", join(", ", @{$n->aliases}), "\n"
X if @{$n->aliases};
X
X # this is stupid; first, why is this not in binary?
X # second, why am i going through these convolutions
X # to make it looks right
X {
X my @a = unpack("C4", pack("N", $n->net));
X shift @a while @a && $a[0] == 0;
X printf "\taddr is %s [%d.%d.%d.%d]\n", $n->net, @a;
X }
X
X if ($n = getnetbyaddr($n->net)) {
X if (lc($n->name) ne lc($net)) {
X printf "\tThat addr reverses to net %s!\n", $n->name;
X $net = $n->name;
X redo;
X }
X }
X }
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1130091396 'obstructs/Net/netent.pm' &&
chmod 0644 'obstructs/Net/netent.pm' ||
$echo 'restore of' 'obstructs/Net/netent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Net/netent.pm:' 'MD5 check failed'
e75ca81b142c8df118f1cdddc285f71a obstructs/Net/netent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Net/netent.pm'`"
test 4435 -eq "$shar_count" ||
$echo 'obstructs/Net/netent.pm:' 'original size' '4435,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Net/protoent.pm ==============
if test -f 'obstructs/Net/protoent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Net/protoent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Net/protoent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Net/protoent.pm' &&
package Net::protoent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(getprotobyname getprotobynumber getprotoent);
X @EXPORT_OK = qw( $p_name @p_aliases $p_proto );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'Net::protoent' => [
X name => '$',
X aliases => '@',
X proto => '$',
];
X
sub populate (@) {
X return unless @_;
X my $pob = new();
X $p_name = $pob->[0] = $_[0];
X @p_aliases = @{ $pob->[1] } = split ' ', $_[1];
X $p_proto = $pob->[2] = $_[2];
X return $pob;
}
X
sub getprotoent ( ) { populate(CORE::getprotoent()) }
sub getprotobyname ($) { populate(CORE::getprotobyname(shift)) }
sub getprotobynumber ($) { populate(CORE::getprotobynumber(shift)) }
X
sub getproto ($;$) {
X no strict 'refs';
X return &{'getprotoby' . ($_[0]=~/^\d+$/ ? 'number' : 'name')}(@_);
}
X
1;
X
__END__
X
=head1 NAME
X
Net::protoent - by-name interface to Perl's built-in getproto*() functions
X
=head1 SYNOPSIS
X
X use Net::protoent;
X $p = getprotobyname(shift || 'tcp') || die "no proto";
X printf "proto for %s is %d, aliases are %s\n",
X $p->name, $p->proto, "@{$p->aliases}";
X
X use Net::protoent qw(:FIELDS);
X getprotobyname(shift || 'tcp') || die "no proto";
X print "proto for $p_name is $p_proto, aliases are @p_aliases\n";
X
=head1 DESCRIPTION
X
This module's default exports override the core getprotoent(),
getprotobyname(), and getnetbyport() functions, replacing them with
versions that return "Net::protoent" objects. They take default
second arguments of "tcp". This object has methods that return the
similarly named structure field name from the C's protoent structure
from F<netdb.h>; namely name, aliases, and proto. The aliases method
returns an array reference, the rest scalars.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as variables named
with a preceding C<p_>. Thus, C<$proto_obj-E<gt>name()> corresponds to
$p_name if you import the fields. Array references are available as
regular array variables, so for example C<@{ $proto_obj-E<gt>aliases()
}> would be simply @p_aliases.
X
The getproto() function is a simple front-end that forwards a numeric
argument to getprotobyport(), and the rest to getprotobyname().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1130095196 'obstructs/Net/protoent.pm' &&
chmod 0644 'obstructs/Net/protoent.pm' ||
$echo 'restore of' 'obstructs/Net/protoent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Net/protoent.pm:' 'MD5 check failed'
c8e24414a4b93b93dab2b257e15bdd38 obstructs/Net/protoent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Net/protoent.pm'`"
test 2973 -eq "$shar_count" ||
$echo 'obstructs/Net/protoent.pm:' 'original size' '2973,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Net/servent.pm ==============
if test -f 'obstructs/Net/servent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Net/servent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Net/servent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Net/servent.pm' &&
package Net::servent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(getservbyname getservbyport getservent getserv);
X @EXPORT_OK = qw( $s_name @s_aliases $s_port $s_proto );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'Net::servent' => [
X name => '$',
X aliases => '@',
X port => '$',
X proto => '$',
];
X
sub populate (@) {
X return unless @_;
X my $sob = new();
X $s_name = $sob->[0] = $_[0];
X @s_aliases = @{ $sob->[1] } = split ' ', $_[1];
X $s_port = $sob->[2] = $_[2];
X $s_proto = $sob->[3] = $_[3];
X return $sob;
}
X
sub getservent ( ) { populate(CORE::getservent()) }
sub getservbyname ($;$) { populate(CORE::getservbyname(shift,shift||'tcp')) }
sub getservbyport ($;$) { populate(CORE::getservbyport(shift,shift||'tcp')) }
X
sub getserv ($;$) {
X no strict 'refs';
X return &{'getservby' . ($_[0]=~/^\d+$/ ? 'port' : 'name')}(@_);
}
X
1;
X
__END__
X
=head1 NAME
X
Net::servent - by-name interface to Perl's built-in getserv*() functions
X
=head1 SYNOPSIS
X
X use Net::servent;
X $s = getservbyname(shift || 'ftp') || die "no service";
X printf "port for %s is %s, aliases are %s\n",
X $s->name, $s->port, "@{$s->aliases}";
X
X use Net::servent qw(:FIELDS);
X getservbyname(shift || 'ftp') || die "no service";
X print "port for $s_name is $s_port, aliases are @s_aliases\n";
X
=head1 DESCRIPTION
X
This module's default exports override the core getservent(),
getservbyname(), and
getnetbyport() functions, replacing them with versions that return
"Net::servent" objects. They take default second arguments of "tcp". This object has methods that return the similarly
named structure field name from the C's servent structure from F<netdb.h>;
namely name, aliases, port, and proto. The aliases
method returns an array reference, the rest scalars.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as variables named
with a preceding C<n_>. Thus, C<$serv_obj-E<gt>name()> corresponds to
$s_name if you import the fields. Array references are available as
regular array variables, so for example C<@{ $serv_obj-E<gt>aliases()
}> would be simply @s_aliases.
X
The getserv() function is a simple front-end that forwards a numeric
argument to getservbyport(), and the rest to getservbyname().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 EXAMPLES
X
X use Net::servent qw(:FIELDS);
X
X while (@ARGV) {
X my ($service, $proto) = ((split m!/!, shift), 'tcp');
X my $valet = getserv($service, $proto);
X unless ($valet) {
X warn "$0: No service: $service/$proto\n"
X next;
X }
X printf "service $service/$proto is port %d\n", $valet->port;
X print "alias are @s_aliases\n" if @s_aliases;
X }
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1130094396 'obstructs/Net/servent.pm' &&
chmod 0644 'obstructs/Net/servent.pm' ||
$echo 'restore of' 'obstructs/Net/servent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Net/servent.pm:' 'MD5 check failed'
b09a8a3151b490a083236f84aae0e689 obstructs/Net/servent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Net/servent.pm'`"
test 3424 -eq "$shar_count" ||
$echo 'obstructs/Net/servent.pm:' 'original size' '3424,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Time/gmtime.pm ==============
if test ! -d 'obstructs/Time'; then
$echo 'x -' 'creating directory' 'obstructs/Time'
mkdir 'obstructs/Time'
fi
if test -f 'obstructs/Time/gmtime.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Time/gmtime.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Time/gmtime.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Time/gmtime.pm' &&
package Time::gmtime;
use strict;
use Time::tm;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter Time::tm);
X @EXPORT = qw(gmtime gmctime);
X @EXPORT_OK = qw(
X $tm_sec $tm_min $tm_hour $tm_mday
X $tm_mon $tm_year $tm_wday $tm_yday
X $tm_isdst
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
sub populate (@) {
X return unless @_;
X my $tmob = Time::tm->new();
X @$tmob = (
X $tm_sec, $tm_min, $tm_hour, $tm_mday,
X $tm_mon, $tm_year, $tm_wday, $tm_yday,
X $tm_isdst )
X = @_;
X return $tmob;
}
X
sub gmtime (;$) { populate CORE::gmtime(shift||time)}
sub gmctime (;$) { scalar CORE::gmtime(shift||time)}
X
1;
__END__
X
=head1 NAME
X
Time::gmtime.pm - by-name interface to Perl's built-in gmtime() function
X
=head1 SYNOPSIS
X
X use Time::gmtime;
X $gm = gmtime();
X printf "The day in Greenwich is %s\n",
X (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm->wday() ];
X
X use Time::gmtime w(:FIELDS;
X printf "The day in Greenwich is %s\n",
X (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm_wday() ];
X
X $now = gmctime();
X
X use Time::gmtime;
X use File::stat;
X $date_string = gmctime(stat($file)->mtime);
X
=head1 DESCRIPTION
X
This module's default exports override the core gmtime() function,
replacing it with a version that returns "Time::tm" objects.
This object has methods that return the similarly named structure field
name from the C's tm structure from F<time.h>; namely sec, min, hour,
mday, mon, year, wday, yday, and isdst.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this
still overrides your core functions.) Access these fields as variables
named with a preceding C<tm_> in front their method names. Thus,
C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import the fields.
X
The gmctime() funtion provides a way of getting at the
scalar sense of the original CORE::gmtime() function.
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1129132196 'obstructs/Time/gmtime.pm' &&
chmod 0644 'obstructs/Time/gmtime.pm' ||
$echo 'restore of' 'obstructs/Time/gmtime.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Time/gmtime.pm:' 'MD5 check failed'
8617e4442d682c2bc444e12b612f98e2 obstructs/Time/gmtime.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Time/gmtime.pm'`"
test 2476 -eq "$shar_count" ||
$echo 'obstructs/Time/gmtime.pm:' 'original size' '2476,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Time/localtime.pm ==============
if test -f 'obstructs/Time/localtime.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Time/localtime.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Time/localtime.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Time/localtime.pm' &&
package Time::localtime;
use strict;
use Time::tm;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter Time::tm);
X @EXPORT = qw(localtime ctime);
X @EXPORT_OK = qw(
X $tm_sec $tm_min $tm_hour $tm_mday
X $tm_mon $tm_year $tm_wday $tm_yday
X $tm_isdst
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
sub populate (@) {
X return unless @_;
X my $tmob = Time::tm->new();
X @$tmob = (
X $tm_sec, $tm_min, $tm_hour, $tm_mday,
X $tm_mon, $tm_year, $tm_wday, $tm_yday,
X $tm_isdst )
X = @_;
X return $tmob;
}
X
sub localtime (;$) { populate CORE::localtime(shift||time)}
sub ctime (;$) { scalar CORE::localtime(shift||time) }
X
1;
X
__END__
X
=head1 NAME
X
Time::localtime.pm - by-name interface to Perl's built-in localtime() function
X
=head1 SYNOPSIS
X
X use Time::localtime;
X printf "Year is %d\n", localtime->year() + 1900;
X
X $now = ctime();
X
X use Time::localtime;
X use File::stat;
X $date_string = ctime(stat($file)->mtime);
X
=head1 DESCRIPTION
X
This module's default exports override the core localtime() function,
replacing it with a version that returns "Time::tm" objects.
This object has methods that return the similarly named structure field
name from the C's tm structure from F<time.h>; namely sec, min, hour,
mday, mon, year, wday, yday, and isdst.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as
variables named with a preceding C<tm_> in front their method names.
Thus, C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import
the fields.
X
The ctime() funtion provides a way of getting at the
scalar sense of the original CORE::localtime() function.
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1129132196 'obstructs/Time/localtime.pm' &&
chmod 0644 'obstructs/Time/localtime.pm' ||
$echo 'restore of' 'obstructs/Time/localtime.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Time/localtime.pm:' 'MD5 check failed'
4f44256053f0573143e7f1b78e3db9b1 obstructs/Time/localtime.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Time/localtime.pm'`"
test 2307 -eq "$shar_count" ||
$echo 'obstructs/Time/localtime.pm:' 'original size' '2307,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/Time/tm.pm ==============
if test -f 'obstructs/Time/tm.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/Time/tm.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/Time/tm.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/Time/tm.pm' &&
package Time::tm;
use strict;
X
use Class::Template qw(struct);
struct('Time::tm' => [
X map { $_ => '$' } qw{ sec min hour mday mon year wday yday isdst }
]);
X
1;
__END__
X
=head1 NAME
X
Time::tm.pm - internal object used by Time::gmtime and Time::localtime
X
=head1 DESCRIPTION
X
This module is used internally as a base class by Time::localtime And
Time::gmtime functions. It creates a Time::tm struct object which is
addressable just like's C's tm structure from F<time.h>; namely with sec,
min, hour, mday, mon, year, wday, yday, and isdst.
X
This class is an internal interface only.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1129132696 'obstructs/Time/tm.pm' &&
chmod 0644 'obstructs/Time/tm.pm' ||
$echo 'restore of' 'obstructs/Time/tm.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/Time/tm.pm:' 'MD5 check failed'
02859f003106bb6eb92cc91bb9b37666 obstructs/Time/tm.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/Time/tm.pm'`"
test 622 -eq "$shar_count" ||
$echo 'obstructs/Time/tm.pm:' 'original size' '622,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/User/grent.pm ==============
if test ! -d 'obstructs/User'; then
$echo 'x -' 'creating directory' 'obstructs/User'
mkdir 'obstructs/User'
fi
if test -f 'obstructs/User/grent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/User/grent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/User/grent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/User/grent.pm' &&
package User::grent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(getgrent getgrgid getgrnam getgr);
X @EXPORT_OK = qw($gr_name $gr_gid $gr_passwd $gr_mem @gr_members);
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'User::grent' => [
X name => '$',
X passwd => '$',
X gid => '$',
X members => '@',
];
X
sub populate (@) {
X return unless @_;
X my $gob = new();
X ($gr_name, $gr_passwd, $gr_gid) = @$gob[0,1,2] = @_[0,1,2];
X @gr_members = @{$gob->[3]} = split ' ', $_[3];
X return $gob;
}
X
sub getgrent ( ) { populate(CORE::getgrent()) }
sub getgrnam ($) { populate(CORE::getgrnam(shift)) }
sub getgrgid ($) { populate(CORE::getgrgid(shift)) }
sub getgr ($) { ($_[0] =~ /^\d+/) ? &getgrgid : &getgrnam }
X
1;
__END__
X
=head1 NAME
X
User::grent.pm - by-name interface to Perl's built-in getgr*() functions
X
=head1 SYNOPSIS
X
X use User::grent;
X $gr = getgrgid(0) or die "No group zero";
X if ( $gr->name eq 'wheel' && @{$gr->members} > 1 ) {
X print "gid zero name wheel, with other members";
X }
X
X use User::grent qw(:FIELDS;
X getgrgid(0) or die "No group zero";
X if ( $gr_name eq 'wheel' && @gr_members > 1 ) {
X print "gid zero name wheel, with other members";
X }
X
X $gr = getgr($whoever);
X
=head1 DESCRIPTION
X
This module's default exports override the core getgrent(), getgruid(),
and getgrnam() functions, replacing them with versions that return
"User::grent" objects. This object has methods that return the similarly
named structure field name from the C's passwd structure from F<grp.h>;
namely name, passwd, gid, and members (not mem). The first three
return scalars, the last an array reference.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as variables named
with a preceding C<gr_>. Thus, C<$group_obj-E<gt>gid()> corresponds
to $gr_gid if you import the fields. Array references are available as
regular array variables, so C<@{ $group_obj-E<gt>members() }> would be
simply @gr_members.
X
The getpw() funtion is a simple front-end that forwards
a numeric argument to getpwuid() and the rest to getpwnam().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1130094696 'obstructs/User/grent.pm' &&
chmod 0644 'obstructs/User/grent.pm' ||
$echo 'restore of' 'obstructs/User/grent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/User/grent.pm:' 'MD5 check failed'
9fbf4010f722f9bc493657ec56f8ce5d obstructs/User/grent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/User/grent.pm'`"
test 2848 -eq "$shar_count" ||
$echo 'obstructs/User/grent.pm:' 'original size' '2848,' 'current size' "$shar_count!"
fi
fi
# ============= obstructs/User/pwent.pm ==============
if test -f 'obstructs/User/pwent.pm' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'obstructs/User/pwent.pm' '(file already exists)'
else
$echo 'x -' extracting 'obstructs/User/pwent.pm' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'obstructs/User/pwent.pm' &&
package User::pwent;
use strict;
X
BEGIN {
X use Exporter ();
X use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
X @ISA = qw(Exporter);
X @EXPORT = qw(getpwent getpwuid getpwnam getpw);
X @EXPORT_OK = qw(
X $pw_name $pw_passwd $pw_uid
X $pw_gid $pw_quota $pw_comment
X $pw_gecos $pw_dir $pw_shell
X );
X %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
}
use vars @EXPORT_OK;
X
use Class::Template qw(struct);
struct 'User::pwent' => [
X name => '$',
X passwd => '$',
X uid => '$',
X gid => '$',
X quota => '$',
X comment => '$',
X gcos => '$',
X dir => '$',
X shell => '$',
];
X
sub populate (@) {
X return unless @_;
X my $pwob = new();
X
X ( $pw_name, $pw_passwd, $pw_uid,
X $pw_gid, $pw_quota, $pw_comment,
X $pw_gecos, $pw_dir, $pw_shell, ) = @$pwob = @_;
X
X return $pwob;
}
X
sub getpwent ( ) { populate(CORE::getpwent()) }
sub getpwnam ($) { populate(CORE::getpwnam(shift)) }
sub getpwgid ($) { populate(CORE::getpwgid(shift)) }
sub getpw ($) { ($_[0] =~ /^\d+/) ? &getpwgid : &getpwnam }
X
1;
__END__
X
=head1 NAME
X
User::pwent.pm - by-name interface to Perl's built-in getpw*() functions
X
=head1 SYNOPSIS
X
X use User::pwent;
X $pw = getpwnam('daemon') or die "No daemon user";
X if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?$# ) {
X print "gid 1 on root dir";
X }
X
X use User::pwent qw(:FIELDS);
X getpwnam('daemon') or die "No daemon user";
X if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?$# ) {
X print "gid 1 on root dir";
X }
X
X $pw = getpw($whoever);
X
=head1 DESCRIPTION
X
This module's default exports override the core getpwent(), getpwuid(),
and getpwnam() functions, replacing them with versions that return
"User::pwent" objects. This object has methods that return the similarly
named structure field name from the C's passwd structure from F<pwd.h>;
namely name, passwd, uid, gid, quota, comment, gecos, dir, and shell.
X
You may also import all the structure fields directly into your namespace
as regular variables using the :FIELDS import tag. (Note that this still
overrides your core functions.) Access these fields as
variables named with a preceding C<pw_> in front their method names.
Thus, C<$passwd_obj-E<gt>shell()> corresponds to $pw_shell if you import
the fields.
X
The getpw() funtion is a simple front-end that forwards
a numeric argument to getpwuid() and the rest to getpwnam().
X
To access this functionality without the core overrides,
pass the C<use> an empty import list, and then access
function functions with their full qualified names.
On the other hand, the built-ins are still available
via the C<CORE::> pseudo-package.
X
=head1 NOTE
X
While this class is currently implemented using the Class::Template
module to build a struct-like class, you shouldn't rely upon this.
X
=head1 AUTHOR
X
Tom Christiansen
SHAR_EOF
$shar_touch -am 1130094696 'obstructs/User/pwent.pm' &&
chmod 0644 'obstructs/User/pwent.pm' ||
$echo 'restore of' 'obstructs/User/pwent.pm' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'obstructs/User/pwent.pm:' 'MD5 check failed'
905033d579b32729f95a760e013dbde4 obstructs/User/pwent.pm
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'obstructs/User/pwent.pm'`"
test 2899 -eq "$shar_count" ||
$echo 'obstructs/User/pwent.pm:' 'original size' '2899,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh24166
exit 0
p5p-msgid: <199611301652.JAA24201@toy.perl.com>
Subject: FileHandle that 'ISA' IO::File
Date: Mon, 2 Dec 1996 17:18:02 GMT
From: Nick Ing-Simmons <nik@tiuk.ti.com>
Files: MANIFEST lib/FileHandle.pm
Subject: FileHandle that 'is' and IO::File
Andreas Koenig <k@anna.in-berlin.de> writes:
>>>>>> Nick Ing-Simmons <nik@tiuk.ti.com> writes:
>
> > The patch will serve till we can get derived version working.
>
>I'm putting much hope in the your patch, Nick, because I have another
>problem pending. No test case yet, because I'm waiting for your
>FileHandle.pm.
>
>I'll let you know more details as soon as I have a structured view of
>the problem. Your patch will (hopefully) help me to get there,
>
>andreas
Please try attached.
Drop into lib/FileHandle.pm
p5p-msgid: <199612021718.RAA04416@pluto>
Subject: 10+ debugger patch
Date: Sun, 1 Dec 1996 06:37:31 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: lib/perl5db.pl perl.c pod/perldebug.pod
Bugs corrected:
perl.c
a) Could have deadlocked debugging its own signal handler;
lib/perl5db.pl
pod/perldebug.pod
b) Documentation (internal and POD) updated;
c) NonStop now will not stop at end;
d) variable names more meaningful now;
e) Will not trace last line of itself now;
f) Dumping of looong lines in a program (see Config.pm) interruptable;
g) $@ not wiped by evalled expressions;
While updating the docs I was forced to change some API (to make it
documentable), which resulted in following improvements:
frame & 4 recognized: more verbose output;
frame changes style of TRACE;
Non-interruptable lines have no `:' in the listing;
frame outputs `require'd packages as well.
added Options AutoTrace inhibit_exit
Though this may look a lot, all the changes are not in the main flow
of execution (in frills which are usually disabled), so I think they
may be added even this late in the cycle. Documentation would be quite
messy without these changes.
As well as I know, the documentation is complete now, so one can
_really_ write a new debugger from scratch.
Enjoy,
p5p-msgid: <199612011137.GAA10864@monk.mps.ohio-state.edu>
Subject: DB_File 1.07
From: Paul Marquess <pmarquess@bfsec.bt.co.uk>
Files: ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-recno.t
Subject: DB_File 1.08
From: Paul Marquess <pmarquess@bfsec.bt.co.uk>
Files: ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
OTHER CORE CHANGES
Subject: Eliminate spurious warning when splicing undefs
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c sv.h
Subject: Eliminate spurious warning from "x=" operator
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c
Subject: Fix line numbers near control structures
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c perly.c perly.c.diff perly.y proto.h
Subject: Don't let scalar unpack() underflow stack
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c
Subject: Fix core dump from precedence bug in "@foo" warning
From: Chip Salzenberg <chip@atlantic.net>
Files: toke.c
Subject: Move die() to utils.c; add varargs hack to croak()
From: Chip Salzenberg <chip@atlantic.net>
Files: pp_ctl.c util.c
Subject: Avoid memcmp() for magnitude test if it thinks char is signed
From: Chip Salzenberg <chip@atlantic.net>
Files: Configure config_H config_h.SH doop.c ext/SDBM_File/sdbm/pair.c ext/SDBM_File/sdbm/sdbm.h handy.h hv.c perl.h pp_hot.c proto.h regexec.c sv.c toke.c util.c
Subject: Fully paramaterize locales; disable all if NO_LOCALE
From: Chip Salzenberg <chip@atlantic.net>
Files: ext/POSIX/POSIX.xs op.c perl.h pp.c pp_sys.c sv.c util.c
PORTABILITY AND TESTING
Subject: Bitwise op fix for Alpha
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c
Subject: VMS patches for 5.003_10
Date: Wed, 04 Dec 1996 16:40:12 -0500 (EST)
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Files: EXTERN.h INTERN.h old_perl_exp.SH perl.c perl.h perl_exp.SH pp.c pp_ctl.c pp_sys.c proto.h sv.c toke.c util.c utils/perldoc.PL vms/config.vms vms/descrip.mms vms/gen_shrfls.pl vms/genconfig.pl vms/vmsish.h
private-msgid: <01ICMALO8NMS001A1D@hmivax.humgen.upenn.edu>
Diffstat (limited to 'perly.c')
-rw-r--r-- | perly.c | 2117 |
1 files changed, 1051 insertions, 1066 deletions
@@ -12,6 +12,7 @@ dep() deprecate("\"do\" to call subroutines"); } +#line 16 "perly.c" #define YYERRCODE 256 short yylhs[] = { -1, 40, 0, 7, 5, 8, 6, 9, 9, 9, 10, @@ -56,15 +57,15 @@ short yydefred[] = { 1, 9, 11, 0, 50, 51, 52, 0, 0, 0, 61, 0, 14, 4, 151, 0, 0, 126, 0, 146, 0, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 158, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 158, 159, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 116, 118, 0, 0, 0, 0, 152, 0, 54, 0, 60, 0, 7, 167, 170, 169, 168, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 4, 0, 0, 0, 0, 0, - 165, 0, 132, 0, 0, 0, 0, 0, 161, 0, - 0, 0, 0, 74, 0, 141, 0, 0, 0, 0, + 141, 0, 0, 0, 0, 74, 0, 165, 0, 132, + 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 162, 163, 164, 166, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -72,8 +73,8 @@ short yydefred[] = { 1, 0, 0, 0, 0, 0, 0, 13, 0, 53, 58, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 145, - 147, 0, 0, 0, 0, 0, 0, 108, 0, 130, - 0, 0, 0, 105, 28, 0, 0, 19, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 130, 0, 0, 105, 28, 0, 0, 19, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 78, 0, 0, 0, 0, 0, 0, 0, 128, 0, @@ -94,619 +95,609 @@ short yydgoto[] = { 1, 9, 66, 10, 17, 85, 337, 88, 313, 3, 11, 12, 68, 272, 268, 70, 71, 72, 73, 74, 75, 76, 278, 78, 279, 262, 265, 269, 281, 263, 266, - 124, 204, 90, 79, 242, 181, 145, 276, 13, 2, + 116, 204, 90, 79, 242, 181, 145, 276, 13, 2, 14, 15, 16, }; short yysindex[] = { 0, - 0, 0, -118, 0, 0, 0, -52, 0, 0, 0, - 0, 0, 616, 0, 0, 0, -117, -225, -12, 0, - -219, 0, 0, 0, -28, -28, 0, 32, 0, 2245, - 0, 0, -7, -6, 3, 22, -35, 2245, 38, 44, - 48, -28, 1004, 1067, -196, 0, 0, -28, 2245, 948, - 1343, 2245, 2245, 2245, 2245, 2245, 1399, 0, 2245, 2245, - 1455, -28, -28, -28, -28, 2245, -215, 0, 192, 3934, - -67, -50, 0, 0, -10, 71, 64, 81, 0, 4, - 0, -114, 0, -115, 0, 0, 0, 0, 0, 2245, - 115, 2245, 3934, 4, -114, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 0, 125, 3934, 126, 1518, 948, - 0, 130, 0, 2305, -24, 46, -56, 2245, 0, 81, - 0, -67, 81, 0, 2245, 0, 2305, -77, -77, -77, - -81, -81, 83, -21, -77, -77, 0, -84, 0, 0, - 0, 0, 2305, 4, 0, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 0, 0, -17, 2245, - 2245, 2245, 2245, 2245, 2245, 1794, 0, 2245, 0, 0, - -36, 2245, -49, 0, 2245, 326, 2245, 4, 2245, -215, - 2245, -215, 2245, -156, 2245, -156, 143, 1850, 0, 0, - 0, -2, 13, 140, 2245, 1906, 1969, 0, 58, 0, - 81, 2245, 95, 0, 0, -164, -164, 0, -164, -164, - -109, 0, -48, 2384, 2305, 2819, 941, 1031, 3934, 3894, - 3965, 3724, 359, 435, 1190, -77, -77, 2245, 0, 2245, - 0, 149, -80, 21, -65, 23, 82, 56, 0, 8, - 3934, 0, 0, 136, 0, 155, 0, 2245, 0, 0, - -164, 0, 167, 0, 0, 169, 0, -164, 172, 101, - 174, 0, 185, 0, 0, 198, 192, 0, 0, 201, - 202, 2245, 0, 0, 0, 11, 0, 17, 0, 19, - 0, 84, 2245, 139, 2245, 69, 91, 2245, 0, 153, - 0, 158, 0, 161, 0, 0, 0, 400, 101, 101, - 101, 0, 0, 2245, 101, 2245, 101, 2245, 247, 0, - 0, 0, 0, 105, 0, 1734, 175, 0, 261, 0, - 0, 0, 0, -215, -215, -156, 0, 269, -156, 279, - -215, 268, 101, 0, 0, 0, 0, 0, 0, 278, - 101, 0, 101, 0, 1850, -215, 0, -156, -215, 300, - 0, 0, 0, 101, 0, + 0, 0, -178, 0, 0, 0, -49, 0, 0, 0, + 0, 0, 616, 0, 0, 0, -108, -233, 3, 0, + -230, 0, 0, 0, -24, -24, 0, 28, 0, 1899, + 0, 0, -17, -12, -11, -10, -35, 1899, 39, 54, + 60, 992, 936, -24, 1055, 1319, -217, 0, 0, -24, + 1899, 1899, 1899, 1899, 1899, 1899, 1375, 0, 1899, 1899, + 1431, -24, -24, -24, -24, 1899, -161, 0, 277, 3829, + -69, -42, 0, 0, -4, 88, 89, 97, 0, 24, + 0, -107, 0, -105, 0, 0, 0, 0, 0, 1899, + 114, 1899, 328, 24, -107, 0, 24, 0, 24, 0, + 24, 0, 24, 0, 0, 115, 3829, 133, 1490, 936, + 0, 328, 0, -69, 97, 0, 1899, 0, 137, 0, + 328, -19, 56, 19, 1899, 0, 97, 98, 98, 98, + -82, -82, 93, -21, 98, 98, 0, -87, 0, 0, + 0, 0, 328, 24, 0, 1899, 1899, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1899, 0, 0, -32, 1899, + 1899, 1899, 1899, 1899, 1899, 1665, 0, 1899, 0, 0, + -8, 1899, 357, 0, 1899, 82, 1899, 24, 1899, -161, + 1899, -161, 1899, -234, 1899, -234, 144, 1724, 0, 0, + 0, 4, 11, 138, 1899, 97, 1780, 1836, 0, 61, + 0, 1899, 96, 0, 0, -176, -176, 0, -176, -176, + -95, 0, 21, 1092, 328, 373, 434, 92, 3829, 1204, + 3238, 3721, 2430, 815, 419, 98, 98, 1899, 0, 1899, + 0, 173, -80, 55, -68, 57, -54, 68, 0, 6, + 3829, 0, 0, 157, 0, 178, 0, 1899, 0, 0, + -176, 0, 181, 0, 0, 183, 0, -176, 190, 112, + 209, 0, 231, 0, 0, 210, 277, 0, 0, 237, + 224, 1899, 0, 0, 0, 9, 0, 15, 0, 17, + 0, 105, 1899, 163, 1899, 81, 119, 1899, 0, 168, + 0, 175, 0, 185, 0, 0, 0, 1146, 112, 112, + 112, 0, 0, 1899, 112, 1899, 112, 1899, 279, 0, + 0, 0, 0, 143, 0, 3863, 202, 0, 300, 0, + 0, 0, 0, -161, -161, -234, 0, 321, -234, 326, + -161, 309, 112, 0, 0, 0, 0, 0, 0, 398, + 112, 0, 112, 0, 1724, -161, 0, -234, -161, 336, + 0, 0, 0, 112, 0, }; short yyrindex[] = { 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2453, 2118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3021, - 3064, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 0, -14, -29, - 3121, 3189, 0, 0, 2353, 2177, 0, 309, 0, 0, - 0, -33, 0, 0, 0, 0, 0, 0, 0, 2520, - 0, 0, 843, 0, 230, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1177, 0, 0, 319, - 0, 2285, 0, 1241, 3121, 0, 0, 2520, 0, 2588, - 496, 557, 2651, 0, 0, 0, 1692, 674, 3387, 3470, - 110, 3299, 2719, 0, 3518, 3592, 0, 0, 0, 0, - 0, 0, 2038, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2159, 1989, 0, + 0, 2799, 2867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 0, -25, 193, + 2910, 2954, 0, 0, 2225, 2048, 0, 333, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 2284, + 0, 0, 3575, 0, 257, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3017, 0, 0, 348, + 0, 3642, 496, 557, 2395, 0, 0, 0, 2111, 0, + 3695, 2910, 0, 0, 2284, 0, 2520, 3065, 3103, 3190, + 659, 2997, 2563, 0, 3301, 3354, 0, 0, 0, 0, + 0, 0, 3741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2786, 0, 0, - 0, 302, 892, 0, 319, 0, 2520, 0, 325, 65, - 0, 65, 0, 164, 0, 164, 0, 312, 0, 0, - 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 2886, 0, 2954, 0, 0, 10, 12, 0, 34, 53, - 1047, 0, 0, 1185, 3811, 3827, 3719, 3767, 1294, 0, - 1636, 1580, 1129, 3871, -4, 3636, 3674, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1572, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 59, 0, 0, 0, 0, 0, 0, 333, 0, 0, - 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2631, 0, 0, + 0, 331, 880, 0, 348, 0, 2284, 0, 352, 65, + 0, 65, 0, 164, 0, 164, 0, 338, 0, 0, + 0, 0, 358, 0, 0, 2674, 0, 0, 0, 0, + 0, 0, 2718, 0, 0, -22, 36, 0, 91, 110, + -33, 0, 0, 2573, 1267, 1531, 3476, 3521, 3675, 0, + -27, 3826, 3794, 1587, -6, 3392, 3440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, + 3787, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 359, 0, 0, + 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, + 0, 0, 0, 0, 0, 1953, 0, 0, 0, 0, 0, 0, 0, 65, 65, 164, 0, 0, 164, 0, - 65, 0, 0, 0, 0, 0, 0, 0, 0, 892, - 0, 0, 0, 0, 347, 65, 0, 164, 65, 0, + 65, 0, 0, 0, 0, 0, 0, 0, 0, 880, + 0, 0, 0, 0, 368, 65, 0, 164, 65, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, - 0, 0, 0, 60, -19, 0, 4247, 768, -83, 0, - 0, 0, -192, -13, 3466, 2324, 0, 0, 0, 0, - 0, 377, 955, 0, 0, 245, -173, 39, 75, 204, - -68, -168, 966, 0, 0, 313, 335, 0, 0, 0, + 0, 0, 0, 136, -29, 0, 4145, 680, -78, 0, + 0, 0, -193, -13, 3266, 519, 0, 0, 0, 0, + 0, 400, 885, 0, 0, 267, -196, 63, 124, 250, + -16, -167, 20, 0, 0, 320, 356, 0, 0, 0, 0, 0, 0, }; -#define YYTABLESIZE 4435 +#define YYTABLESIZE 4333 short yytable[] = { 69, - 62, 183, 209, 274, 105, 23, 20, 62, 214, 170, - 294, 68, 299, 170, 68, 207, 256, 91, 62, 213, - 91, 184, 252, 172, 280, 57, 15, 301, 68, 68, - 117, 82, 96, 98, 91, 91, 83, 84, 283, 83, - 174, 152, 100, 134, 15, 152, 83, 138, 305, 210, - 18, 320, 42, 83, 83, 171, 284, 321, 83, 322, - 118, 102, 144, 68, 27, 18, 172, 21, 18, 91, - 42, 92, 173, 240, 16, 255, 189, 108, 191, 300, - 193, 302, 195, 109, 197, 198, 23, 110, 83, 57, - 94, 95, 16, 17, 23, 202, 203, 27, 171, 41, - 27, 27, 27, 43, 27, 238, 27, 27, 319, 27, - 176, 17, 175, 254, 304, 23, 23, 41, 259, 270, - 271, 15, 177, 27, 178, 23, 23, 327, 27, 329, - 150, 151, 216, 217, 219, 220, 221, 222, 223, 80, - 338, 182, 340, 349, 23, 180, 352, 4, 5, 6, - 100, 7, 8, 100, 185, 27, 243, 244, 245, 246, - 247, 248, 250, 20, 199, 362, 200, 100, 100, 206, - 208, 203, 100, 212, 303, 261, 323, 217, 62, 282, - 285, 217, 291, 328, 277, 293, 151, 27, 298, 27, - 27, 286, 288, 290, 306, 307, 20, 344, 292, 20, - 20, 20, 100, 20, 19, 20, 20, 309, 20, 310, - 150, 151, 311, 314, 150, 151, 4, 5, 6, 2, - 7, 8, 20, 312, 296, 315, 297, 20, 86, 150, - 151, 166, 169, 87, 167, 168, 169, 316, 150, 151, - 239, 317, 68, 68, 68, 68, 150, 151, 91, 91, - 91, 91, 47, 350, 20, 47, 47, 47, 104, 47, - 318, 47, 47, 325, 47, 68, 68, 83, 83, 83, - 83, 91, 91, 150, 151, 91, 83, 330, 47, 324, - 83, 83, 331, 47, 203, 332, 20, 343, 20, 20, - 83, 83, 150, 151, 83, 83, 83, 83, 83, 345, - 83, 346, 150, 151, 261, 150, 151, 150, 151, 351, - 47, 150, 151, 150, 151, 150, 151, 150, 151, 353, - 27, 27, 27, 27, 27, 27, 355, 27, 27, 27, + 62, 280, 274, 62, 105, 214, 183, 64, 170, 20, + 64, 62, 299, 90, 23, 15, 90, 256, 18, 213, + 208, 172, 96, 82, 301, 64, 84, 98, 100, 102, + 90, 90, 124, 15, 83, 90, 18, 83, 303, 125, + 152, 270, 271, 134, 283, 91, 305, 138, 174, 320, + 252, 83, 83, 171, 284, 321, 83, 322, 240, 64, + 57, 83, 117, 118, 27, 90, 189, 92, 191, 126, + 193, 172, 195, 184, 197, 198, 42, 210, 108, 294, + 173, 139, 140, 141, 142, 319, 83, 4, 5, 6, + 238, 7, 8, 109, 42, 202, 203, 27, 23, 110, + 27, 27, 27, 171, 27, 23, 27, 27, 211, 27, + 23, 23, 23, 300, 23, 302, 144, 338, 175, 340, + 150, 151, 257, 27, 57, 258, 304, 176, 27, 205, + 329, 16, 216, 217, 219, 220, 221, 222, 223, 327, + 178, 18, 349, 21, 159, 352, 23, 177, 80, 16, + 17, 182, 180, 185, 199, 27, 243, 244, 245, 246, + 247, 248, 250, 20, 362, 254, 94, 95, 17, 282, + 259, 203, 170, 200, 41, 261, 207, 217, 285, 62, + 209, 217, 170, 212, 277, 291, 293, 27, 170, 27, + 27, 286, 41, 288, 290, 43, 20, 323, 292, 20, + 20, 20, 151, 20, 152, 20, 20, 19, 20, 150, + 151, 328, 298, 15, 152, 306, 150, 151, 307, 2, + 152, 309, 20, 310, 296, 239, 297, 20, 150, 151, + 311, 169, 86, 68, 312, 344, 68, 87, 64, 64, + 64, 64, 150, 151, 90, 90, 90, 90, 314, 316, + 68, 68, 47, 90, 20, 47, 47, 47, 350, 47, + 104, 47, 47, 64, 47, 83, 83, 83, 83, 90, + 90, 315, 90, 90, 83, 150, 151, 317, 47, 324, + 83, 83, 318, 47, 203, 68, 20, 325, 20, 20, + 83, 83, 330, 83, 83, 83, 83, 83, 83, 331, + 150, 151, 150, 151, 261, 150, 151, 150, 151, 332, + 47, 150, 151, 150, 151, 150, 151, 150, 151, 343, + 27, 27, 27, 27, 27, 27, 345, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 364, 69, 47, 27, 27, 47, 27, 27, 27, 65, - 150, 151, 57, 27, 27, 27, 27, 27, 27, 155, - 153, 27, 27, 150, 151, 40, 257, 65, 27, 258, - 38, 156, 27, 43, 27, 27, 150, 151, 150, 151, - 40, 100, 100, 100, 100, 150, 151, 38, 159, 77, - 100, 218, 342, 360, 100, 100, 100, 100, 273, 150, - 151, 65, 357, 0, 100, 100, 0, 188, 100, 100, - 100, 100, 100, 0, 100, 100, 170, 0, 100, 20, - 20, 20, 20, 20, 20, 0, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, - 333, 0, 20, 20, 0, 20, 20, 20, 152, 170, - 0, 0, 20, 20, 20, 20, 20, 20, 0, 0, - 20, 20, 159, 146, 147, 148, 149, 20, 0, 0, + 346, 69, 47, 27, 27, 47, 27, 27, 27, 27, + 27, 150, 151, 150, 151, 27, 27, 27, 27, 27, + 27, 351, 153, 27, 150, 151, 353, 355, 154, 155, + 156, 157, 27, 65, 27, 27, 364, 150, 151, 57, + 156, 158, 160, 161, 162, 163, 164, 165, 155, 153, + 166, 65, 40, 167, 168, 169, 38, 165, 156, 43, + 166, 150, 151, 167, 168, 169, 166, 40, 38, 167, + 168, 169, 77, 218, 188, 150, 151, 360, 170, 20, + 20, 20, 20, 20, 20, 65, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 150, + 151, 342, 20, 20, 273, 20, 20, 20, 20, 20, + 152, 0, 0, 0, 20, 20, 20, 20, 20, 20, + 0, 0, 20, 170, 68, 68, 68, 68, 0, 0, 0, 20, 0, 20, 20, 47, 47, 47, 47, 47, - 47, 152, 47, 47, 47, 0, 150, 151, 47, 0, - 170, 47, 47, 47, 47, 0, 0, 0, 47, 47, - 0, 47, 47, 47, 0, 0, 0, 0, 47, 47, - 47, 47, 47, 47, 0, 0, 47, 47, 0, 0, - 0, 0, 152, 47, 264, 170, 267, 47, 167, 47, + 47, 255, 47, 47, 47, 0, 0, 0, 47, 68, + 68, 47, 47, 47, 47, 152, 0, 0, 47, 47, + 0, 47, 47, 47, 47, 47, 0, 0, 0, 170, + 47, 47, 47, 47, 47, 47, 0, 0, 47, 0, + 0, 0, 357, 0, 170, 0, 0, 47, 167, 47, 47, 167, 167, 167, 0, 167, 151, 167, 167, 151, - 167, 0, 0, 4, 5, 6, 0, 7, 8, 0, - 0, 0, 0, 151, 151, 0, 0, 152, 151, 167, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 65, 65, 65, 0, 0, 151, 0, 151, 168, + 167, 152, 0, 89, 89, 264, 0, 267, 146, 147, + 148, 149, 0, 151, 151, 106, 152, 0, 151, 167, + 0, 114, 89, 122, 0, 0, 0, 0, 89, 0, + 0, 0, 0, 150, 151, 0, 0, 0, 0, 0, + 89, 89, 89, 89, 0, 0, 151, 0, 151, 168, 0, 0, 168, 168, 168, 0, 168, 110, 168, 168, - 110, 168, 0, 65, 65, 0, 153, 0, 0, 0, - 154, 155, 156, 157, 110, 110, 0, 0, 151, 110, - 168, 167, 0, 0, 158, 160, 161, 162, 163, 0, - 164, 165, 0, 0, 166, 0, 0, 167, 168, 169, - 0, 0, 0, 154, 155, 156, 157, 0, 52, 110, - 0, 62, 64, 48, 0, 57, 0, 65, 60, 0, - 59, 163, 0, 164, 165, 0, 0, 166, 347, 348, - 167, 168, 169, 0, 58, 354, 0, 0, 0, 63, - 153, 0, 168, 0, 154, 155, 156, 157, 0, 0, - 361, 0, 0, 363, 0, 0, 0, 0, 158, 160, - 161, 162, 163, 0, 164, 165, 61, 0, 166, 0, - 0, 167, 168, 169, 95, 0, 0, 95, 0, 154, - 155, 156, 157, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 95, 0, 0, 0, 95, 0, 23, 164, - 165, 53, 0, 166, 0, 0, 167, 168, 169, 0, - 0, 0, 167, 167, 167, 167, 167, 0, 167, 167, - 167, 0, 0, 0, 167, 0, 95, 151, 151, 151, + 110, 168, 0, 0, 65, 65, 65, 65, 0, 0, + 0, 0, 0, 0, 110, 110, 156, 157, 151, 110, + 168, 167, 4, 5, 6, 0, 7, 8, 114, 65, + 65, 0, 164, 165, 0, 0, 166, 0, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 0, 52, 110, + 0, 62, 64, 50, 0, 57, 0, 65, 60, 154, + 59, 156, 157, 4, 5, 6, 0, 7, 8, 0, + 0, 0, 0, 0, 58, 0, 0, 164, 165, 63, + 0, 166, 168, 0, 167, 168, 169, 241, 0, 347, + 348, 0, 0, 0, 0, 0, 354, 0, 0, 100, + 0, 0, 100, 0, 0, 0, 61, 156, 157, 0, + 0, 361, 0, 0, 363, 275, 100, 100, 0, 0, + 0, 100, 0, 0, 165, 0, 0, 166, 0, 0, + 167, 168, 169, 0, 0, 0, 0, 0, 23, 165, + 0, 53, 166, 0, 0, 167, 168, 169, 0, 0, + 0, 100, 167, 167, 167, 167, 167, 0, 167, 167, + 167, 0, 0, 0, 167, 0, 0, 151, 151, 151, 151, 0, 0, 0, 0, 167, 151, 167, 167, 167, - 151, 151, 151, 151, 167, 167, 167, 167, 167, 167, - 151, 151, 167, 167, 151, 151, 151, 151, 151, 167, + 167, 167, 151, 151, 151, 151, 167, 167, 167, 167, + 167, 167, 151, 151, 167, 151, 151, 151, 151, 151, 151, 151, 0, 167, 151, 167, 167, 151, 151, 151, 0, 0, 0, 168, 168, 168, 168, 168, 0, 168, 168, 168, 0, 0, 0, 168, 0, 0, 110, 110, 110, 110, 0, 0, 0, 0, 168, 110, 168, 168, - 168, 110, 110, 110, 110, 168, 168, 168, 168, 168, - 168, 110, 110, 168, 168, 110, 110, 110, 110, 110, - 168, 110, 110, 0, 168, 110, 168, 168, 110, 110, + 168, 168, 168, 110, 110, 110, 110, 168, 168, 168, + 168, 168, 168, 110, 110, 168, 110, 110, 110, 110, + 110, 110, 110, 0, 168, 110, 168, 168, 110, 110, 110, 22, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 0, 0, 143, 32, 0, 143, 33, 34, 35, + 31, 0, 0, 0, 32, 0, 0, 33, 34, 35, 36, 0, 0, 0, 37, 38, 0, 39, 40, 41, - 143, 143, 0, 0, 42, 43, 44, 45, 46, 47, - 0, 0, 49, 50, 0, 0, 0, 0, 0, 51, - 0, 0, 0, 54, 47, 55, 56, 47, 47, 47, - 0, 47, 0, 47, 47, 143, 47, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 95, 95, 95, 0, - 47, 0, 0, 0, 95, 47, 0, 0, 95, 95, - 95, 95, 0, 0, 0, 0, 0, 0, 95, 95, - 0, 0, 95, 95, 95, 95, 95, 0, 95, 95, - 52, 0, 47, 62, 64, 48, 0, 57, 0, 65, - 60, 91, 59, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 120, 123, 0, 0, 111, 0, 0, - 0, 63, 0, 119, 47, 125, 0, 47, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 139, 140, 141, - 142, 170, 0, 0, 0, 0, 52, 0, 61, 62, - 64, 48, 0, 57, 123, 65, 60, 0, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 152, 0, 0, 0, 63, 0, 0, - 23, 0, 123, 53, 0, 205, 334, 335, 336, 211, - 0, 0, 339, 0, 341, 0, 0, 64, 0, 0, - 64, 0, 0, 0, 61, 0, 0, 0, 0, 52, - 0, 0, 62, 64, 48, 64, 57, 0, 65, 60, - 356, 59, 0, 0, 143, 143, 143, 143, 358, 0, - 359, 170, 0, 0, 0, 116, 23, 0, 0, 53, - 63, 365, 0, 0, 0, 0, 123, 143, 143, 64, - 0, 123, 0, 0, 0, 0, 0, 47, 47, 47, - 47, 47, 47, 152, 47, 47, 47, 61, 0, 0, - 47, 0, 0, 47, 47, 47, 47, 0, 0, 87, - 47, 47, 87, 47, 47, 47, 0, 0, 0, 0, - 47, 47, 47, 47, 47, 47, 87, 87, 47, 47, - 0, 87, 53, 0, 0, 47, 0, 0, 0, 47, - 0, 47, 47, 0, 121, 25, 26, 27, 28, 87, - 29, 30, 31, 0, 0, 0, 32, 138, 0, 0, - 138, 87, 0, 0, 0, 88, 0, 38, 88, 39, - 40, 41, 0, 0, 138, 138, 42, 43, 44, 45, - 46, 47, 88, 88, 49, 50, 165, 88, 0, 166, - 0, 51, 167, 168, 169, 54, 0, 55, 56, 0, - 112, 25, 26, 27, 28, 0, 29, 30, 31, 138, - 0, 0, 32, 0, 0, 0, 0, 88, 0, 0, - 170, 131, 0, 38, 131, 39, 40, 41, 0, 0, - 0, 0, 42, 43, 44, 45, 46, 47, 131, 131, - 49, 50, 0, 131, 0, 0, 0, 51, 0, 0, - 0, 54, 152, 55, 56, 0, 0, 156, 64, 64, - 64, 64, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 0, 131, 79, 32, 165, 79, 0, 166, - 0, 64, 167, 168, 169, 0, 38, 0, 39, 40, - 41, 79, 79, 0, 0, 42, 43, 44, 45, 46, - 47, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 51, 0, 0, 0, 54, 52, 55, 56, 62, 64, - 48, 0, 57, 0, 65, 60, 79, 59, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 87, 87, 87, 0, 0, 63, 0, 0, 87, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 87, 0, 0, 87, 87, 87, - 87, 52, 0, 61, 62, 64, 48, 0, 57, 133, - 65, 60, 0, 59, 0, 0, 0, 0, 138, 138, - 138, 138, 0, 0, 0, 0, 88, 88, 88, 88, - 0, 0, 63, 0, 0, 23, 0, 0, 53, 0, - 0, 138, 138, 0, 0, 0, 156, 157, 0, 88, - 88, 0, 0, 88, 0, 0, 0, 52, 0, 61, - 62, 64, 48, 0, 57, 165, 65, 60, 166, 59, - 0, 167, 168, 169, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 131, 131, 131, 0, 0, 63, 0, - 0, 131, 0, 0, 53, 131, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 131, 0, 0, 131, - 131, 131, 131, 131, 0, 61, 0, 137, 0, 0, - 52, 0, 0, 62, 64, 48, 0, 57, 201, 65, - 60, 0, 59, 0, 0, 79, 79, 79, 79, 0, + 42, 43, 0, 0, 0, 170, 44, 45, 46, 47, + 48, 49, 47, 0, 51, 47, 47, 47, 0, 47, + 0, 47, 47, 54, 47, 55, 56, 115, 0, 0, + 100, 100, 100, 100, 0, 127, 0, 152, 47, 100, + 0, 0, 0, 47, 0, 100, 100, 100, 100, 0, + 0, 0, 0, 0, 0, 100, 100, 0, 100, 100, + 100, 100, 100, 100, 100, 0, 0, 100, 52, 0, + 47, 62, 64, 50, 115, 57, 0, 65, 60, 0, + 59, 0, 0, 0, 0, 0, 0, 0, 334, 335, + 336, 0, 0, 0, 339, 0, 341, 0, 0, 63, + 0, 206, 47, 0, 0, 47, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 63, 0, 0, 0, 0, 0, 0, 79, 79, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 61, 0, - 0, 32, 67, 0, 0, 67, 0, 0, 0, 0, - 89, 0, 38, 89, 39, 40, 41, 0, 0, 67, - 67, 42, 43, 44, 45, 46, 47, 89, 89, 49, - 50, 0, 89, 53, 0, 0, 51, 0, 0, 0, - 54, 0, 55, 56, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 67, 0, 0, 32, 0, 0, - 0, 0, 89, 0, 0, 0, 90, 0, 38, 90, - 39, 40, 41, 0, 0, 0, 0, 42, 43, 44, - 45, 46, 47, 90, 90, 49, 50, 0, 90, 0, - 0, 0, 51, 0, 0, 0, 54, 0, 55, 56, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 0, 0, 0, 32, 0, 0, 0, 0, 90, 0, - 0, 0, 142, 0, 38, 142, 39, 40, 41, 0, - 0, 0, 0, 42, 43, 44, 45, 46, 47, 142, - 142, 49, 50, 0, 142, 0, 0, 0, 51, 0, - 0, 0, 54, 0, 55, 56, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 0, 142, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 38, 0, 39, - 40, 41, 0, 0, 0, 0, 42, 43, 44, 45, - 46, 47, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 51, 0, 0, 170, 54, 52, 55, 56, 62, - 64, 48, 0, 57, 249, 65, 60, 0, 59, 0, - 0, 0, 0, 67, 67, 67, 67, 0, 0, 0, - 0, 89, 89, 89, 89, 0, 152, 63, 0, 0, - 89, 0, 0, 0, 0, 0, 67, 67, 0, 0, - 0, 0, 0, 0, 89, 89, 0, 0, 89, 89, - 89, 0, 52, 0, 61, 62, 64, 48, 0, 57, - 0, 65, 60, 0, 59, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, - 90, 0, 0, 63, 0, 0, 90, 0, 0, 53, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 90, 0, 0, 90, 90, 0, 0, 52, 0, - 61, 62, 64, 48, 0, 57, 287, 65, 60, 0, - 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 142, 142, 142, 0, 0, 63, - 0, 0, 142, 0, 0, 53, 142, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 142, 142, 0, 0, - 142, 142, 142, 142, 142, 0, 61, 0, 0, 0, - 0, 52, 0, 0, 62, 64, 48, 0, 57, 289, - 65, 60, 0, 59, 153, 0, 0, 0, 154, 155, - 156, 157, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 63, 160, 161, 162, 163, 0, 164, 165, + 0, 0, 356, 0, 52, 0, 61, 62, 64, 50, + 358, 57, 359, 65, 60, 0, 59, 0, 0, 0, + 0, 0, 0, 365, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 0, 0, 23, 0, + 0, 53, 0, 0, 0, 0, 115, 0, 0, 0, + 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 61, 0, 0, 0, 0, 52, 0, 0, + 62, 64, 50, 0, 57, 0, 65, 60, 0, 59, + 0, 154, 155, 156, 157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 53, 63, 164, + 165, 0, 0, 166, 0, 0, 167, 168, 169, 0, + 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, + 47, 0, 47, 47, 47, 61, 0, 0, 47, 0, + 0, 47, 47, 47, 47, 0, 0, 0, 47, 47, + 0, 47, 47, 47, 47, 47, 0, 0, 0, 0, + 47, 47, 47, 47, 47, 47, 0, 23, 47, 0, + 53, 0, 170, 0, 0, 0, 333, 47, 0, 47, + 47, 0, 113, 25, 26, 27, 28, 87, 29, 30, + 31, 0, 0, 0, 32, 0, 0, 0, 159, 0, + 0, 0, 0, 0, 152, 38, 0, 39, 40, 41, + 42, 43, 0, 0, 0, 0, 44, 45, 46, 47, + 48, 49, 0, 0, 51, 0, 170, 0, 0, 0, + 0, 0, 0, 54, 0, 55, 56, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 0, 0, 0, + 32, 295, 0, 0, 0, 0, 159, 0, 152, 0, + 0, 38, 0, 39, 40, 41, 42, 43, 0, 0, + 0, 0, 44, 45, 46, 47, 48, 49, 0, 0, + 51, 0, 0, 0, 170, 0, 0, 0, 0, 54, + 0, 55, 56, 0, 0, 0, 0, 84, 0, 0, + 84, 119, 25, 26, 27, 28, 0, 29, 30, 31, + 0, 0, 0, 32, 84, 84, 152, 0, 0, 84, + 0, 0, 0, 0, 38, 0, 39, 40, 41, 42, + 43, 0, 0, 0, 0, 44, 45, 46, 47, 48, + 49, 52, 0, 51, 62, 64, 50, 0, 57, 84, + 65, 60, 54, 59, 55, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 123, 154, 155, + 156, 157, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 161, 162, 163, 164, 165, 0, 0, + 166, 0, 0, 167, 168, 169, 0, 52, 0, 61, + 62, 64, 50, 0, 57, 133, 65, 60, 0, 59, + 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 154, 155, 156, 157, 0, 0, 63, 0, + 0, 0, 0, 0, 53, 158, 160, 161, 162, 163, + 164, 165, 0, 0, 166, 0, 0, 167, 168, 169, + 0, 0, 0, 52, 0, 61, 62, 64, 50, 0, + 57, 0, 65, 60, 0, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, + 154, 155, 156, 157, 63, 0, 0, 0, 0, 0, + 53, 0, 0, 158, 160, 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, 167, 168, 169, 0, 0, - 24, 25, 26, 27, 28, 0, 29, 30, 31, 61, - 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 0, 39, 40, 41, 102, 0, - 0, 102, 42, 43, 44, 45, 46, 47, 0, 0, - 49, 50, 0, 0, 53, 102, 102, 51, 0, 0, - 102, 54, 0, 55, 56, 22, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 0, 0, 0, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, - 102, 39, 40, 41, 0, 0, 0, 0, 42, 43, - 44, 45, 46, 47, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 51, 0, 0, 0, 54, 144, 55, - 56, 144, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 0, 0, 0, 32, 144, 144, 0, 0, 0, - 144, 0, 0, 0, 0, 38, 0, 39, 40, 41, - 0, 0, 0, 0, 42, 43, 44, 45, 46, 47, - 0, 0, 49, 50, 0, 0, 0, 0, 144, 51, - 144, 0, 0, 54, 0, 55, 56, 127, 0, 0, - 127, 0, 0, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 127, 127, 0, 32, 0, 127, - 144, 0, 0, 0, 0, 0, 0, 0, 38, 0, - 39, 40, 41, 0, 0, 0, 0, 42, 43, 44, - 45, 46, 47, 0, 0, 49, 50, 127, 0, 127, - 0, 0, 51, 0, 0, 0, 54, 52, 55, 56, - 62, 64, 48, 0, 57, 0, 65, 60, 0, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 0, 0, 0, 0, 0, 0, 0, 63, 102, - 102, 102, 102, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 102, 102, 0, 151, 0, 0, 151, 0, - 0, 0, 102, 102, 0, 61, 102, 102, 102, 102, - 102, 0, 151, 151, 0, 0, 0, 151, 89, 89, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 89, 115, 0, 0, 0, - 53, 89, 0, 122, 0, 151, 0, 151, 0, 0, - 0, 0, 0, 0, 0, 89, 89, 89, 89, 144, - 144, 144, 144, 112, 0, 170, 112, 0, 144, 0, - 0, 0, 144, 144, 144, 144, 0, 151, 0, 0, - 112, 112, 144, 144, 0, 112, 144, 144, 144, 144, - 144, 0, 144, 144, 0, 0, 144, 152, 0, 144, - 144, 144, 0, 122, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 112, 0, 112, 0, 0, 127, 127, - 127, 127, 0, 0, 0, 0, 0, 127, 0, 0, - 0, 127, 127, 127, 127, 0, 0, 0, 0, 0, - 0, 127, 127, 0, 170, 127, 127, 127, 127, 127, - 0, 127, 127, 0, 0, 127, 0, 0, 127, 127, - 127, 0, 241, 137, 0, 0, 137, 0, 0, 0, - 0, 24, 25, 26, 27, 28, 152, 29, 30, 31, - 137, 137, 0, 32, 0, 137, 0, 0, 0, 0, - 275, 0, 0, 0, 38, 0, 39, 40, 41, 0, - 0, 0, 0, 42, 43, 44, 45, 46, 47, 0, - 0, 49, 50, 0, 0, 137, 0, 0, 51, 0, - 0, 0, 54, 0, 55, 56, 151, 151, 151, 151, - 153, 0, 0, 153, 0, 151, 0, 0, 0, 151, - 151, 151, 151, 0, 0, 137, 0, 153, 153, 151, - 151, 0, 153, 151, 151, 151, 151, 151, 0, 151, - 151, 156, 157, 151, 0, 0, 151, 151, 151, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, - 165, 0, 153, 166, 0, 0, 167, 168, 169, 0, - 0, 0, 0, 0, 112, 112, 112, 112, 139, 0, - 0, 0, 0, 112, 0, 0, 0, 112, 112, 112, - 112, 0, 153, 0, 0, 139, 139, 112, 112, 0, - 139, 112, 112, 112, 112, 112, 0, 112, 112, 0, - 0, 112, 0, 0, 112, 112, 112, 0, 154, 155, - 156, 157, 0, 0, 0, 0, 0, 0, 139, 0, - 139, 0, 0, 160, 161, 162, 163, 0, 164, 165, - 0, 154, 166, 0, 0, 167, 168, 169, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 154, 154, - 139, 0, 0, 154, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 137, 137, 137, 137, 0, 0, - 0, 0, 0, 137, 0, 0, 0, 137, 137, 137, - 137, 154, 0, 154, 0, 0, 0, 137, 137, 0, - 0, 137, 137, 137, 137, 137, 0, 137, 137, 104, - 0, 137, 104, 0, 137, 137, 137, 0, 0, 0, - 0, 0, 0, 154, 0, 0, 104, 104, 0, 0, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 153, 153, 153, 153, 0, 0, 0, 0, 0, - 153, 0, 0, 0, 153, 153, 153, 153, 0, 0, - 0, 104, 0, 0, 153, 153, 0, 0, 153, 153, - 153, 153, 153, 0, 153, 153, 66, 0, 153, 66, - 0, 153, 153, 153, 0, 0, 0, 0, 0, 0, - 0, 104, 0, 66, 66, 0, 0, 0, 66, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, - 139, 139, 139, 0, 0, 0, 0, 0, 139, 0, - 0, 0, 139, 139, 139, 139, 0, 0, 66, 0, - 0, 0, 139, 139, 0, 0, 139, 139, 139, 139, - 139, 0, 139, 139, 0, 0, 139, 0, 0, 139, - 139, 139, 0, 0, 0, 0, 0, 0, 66, 170, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 154, 154, 154, 154, 69, 0, 0, 0, - 0, 154, 0, 0, 0, 154, 154, 154, 154, 0, - 0, 152, 0, 69, 69, 154, 154, 0, 69, 154, - 154, 154, 154, 154, 0, 154, 154, 0, 0, 154, - 0, 0, 154, 154, 154, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 0, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 104, 104, 104, 104, 103, 0, 0, 103, 0, 104, - 0, 0, 0, 104, 104, 104, 104, 0, 69, 0, - 0, 103, 103, 104, 104, 0, 103, 104, 104, 104, - 104, 104, 0, 104, 104, 0, 0, 104, 0, 0, - 104, 104, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, - 66, 153, 0, 0, 153, 0, 66, 0, 0, 0, - 66, 66, 66, 66, 0, 0, 103, 0, 153, 153, - 66, 66, 0, 153, 66, 66, 66, 66, 66, 0, - 66, 66, 0, 0, 66, 0, 0, 66, 66, 66, - 0, 0, 0, 154, 140, 156, 157, 140, 0, 0, - 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, - 0, 140, 140, 164, 165, 0, 140, 166, 0, 0, - 167, 168, 169, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 140, 69, 69, 69, - 69, 110, 0, 0, 110, 0, 69, 0, 0, 0, - 69, 69, 69, 69, 0, 0, 0, 0, 110, 110, - 69, 69, 0, 110, 69, 69, 69, 69, 69, 0, - 69, 69, 0, 0, 69, 0, 0, 69, 69, 69, + 0, 61, 52, 137, 0, 62, 64, 50, 0, 57, + 201, 65, 60, 0, 59, 0, 0, 0, 84, 84, + 84, 84, 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 63, 84, 0, 53, 0, 0, 0, + 0, 0, 0, 84, 84, 0, 84, 84, 84, 84, + 84, 85, 0, 0, 85, 24, 25, 26, 27, 28, + 61, 29, 30, 31, 0, 0, 0, 32, 85, 85, + 0, 0, 0, 85, 0, 0, 0, 0, 38, 0, + 39, 40, 41, 42, 43, 0, 0, 0, 0, 44, + 45, 46, 47, 48, 49, 53, 0, 51, 0, 0, + 0, 0, 0, 85, 0, 0, 54, 86, 55, 56, + 86, 24, 25, 26, 27, 28, 0, 29, 30, 31, + 0, 0, 0, 32, 86, 86, 0, 0, 0, 86, + 0, 0, 0, 0, 38, 0, 39, 40, 41, 42, + 43, 0, 0, 0, 0, 44, 45, 46, 47, 48, + 49, 0, 0, 51, 0, 0, 0, 0, 0, 86, + 0, 0, 54, 0, 55, 56, 0, 24, 25, 26, + 27, 28, 0, 29, 30, 31, 0, 52, 0, 32, + 62, 64, 50, 0, 57, 249, 65, 60, 0, 59, + 38, 0, 39, 40, 41, 42, 43, 0, 0, 0, + 0, 44, 45, 46, 47, 48, 49, 0, 63, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, + 55, 56, 0, 0, 0, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 61, 52, 0, 32, 62, + 64, 50, 0, 57, 0, 65, 60, 0, 59, 38, + 0, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 44, 45, 46, 47, 48, 49, 0, 63, 51, 0, + 53, 0, 0, 0, 0, 0, 0, 54, 0, 55, + 56, 0, 85, 85, 85, 85, 0, 0, 0, 0, + 0, 85, 52, 0, 61, 62, 64, 50, 0, 57, + 287, 65, 60, 0, 59, 0, 0, 85, 85, 0, + 85, 85, 85, 85, 85, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, + 86, 86, 0, 0, 0, 0, 0, 86, 52, 0, + 61, 62, 64, 50, 0, 57, 289, 65, 60, 0, + 59, 0, 0, 86, 86, 0, 86, 86, 86, 86, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 103, 117, - 0, 0, 117, 0, 103, 0, 0, 0, 103, 103, - 103, 103, 0, 0, 0, 0, 117, 117, 103, 103, - 0, 117, 103, 103, 103, 103, 103, 0, 103, 103, - 0, 0, 103, 0, 0, 103, 103, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 153, 153, 153, 153, 0, 0, 0, 0, - 0, 153, 0, 0, 0, 153, 153, 153, 153, 0, - 0, 0, 0, 0, 0, 153, 153, 0, 0, 153, - 153, 153, 153, 153, 0, 153, 153, 0, 0, 153, - 0, 0, 153, 153, 153, 140, 140, 140, 140, 101, - 0, 0, 101, 0, 140, 0, 0, 0, 140, 140, - 140, 140, 0, 0, 0, 0, 101, 101, 140, 140, - 0, 101, 140, 140, 140, 140, 140, 0, 140, 140, - 0, 0, 140, 0, 0, 140, 140, 140, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 110, 110, 110, 110, 0, 0, 0, 0, - 0, 110, 0, 0, 0, 110, 110, 110, 110, 0, - 0, 0, 0, 0, 0, 110, 110, 0, 0, 110, - 110, 110, 110, 110, 0, 110, 110, 96, 0, 110, - 96, 0, 110, 110, 110, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 96, 0, 0, 0, 96, + 0, 24, 25, 26, 27, 28, 61, 29, 30, 31, + 0, 52, 0, 32, 62, 64, 50, 0, 57, 0, + 65, 60, 0, 59, 38, 0, 39, 40, 41, 42, + 43, 0, 0, 0, 0, 44, 45, 46, 47, 48, + 49, 53, 63, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 55, 56, 0, 0, 0, 22, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 61, + 0, 0, 32, 91, 0, 0, 91, 0, 0, 0, + 0, 0, 0, 38, 0, 39, 40, 41, 42, 43, + 91, 91, 0, 0, 44, 45, 46, 47, 48, 49, + 0, 0, 51, 0, 53, 0, 0, 0, 0, 144, + 0, 54, 144, 55, 56, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 91, 144, 144, 32, 0, + 0, 144, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 44, 45, 46, 47, 48, 49, 0, 0, 51, 144, + 0, 144, 0, 0, 0, 0, 0, 54, 127, 55, + 56, 127, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 0, 0, 0, 32, 127, 127, 0, 0, 0, + 127, 144, 0, 0, 0, 38, 0, 39, 40, 41, + 42, 43, 0, 0, 0, 0, 44, 45, 46, 47, + 48, 49, 0, 0, 51, 0, 0, 0, 127, 0, + 127, 0, 0, 54, 0, 55, 56, 0, 0, 0, + 0, 151, 0, 0, 151, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 0, 0, 0, 32, 151, 151, + 127, 0, 0, 151, 0, 0, 0, 0, 38, 0, + 39, 40, 41, 42, 43, 0, 0, 0, 0, 44, + 45, 46, 47, 48, 49, 0, 0, 51, 0, 137, + 0, 151, 137, 151, 0, 0, 54, 0, 55, 56, + 0, 0, 0, 0, 0, 0, 137, 137, 0, 0, + 0, 137, 0, 0, 91, 91, 91, 91, 0, 0, + 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 91, 137, 91, 0, 0, 0, 0, 0, 0, 0, + 144, 144, 144, 144, 0, 112, 0, 0, 112, 144, + 0, 0, 0, 0, 0, 144, 144, 144, 144, 0, + 0, 137, 112, 112, 0, 144, 144, 112, 144, 144, + 144, 144, 144, 144, 144, 0, 0, 144, 0, 0, + 144, 144, 144, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 112, 0, 112, 0, 127, + 127, 127, 127, 0, 153, 0, 0, 153, 127, 0, + 0, 0, 0, 0, 127, 127, 127, 127, 0, 0, + 0, 153, 153, 0, 127, 127, 153, 127, 127, 127, + 127, 127, 127, 127, 0, 0, 127, 0, 0, 127, + 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 151, 151, 151, 151, 0, 0, 0, 0, + 0, 151, 0, 0, 0, 0, 0, 151, 151, 151, + 151, 0, 0, 0, 0, 0, 153, 151, 151, 0, + 151, 151, 151, 151, 151, 151, 151, 0, 0, 151, + 0, 0, 151, 151, 151, 0, 0, 0, 0, 0, + 137, 137, 137, 137, 0, 154, 0, 0, 0, 137, + 0, 0, 0, 0, 0, 137, 137, 137, 137, 0, + 0, 0, 154, 154, 0, 137, 137, 154, 137, 137, + 137, 137, 137, 137, 137, 0, 0, 137, 0, 0, + 137, 137, 137, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 154, 0, 154, 0, 0, + 0, 0, 0, 0, 0, 0, 112, 112, 112, 112, + 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, + 0, 112, 112, 112, 112, 0, 0, 154, 0, 0, + 170, 112, 112, 0, 112, 112, 112, 112, 112, 112, + 112, 0, 0, 112, 0, 0, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 117, 117, 117, 0, 0, 0, 0, 0, 117, - 0, 0, 0, 117, 117, 117, 117, 0, 0, 96, - 0, 0, 0, 117, 117, 0, 0, 117, 117, 117, - 117, 117, 0, 117, 117, 93, 0, 117, 0, 0, - 117, 117, 117, 107, 0, 0, 0, 0, 114, 0, - 97, 0, 0, 97, 0, 0, 127, 128, 129, 130, - 131, 132, 0, 0, 135, 136, 0, 97, 97, 0, - 0, 143, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 152, 0, 0, 153, 153, 153, 153, 0, + 139, 0, 0, 0, 153, 0, 0, 0, 0, 0, + 153, 153, 153, 153, 0, 0, 0, 139, 139, 0, + 153, 153, 139, 153, 153, 153, 153, 153, 153, 153, + 0, 0, 153, 0, 0, 153, 153, 153, 0, 0, + 0, 0, 0, 104, 0, 0, 104, 0, 0, 0, + 139, 0, 139, 88, 0, 0, 88, 0, 0, 0, + 104, 104, 0, 0, 0, 104, 0, 0, 0, 0, + 88, 88, 0, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 154, 154, 154, 154, + 0, 66, 0, 0, 66, 154, 0, 0, 0, 0, + 0, 154, 154, 154, 154, 104, 0, 0, 66, 66, + 0, 154, 154, 66, 154, 154, 154, 154, 154, 154, + 154, 0, 0, 154, 0, 0, 154, 154, 154, 0, + 0, 0, 0, 0, 69, 0, 154, 155, 156, 157, + 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, + 0, 69, 69, 163, 164, 165, 69, 0, 166, 0, + 0, 167, 168, 169, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66, 0, 0, 0, 0, 103, 0, + 0, 103, 0, 0, 69, 0, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 103, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 139, 139, 139, 139, 0, 69, 0, 0, 0, + 139, 0, 0, 0, 0, 0, 139, 139, 139, 139, + 103, 0, 0, 0, 0, 0, 139, 139, 0, 139, + 139, 139, 139, 139, 139, 139, 0, 0, 139, 0, + 0, 139, 139, 139, 104, 104, 104, 104, 0, 140, + 103, 0, 140, 104, 88, 88, 88, 88, 0, 104, + 104, 104, 104, 0, 0, 0, 140, 140, 0, 104, + 104, 140, 104, 104, 104, 104, 104, 104, 104, 88, + 88, 104, 88, 0, 104, 104, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 186, 93, 0, - 0, 93, 97, 0, 0, 0, 0, 0, 0, 0, - 101, 101, 101, 101, 0, 93, 93, 0, 0, 101, - 93, 0, 0, 101, 101, 101, 101, 0, 0, 0, - 0, 0, 0, 101, 101, 0, 0, 101, 101, 101, - 101, 101, 0, 101, 101, 0, 0, 101, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 224, 225, + 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66, 66, 66, 66, 0, 153, 0, 0, + 153, 66, 0, 0, 0, 0, 0, 66, 66, 66, + 66, 0, 0, 0, 153, 153, 0, 66, 66, 153, + 66, 66, 66, 66, 66, 66, 66, 0, 0, 66, + 0, 0, 66, 66, 66, 69, 69, 69, 69, 0, + 110, 0, 0, 110, 69, 0, 0, 0, 0, 153, + 69, 69, 69, 69, 0, 0, 0, 110, 110, 0, + 69, 69, 110, 69, 69, 69, 69, 69, 69, 69, + 0, 0, 69, 0, 0, 69, 69, 69, 0, 103, + 103, 103, 103, 0, 117, 0, 0, 117, 103, 0, + 0, 0, 110, 0, 103, 103, 103, 103, 0, 0, + 0, 117, 117, 0, 103, 103, 117, 103, 103, 103, + 103, 103, 103, 103, 0, 0, 103, 0, 0, 103, + 103, 103, 0, 0, 0, 0, 0, 101, 0, 0, + 101, 0, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 0, 101, 101, 0, 138, 0, 101, + 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 140, 140, 140, 140, 138, 138, 0, 0, 0, 140, + 0, 0, 0, 0, 0, 140, 140, 140, 140, 101, + 0, 0, 0, 0, 0, 140, 140, 0, 140, 140, + 140, 140, 140, 140, 140, 95, 0, 140, 95, 138, + 140, 140, 140, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 95, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, + 153, 153, 0, 96, 0, 0, 96, 153, 0, 0, + 0, 0, 0, 153, 153, 153, 153, 95, 0, 0, + 96, 96, 0, 153, 153, 96, 153, 153, 153, 153, + 153, 153, 153, 0, 0, 153, 0, 0, 153, 153, + 153, 110, 110, 110, 110, 0, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 96, 110, 110, 110, 110, + 0, 0, 0, 0, 0, 0, 110, 110, 0, 110, + 110, 110, 110, 110, 110, 110, 0, 0, 110, 0, + 0, 110, 110, 110, 0, 117, 117, 117, 117, 0, + 97, 0, 0, 97, 117, 0, 0, 0, 0, 0, + 117, 117, 117, 117, 0, 0, 0, 97, 97, 0, + 117, 117, 97, 117, 117, 117, 117, 117, 117, 117, + 0, 0, 117, 0, 0, 117, 117, 117, 101, 101, + 101, 101, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 97, 101, 101, 101, 101, 0, 138, 138, + 138, 138, 0, 101, 101, 93, 101, 101, 101, 101, + 101, 101, 101, 107, 0, 101, 0, 112, 0, 0, + 121, 0, 0, 138, 138, 0, 0, 128, 129, 130, + 131, 132, 0, 0, 135, 136, 0, 0, 170, 0, + 0, 143, 0, 0, 0, 0, 95, 95, 95, 95, + 0, 93, 0, 0, 93, 95, 0, 0, 0, 0, + 0, 95, 95, 95, 95, 0, 0, 186, 93, 93, + 152, 95, 95, 93, 95, 95, 95, 95, 95, 95, + 95, 0, 0, 0, 96, 96, 96, 96, 0, 0, + 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, + 96, 96, 96, 93, 94, 0, 0, 94, 0, 96, + 96, 0, 96, 96, 96, 96, 96, 96, 96, 0, + 0, 94, 94, 0, 0, 0, 94, 0, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 94, 0, 0, 94, 0, 0, 0, 0, - 0, 0, 0, 251, 0, 0, 0, 0, 0, 94, - 94, 0, 0, 0, 94, 0, 0, 0, 96, 96, - 96, 96, 0, 0, 0, 0, 0, 96, 0, 0, - 0, 96, 96, 96, 96, 0, 92, 0, 0, 92, - 0, 96, 96, 0, 94, 96, 96, 96, 96, 96, - 0, 96, 96, 92, 92, 0, 0, 0, 92, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 0, 0, 80, 0, 0, - 0, 0, 0, 308, 0, 0, 0, 0, 92, 0, - 0, 80, 80, 0, 0, 0, 80, 0, 0, 0, + 236, 237, 92, 0, 0, 92, 0, 0, 0, 0, + 0, 0, 0, 251, 0, 0, 94, 0, 0, 92, + 92, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 0, 0, 0, - 97, 0, 0, 0, 97, 97, 97, 97, 0, 81, - 326, 0, 81, 0, 97, 97, 80, 0, 97, 97, - 97, 97, 97, 0, 97, 97, 81, 81, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 93, - 93, 93, 93, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 93, 93, 93, 93, 0, 82, 0, 0, - 82, 81, 93, 93, 170, 0, 93, 93, 93, 93, - 93, 0, 93, 93, 82, 82, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, - 0, 84, 0, 0, 84, 0, 0, 0, 0, 82, - 0, 0, 0, 94, 94, 94, 94, 85, 84, 84, - 85, 0, 94, 84, 0, 0, 94, 94, 94, 94, - 0, 0, 0, 0, 85, 85, 94, 94, 0, 85, - 94, 94, 94, 94, 94, 0, 94, 94, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 92, 92, 92, - 92, 86, 0, 0, 86, 0, 92, 0, 0, 85, - 92, 92, 92, 92, 0, 0, 0, 0, 86, 86, - 92, 92, 0, 86, 92, 92, 92, 92, 92, 0, - 92, 92, 0, 0, 0, 80, 80, 80, 80, 0, - 0, 295, 0, 0, 80, 0, 159, 0, 80, 80, - 80, 80, 0, 86, 0, 0, 0, 0, 80, 80, - 0, 0, 80, 80, 80, 80, 80, 0, 80, 80, - 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, - 81, 81, 81, 81, 0, 0, 159, 0, 0, 81, - 0, 0, 0, 81, 81, 81, 81, 0, 154, 155, - 156, 157, 0, 81, 81, 0, 152, 81, 81, 81, - 81, 81, 0, 81, 170, 162, 163, 0, 164, 165, - 0, 0, 166, 0, 0, 167, 168, 169, 82, 82, - 82, 82, 0, 0, 0, 0, 0, 82, 0, 0, - 0, 82, 82, 0, 82, 170, 152, 0, 0, 0, - 0, 82, 82, 0, 0, 82, 82, 82, 82, 82, - 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 84, 84, 84, 0, 152, 0, 0, - 0, 84, 0, 0, 0, 0, 84, 0, 85, 85, - 85, 85, 0, 0, 0, 84, 84, 85, 0, 84, - 84, 84, 84, 84, 0, 0, 0, 0, 0, 0, - 0, 85, 85, 0, 0, 85, 85, 85, 85, 85, + 97, 0, 0, 0, 0, 0, 97, 97, 97, 97, + 80, 0, 0, 80, 92, 0, 97, 97, 0, 97, + 97, 97, 97, 97, 97, 97, 0, 80, 80, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 81, + 0, 0, 0, 308, 154, 155, 156, 157, 0, 0, + 0, 0, 80, 81, 81, 0, 0, 0, 81, 161, + 162, 163, 164, 165, 0, 0, 166, 0, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, + 326, 82, 0, 0, 82, 0, 0, 0, 81, 0, + 0, 0, 93, 93, 93, 93, 0, 0, 82, 82, + 0, 93, 0, 82, 0, 0, 0, 93, 93, 93, + 93, 0, 0, 0, 0, 0, 0, 93, 93, 0, + 93, 93, 93, 93, 93, 93, 93, 0, 0, 0, + 0, 0, 0, 82, 0, 143, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 94, 94, 94, 94, 0, + 0, 0, 143, 143, 94, 0, 0, 143, 0, 0, + 94, 94, 94, 94, 0, 0, 0, 0, 0, 0, + 94, 94, 0, 94, 94, 94, 94, 94, 94, 94, + 0, 0, 0, 92, 92, 92, 92, 143, 0, 0, + 0, 0, 92, 0, 0, 0, 0, 0, 92, 92, + 92, 92, 142, 0, 0, 142, 0, 0, 92, 92, + 0, 92, 92, 92, 92, 92, 92, 92, 0, 142, + 142, 0, 0, 0, 142, 0, 0, 0, 0, 0, + 0, 80, 80, 80, 80, 79, 0, 0, 79, 0, + 80, 0, 0, 0, 0, 0, 80, 80, 80, 80, + 0, 0, 79, 79, 142, 131, 80, 80, 131, 80, + 80, 80, 80, 80, 80, 80, 0, 81, 81, 81, + 81, 0, 131, 131, 0, 0, 81, 131, 0, 0, + 0, 0, 81, 81, 81, 81, 0, 79, 0, 0, + 0, 0, 81, 81, 0, 81, 81, 81, 81, 81, + 81, 102, 0, 0, 102, 0, 0, 131, 0, 0, + 0, 0, 82, 82, 82, 82, 0, 0, 102, 102, + 0, 82, 0, 102, 0, 0, 0, 82, 82, 0, + 82, 170, 0, 0, 0, 0, 0, 82, 82, 0, + 82, 82, 82, 82, 82, 82, 0, 67, 0, 0, + 67, 0, 0, 102, 87, 0, 0, 87, 0, 0, + 0, 0, 0, 152, 67, 67, 143, 143, 143, 143, + 0, 87, 87, 0, 0, 143, 87, 0, 0, 0, + 0, 143, 143, 0, 0, 0, 89, 0, 0, 89, + 0, 143, 143, 0, 143, 143, 143, 143, 143, 67, + 0, 0, 0, 89, 89, 0, 87, 0, 89, 0, + 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 86, 86, 86, 0, 0, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 86, 0, 0, 86, - 86, 86, 86, 86, 153, 0, 0, 0, 154, 155, - 156, 157, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 158, 160, 161, 162, 163, 0, 164, 165, - 0, 0, 166, 0, 0, 167, 168, 169, 0, 0, - 0, 0, 0, 0, 153, 0, 0, 0, 154, 155, - 156, 157, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 158, 160, 161, 162, 163, 0, 164, 165, - 0, 0, 166, 0, 0, 167, 168, 169, 0, 154, - 155, 156, 157, 0, 0, 0, 0, 0, 0, 67, - 0, 0, 0, 81, 0, 161, 162, 163, 0, 164, - 165, 0, 0, 166, 0, 0, 167, 168, 169, 97, - 99, 101, 103, 0, 0, 0, 0, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, + 0, 0, 0, 142, 142, 142, 142, 0, 89, 170, + 0, 0, 142, 0, 0, 159, 0, 0, 142, 142, + 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, + 0, 142, 142, 142, 142, 142, 79, 79, 79, 79, + 0, 152, 0, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, 131, 131, + 0, 79, 79, 0, 0, 131, 0, 0, 0, 0, + 0, 131, 131, 0, 0, 152, 0, 0, 0, 0, + 0, 131, 131, 0, 131, 131, 131, 131, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 154, 155, 156, + 157, 0, 102, 102, 102, 102, 0, 0, 0, 0, + 0, 102, 0, 162, 163, 164, 165, 102, 102, 166, + 0, 0, 167, 168, 169, 0, 0, 102, 102, 0, + 102, 102, 102, 102, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, + 67, 67, 0, 0, 0, 87, 87, 87, 87, 0, + 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 67, 67, 0, 0, 0, 0, 0, + 87, 87, 0, 87, 87, 87, 87, 89, 89, 89, + 89, 0, 0, 0, 0, 0, 89, 0, 0, 153, + 0, 0, 0, 0, 0, 154, 155, 156, 157, 0, + 0, 0, 89, 89, 0, 89, 89, 89, 158, 160, + 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, + 167, 168, 169, 153, 0, 0, 0, 0, 0, 154, + 155, 156, 157, 0, 0, 0, 0, 67, 0, 0, + 0, 81, 0, 160, 161, 162, 163, 164, 165, 0, + 0, 166, 0, 0, 167, 168, 169, 97, 99, 101, + 103, 0, 0, 0, 0, 0, 111, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 190, 0, 192, 0, 194, 0, 196, + 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 0, 190, 0, 192, 0, 194, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, - 0, 0, 0, 0, 260, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 0, 260, }; short yycheck[] = { 13, - 36, 85, 59, 196, 40, 123, 59, 36, 93, 91, - 59, 41, 93, 91, 44, 40, 185, 41, 36, 41, - 44, 90, 59, 91, 198, 59, 41, 93, 58, 59, - 44, 257, 40, 40, 58, 59, 41, 257, 41, 44, - 91, 123, 40, 57, 59, 123, 59, 61, 41, 118, - 41, 41, 41, 58, 59, 123, 44, 41, 63, 41, - 257, 40, 278, 93, 0, 6, 91, 8, 59, 93, - 59, 40, 123, 91, 41, 125, 96, 40, 98, 59, - 100, 59, 102, 40, 104, 105, 123, 40, 93, 123, - 31, 32, 59, 41, 123, 109, 110, 33, 123, 41, - 36, 37, 38, 41, 40, 123, 42, 43, 282, 45, - 40, 59, 123, 182, 59, 123, 123, 59, 187, 276, - 277, 59, 59, 59, 44, 123, 123, 59, 64, 298, - 295, 296, 146, 147, 148, 149, 150, 151, 152, 257, - 314, 257, 316, 336, 123, 260, 339, 266, 267, 268, - 41, 270, 271, 44, 40, 91, 170, 171, 172, 173, - 174, 175, 176, 0, 40, 358, 41, 58, 59, 40, - 125, 185, 63, 91, 93, 189, 93, 191, 36, 199, - 41, 195, 125, 93, 198, 91, 296, 123, 40, 125, - 126, 205, 206, 207, 59, 41, 33, 93, 212, 36, - 37, 38, 93, 40, 257, 42, 43, 41, 45, 41, - 295, 296, 41, 40, 295, 296, 266, 267, 268, 0, - 270, 271, 59, 123, 238, 41, 240, 64, 257, 295, - 296, 309, 314, 262, 312, 313, 314, 40, 295, 296, - 258, 41, 272, 273, 274, 275, 295, 296, 272, 273, - 274, 275, 33, 337, 91, 36, 37, 38, 294, 40, - 59, 42, 43, 125, 45, 295, 296, 272, 273, 274, - 275, 295, 296, 295, 296, 299, 281, 125, 59, 293, - 285, 286, 125, 64, 298, 125, 123, 41, 125, 126, - 295, 296, 295, 296, 299, 300, 301, 302, 303, 125, - 305, 41, 295, 296, 318, 295, 296, 295, 296, 41, - 91, 295, 296, 295, 296, 295, 296, 295, 296, 41, - 256, 257, 258, 259, 260, 261, 59, 263, 264, 265, + 36, 198, 196, 36, 40, 93, 85, 41, 91, 59, + 44, 36, 93, 41, 123, 41, 44, 185, 41, 41, + 40, 91, 40, 257, 93, 59, 257, 40, 40, 40, + 58, 59, 46, 59, 41, 63, 59, 44, 93, 257, + 123, 276, 277, 57, 41, 26, 41, 61, 91, 41, + 59, 58, 59, 123, 44, 41, 63, 41, 91, 93, + 59, 59, 43, 44, 0, 93, 96, 40, 98, 50, + 100, 91, 102, 90, 104, 105, 41, 59, 40, 59, + 123, 62, 63, 64, 65, 282, 93, 266, 267, 268, + 123, 270, 271, 40, 59, 109, 110, 33, 123, 40, + 36, 37, 38, 123, 40, 123, 42, 43, 125, 45, + 123, 123, 123, 59, 123, 59, 278, 314, 123, 316, + 297, 298, 41, 59, 123, 44, 59, 40, 64, 110, + 298, 41, 146, 147, 148, 149, 150, 151, 152, 59, + 44, 6, 336, 8, 63, 339, 123, 59, 257, 59, + 41, 257, 260, 40, 40, 91, 170, 171, 172, 173, + 174, 175, 176, 0, 358, 182, 31, 32, 59, 199, + 187, 185, 91, 41, 41, 189, 40, 191, 41, 36, + 125, 195, 91, 91, 198, 125, 91, 123, 91, 125, + 126, 205, 59, 207, 208, 41, 33, 93, 212, 36, + 37, 38, 298, 40, 123, 42, 43, 257, 45, 297, + 298, 93, 40, 59, 123, 59, 297, 298, 41, 0, + 123, 41, 59, 41, 238, 258, 240, 64, 297, 298, + 41, 314, 257, 41, 123, 93, 44, 262, 272, 273, + 274, 275, 297, 298, 272, 273, 274, 275, 40, 40, + 58, 59, 33, 281, 91, 36, 37, 38, 337, 40, + 296, 42, 43, 297, 45, 272, 273, 274, 275, 297, + 298, 41, 300, 301, 281, 297, 298, 41, 59, 293, + 287, 288, 59, 64, 298, 93, 123, 125, 125, 126, + 297, 298, 125, 300, 301, 302, 303, 304, 305, 125, + 297, 298, 297, 298, 318, 297, 298, 297, 298, 125, + 91, 297, 298, 297, 298, 297, 298, 297, 298, 41, + 256, 257, 258, 259, 260, 261, 125, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 41, 355, 123, 279, 280, 126, 282, 283, 284, 41, - 295, 296, 123, 289, 290, 291, 292, 293, 294, 41, - 59, 297, 298, 295, 296, 41, 41, 59, 304, 44, - 59, 41, 308, 41, 310, 311, 295, 296, 295, 296, - 59, 272, 273, 274, 275, 295, 296, 41, 63, 13, - 281, 147, 318, 355, 285, 286, 287, 288, 195, 295, - 296, 93, 125, -1, 295, 296, -1, 95, 299, 300, - 301, 302, 303, -1, 305, 306, 91, -1, 309, 256, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, - 41, -1, 279, 280, -1, 282, 283, 284, 123, 91, - -1, -1, 289, 290, 291, 292, 293, 294, -1, -1, - 297, 298, 63, 272, 273, 274, 275, 304, -1, -1, + 41, 355, 123, 279, 280, 126, 282, 283, 284, 285, + 286, 297, 298, 297, 298, 291, 292, 293, 294, 295, + 296, 41, 281, 299, 297, 298, 41, 59, 287, 288, + 289, 290, 308, 41, 310, 311, 41, 297, 298, 123, + 289, 300, 301, 302, 303, 304, 305, 306, 41, 59, + 309, 59, 41, 312, 313, 314, 59, 306, 41, 41, + 309, 297, 298, 312, 313, 314, 309, 59, 41, 312, + 313, 314, 13, 147, 95, 297, 298, 355, 91, 256, + 257, 258, 259, 260, 261, 93, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 297, + 298, 318, 279, 280, 195, 282, 283, 284, 285, 286, + 123, -1, -1, -1, 291, 292, 293, 294, 295, 296, + -1, -1, 299, 91, 272, 273, 274, 275, -1, -1, -1, 308, -1, 310, 311, 256, 257, 258, 259, 260, - 261, 123, 263, 264, 265, -1, 295, 296, 269, -1, - 91, 272, 273, 274, 275, -1, -1, -1, 279, 280, - -1, 282, 283, 284, -1, -1, -1, -1, 289, 290, - 291, 292, 293, 294, -1, -1, 297, 298, -1, -1, - -1, -1, 123, 304, 190, 91, 192, 308, 33, 310, + 261, 125, 263, 264, 265, -1, -1, -1, 269, 297, + 298, 272, 273, 274, 275, 123, -1, -1, 279, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, 91, + 291, 292, 293, 294, 295, 296, -1, -1, 299, -1, + -1, -1, 125, -1, 91, -1, -1, 308, 33, 310, 311, 36, 37, 38, -1, 40, 41, 42, 43, 44, - 45, -1, -1, 266, 267, 268, -1, 270, 271, -1, - -1, -1, -1, 58, 59, -1, -1, 123, 63, 64, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, 91, -1, 93, 33, + 45, 123, -1, 25, 26, 190, -1, 192, 272, 273, + 274, 275, -1, 58, 59, 37, 123, -1, 63, 64, + -1, 43, 44, 45, -1, -1, -1, -1, 50, -1, + -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, + 62, 63, 64, 65, -1, -1, 91, -1, 93, 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, 43, - 44, 45, -1, 295, 296, -1, 281, -1, -1, -1, - 285, 286, 287, 288, 58, 59, -1, -1, 123, 63, - 64, 126, -1, -1, 299, 300, 301, 302, 303, -1, - 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, - -1, -1, -1, 285, 286, 287, 288, -1, 33, 93, - -1, 36, 37, 38, -1, 40, -1, 42, 43, -1, - 45, 303, -1, 305, 306, -1, -1, 309, 334, 335, - 312, 313, 314, -1, 59, 341, -1, -1, -1, 64, - 281, -1, 126, -1, 285, 286, 287, 288, -1, -1, - 356, -1, -1, 359, -1, -1, -1, -1, 299, 300, - 301, 302, 303, -1, 305, 306, 91, -1, 309, -1, - -1, 312, 313, 314, 41, -1, -1, 44, -1, 285, - 286, 287, 288, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, -1, -1, 63, -1, 123, 305, - 306, 126, -1, 309, -1, -1, 312, 313, 314, -1, - -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, - 265, -1, -1, -1, 269, -1, 93, 272, 273, 274, + 44, 45, -1, -1, 272, 273, 274, 275, -1, -1, + -1, -1, -1, -1, 58, 59, 289, 290, 123, 63, + 64, 126, 266, 267, 268, -1, 270, 271, 110, 297, + 298, -1, 305, 306, -1, -1, 309, -1, -1, 312, + 313, 314, -1, -1, -1, -1, -1, -1, 33, 93, + -1, 36, 37, 38, -1, 40, -1, 42, 43, 287, + 45, 289, 290, 266, 267, 268, -1, 270, 271, -1, + -1, -1, -1, -1, 59, -1, -1, 305, 306, 64, + -1, 309, 126, -1, 312, 313, 314, 169, -1, 334, + 335, -1, -1, -1, -1, -1, 341, -1, -1, 41, + -1, -1, 44, -1, -1, -1, 91, 289, 290, -1, + -1, 356, -1, -1, 359, 197, 58, 59, -1, -1, + -1, 63, -1, -1, 306, -1, -1, 309, -1, -1, + 312, 313, 314, -1, -1, -1, -1, -1, 123, 306, + -1, 126, 309, -1, -1, 312, 313, 314, -1, -1, + -1, 93, 257, 258, 259, 260, 261, -1, 263, 264, + 265, -1, -1, -1, 269, -1, -1, 272, 273, 274, 275, -1, -1, -1, -1, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, @@ -718,362 +709,352 @@ short yycheck[] = { 13, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, -1, 308, 309, 310, 311, 312, 313, 314, 256, 257, 258, 259, 260, 261, -1, 263, 264, - 265, -1, -1, 41, 269, -1, 44, 272, 273, 274, + 265, -1, -1, -1, 269, -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, -1, 282, 283, 284, - 58, 59, -1, -1, 289, 290, 291, 292, 293, 294, - -1, -1, 297, 298, -1, -1, -1, -1, -1, 304, - -1, -1, -1, 308, 33, 310, 311, 36, 37, 38, - -1, 40, -1, 42, 43, 93, 45, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 59, -1, -1, -1, 281, 64, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, -1, -1, 295, 296, - -1, -1, 299, 300, 301, 302, 303, -1, 305, 306, - 33, -1, 91, 36, 37, 38, -1, 40, -1, 42, - 43, 26, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 49, 50, -1, -1, 42, -1, -1, - -1, 64, -1, 48, 123, 50, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 62, 63, 64, - 65, 91, -1, -1, -1, -1, 33, -1, 91, 36, - 37, 38, -1, 40, 90, 42, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, -1, -1, -1, 64, -1, -1, - 123, -1, 118, 126, -1, 110, 309, 310, 311, 125, - -1, -1, 315, -1, 317, -1, -1, 41, -1, -1, - 44, -1, -1, -1, 91, -1, -1, -1, -1, 33, - -1, -1, 36, 37, 38, 59, 40, -1, 42, 43, - 343, 45, -1, -1, 272, 273, 274, 275, 351, -1, - 353, 91, -1, -1, -1, 59, 123, -1, -1, 126, - 64, 364, -1, -1, -1, -1, 182, 295, 296, 93, - -1, 187, -1, -1, -1, -1, -1, 256, 257, 258, - 259, 260, 261, 123, 263, 264, 265, 91, -1, -1, - 269, -1, -1, 272, 273, 274, 275, -1, -1, 41, - 279, 280, 44, 282, 283, 284, -1, -1, -1, -1, - 289, 290, 291, 292, 293, 294, 58, 59, 297, 298, - -1, 63, 126, -1, -1, 304, -1, -1, -1, 308, - -1, 310, 311, -1, 257, 258, 259, 260, 261, 262, - 263, 264, 265, -1, -1, -1, 269, 41, -1, -1, - 44, 93, -1, -1, -1, 41, -1, 280, 44, 282, - 283, 284, -1, -1, 58, 59, 289, 290, 291, 292, - 293, 294, 58, 59, 297, 298, 306, 63, -1, 309, - -1, 304, 312, 313, 314, 308, -1, 310, 311, -1, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 93, - -1, -1, 269, -1, -1, -1, -1, 93, -1, -1, - 91, 41, -1, 280, 44, 282, 283, 284, -1, -1, - -1, -1, 289, 290, 291, 292, 293, 294, 58, 59, - 297, 298, -1, 63, -1, -1, -1, 304, -1, -1, - -1, 308, 123, 310, 311, -1, -1, 287, 272, 273, - 274, 275, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, -1, 93, 41, 269, 306, 44, -1, 309, - -1, 295, 312, 313, 314, -1, 280, -1, 282, 283, - 284, 58, 59, -1, -1, 289, 290, 291, 292, 293, - 294, -1, -1, 297, 298, -1, -1, -1, -1, -1, - 304, -1, -1, -1, 308, 33, 310, 311, 36, 37, - 38, -1, 40, -1, 42, 43, 93, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, 64, -1, -1, 281, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 295, 296, -1, -1, 299, 300, 301, - 302, 33, -1, 91, 36, 37, 38, -1, 40, 41, - 42, 43, -1, 45, -1, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, -1, 272, 273, 274, 275, - -1, -1, 64, -1, -1, 123, -1, -1, 126, -1, - -1, 295, 296, -1, -1, -1, 287, 288, -1, 295, - 296, -1, -1, 299, -1, -1, -1, 33, -1, 91, - 36, 37, 38, -1, 40, 306, 42, 43, 309, 45, - -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, 64, -1, - -1, 281, -1, -1, 126, 285, 286, -1, -1, -1, - -1, -1, -1, -1, -1, 295, 296, -1, -1, 299, - 300, 301, 302, 303, -1, 91, -1, 93, -1, -1, - 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, - 43, -1, 45, -1, -1, 272, 273, 274, 275, -1, + 285, 286, -1, -1, -1, 91, 291, 292, 293, 294, + 295, 296, 33, -1, 299, 36, 37, 38, -1, 40, + -1, 42, 43, 308, 45, 310, 311, 43, -1, -1, + 272, 273, 274, 275, -1, 51, -1, 123, 59, 281, + -1, -1, -1, 64, -1, 287, 288, 289, 290, -1, + -1, -1, -1, -1, -1, 297, 298, -1, 300, 301, + 302, 303, 304, 305, 306, -1, -1, 309, 33, -1, + 91, 36, 37, 38, 90, 40, -1, 42, 43, -1, + 45, -1, -1, -1, -1, -1, -1, -1, 309, 310, + 311, -1, -1, -1, 315, -1, 317, -1, -1, 64, + -1, 117, 123, -1, -1, 126, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, 64, -1, -1, -1, -1, -1, -1, 295, 296, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 91, -1, - -1, 269, 41, -1, -1, 44, -1, -1, -1, -1, - 41, -1, 280, 44, 282, 283, 284, -1, -1, 58, - 59, 289, 290, 291, 292, 293, 294, 58, 59, 297, - 298, -1, 63, 126, -1, -1, 304, -1, -1, -1, - 308, -1, 310, 311, -1, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 93, -1, -1, 269, -1, -1, - -1, -1, 93, -1, -1, -1, 41, -1, 280, 44, - 282, 283, 284, -1, -1, -1, -1, 289, 290, 291, - 292, 293, 294, 58, 59, 297, 298, -1, 63, -1, - -1, -1, 304, -1, -1, -1, 308, -1, 310, 311, - -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, - -1, -1, -1, 269, -1, -1, -1, -1, 93, -1, - -1, -1, 41, -1, 280, 44, 282, 283, 284, -1, - -1, -1, -1, 289, 290, 291, 292, 293, 294, 58, - 59, 297, 298, -1, 63, -1, -1, -1, 304, -1, - -1, -1, 308, -1, 310, 311, -1, -1, -1, -1, - -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, - 263, 264, 265, -1, 93, -1, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, 280, -1, 282, - 283, 284, -1, -1, -1, -1, 289, 290, 291, 292, - 293, 294, -1, -1, 297, 298, -1, -1, -1, -1, - -1, 304, -1, -1, 91, 308, 33, 310, 311, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 123, 64, -1, -1, - 281, -1, -1, -1, -1, -1, 295, 296, -1, -1, - -1, -1, -1, -1, 295, 296, -1, -1, 299, 300, - 301, -1, 33, -1, 91, 36, 37, 38, -1, 40, - -1, 42, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, 64, -1, -1, 281, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 295, 296, -1, -1, 299, 300, -1, -1, 33, -1, - 91, 36, 37, 38, -1, 40, 41, 42, 43, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, 64, - -1, -1, 281, -1, -1, 126, 285, 286, -1, -1, - -1, -1, -1, -1, -1, -1, 295, 296, -1, -1, - 299, 300, 301, 302, 303, -1, 91, -1, -1, -1, - -1, 33, -1, -1, 36, 37, 38, -1, 40, 41, - 42, 43, -1, 45, 281, -1, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 126, 64, 300, 301, 302, 303, -1, 305, 306, + -1, -1, 343, -1, 33, -1, 91, 36, 37, 38, + 351, 40, 353, 42, 43, -1, 45, -1, -1, -1, + -1, -1, -1, 364, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 64, -1, -1, 123, -1, + -1, 126, -1, -1, -1, -1, 182, -1, -1, -1, + -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 91, -1, -1, -1, -1, 33, -1, -1, + 36, 37, 38, -1, 40, -1, 42, 43, -1, 45, + -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, -1, 126, 64, 305, + 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, + -1, -1, -1, -1, -1, 256, 257, 258, 259, 260, + 261, -1, 263, 264, 265, 91, -1, -1, 269, -1, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, -1, 123, 299, -1, + 126, -1, 91, -1, -1, -1, 41, 308, -1, 310, + 311, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, -1, -1, -1, 269, -1, -1, -1, 63, -1, + -1, -1, -1, -1, 123, 280, -1, 282, 283, 284, + 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, + 295, 296, -1, -1, 299, -1, 91, -1, -1, -1, + -1, -1, -1, 308, -1, 310, 311, -1, 257, 258, + 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, + 269, 58, -1, -1, -1, -1, 63, -1, 123, -1, + -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, + -1, -1, 291, 292, 293, 294, 295, 296, -1, -1, + 299, -1, -1, -1, 91, -1, -1, -1, -1, 308, + -1, 310, 311, -1, -1, -1, -1, 41, -1, -1, + 44, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, -1, -1, 269, 58, 59, 123, -1, -1, 63, + -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, + 296, 33, -1, 299, 36, 37, 38, -1, 40, 93, + 42, 43, 308, 45, 310, 311, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, 287, 288, + 289, 290, 64, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 301, 302, 303, 304, 305, 306, -1, -1, + 309, -1, -1, 312, 313, 314, -1, 33, -1, 91, + 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, + -1, -1, -1, -1, -1, -1, 281, -1, -1, -1, + -1, -1, 287, 288, 289, 290, -1, -1, 64, -1, + -1, -1, -1, -1, 126, 300, 301, 302, 303, 304, + 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, + -1, -1, -1, 33, -1, 91, 36, 37, 38, -1, + 40, -1, 42, 43, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, 281, -1, -1, -1, -1, -1, + 287, 288, 289, 290, 64, -1, -1, -1, -1, -1, + 126, -1, -1, 300, 301, 302, 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, + -1, 91, 33, 93, -1, 36, 37, 38, -1, 40, + 41, 42, 43, -1, 45, -1, -1, -1, 272, 273, + 274, 275, -1, -1, -1, -1, -1, 281, -1, -1, + -1, -1, -1, 64, 288, -1, 126, -1, -1, -1, + -1, -1, -1, 297, 298, -1, 300, 301, 302, 303, + 304, 41, -1, -1, 44, 257, 258, 259, 260, 261, + 91, 263, 264, 265, -1, -1, -1, 269, 58, 59, + -1, -1, -1, 63, -1, -1, -1, -1, 280, -1, + 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, + 292, 293, 294, 295, 296, 126, -1, 299, -1, -1, + -1, -1, -1, 93, -1, -1, 308, 41, 310, 311, + 44, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, -1, -1, 269, 58, 59, -1, -1, -1, 63, + -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, + 296, -1, -1, 299, -1, -1, -1, -1, -1, 93, + -1, -1, 308, -1, 310, 311, -1, 257, 258, 259, + 260, 261, -1, 263, 264, 265, -1, 33, -1, 269, + 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, + 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 295, 296, -1, 64, 299, + -1, -1, -1, -1, -1, -1, -1, -1, 308, -1, + 310, 311, -1, -1, -1, -1, 257, 258, 259, 260, + 261, -1, 263, 264, 265, 91, 33, -1, 269, 36, + 37, 38, -1, 40, -1, 42, 43, -1, 45, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, -1, 64, 299, -1, + 126, -1, -1, -1, -1, -1, -1, 308, -1, 310, + 311, -1, 272, 273, 274, 275, -1, -1, -1, -1, + -1, 281, 33, -1, 91, 36, 37, 38, -1, 40, + 41, 42, 43, -1, 45, -1, -1, 297, 298, -1, + 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, 64, -1, -1, -1, -1, -1, 126, + -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, -1, -1, -1, -1, 281, 33, -1, + 91, 36, 37, 38, -1, 40, 41, 42, 43, -1, + 45, -1, -1, 297, 298, -1, 300, 301, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, 64, + -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, 259, 260, 261, 91, 263, 264, 265, + -1, 33, -1, 269, 36, 37, 38, -1, 40, -1, + 42, 43, -1, 45, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, + 296, 126, 64, 299, -1, -1, -1, -1, -1, -1, + -1, -1, 308, -1, 310, 311, -1, -1, -1, 256, 257, 258, 259, 260, 261, -1, 263, 264, 265, 91, - -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 41, -1, - -1, 44, 289, 290, 291, 292, 293, 294, -1, -1, - 297, 298, -1, -1, 126, 58, 59, 304, -1, -1, - 63, 308, -1, 310, 311, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - 93, 282, 283, 284, -1, -1, -1, -1, 289, 290, - 291, 292, 293, 294, -1, -1, 297, 298, -1, -1, - -1, -1, -1, 304, -1, -1, -1, 308, 41, 310, + -1, -1, 269, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, + 58, 59, -1, -1, 291, 292, 293, 294, 295, 296, + -1, -1, 299, -1, 126, -1, -1, -1, -1, 41, + -1, 308, 44, 310, 311, -1, 257, 258, 259, 260, + 261, -1, 263, 264, 265, 93, 58, 59, 269, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, -1, -1, 299, 91, + -1, 93, -1, -1, -1, -1, -1, 308, 41, 310, 311, 44, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, 58, 59, -1, -1, -1, - 63, -1, -1, -1, -1, 280, -1, 282, 283, 284, - -1, -1, -1, -1, 289, 290, 291, 292, 293, 294, - -1, -1, 297, 298, -1, -1, -1, -1, 91, 304, - 93, -1, -1, 308, -1, 310, 311, 41, -1, -1, - 44, -1, -1, -1, -1, 257, 258, 259, 260, 261, - -1, 263, 264, 265, 58, 59, -1, 269, -1, 63, - 123, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, -1, -1, -1, 289, 290, 291, - 292, 293, 294, -1, -1, 297, 298, 91, -1, 93, - -1, -1, 304, -1, -1, -1, 308, 33, 310, 311, - 36, 37, 38, -1, 40, -1, 42, 43, -1, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, - -1, -1, -1, -1, -1, -1, -1, -1, 64, 272, - 273, 274, 275, -1, -1, -1, -1, -1, 281, -1, - -1, -1, 285, 286, -1, 41, -1, -1, 44, -1, - -1, -1, 295, 296, -1, 91, 299, 300, 301, 302, - 303, -1, 58, 59, -1, -1, -1, 63, 25, 26, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, -1, -1, -1, -1, 42, 43, -1, -1, -1, - 126, 48, -1, 50, -1, 91, -1, 93, -1, -1, - -1, -1, -1, -1, -1, 62, 63, 64, 65, 272, - 273, 274, 275, 41, -1, 91, 44, -1, 281, -1, - -1, -1, 285, 286, 287, 288, -1, 123, -1, -1, - 58, 59, 295, 296, -1, 63, 299, 300, 301, 302, - 303, -1, 305, 306, -1, -1, 309, 123, -1, 312, - 313, 314, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, -1, 93, -1, -1, 272, 273, - 274, 275, -1, -1, -1, -1, -1, 281, -1, -1, - -1, 285, 286, 287, 288, -1, -1, -1, -1, -1, - -1, 295, 296, -1, 91, 299, 300, 301, 302, 303, - -1, 305, 306, -1, -1, 309, -1, -1, 312, 313, - 314, -1, 169, 41, -1, -1, 44, -1, -1, -1, - -1, 257, 258, 259, 260, 261, 123, 263, 264, 265, - 58, 59, -1, 269, -1, 63, -1, -1, -1, -1, - 197, -1, -1, -1, 280, -1, 282, 283, 284, -1, - -1, -1, -1, 289, 290, 291, 292, 293, 294, -1, - -1, 297, 298, -1, -1, 93, -1, -1, 304, -1, - -1, -1, 308, -1, 310, 311, 272, 273, 274, 275, - 41, -1, -1, 44, -1, 281, -1, -1, -1, 285, - 286, 287, 288, -1, -1, 123, -1, 58, 59, 295, - 296, -1, 63, 299, 300, 301, 302, 303, -1, 305, - 306, 287, 288, 309, -1, -1, 312, 313, 314, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, - 306, -1, 93, 309, -1, -1, 312, 313, 314, -1, - -1, -1, -1, -1, 272, 273, 274, 275, 41, -1, - -1, -1, -1, 281, -1, -1, -1, 285, 286, 287, - 288, -1, 123, -1, -1, 58, 59, 295, 296, -1, - 63, 299, 300, 301, 302, 303, -1, 305, 306, -1, - -1, 309, -1, -1, 312, 313, 314, -1, 285, 286, - 287, 288, -1, -1, -1, -1, -1, -1, 91, -1, - 93, -1, -1, 300, 301, 302, 303, -1, 305, 306, - -1, 41, 309, -1, -1, 312, 313, 314, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - 123, -1, -1, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, -1, -1, 281, -1, -1, -1, 285, 286, 287, - 288, 91, -1, 93, -1, -1, -1, 295, 296, -1, - -1, 299, 300, 301, 302, 303, -1, 305, 306, 41, - -1, 309, 44, -1, 312, 313, 314, -1, -1, -1, - -1, -1, -1, 123, -1, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, -1, -1, -1, -1, - 281, -1, -1, -1, 285, 286, 287, 288, -1, -1, - -1, 93, -1, -1, 295, 296, -1, -1, 299, 300, - 301, 302, 303, -1, 305, 306, 41, -1, 309, 44, - -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, - -1, 123, -1, 58, 59, -1, -1, -1, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, - 273, 274, 275, -1, -1, -1, -1, -1, 281, -1, - -1, -1, 285, 286, 287, 288, -1, -1, 93, -1, - -1, -1, 295, 296, -1, -1, 299, 300, 301, 302, - 303, -1, 305, 306, -1, -1, 309, -1, -1, 312, - 313, 314, -1, -1, -1, -1, -1, -1, 123, 91, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, 41, -1, -1, -1, - -1, 281, -1, -1, -1, 285, 286, 287, 288, -1, - -1, 123, -1, 58, 59, 295, 296, -1, 63, 299, - 300, 301, 302, 303, -1, 305, 306, -1, -1, 309, - -1, -1, 312, 313, 314, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, -1, 93, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, 41, -1, -1, 44, -1, 281, - -1, -1, -1, 285, 286, 287, 288, -1, 123, -1, - -1, 58, 59, 295, 296, -1, 63, 299, 300, 301, - 302, 303, -1, 305, 306, -1, -1, 309, -1, -1, + 63, 123, -1, -1, -1, 280, -1, 282, 283, 284, + 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, + 295, 296, -1, -1, 299, -1, -1, -1, 91, -1, + 93, -1, -1, 308, -1, 310, 311, -1, -1, -1, + -1, 41, -1, -1, 44, 257, 258, 259, 260, 261, + -1, 263, 264, 265, -1, -1, -1, 269, 58, 59, + 123, -1, -1, 63, -1, -1, -1, -1, 280, -1, + 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, + 292, 293, 294, 295, 296, -1, -1, 299, -1, 41, + -1, 91, 44, 93, -1, -1, 308, -1, 310, 311, + -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, + -1, 63, -1, -1, 272, 273, 274, 275, -1, -1, + -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, + 298, 93, 300, -1, -1, -1, -1, -1, -1, -1, + 272, 273, 274, 275, -1, 41, -1, -1, 44, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, 123, 58, 59, -1, 297, 298, 63, 300, 301, + 302, 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, -1, 93, -1, 272, + 273, 274, 275, -1, 41, -1, -1, 44, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + -1, 58, 59, -1, 297, 298, 63, 300, 301, 302, + 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, + 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, 41, -1, -1, 44, -1, 281, -1, -1, -1, - 285, 286, 287, 288, -1, -1, 123, -1, 58, 59, - 295, 296, -1, 63, 299, 300, 301, 302, 303, -1, - 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, - -1, -1, -1, 285, 41, 287, 288, 44, -1, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 305, 306, -1, 63, 309, -1, -1, + -1, -1, 272, 273, 274, 275, -1, -1, -1, -1, + -1, 281, -1, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, 123, 297, 298, -1, + 300, 301, 302, 303, 304, 305, 306, -1, -1, 309, + -1, -1, 312, 313, 314, -1, -1, -1, -1, -1, + 272, 273, 274, 275, -1, 41, -1, -1, -1, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, -1, 58, 59, -1, 297, 298, 63, 300, 301, + 302, 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, -1, 93, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, -1, -1, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, -1, -1, 123, -1, -1, + 91, 297, 298, -1, 300, 301, 302, 303, 304, 305, + 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 272, 273, 274, - 275, 41, -1, -1, 44, -1, 281, -1, -1, -1, - 285, 286, 287, 288, -1, -1, -1, -1, 58, 59, - 295, 296, -1, 63, 299, 300, 301, 302, 303, -1, - 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, 41, - -1, -1, 44, -1, 281, -1, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, 58, 59, 295, 296, - -1, 63, 299, 300, 301, 302, 303, -1, 305, 306, + -1, -1, 123, -1, -1, 272, 273, 274, 275, -1, + 41, -1, -1, -1, 281, -1, -1, -1, -1, -1, + 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, + 297, 298, 63, 300, 301, 302, 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, + -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, + 91, -1, 93, 41, -1, -1, 44, -1, -1, -1, + 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, + 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, + -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 272, 273, 274, 275, + -1, 41, -1, -1, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, 123, -1, -1, 58, 59, + -1, 297, 298, 63, 300, 301, 302, 303, 304, 305, + 306, -1, -1, 309, -1, -1, 312, 313, 314, -1, + -1, -1, -1, -1, 41, -1, 287, 288, 289, 290, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, + -1, 58, 59, 304, 305, 306, 63, -1, 309, -1, + -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 123, -1, -1, -1, -1, 41, -1, + -1, 44, -1, -1, 91, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 272, 273, 274, 275, -1, 123, -1, -1, -1, + 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, + 93, -1, -1, -1, -1, -1, 297, 298, -1, 300, + 301, 302, 303, 304, 305, 306, -1, -1, 309, -1, + -1, 312, 313, 314, 272, 273, 274, 275, -1, 41, + 123, -1, 44, 281, 272, 273, 274, 275, -1, 287, + 288, 289, 290, -1, -1, -1, 58, 59, -1, 297, + 298, 63, 300, 301, 302, 303, 304, 305, 306, 297, + 298, 309, 300, -1, 312, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, -1, - -1, 281, -1, -1, -1, 285, 286, 287, 288, -1, - -1, -1, -1, -1, -1, 295, 296, -1, -1, 299, - 300, 301, 302, 303, -1, 305, 306, -1, -1, 309, - -1, -1, 312, 313, 314, 272, 273, 274, 275, 41, - -1, -1, 44, -1, 281, -1, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, 58, 59, 295, 296, - -1, 63, 299, 300, 301, 302, 303, -1, 305, 306, - -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 272, 273, 274, 275, -1, -1, -1, -1, - -1, 281, -1, -1, -1, 285, 286, 287, 288, -1, - -1, -1, -1, -1, -1, 295, 296, -1, -1, 299, - 300, 301, 302, 303, -1, 305, 306, 41, -1, 309, - 44, -1, 312, 313, 314, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, -1, -1, 281, - -1, -1, -1, 285, 286, 287, 288, -1, -1, 93, - -1, -1, -1, 295, 296, -1, -1, 299, 300, 301, - 302, 303, -1, 305, 306, 30, -1, 309, -1, -1, - 312, 313, 314, 38, -1, -1, -1, -1, 43, -1, - 41, -1, -1, 44, -1, -1, 51, 52, 53, 54, - 55, 56, -1, -1, 59, 60, -1, 58, 59, -1, - -1, 66, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 41, -1, - -1, 44, 93, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, 58, 59, -1, -1, 281, - 63, -1, -1, 285, 286, 287, 288, -1, -1, -1, - -1, -1, -1, 295, 296, -1, -1, 299, 300, 301, - 302, 303, -1, 305, 306, -1, -1, 309, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, 153, 154, + -1, -1, 272, 273, 274, 275, -1, 41, -1, -1, + 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, 58, 59, -1, 297, 298, 63, + 300, 301, 302, 303, 304, 305, 306, -1, -1, 309, + -1, -1, 312, 313, 314, 272, 273, 274, 275, -1, + 41, -1, -1, 44, 281, -1, -1, -1, -1, 93, + 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, + 297, 298, 63, 300, 301, 302, 303, 304, 305, 306, + -1, -1, 309, -1, -1, 312, 313, 314, -1, 272, + 273, 274, 275, -1, 41, -1, -1, 44, 281, -1, + -1, -1, 93, -1, 287, 288, 289, 290, -1, -1, + -1, 58, 59, -1, 297, 298, 63, 300, 301, 302, + 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, + 313, 314, -1, -1, -1, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, 58, 59, -1, 41, -1, 63, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 272, 273, 274, 275, 58, 59, -1, -1, -1, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, 93, + -1, -1, -1, -1, -1, 297, 298, -1, 300, 301, + 302, 303, 304, 305, 306, 41, -1, 309, 44, 93, + 312, 313, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, 41, -1, -1, 44, 281, -1, -1, + -1, -1, -1, 287, 288, 289, 290, 93, -1, -1, + 58, 59, -1, 297, 298, 63, 300, 301, 302, 303, + 304, 305, 306, -1, -1, 309, -1, -1, 312, 313, + 314, 272, 273, 274, 275, -1, -1, -1, -1, -1, + 281, -1, -1, -1, -1, 93, 287, 288, 289, 290, + -1, -1, -1, -1, -1, -1, 297, 298, -1, 300, + 301, 302, 303, 304, 305, 306, -1, -1, 309, -1, + -1, 312, 313, 314, -1, 272, 273, 274, 275, -1, + 41, -1, -1, 44, 281, -1, -1, -1, -1, -1, + 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, + 297, 298, 63, 300, 301, 302, 303, 304, 305, 306, + -1, -1, 309, -1, -1, 312, 313, 314, 272, 273, + 274, 275, -1, -1, -1, -1, -1, 281, -1, -1, + -1, -1, 93, 287, 288, 289, 290, -1, 272, 273, + 274, 275, -1, 297, 298, 30, 300, 301, 302, 303, + 304, 305, 306, 38, -1, 309, -1, 42, -1, -1, + 45, -1, -1, 297, 298, -1, -1, 52, 53, 54, + 55, 56, -1, -1, 59, 60, -1, -1, 91, -1, + -1, 66, -1, -1, -1, -1, 272, 273, 274, 275, + -1, 41, -1, -1, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, -1, -1, 92, 58, 59, + 123, 297, 298, 63, 300, 301, 302, 303, 304, 305, + 306, -1, -1, -1, 272, 273, 274, 275, -1, -1, + -1, -1, -1, 281, -1, -1, -1, -1, -1, 287, + 288, 289, 290, 93, 41, -1, -1, 44, -1, 297, + 298, -1, 300, 301, 302, 303, 304, 305, 306, -1, + -1, 58, 59, -1, -1, -1, 63, -1, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, 178, -1, -1, -1, -1, -1, 58, - 59, -1, -1, -1, 63, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, -1, -1, 281, -1, -1, - -1, 285, 286, 287, 288, -1, 41, -1, -1, 44, - -1, 295, 296, -1, 93, 299, 300, 301, 302, 303, - -1, 305, 306, 58, 59, -1, -1, -1, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, 258, -1, -1, -1, -1, 93, -1, - -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, + -1, -1, -1, 178, -1, -1, 93, -1, -1, 58, + 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, -1, -1, - 281, -1, -1, -1, 285, 286, 287, 288, -1, 41, - 295, -1, 44, -1, 295, 296, 93, -1, 299, 300, - 301, 302, 303, -1, 305, 306, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, 272, - 273, 274, 275, -1, -1, -1, -1, -1, 281, -1, - -1, -1, 285, 286, 287, 288, -1, 41, -1, -1, - 44, 93, 295, 296, 91, -1, 299, 300, 301, 302, - 303, -1, 305, 306, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 123, -1, -1, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, 93, - -1, -1, -1, 272, 273, 274, 275, 41, 58, 59, - 44, -1, 281, 63, -1, -1, 285, 286, 287, 288, - -1, -1, -1, -1, 58, 59, 295, 296, -1, 63, - 299, 300, 301, 302, 303, -1, 305, 306, -1, -1, - -1, -1, -1, 93, -1, -1, -1, 272, 273, 274, - 275, 41, -1, -1, 44, -1, 281, -1, -1, 93, - 285, 286, 287, 288, -1, -1, -1, -1, 58, 59, - 295, 296, -1, 63, 299, 300, 301, 302, 303, -1, - 305, 306, -1, -1, -1, 272, 273, 274, 275, -1, - -1, 58, -1, -1, 281, -1, 63, -1, 285, 286, - 287, 288, -1, 93, -1, -1, -1, -1, 295, 296, - -1, -1, 299, 300, 301, 302, 303, -1, 305, 306, - -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, 63, -1, -1, 281, - -1, -1, -1, 285, 286, 287, 288, -1, 285, 286, - 287, 288, -1, 295, 296, -1, 123, 299, 300, 301, - 302, 303, -1, 305, 91, 302, 303, -1, 305, 306, - -1, -1, 309, -1, -1, 312, 313, 314, 272, 273, - 274, 275, -1, -1, -1, -1, -1, 281, -1, -1, - -1, 285, 286, -1, 288, 91, 123, -1, -1, -1, - -1, 295, 296, -1, -1, 299, 300, 301, 302, 303, - -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 123, -1, -1, - -1, 281, -1, -1, -1, -1, 286, -1, 272, 273, - 274, 275, -1, -1, -1, 295, 296, 281, -1, 299, - 300, 301, 302, 303, -1, -1, -1, -1, -1, -1, - -1, 295, 296, -1, -1, 299, 300, 301, 302, 303, + 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, + 41, -1, -1, 44, 93, -1, 297, 298, -1, 300, + 301, 302, 303, 304, 305, 306, -1, 58, 59, -1, + -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, + -1, -1, -1, 258, 287, 288, 289, 290, -1, -1, + -1, -1, 93, 58, 59, -1, -1, -1, 63, 302, + 303, 304, 305, 306, -1, -1, 309, -1, -1, 312, + 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, + 295, 41, -1, -1, 44, -1, -1, -1, 93, -1, + -1, -1, 272, 273, 274, 275, -1, -1, 58, 59, + -1, 281, -1, 63, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, -1, 297, 298, -1, + 300, 301, 302, 303, 304, 305, 306, -1, -1, -1, + -1, -1, -1, 93, -1, 41, -1, -1, 44, -1, + -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, + -1, -1, 58, 59, 281, -1, -1, 63, -1, -1, + 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, + 297, 298, -1, 300, 301, 302, 303, 304, 305, 306, + -1, -1, -1, 272, 273, 274, 275, 93, -1, -1, + -1, -1, 281, -1, -1, -1, -1, -1, 287, 288, + 289, 290, 41, -1, -1, 44, -1, -1, 297, 298, + -1, 300, 301, 302, 303, 304, 305, 306, -1, 58, + 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, + -1, 272, 273, 274, 275, 41, -1, -1, 44, -1, + 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, + -1, -1, 58, 59, 93, 41, 297, 298, 44, 300, + 301, 302, 303, 304, 305, 306, -1, 272, 273, 274, + 275, -1, 58, 59, -1, -1, 281, 63, -1, -1, + -1, -1, 287, 288, 289, 290, -1, 93, -1, -1, + -1, -1, 297, 298, -1, 300, 301, 302, 303, 304, + 305, 41, -1, -1, 44, -1, -1, 93, -1, -1, + -1, -1, 272, 273, 274, 275, -1, -1, 58, 59, + -1, 281, -1, 63, -1, -1, -1, 287, 288, -1, + 290, 91, -1, -1, -1, -1, -1, 297, 298, -1, + 300, 301, 302, 303, 304, 305, -1, 41, -1, -1, + 44, -1, -1, 93, 41, -1, -1, 44, -1, -1, + -1, -1, -1, 123, 58, 59, 272, 273, 274, 275, + -1, 58, 59, -1, -1, 281, 63, -1, -1, -1, + -1, 287, 288, -1, -1, -1, 41, -1, -1, 44, + -1, 297, 298, -1, 300, 301, 302, 303, 304, 93, + -1, -1, -1, 58, 59, -1, 93, -1, 63, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, -1, - -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 295, 296, -1, -1, 299, - 300, 301, 302, 303, 281, -1, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 299, 300, 301, 302, 303, -1, 305, 306, - -1, -1, 309, -1, -1, 312, 313, 314, -1, -1, - -1, -1, -1, -1, 281, -1, -1, -1, 285, 286, - 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 299, 300, 301, 302, 303, -1, 305, 306, - -1, -1, 309, -1, -1, 312, 313, 314, -1, 285, - 286, 287, 288, -1, -1, -1, -1, -1, -1, 13, - -1, -1, -1, 17, -1, 301, 302, 303, -1, 305, - 306, -1, -1, 309, -1, -1, 312, 313, 314, 33, - 34, 35, 36, -1, -1, -1, -1, -1, -1, 43, - -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, + -1, -1, -1, 272, 273, 274, 275, -1, 93, 91, + -1, -1, 281, -1, -1, 63, -1, -1, 287, 288, + -1, -1, -1, -1, -1, -1, -1, -1, 297, 298, + -1, 300, 301, 302, 303, 304, 272, 273, 274, 275, + -1, 123, -1, 91, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, 297, 298, -1, -1, 281, -1, -1, -1, -1, + -1, 287, 288, -1, -1, 123, -1, -1, -1, -1, + -1, 297, 298, -1, 300, 301, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, 287, 288, 289, + 290, -1, 272, 273, 274, 275, -1, -1, -1, -1, + -1, 281, -1, 303, 304, 305, 306, 287, 288, 309, + -1, -1, 312, 313, 314, -1, -1, 297, 298, -1, + 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, -1, -1, 272, 273, 274, 275, -1, + -1, -1, -1, -1, 281, -1, -1, -1, -1, -1, + -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, + 297, 298, -1, 300, 301, 302, 303, 272, 273, 274, + 275, -1, -1, -1, -1, -1, 281, -1, -1, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, -1, 297, 298, -1, 300, 301, 302, 300, 301, + 302, 303, 304, 305, 306, -1, -1, 309, -1, -1, + 312, 313, 314, 281, -1, -1, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, -1, 13, -1, -1, + -1, 17, -1, 301, 302, 303, 304, 305, 306, -1, + -1, 309, -1, -1, 312, 313, 314, 33, 34, 35, + 36, -1, -1, -1, -1, -1, 42, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 94, -1, -1, 97, -1, 99, -1, 101, -1, 103, + -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, + -1, 97, -1, 99, -1, 101, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 181, -1, -1, - -1, -1, -1, -1, 188, + -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, + -1, -1, 188, }; #define YYFINAL 1 #ifndef YYDEBUG @@ -1092,9 +1073,9 @@ char *yyname[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"WORD","METHOD","FUNCMETH","THING", "PMFUNC","PRIVATEREF","FUNC0SUB","UNIOPSUB","LSTOPSUB","LABEL","FORMAT","SUB", "ANONSUB","PACKAGE","USE","WHILE","UNTIL","IF","UNLESS","ELSE","ELSIF", -"CONTINUE","FOR","LOOPEX","DOTDOT","FUNC0","FUNC1","FUNC","RELOP","EQOP", -"MULOP","ADDOP","DOLSHARP","DO","HASHBRACK","NOAMP","LOCAL","MY","OROP","ANDOP", -"NOTOP","LSTOP","ASSIGNOP","OROR","ANDAND","BITOROP","BITANDOP","UNIOP", +"CONTINUE","FOR","LOOPEX","DOTDOT","FUNC0","FUNC1","FUNC","UNIOP","LSTOP", +"RELOP","EQOP","MULOP","ADDOP","DOLSHARP","DO","HASHBRACK","NOAMP","LOCAL","MY", +"OROP","ANDOP","NOTOP","ASSIGNOP","OROR","ANDAND","BITOROP","BITANDOP", "SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP","PREINC","PREDEC","POSTINC", "POSTDEC","ARROW", }; @@ -1292,9 +1273,9 @@ int yyerrflag; int yychar; YYSTYPE yyval; YYSTYPE yylval; -#line 616 "perly.y" +#line 620 "perly.y" /* PROGRAM */ -#line 1369 "perly.c" +#line 1349 "perly.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab @@ -1533,41 +1514,45 @@ case 2: break; case 3: #line 96 "perly.y" -{ yyval.opval = block_end(yyvsp[-3].ival,yyvsp[-2].ival,yyvsp[-1].opval); } +{ if (copline > (line_t)yyvsp[-3].ival) + copline = yyvsp[-3].ival; + yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 4: -#line 100 "perly.y" +#line 102 "perly.y" { yyval.ival = block_start(TRUE); } break; case 5: -#line 104 "perly.y" -{ yyval.opval = block_end(yyvsp[-3].ival,yyvsp[-2].ival,yyvsp[-1].opval); } +#line 106 "perly.y" +{ if (copline > (line_t)yyvsp[-3].ival) + copline = yyvsp[-3].ival; + yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 6: -#line 108 "perly.y" +#line 112 "perly.y" { yyval.ival = block_start(FALSE); } break; case 7: -#line 112 "perly.y" +#line 116 "perly.y" { yyval.opval = Nullop; } break; case 8: -#line 114 "perly.y" +#line 118 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 9: -#line 116 "perly.y" +#line 120 "perly.y" { yyval.opval = append_list(OP_LINESEQ, (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); pad_reset_pending = TRUE; if (yyvsp[-1].opval && yyvsp[0].opval) hints |= HINT_BLOCK_SCOPE; } break; case 10: -#line 123 "perly.y" +#line 127 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); } break; case 12: -#line 126 "perly.y" +#line 130 "perly.y" { if (yyvsp[-1].pval != Nullch) { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); } @@ -1578,131 +1563,131 @@ case 12: expect = XSTATE; } break; case 13: -#line 135 "perly.y" +#line 139 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); expect = XSTATE; } break; case 14: -#line 140 "perly.y" +#line 144 "perly.y" { yyval.opval = Nullop; } break; case 15: -#line 142 "perly.y" +#line 146 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 16: -#line 144 "perly.y" +#line 148 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 17: -#line 146 "perly.y" +#line 150 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 18: -#line 148 "perly.y" +#line 152 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); } break; case 19: -#line 150 "perly.y" +#line 154 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);} break; case 20: -#line 154 "perly.y" +#line 158 "perly.y" { yyval.opval = Nullop; } break; case 21: -#line 156 "perly.y" +#line 160 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; case 22: -#line 158 "perly.y" +#line 162 "perly.y" { copline = yyvsp[-5].ival; yyval.opval = newSTATEOP(0, Nullch, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); hints |= HINT_BLOCK_SCOPE; } break; case 23: -#line 165 "perly.y" +#line 169 "perly.y" { copline = yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-6].ival, yyvsp[-4].ival, + yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 24: -#line 169 "perly.y" +#line 173 "perly.y" { copline = yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-6].ival, yyvsp[-4].ival, + yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 25: -#line 173 "perly.y" +#line 177 "perly.y" { copline = yyvsp[-3].ival; deprecate("if BLOCK BLOCK"); yyval.opval = newCONDOP(0, scope(yyvsp[-2].opval), scope(yyvsp[-1].opval), yyvsp[0].opval); } break; case 26: -#line 177 "perly.y" +#line 181 "perly.y" { copline = yyvsp[-3].ival; deprecate("unless BLOCK BLOCK"); yyval.opval = newCONDOP(0, invert(scalar(scope(yyvsp[-2].opval))), scope(yyvsp[-1].opval), yyvsp[0].opval); } break; case 27: -#line 184 "perly.y" +#line 188 "perly.y" { yyval.opval = Nullop; } break; case 28: -#line 186 "perly.y" +#line 190 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; case 29: -#line 190 "perly.y" +#line 194 "perly.y" { copline = yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-6].ival, yyvsp[-4].ival, + yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, newWHILEOP(0, 1, (LOOP*)Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 30: -#line 196 "perly.y" +#line 200 "perly.y" { copline = yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-6].ival, yyvsp[-4].ival, + yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, newWHILEOP(0, 1, (LOOP*)Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 31: -#line 202 "perly.y" +#line 206 "perly.y" { copline = yyvsp[-3].ival; yyval.opval = newWHILEOP(0, 1, (LOOP*)Nullop, scope(yyvsp[-2].opval), yyvsp[-1].opval, yyvsp[0].opval); } break; case 32: -#line 206 "perly.y" +#line 210 "perly.y" { copline = yyvsp[-3].ival; yyval.opval = newWHILEOP(0, 1, (LOOP*)Nullop, invert(scalar(scope(yyvsp[-2].opval))), yyvsp[-1].opval, yyvsp[0].opval); } break; case 33: -#line 211 "perly.y" -{ yyval.opval = block_end(yyvsp[-8].ival, yyvsp[-6].ival, +#line 215 "perly.y" +{ yyval.opval = block_end(yyvsp[-6].ival, newFOROP(0, yyvsp[-9].pval, yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 34: -#line 214 "perly.y" -{ yyval.opval = block_end(yyvsp[-7].ival, yyvsp[-4].ival, +#line 218 "perly.y" +{ yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-8].pval, yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 35: -#line 218 "perly.y" -{ yyval.opval = block_end(yyvsp[-6].ival, yyvsp[-4].ival, +#line 222 "perly.y" +{ yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-7].pval, yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 36: -#line 222 "perly.y" +#line 226 "perly.y" { copline = yyvsp[-9].ival; - yyval.opval = block_end(yyvsp[-9].ival, yyvsp[-7].ival, + yyval.opval = block_end(yyvsp[-7].ival, append_elem(OP_LINESEQ, scalar(yyvsp[-6].opval), newSTATEOP(0, yyvsp[-10].pval, newWHILEOP(0, 1, (LOOP*)Nullop, @@ -1710,356 +1695,356 @@ case 36: yyvsp[0].opval, scalar(yyvsp[-2].opval))))); } break; case 37: -#line 230 "perly.y" +#line 234 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 38: -#line 236 "perly.y" +#line 240 "perly.y" { yyval.opval = Nullop; } break; case 40: -#line 241 "perly.y" +#line 245 "perly.y" { (void)scan_num("1"); yyval.opval = yylval.opval; } break; case 42: -#line 246 "perly.y" +#line 250 "perly.y" { yyval.opval = invert(scalar(yyvsp[0].opval)); } break; case 43: -#line 250 "perly.y" +#line 254 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 44: -#line 254 "perly.y" +#line 258 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 45: -#line 258 "perly.y" +#line 262 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 46: -#line 262 "perly.y" +#line 266 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 47: -#line 266 "perly.y" +#line 270 "perly.y" { yyval.pval = Nullch; } break; case 49: -#line 271 "perly.y" +#line 275 "perly.y" { yyval.ival = 0; } break; case 50: -#line 273 "perly.y" +#line 277 "perly.y" { yyval.ival = 0; } break; case 51: -#line 275 "perly.y" +#line 279 "perly.y" { yyval.ival = 0; } break; case 52: -#line 277 "perly.y" +#line 281 "perly.y" { yyval.ival = 0; } break; case 53: -#line 281 "perly.y" +#line 285 "perly.y" { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } break; case 54: -#line 283 "perly.y" +#line 287 "perly.y" { newFORM(yyvsp[-1].ival, Nullop, yyvsp[0].opval); } break; case 55: -#line 287 "perly.y" +#line 291 "perly.y" { newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 56: -#line 289 "perly.y" +#line 293 "perly.y" { newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, Nullop); expect = XSTATE; } break; case 57: -#line 293 "perly.y" +#line 297 "perly.y" { yyval.opval = Nullop; } break; case 59: -#line 298 "perly.y" +#line 302 "perly.y" { yyval.ival = start_subparse(); } break; case 60: -#line 302 "perly.y" +#line 306 "perly.y" { package(yyvsp[-1].opval); } break; case 61: -#line 304 "perly.y" +#line 308 "perly.y" { package(Nullop); } break; case 62: -#line 308 "perly.y" +#line 312 "perly.y" { utilize(yyvsp[-5].ival, yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); } break; case 63: -#line 312 "perly.y" +#line 316 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 64: -#line 314 "perly.y" +#line 318 "perly.y" { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 66: -#line 319 "perly.y" +#line 323 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 67: -#line 321 "perly.y" +#line 325 "perly.y" { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); } break; case 69: -#line 326 "perly.y" +#line 330 "perly.y" { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); } break; case 70: -#line 329 "perly.y" +#line 333 "perly.y" { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); } break; case 71: -#line 332 "perly.y" +#line 336 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); } break; case 72: -#line 337 "perly.y" +#line 341 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); } break; case 73: -#line 342 "perly.y" +#line 346 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); } break; case 74: -#line 347 "perly.y" +#line 351 "perly.y" { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; case 75: -#line 349 "perly.y" +#line 353 "perly.y" { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; case 76: -#line 351 "perly.y" +#line 355 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, newANONSUB(yyvsp[-2].ival, 0, yyvsp[-1].opval), yyvsp[0].opval), yyvsp[-3].opval)); } break; case 79: -#line 362 "perly.y" +#line 366 "perly.y" { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); } break; case 80: -#line 364 "perly.y" +#line 368 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 81: -#line 366 "perly.y" +#line 370 "perly.y" { if (yyvsp[-1].ival != OP_REPEAT) scalar(yyvsp[-2].opval); yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); } break; case 82: -#line 370 "perly.y" +#line 374 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 83: -#line 372 "perly.y" +#line 376 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 84: -#line 374 "perly.y" +#line 378 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 85: -#line 376 "perly.y" +#line 380 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 86: -#line 378 "perly.y" +#line 382 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 87: -#line 380 "perly.y" +#line 384 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 88: -#line 382 "perly.y" +#line 386 "perly.y" { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));} break; case 89: -#line 384 "perly.y" +#line 388 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 90: -#line 386 "perly.y" +#line 390 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 91: -#line 388 "perly.y" +#line 392 "perly.y" { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } break; case 92: -#line 390 "perly.y" +#line 394 "perly.y" { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); } break; case 93: -#line 393 "perly.y" +#line 397 "perly.y" { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); } break; case 94: -#line 395 "perly.y" +#line 399 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 95: -#line 397 "perly.y" +#line 401 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; case 96: -#line 399 "perly.y" +#line 403 "perly.y" { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));} break; case 97: -#line 401 "perly.y" +#line 405 "perly.y" { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } break; case 98: -#line 403 "perly.y" +#line 407 "perly.y" { yyval.opval = newUNOP(OP_POSTINC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTINC)); } break; case 99: -#line 406 "perly.y" +#line 410 "perly.y" { yyval.opval = newUNOP(OP_POSTDEC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); } break; case 100: -#line 409 "perly.y" +#line 413 "perly.y" { yyval.opval = newUNOP(OP_PREINC, 0, mod(scalar(yyvsp[0].opval), OP_PREINC)); } break; case 101: -#line 412 "perly.y" +#line 416 "perly.y" { yyval.opval = newUNOP(OP_PREDEC, 0, mod(scalar(yyvsp[0].opval), OP_PREDEC)); } break; case 102: -#line 415 "perly.y" +#line 419 "perly.y" { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } break; case 103: -#line 417 "perly.y" +#line 421 "perly.y" { yyval.opval = sawparens(yyvsp[-1].opval); } break; case 104: -#line 419 "perly.y" +#line 423 "perly.y" { yyval.opval = sawparens(newNULLLIST()); } break; case 105: -#line 421 "perly.y" +#line 425 "perly.y" { yyval.opval = newANONLIST(yyvsp[-1].opval); } break; case 106: -#line 423 "perly.y" +#line 427 "perly.y" { yyval.opval = newANONLIST(Nullop); } break; case 107: -#line 425 "perly.y" +#line 429 "perly.y" { yyval.opval = newANONHASH(yyvsp[-2].opval); } break; case 108: -#line 427 "perly.y" +#line 431 "perly.y" { yyval.opval = newANONHASH(Nullop); } break; case 109: -#line 429 "perly.y" +#line 433 "perly.y" { yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } break; case 110: -#line 431 "perly.y" +#line 435 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 111: -#line 433 "perly.y" +#line 437 "perly.y" { yyval.opval = newBINOP(OP_GELEM, 0, newGVREF(0,yyvsp[-4].opval), yyvsp[-2].opval); } break; case 112: -#line 435 "perly.y" +#line 439 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 113: -#line 437 "perly.y" +#line 441 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); } break; case 114: -#line 439 "perly.y" +#line 443 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 115: -#line 443 "perly.y" +#line 447 "perly.y" { assertref(yyvsp[-3].opval); yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 116: -#line 447 "perly.y" +#line 451 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 117: -#line 449 "perly.y" +#line 453 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 118: -#line 451 "perly.y" +#line 455 "perly.y" { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));} break; case 119: -#line 453 "perly.y" +#line 457 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); expect = XOPERATOR; } break; case 120: -#line 456 "perly.y" +#line 460 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); expect = XOPERATOR; } break; case 121: -#line 461 "perly.y" +#line 465 "perly.y" { assertref(yyvsp[-4].opval); yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); expect = XOPERATOR; } break; case 122: -#line 466 "perly.y" +#line 470 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); } break; case 123: -#line 468 "perly.y" +#line 472 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); } break; case 124: -#line 470 "perly.y" +#line 474 "perly.y" { yyval.opval = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -2067,7 +2052,7 @@ case 124: ref(yyvsp[-3].opval, OP_ASLICE))); } break; case 125: -#line 476 "perly.y" +#line 480 "perly.y" { yyval.opval = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -2076,37 +2061,37 @@ case 125: expect = XOPERATOR; } break; case 126: -#line 483 "perly.y" +#line 487 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 127: -#line 485 "perly.y" +#line 489 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } break; case 128: -#line 487 "perly.y" +#line 491 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); } break; case 129: -#line 489 "perly.y" +#line 493 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); } break; case 130: -#line 492 "perly.y" +#line 496 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; case 131: -#line 495 "perly.y" +#line 499 "perly.y" { yyval.opval = newUNOP(OP_DOFILE, 0, scalar(yyvsp[0].opval)); } break; case 132: -#line 497 "perly.y" +#line 501 "perly.y" { yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } break; case 133: -#line 499 "perly.y" +#line 503 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, @@ -2116,7 +2101,7 @@ case 133: )),Nullop)); dep();} break; case 134: -#line 507 "perly.y" +#line 511 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, append_elem(OP_LIST, @@ -2127,150 +2112,150 @@ case 134: )))); dep();} break; case 135: -#line 516 "perly.y" +#line 520 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} break; case 136: -#line 520 "perly.y" +#line 524 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, yyvsp[-1].opval, scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} break; case 137: -#line 525 "perly.y" +#line 529 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); hints |= HINT_BLOCK_SCOPE; } break; case 138: -#line 528 "perly.y" +#line 532 "perly.y" { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); } break; case 139: -#line 530 "perly.y" +#line 534 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; case 140: -#line 532 "perly.y" +#line 536 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; case 141: -#line 534 "perly.y" +#line 538 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; case 142: -#line 536 "perly.y" +#line 540 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; case 143: -#line 538 "perly.y" +#line 542 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; case 144: -#line 541 "perly.y" +#line 545 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; case 145: -#line 543 "perly.y" +#line 547 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, 0); } break; case 146: -#line 545 "perly.y" +#line 549 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } break; case 147: -#line 548 "perly.y" +#line 552 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); } break; case 148: -#line 550 "perly.y" +#line 554 "perly.y" { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; case 149: -#line 552 "perly.y" +#line 556 "perly.y" { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); } break; case 150: -#line 554 "perly.y" +#line 558 "perly.y" { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); } break; case 153: -#line 560 "perly.y" +#line 564 "perly.y" { yyval.opval = Nullop; } break; case 154: -#line 562 "perly.y" +#line 566 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 155: -#line 566 "perly.y" +#line 570 "perly.y" { yyval.opval = Nullop; } break; case 156: -#line 568 "perly.y" +#line 572 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 157: -#line 570 "perly.y" +#line 574 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 158: -#line 573 "perly.y" +#line 577 "perly.y" { yyval.ival = 0; } break; case 159: -#line 574 "perly.y" +#line 578 "perly.y" { yyval.ival = 1; } break; case 160: -#line 578 "perly.y" +#line 582 "perly.y" { in_my = 0; yyval.opval = my(yyvsp[0].opval); } break; case 161: -#line 582 "perly.y" +#line 586 "perly.y" { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); } break; case 162: -#line 586 "perly.y" +#line 590 "perly.y" { yyval.opval = newSVREF(yyvsp[0].opval); } break; case 163: -#line 590 "perly.y" +#line 594 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; case 164: -#line 594 "perly.y" +#line 598 "perly.y" { yyval.opval = newHVREF(yyvsp[0].opval); } break; case 165: -#line 598 "perly.y" +#line 602 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; case 166: -#line 602 "perly.y" +#line 606 "perly.y" { yyval.opval = newGVREF(0,yyvsp[0].opval); } break; case 167: -#line 606 "perly.y" +#line 610 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; case 168: -#line 608 "perly.y" +#line 612 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; case 169: -#line 610 "perly.y" +#line 614 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; case 170: -#line 613 "perly.y" +#line 617 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -#line 2261 "perly.c" +#line 2245 "perly.c" } yyssp -= yym; yystate = *yyssp; |