summaryrefslogtreecommitdiff
path: root/vms
diff options
context:
space:
mode:
Diffstat (limited to 'vms')
-rw-r--r--vms/Makefile266
-rw-r--r--vms/config.vms19
-rw-r--r--vms/descrip.mms272
-rw-r--r--vms/ext/stdio/Makefile.PL (renamed from vms/ext/VMS/stdio/Makefile.PL)0
-rw-r--r--vms/ext/stdio/stdio.pm (renamed from vms/ext/VMS/stdio/stdio.pm)0
-rw-r--r--vms/ext/stdio/stdio.xs (renamed from vms/ext/VMS/stdio/stdio.xs)2
-rw-r--r--vms/gen_shrfls.pl35
-rw-r--r--vms/genconfig.pl121
-rw-r--r--vms/make_command.com21
-rw-r--r--vms/mms2make.pl6
-rw-r--r--vms/myconfig.com319
-rw-r--r--vms/perlvms.pod104
-rw-r--r--vms/perly_c.vms2405
-rw-r--r--vms/perly_h.vms83
-rw-r--r--vms/sockadapt.c23
-rw-r--r--vms/vms.c296
-rw-r--r--vms/vms_yfix.pl23
-rw-r--r--vms/vmsish.h40
18 files changed, 2639 insertions, 1396 deletions
diff --git a/vms/Makefile b/vms/Makefile
index 075a6b9860..69738c7a03 100644
--- a/vms/Makefile
+++ b/vms/Makefile
@@ -1,15 +1,17 @@
-#> This file produced from Descrip.MMS by mms2make.pl
+#> This file produced from vms/descrip.mms by vms/mms2make.pl
#> Lines beginning with "#>" were commented out during the
-#> conversion process. For more information, see mms2make.pl
+#> conversion process. For more information, see vms/mms2make.pl
#>
-# Makefile. for perl5 on VMS
-# Last revised 4-Dec-1995 by Charles Bailey bailey@genetics.upenn.edu
+# Descrip.MMS for perl5 on VMS
+# Last revised 17-Jan-1995 by Charles Bailey bailey@genetics.upenn.edu
#
#
# tidy -- purge files generated by executing this file
-# clean -- remove all files generated by executing this file
-# cleansrc -- `clean' + purge *.c,*.h,Makefile.
-# gcc_cld_setup -- GCC initialization; see above
+# clean -- remove all intermediate (e.g. object files, C files generated
+# during build) files generated by executing this file,
+# but leave `installable' files (images, library) intact
+# realclean -- remove all files generated by executing this file
+# cleansrc -- `realclean' + purge *.c,*.h,descrip.mms
# crtl.opt -- compiler-specific linker options file (made automatically)
#
@@ -27,6 +29,7 @@ OLB = .olb
E = .exe
ARCH = VMS_VAX
+OBJVAL = $@
ARCHDIR = [.lib.$(ARCH)]
ARCHCORE = [.lib.$(ARCH).CORE]
ARCHAUTO = [.lib.$(ARCH).auto]
@@ -47,7 +50,7 @@ DBGSPECFLAGS = /Show=(Source,Include,Expansion)
@ If f$$TrnLnm("Sys").eqs."" Then Define/NoLog SYS sys$$Library
XTRACCFLAGS = /Include=[]/Object=$(O)
XTRADEF =
-LIBS2 = VAXCRTL/Shareable
+LIBS2 = sys$$Share:VAXCRTL/Shareable
DBGCCFLAGS = /NoList
@@ -71,7 +74,7 @@ CFLAGS = /Define=(DEBUGGING$(SOCKDEF)$(XTRADEF))$(XTRACCFLAGS)$(DBGCCFLAGS)
LINKFLAGS = $(DBGLINKFLAGS)
MAKE = $(MMS)
-MAKEFILE = [.VMS]Makefile. # this file
+MAKEFILE = [.VMS]Descrip.MMS # this file
NOOP = continue
# Macros to invoke a copy of miniperl during the build. Targets which
@@ -144,12 +147,31 @@ CRTLOPTS =,$(CRTL)/Options
$(XSUBPP) $< >$(MMS$SOURCE_NAME).c
$(CC) $(CFLAGS) $(MMS$SOURCE_NAME).c
-all : base extras archcorefiles preplibrary
+all : base extras archcorefiles preplibrary perlpods
@ $(NOOP)
base : miniperl$(E) perl$(E)
@ $(NOOP)
-extras : [.lib]Config.pm [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm [.lib.extutils]MM_VMS.pm
+extras : Safe libmods utils podxform
@ $(NOOP)
+libmods : [.lib]Config.pm [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm
+ @ $(NOOP)
+utils : [.lib.pod]perldoc [.lib.ExtUtils]Miniperl.pm [.utils]c2ph [.utils]h2ph [.utils]h2xs [.lib]perlbug
+ @ $(NOOP)
+podxform : [.lib.pod]pod2text [.lib.pod]pod2html [.lib.pod]pod2latex [.lib.pod]pod2man
+ @ $(NOOP)
+
+pod1 = [.lib.pod]perl.pod [.lib.pod]perlbook.pod [.lib.pod]perlbot.pod [.lib.pod]perlcall.pod
+pod2 = [.lib.pod]perldata.pod [.lib.pod]perldebug.pod [.lib.pod]perldiag.pod [.lib.pod]perldsc.pod
+pod3 = [.lib.pod]perlembed.pod [.lib.pod]perlform.pod [.lib.pod]perlfunc.pod [.lib.pod]perlguts.pod
+pod4 = [.lib.pod]perlipc.pod [.lib.pod]perllol.pod [.lib.pod]perlmod.pod [.lib.pod]perlobj.pod
+pod5 = [.lib.pod]perlop.pod [.lib.pod]perlovl.pod [.lib.pod]perlpod.pod [.lib.pod]perlre.pod
+pod6 = [.lib.pod]perlref.pod [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod [.lib.pod]perlstyle.pod
+pod7 = [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod [.lib.pod]perltie.pod [.lib.pod]perltoc.pod
+pod8 = [.lib.pod]perltrap.pod [.lib.pod]perlvar.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod
+
+perlpods : $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) [.lib.pod]perlvms.pod
+ @ $(NOOP)
+
archcorefiles : $(ac1) $(ac2) $(ac3) $(ac4) $(ac5) $(ac6) $(ac7) $(ac8) $(ac9) $(acs) $(ARCHAUTO)time.stamp
@ $(NOOP)
@@ -199,19 +221,215 @@ $(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(
[.lib]DynaLoader.pm : [.ext.dynaloader]dynaloader.pm
Copy/Log/NoConfirm [.ext.dynaloader]dynaloader.pm [.lib]DynaLoader.pm
+ @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]DynaLoader.pm
+
+Safe : [.lib]Safe.pm [.lib.auto]Safe$(E)
+ @ $(NOOP)
+
+[.lib]Safe.pm : [.ext.Safe]Descrip.MMS
+ @ Set Default [.ext.Safe]
+ $(MMS)
+ @ Set Default [--]
+
+[.lib.auto]Safe$(E) : [.ext.Safe]Descrip.MMS
+ @ Set Default [.ext.Safe]
+ $(MMS)
+ @ Set Default [--]
+
+# Add "-I[--.lib]" t $(MINIPERL) so we use this copy of lib after C<chdir>
+# ${@} necessary to distract different versions of MM[SK]/make
+[.ext.Safe]Descrip.MMS : [.ext.Safe]Makefile.PL [.lib.$(ARCH)]Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm perlshr$(E)
+ $(MINIPERL) "-I[--.lib]" -e "chdir('[.ext.Safe]') or die $!; do 'Makefile.PL'; print ${@} if ${@};" 2>_nla0:
[.lib.VMS]Filespec.pm : [.vms.ext]Filespec.pm
@ If f$$Search("[.lib]VMS.Dir").eqs."" Then Create/Directory [.lib.VMS]
Copy/Log/NoConfirm [.vms.ext]Filespec.pm $@
-[.lib.ExtUtils]MM_VMS.pm : [.vms.ext]MM_VMS.pm
- Copy/Log/NoConfirm [.vms.ext]MM_VMS.pm $@
+[.lib.pod]perldoc : [.utils]perldoc.PL [.lib.$(ARCH)]Config.pm
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) [.utils]perldoc.PL
+ Copy/Log [.utils]perldoc $@
+
+[.lib.ExtUtils]Miniperl.pm : Minimod.PL miniperlmain.c [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) Minimod.PL >$@
+
+[.utils]c2ph : [.utils]c2ph.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) [.utils]c2ph.PL
+
+[.utils]h2ph : [.utils]h2ph.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) [.utils]h2ph.PL
-preplibrary : $(MINIPERL_EXE) [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm [.lib.ExtUtils]MM_VMS.pm $(SOCKPM)
+[.utils]h2xs : [.utils]h2xs.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) [.utils]h2xs.PL
+
+[.lib]perlbug : [.utils]perlbug.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) [.utils]perlbug.PL
+ Rename/Log [.utils]perlbug $@
+
+[.utils]pl2pm : [.utils]pl2pm.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) [.utils]pl2pm.PL
+
+[.lib.pod]pod2html : [.pod]pod2html.PL [.lib.$(ARCH)]Config.pm
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) [.pod]pod2html.PL
+ Rename/Log [.pod]pod2html $@
+
+[.lib.pod]pod2latex : [.pod]pod2latex.PL [.lib.$(ARCH)]Config.pm
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) [.pod]pod2latex.PL
+ Rename/Log [.pod]pod2latex $@
+
+[.lib.pod]pod2man : [.pod]pod2man.PL [.lib.$(ARCH)]Config.pm
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) [.pod]pod2man.PL
+ Rename/Log [.pod]pod2man $@
+
+[.lib.pod]pod2text : [.pod]pod2text.PL [.lib.$(ARCH)]Config.pm
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) [.pod]pod2text.PL
+ Rename/Log [.pod]pod2text $@
+
+preplibrary : $(MINIPERL_EXE) [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm $(SOCKPM)
@ Write sys$$Output "Autosplitting Perl library . . ."
@ Create/Directory [.lib.auto]
@ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]*.pm [.lib.*]*.pm
+[.lib.pod]perl.pod : [.pod]perl.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perl.pod $@
+
+[.lib.pod]perlbook.pod : [.pod]perlbook.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlbook.pod $@
+
+[.lib.pod]perlbot.pod : [.pod]perlbot.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlbot.pod $@
+
+[.lib.pod]perlcall.pod : [.pod]perlcall.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlcall.pod $@
+
+[.lib.pod]perldata.pod : [.pod]perldata.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perldata.pod $@
+
+[.lib.pod]perldebug.pod : [.pod]perldebug.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perldebug.pod $@
+
+[.lib.pod]perldiag.pod : [.pod]perldiag.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perldiag.pod $@
+
+[.lib.pod]perldsc.pod : [.pod]perldsc.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perldsc.pod $@
+
+[.lib.pod]perlembed.pod : [.pod]perlembed.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlembed.pod $@
+
+[.lib.pod]perlform.pod : [.pod]perlform.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlform.pod $@
+
+[.lib.pod]perlfunc.pod : [.pod]perlfunc.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlfunc.pod $@
+
+[.lib.pod]perlguts.pod : [.pod]perlguts.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlguts.pod $@
+
+[.lib.pod]perlipc.pod : [.pod]perlipc.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlipc.pod $@
+
+[.lib.pod]perllol.pod : [.pod]perllol.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perllol.pod $@
+
+[.lib.pod]perlmod.pod : [.pod]perlmod.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlmod.pod $@
+
+[.lib.pod]perlobj.pod : [.pod]perlobj.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlobj.pod $@
+
+[.lib.pod]perlop.pod : [.pod]perlop.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlop.pod $@
+
+[.lib.pod]perlovl.pod : [.pod]perlovl.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlovl.pod $@
+
+[.lib.pod]perlpod.pod : [.pod]perlpod.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlpod.pod $@
+
+[.lib.pod]perlre.pod : [.pod]perlre.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlre.pod $@
+
+[.lib.pod]perlref.pod : [.pod]perlref.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlref.pod $@
+
+[.lib.pod]perlrun.pod : [.pod]perlrun.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlrun.pod $@
+
+[.lib.pod]perlsec.pod : [.pod]perlsec.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlsec.pod $@
+
+[.lib.pod]perlstyle.pod : [.pod]perlstyle.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlstyle.pod $@
+
+[.lib.pod]perlsub.pod : [.pod]perlsub.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlsub.pod $@
+
+[.lib.pod]perlsyn.pod : [.pod]perlsyn.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlsyn.pod $@
+
+[.lib.pod]perltie.pod : [.pod]perltie.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perltie.pod $@
+
+[.lib.pod]perltoc.pod : [.pod]perltoc.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perltoc.pod $@
+
+[.lib.pod]perltrap.pod : [.pod]perltrap.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perltrap.pod $@
+
+[.lib.pod]perlvar.pod : [.pod]perlvar.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlvar.pod $@
+
+[.lib.pod]perlxs.pod : [.pod]perlxs.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlxs.pod $@
+
+[.lib.pod]perlxstut.pod : [.pod]perlxstut.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.pod]perlxstut.pod $@
+
+[.lib.pod]perlvms.pod : [.vms]perlvms.pod
+ @ If f$$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log [.vms]perlvms.pod $@
+
+printconfig :
+ @ $$@[.vms]make_command $(MMS) $(MMSQUALIFIERS) $(MMSTARGETS)
+ @ $$@[.vms]myconfig "$(CC)" "$(CFLAGS)" "$(LINKFLAGS)" "$(LIBS1)" "$(LIBS2)" "$(SOCKLIB)" "$(EXT)" "$(DBG)"
+
# The following three header files are generated automatically
# keywords.h : keywords.pl
@@ -1004,6 +1222,7 @@ tidy : cleanlis
- If f$$Search("Perlshr_Gbl*.Mar;-1") .nes."" Then Purge/NoConfirm/Log Perlshr_Gbl*.Mar
- If f$$Search("[.Ext.DynaLoader]DL_VMS$(O);-1").nes."" Then Purge/NoConfirm/Log [.Ext.DynaLoader]DL_VMS$(O)
- If f$$Search("[.Ext.DynaLoader]DL_VMS.C;-1").nes."" Then Purge/NoConfirm/Log [.Ext.DynaLoader]DL_VMS.C
+ - If f$$Search("[.Ext.Safe...];-1").nes."" Then Purge/NoConfirm/Log [.Ext.Safe]
- If f$$Search("[.VMS.Ext...]*.C;-1").nes."" Then Purge/NoConfirm/Log [.VMS.Ext...]*.C
- If f$$Search("[.VMS.Ext...]*$(O);-1").nes."" Then Purge/NoConfirm/Log [.VMS.Ext...]*$(O)
- If f$$Search("[.Lib.Auto...]*.al;-1").nes."" Then Purge/NoConfirm/Log [.Lib.Auto...]*.al
@@ -1013,8 +1232,10 @@ tidy : cleanlis
- If f$$Search("[.Lib]Config.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib]Config.pm
- If f$$Search("[.Lib.$(ARCH)]Config.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib.$(ARCH)]Config.pm
- If f$$Search("[.Lib.VMS]*.*;-1").nes."" Then Purge/NoConfirm/Log [.Lib.VMS]*.*
- - If f$$Search("[.Lib.ExtUtils]MM_VMS.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib.ExtUtils]MM_VMS.pm
+ - If f$$Search("[.Lib.Pod]*.Pod;-1").nes."" Then Purge/NoConfirm/Log [.Lib.Pod]*.Pod
- If f$$Search("$(ARCHCORE)*.*").nes."" Then Purge/NoConfirm/Log $(ARCHCORE)*.*
+ - If f$$Search("[.utils]*.;-1").nes."" Then Purge/NoConfirm/Log [.utils]*.
+ - If f$$Search("[.lib.pod]*.;-1").nes."" Then Purge/NoConfirm/Log [.lib.pod]*.
clean : tidy
- If f$$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*/Exclude=PerlShr_*.Opt
@@ -1036,16 +1257,27 @@ clean : tidy
- If f$$Search("[.Ext.Socket]Socket.C").nes."" Then Delete/NoConfirm/Log [.Ext.Socket]Socket.C;*
- If f$$Search("[.VMS.Ext...]*.C").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*.C;*
- If f$$Search("[.VMS.Ext...]*$(O)").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*$(O);*
+ Set Default [.ext.Safe]
+ - $(MMS) clean
+ Set Default [--]
realclean : clean
- If f$$Search("*$(OLB)").nes."" Then Delete/NoConfirm/Log *$(OLB);*
- If f$$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*
- $(MINIPERL) -e "use File::Path; rmtree(['lib/auto','lib/VMS','lib/$(ARCH)'],1,0);"
- If f$$Search("[.Lib]DynaLoader.pm").nes."" Then Delete/NoConfirm/Log [.Lib]DynaLoader.pm;*
- - If f$$Search("[.Lib.ExtUtils]MM_VMS.pm").nes."" Then Delete/NoConfirm/Log [.Lib.ExtUtils]MM_VMS.pm;*
- - If f$$Search("*$(E)").nes."" Then Delete/NoConfirm/Log *$(E);*
- If f$$Search("[.Lib]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib]Config.pm;*
- If f$$Search("[.Lib.$(ARCH)]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib.$(ARCH)]Config.pm;*
+ - If f$$Search("[.lib.ExtUtils]Miniperl.pm").nes."" Then Delete/NoConfirm/Log [.lib.ExtUtils]Miniperl.pm;*
+ - If f$$Search("[.utils]*.").nes."" Then Delete/NoConfirm/Log [.utils]*.;*
+ - If f$$Search("[.lib.pod]*.pod").nes."" Then Delete/NoConfirm/Log [.lib.pod]*.pod;*
+ - If f$$Search("[.lib.pod]perldoc.").nes."" Then Delete/NoConfirm/Log [.lib.pod]perldoc.;*
+ - If f$$Search("[.lib.pod]pod2*.").nes."" Then Delete/NoConfirm/Log [.lib.pod]pod2*.;*
+ Set Default [.ext.Safe]
+ - $(MMS) realclean
+ Set Default [--]
+ - If f$$Search("[.Lib]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib]Config.pm;*
+ - If f$$Search("*$(E)").nes."" Then Delete/NoConfirm/Log *$(E);*
cleansrc : clean
- If f$$Search("*.C;-1").nes."" Then Purge/NoConfirm/Log *.C
diff --git a/vms/config.vms b/vms/config.vms
index cd8a46de3b..cdf900a9cd 100644
--- a/vms/config.vms
+++ b/vms/config.vms
@@ -135,7 +135,7 @@
* This symbol, if defined, indicates that the crypt routine is available
* to encrypt passwords and the like.
*/
-#undef HAS_CRYPT /**/
+#define HAS_CRYPT /**/
/* BYTEORDER:
* This symbol hold the hexadecimal constant defined in byteorder,
@@ -462,6 +462,12 @@
#undef Shmat_t /**/ /* config-skip */
#undef HAS_SHMAT_PROTOTYPE /**/
+/* HAS_SIGACTION:
+ * This symbol, if defined, indicates that Vr4's sigaction() routine
+ * is available.
+ */
+#undef HAS_SIGACTION /**/
+
/* USE_STAT_BLOCKS:
* This symbol is defined if this system has a stat structure declaring
* st_blksize and st_blocks.
@@ -1002,7 +1008,7 @@
* This symbol, if defined, indicates that the getlogin routine is
* available.
*/
-#undef HAS_GETLOGIN /**/
+#define HAS_GETLOGIN /**/
/* HAS_GETPPID:
* This symbol, if defined, indicates that the getppid routine is
@@ -1357,7 +1363,7 @@
/* VMS: true for gcc, undef for VAXC/DECC. This is handled in Descrip.MMS
* C. Bailey 26-Aug-1994
*/
-/*#define GNUC_ATTRIBUTE_CHECK */
+/*#define GNUC_ATTRIBUTE_CHECK /**/
/* VOID_CLOSEDIR:
* This symbol, if defined, indicates that the closedir() routine
@@ -1486,6 +1492,13 @@
*/
#define USE_DYNAMIC_LOADING /**/
+/* STARTPERL:
+ * This variable contains the string to put in front of a perl
+ * script to make sure (one hopes) that it runs with perl and not
+ * some shell.
+ */
+#define STARTPERL "" /**/
+
/* VOIDFLAGS:
* This symbol indicates how much support of the void type is given by this
* compiler. What various bits mean:
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 09257491cf..aac4841d64 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -1,5 +1,5 @@
# Descrip.MMS for perl5 on VMS
-# Last revised 4-Dec-1995 by Charles Bailey bailey@genetics.upenn.edu
+# Last revised 17-Jan-1995 by Charles Bailey bailey@genetics.upenn.edu
#
#: This file uses MMS syntax, and can be processed using DEC's MMS product,
#: or the free MMK clone (available by ftp at ftp.spc.edu). If you want to
@@ -19,21 +19,19 @@
#: $ MMS /MACRO=("decc=1")
#: Building with DEC C, on system with VAX C installed as default C compiler:
#: $ MMS /MACRO=("decc=1","cc=CC/DECC")
-#: Building with GNU C, on system with GCC command installed in DCLTABLES:
+#: Building with GNU C
#: $ MMS /MACRO=("gnuc=1")
-#: Building with GNU C, on system without GCC command installed in DCLTABLES:
-#: $ MMS /MACRO=("gnuc=1") gcc_cld_setup,all
-#: note: `gcc_cld_setup' target must explicitly precede `all' or `[mini]perl'
-#:
#: To each of the above, add /Macro="__AXP__=1" if building on an AXP,
#: /Macro="__DEBUG__=1" to build a debug version
#: (i.e. VMS debugger, not perl -D), and
#: /Macro="SOCKET=1" to include socket support.
#
# tidy -- purge files generated by executing this file
-# clean -- remove all files generated by executing this file
-# cleansrc -- `clean' + purge *.c,*.h,descrip.mms
-# gcc_cld_setup -- GCC initialization; see above
+# clean -- remove all intermediate (e.g. object files, C files generated
+# during build) files generated by executing this file,
+# but leave `installable' files (images, library) intact
+# realclean -- remove all files generated by executing this file
+# cleansrc -- `realclean' + purge *.c,*.h,descrip.mms
# crtl.opt -- compiler-specific linker options file (made automatically)
#
@@ -60,8 +58,10 @@ E = .exe
.ifdef __AXP__
DECC = 1
ARCH = VMS_AXP
+OBJVAL = $(O)
.else
ARCH = VMS_VAX
+OBJVAL = $(MMS$TARGET_NAME)$(O)
.endif
ARCHDIR = [.lib.$(ARCH)]
ARCHCORE = [.lib.$(ARCH).CORE]
@@ -81,7 +81,7 @@ DBGSPECFLAGS =
XTRADEF = ,GNUC_ATTRIBUTE_CHECK
XTRAOBJS =
LIBS1 = GNU_CC:[000000]GCCLIB.OLB/Library
-LIBS2 = VAXCRTL/Shareable
+LIBS2 = Sys$Share:VAXCRTL/Shareable
.else
XTRAOBJS =
LIBS1 = $(XTRAOBJS)
@@ -95,14 +95,14 @@ DBGSPECFLAGS = /Show=(Source,Include,Expansion)
.first
@ Set Process/Privilege=(NoSYSNAM)
LIBS2 =
-XTRACCFLAGS = /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=$(MMS$TARGET_NAME)$(O)
+XTRACCFLAGS = /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=$(OBJVAL)
XTRADEF =
.else # VAXC
.first
@ If F$TrnLnm("Sys").eqs."" Then Define/NoLog SYS Sys$Library
XTRACCFLAGS = /Include=[]/Object=$(O)
XTRADEF =
-LIBS2 = VAXCRTL/Shareable
+LIBS2 = Sys$Share:VAXCRTL/Shareable
.endif
.endif
@@ -235,12 +235,31 @@ CRTLOPTS =,$(CRTL)/Options
$(XSUBPP) $(MMS$SOURCE) >$(MMS$SOURCE_NAME).c
$(CC) $(CFLAGS) $(MMS$SOURCE_NAME).c
-all : base extras archcorefiles preplibrary
+all : base extras archcorefiles preplibrary perlpods
@ $(NOOP)
base : miniperl$(E) perl$(E)
@ $(NOOP)
-extras : [.lib]Config.pm [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm [.lib.extutils]MM_VMS.pm
+extras : Safe libmods utils podxform
+ @ $(NOOP)
+libmods : [.lib]Config.pm [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm
+ @ $(NOOP)
+utils : [.lib.pod]perldoc [.lib.ExtUtils]Miniperl.pm [.utils]c2ph [.utils]h2ph [.utils]h2xs [.lib]perlbug
+ @ $(NOOP)
+podxform : [.lib.pod]pod2text [.lib.pod]pod2html [.lib.pod]pod2latex [.lib.pod]pod2man
@ $(NOOP)
+
+pod1 = [.lib.pod]perl.pod [.lib.pod]perlbook.pod [.lib.pod]perlbot.pod [.lib.pod]perlcall.pod
+pod2 = [.lib.pod]perldata.pod [.lib.pod]perldebug.pod [.lib.pod]perldiag.pod [.lib.pod]perldsc.pod
+pod3 = [.lib.pod]perlembed.pod [.lib.pod]perlform.pod [.lib.pod]perlfunc.pod [.lib.pod]perlguts.pod
+pod4 = [.lib.pod]perlipc.pod [.lib.pod]perllol.pod [.lib.pod]perlmod.pod [.lib.pod]perlobj.pod
+pod5 = [.lib.pod]perlop.pod [.lib.pod]perlovl.pod [.lib.pod]perlpod.pod [.lib.pod]perlre.pod
+pod6 = [.lib.pod]perlref.pod [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod [.lib.pod]perlstyle.pod
+pod7 = [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod [.lib.pod]perltie.pod [.lib.pod]perltoc.pod
+pod8 = [.lib.pod]perltrap.pod [.lib.pod]perlvar.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod
+
+perlpods : $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) [.lib.pod]perlvms.pod
+ @ $(NOOP)
+
archcorefiles : $(ac1) $(ac2) $(ac3) $(ac4) $(ac5) $(ac6) $(ac7) $(ac8) $(ac9) $(acs) $(ARCHAUTO)time.stamp
@ $(NOOP)
@@ -261,6 +280,9 @@ perlmain.c : miniperlmain.c $(MINIPERL_EXE) [.vms]writemain.pl
perl$(E) : perlmain$(O), perlshr$(E), $(MINIPERL_EXE)
@ @[.vms]genopt "PerlShr.Opt/Write" "|" "''F$Environment("Default")'$(DBG)PerlShr$(E)/Share"
+.ifdef gnuc
+ @ @[.vms]genopt "PerlShr.Opt/Append" "|" "$(LIBS1)|$(LIBS2)"
+.endif
Link $(LINKFLAGS)/Exe=$(DBG)$(MMS$TARGET) perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option
perlshr$(E) : $(DBG)libperl$(OLB) $(extobj) $(DBG)perlshr_xtras.ts
Link /NoTrace$(LINKFLAGS)/Share=$(DBG)$(MMS$TARGET) $(extobj) []$(DBG)perlshr_bld.opt/Option, perlshr_attr.opt/Option
@@ -299,19 +321,215 @@ $(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(
[.lib]DynaLoader.pm : [.ext.dynaloader]dynaloader.pm
Copy/Log/NoConfirm [.ext.dynaloader]dynaloader.pm [.lib]DynaLoader.pm
+ @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]DynaLoader.pm
+
+Safe : [.lib]Safe.pm [.lib.auto]Safe$(E)
+ @ $(NOOP)
+
+[.lib]Safe.pm : [.ext.Safe]Descrip.MMS
+ @ Set Default [.ext.Safe]
+ $(MMS)
+ @ Set Default [--]
+
+[.lib.auto]Safe$(E) : [.ext.Safe]Descrip.MMS
+ @ Set Default [.ext.Safe]
+ $(MMS)
+ @ Set Default [--]
+
+# Add "-I[--.lib]" t $(MINIPERL) so we use this copy of lib after C<chdir>
+# ${@} necessary to distract different versions of MM[SK]/make
+[.ext.Safe]Descrip.MMS : [.ext.Safe]Makefile.PL [.lib.$(ARCH)]Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm perlshr$(E)
+ $(MINIPERL) "-I[--.lib]" -e "chdir('[.ext.Safe]') or die $!; do 'Makefile.PL'; print ${@} if ${@};" 2>_nla0:
[.lib.VMS]Filespec.pm : [.vms.ext]Filespec.pm
@ If F$Search("[.lib]VMS.Dir").eqs."" Then Create/Directory [.lib.VMS]
Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
-[.lib.ExtUtils]MM_VMS.pm : [.vms.ext]MM_VMS.pm
- Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
+[.lib.pod]perldoc : [.utils]perldoc.PL [.lib.$(ARCH)]Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Copy/Log [.utils]perldoc $(MMS$TARGET)
+
+[.lib.ExtUtils]Miniperl.pm : Minimod.PL miniperlmain.c [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE) >$(MMS$TARGET)
-preplibrary : $(MINIPERL_EXE) [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm [.lib.ExtUtils]MM_VMS.pm $(SOCKPM)
+[.utils]c2ph : [.utils]c2ph.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE)
+
+[.utils]h2ph : [.utils]h2ph.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE)
+
+[.utils]h2xs : [.utils]h2xs.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE)
+
+[.lib]perlbug : [.utils]perlbug.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE)
+ Rename/Log [.utils]perlbug $(MMS$TARGET)
+
+[.utils]pl2pm : [.utils]pl2pm.PL [.lib.$(ARCH)]Config.pm
+ $(MINIPERL) $(MMS$SOURCE)
+
+[.lib.pod]pod2html : [.pod]pod2html.PL [.lib.$(ARCH)]Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Rename/Log [.pod]pod2html $(MMS$TARGET)
+
+[.lib.pod]pod2latex : [.pod]pod2latex.PL [.lib.$(ARCH)]Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Rename/Log [.pod]pod2latex $(MMS$TARGET)
+
+[.lib.pod]pod2man : [.pod]pod2man.PL [.lib.$(ARCH)]Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Rename/Log [.pod]pod2man $(MMS$TARGET)
+
+[.lib.pod]pod2text : [.pod]pod2text.PL [.lib.$(ARCH)]Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Rename/Log [.pod]pod2text $(MMS$TARGET)
+
+preplibrary : $(MINIPERL_EXE) [.lib.$(ARCH)]Config.pm [.lib]DynaLoader.pm [.lib.VMS]Filespec.pm $(SOCKPM)
@ Write Sys$Output "Autosplitting Perl library . . ."
@ Create/Directory [.lib.auto]
@ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]*.pm [.lib.*]*.pm
+[.lib.pod]perl.pod : [.pod]perl.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlbook.pod : [.pod]perlbook.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlbot.pod : [.pod]perlbot.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlcall.pod : [.pod]perlcall.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perldata.pod : [.pod]perldata.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perldebug.pod : [.pod]perldebug.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perldiag.pod : [.pod]perldiag.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perldsc.pod : [.pod]perldsc.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlembed.pod : [.pod]perlembed.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlform.pod : [.pod]perlform.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlfunc.pod : [.pod]perlfunc.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlguts.pod : [.pod]perlguts.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlipc.pod : [.pod]perlipc.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perllol.pod : [.pod]perllol.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlmod.pod : [.pod]perlmod.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlobj.pod : [.pod]perlobj.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlop.pod : [.pod]perlop.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlovl.pod : [.pod]perlovl.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlpod.pod : [.pod]perlpod.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlre.pod : [.pod]perlre.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlref.pod : [.pod]perlref.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlrun.pod : [.pod]perlrun.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlsec.pod : [.pod]perlsec.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlstyle.pod : [.pod]perlstyle.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlsub.pod : [.pod]perlsub.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlsyn.pod : [.pod]perlsyn.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perltie.pod : [.pod]perltie.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perltoc.pod : [.pod]perltoc.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perltrap.pod : [.pod]perltrap.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlvar.pod : [.pod]perlvar.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlxs.pod : [.pod]perlxs.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlxstut.pod : [.pod]perlxstut.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+[.lib.pod]perlvms.pod : [.vms]perlvms.pod
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ @ Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
+
+printconfig :
+ @ @[.vms]make_command $(MMS) $(MMSQUALIFIERS) $(MMSTARGETS)
+ @ @[.vms]myconfig "$(CC)" "$(CFLAGS)" "$(LINKFLAGS)" "$(LIBS1)" "$(LIBS2)" "$(SOCKLIB)" "$(EXT)" "$(DBG)"
+
.ifdef SOCKET
$(SOCKOBJ) : $(SOCKC) $(SOCKH)
@@ -1129,6 +1347,7 @@ tidy : cleanlis
- If F$Search("Perlshr_Gbl*.Mar;-1") .nes."" Then Purge/NoConfirm/Log Perlshr_Gbl*.Mar
- If F$Search("[.Ext.DynaLoader]DL_VMS$(O);-1").nes."" Then Purge/NoConfirm/Log [.Ext.DynaLoader]DL_VMS$(O)
- If F$Search("[.Ext.DynaLoader]DL_VMS.C;-1").nes."" Then Purge/NoConfirm/Log [.Ext.DynaLoader]DL_VMS.C
+ - If F$Search("[.Ext.Safe...];-1").nes."" Then Purge/NoConfirm/Log [.Ext.Safe]
- If F$Search("[.VMS.Ext...]*.C;-1").nes."" Then Purge/NoConfirm/Log [.VMS.Ext...]*.C
- If F$Search("[.VMS.Ext...]*$(O);-1").nes."" Then Purge/NoConfirm/Log [.VMS.Ext...]*$(O)
- If F$Search("[.Lib.Auto...]*.al;-1").nes."" Then Purge/NoConfirm/Log [.Lib.Auto...]*.al
@@ -1138,8 +1357,10 @@ tidy : cleanlis
- If F$Search("[.Lib]Config.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib]Config.pm
- If F$Search("[.Lib.$(ARCH)]Config.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib.$(ARCH)]Config.pm
- If F$Search("[.Lib.VMS]*.*;-1").nes."" Then Purge/NoConfirm/Log [.Lib.VMS]*.*
- - If F$Search("[.Lib.ExtUtils]MM_VMS.pm;-1").nes."" Then Purge/NoConfirm/Log [.Lib.ExtUtils]MM_VMS.pm
+ - If F$Search("[.Lib.Pod]*.Pod;-1").nes."" Then Purge/NoConfirm/Log [.Lib.Pod]*.Pod
- If F$Search("$(ARCHCORE)*.*").nes."" Then Purge/NoConfirm/Log $(ARCHCORE)*.*
+ - If F$Search("[.utils]*.;-1").nes."" Then Purge/NoConfirm/Log [.utils]*.
+ - If F$Search("[.lib.pod]*.;-1").nes."" Then Purge/NoConfirm/Log [.lib.pod]*.
clean : tidy
- If F$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*/Exclude=PerlShr_*.Opt
@@ -1161,16 +1382,27 @@ clean : tidy
- If F$Search("[.Ext.Socket]Socket.C").nes."" Then Delete/NoConfirm/Log [.Ext.Socket]Socket.C;*
- If F$Search("[.VMS.Ext...]*.C").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*.C;*
- If F$Search("[.VMS.Ext...]*$(O)").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*$(O);*
+ Set Default [.ext.Safe]
+ - $(MMS) clean
+ Set Default [--]
realclean : clean
- If F$Search("*$(OLB)").nes."" Then Delete/NoConfirm/Log *$(OLB);*
- If F$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*
- $(MINIPERL) -e "use File::Path; rmtree(['lib/auto','lib/VMS','lib/$(ARCH)'],1,0);"
- If F$Search("[.Lib]DynaLoader.pm").nes."" Then Delete/NoConfirm/Log [.Lib]DynaLoader.pm;*
- - If F$Search("[.Lib.ExtUtils]MM_VMS.pm").nes."" Then Delete/NoConfirm/Log [.Lib.ExtUtils]MM_VMS.pm;*
- - If F$Search("*$(E)").nes."" Then Delete/NoConfirm/Log *$(E);*
- If F$Search("[.Lib]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib]Config.pm;*
- If F$Search("[.Lib.$(ARCH)]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib.$(ARCH)]Config.pm;*
+ - If F$Search("[.lib.ExtUtils]Miniperl.pm").nes."" Then Delete/NoConfirm/Log [.lib.ExtUtils]Miniperl.pm;*
+ - If F$Search("[.utils]*.").nes."" Then Delete/NoConfirm/Log [.utils]*.;*
+ - If F$Search("[.lib.pod]*.pod").nes."" Then Delete/NoConfirm/Log [.lib.pod]*.pod;*
+ - If F$Search("[.lib.pod]perldoc.").nes."" Then Delete/NoConfirm/Log [.lib.pod]perldoc.;*
+ - If F$Search("[.lib.pod]pod2*.").nes."" Then Delete/NoConfirm/Log [.lib.pod]pod2*.;*
+ Set Default [.ext.Safe]
+ - $(MMS) realclean
+ Set Default [--]
+ - If F$Search("[.Lib]Config.pm").nes."" Then Delete/NoConfirm/Log [.Lib]Config.pm;*
+ - If F$Search("*$(E)").nes."" Then Delete/NoConfirm/Log *$(E);*
cleansrc : clean
- If F$Search("*.C;-1").nes."" Then Purge/NoConfirm/Log *.C
diff --git a/vms/ext/VMS/stdio/Makefile.PL b/vms/ext/stdio/Makefile.PL
index d6683b4af6..d6683b4af6 100644
--- a/vms/ext/VMS/stdio/Makefile.PL
+++ b/vms/ext/stdio/Makefile.PL
diff --git a/vms/ext/VMS/stdio/stdio.pm b/vms/ext/stdio/stdio.pm
index d8b4ec21ec..d8b4ec21ec 100644
--- a/vms/ext/VMS/stdio/stdio.pm
+++ b/vms/ext/stdio/stdio.pm
diff --git a/vms/ext/VMS/stdio/stdio.xs b/vms/ext/stdio/stdio.xs
index 958c0400d1..737229fe0b 100644
--- a/vms/ext/VMS/stdio/stdio.xs
+++ b/vms/ext/stdio/stdio.xs
@@ -90,7 +90,7 @@ vmsfopen(name,...)
if (c == 'a') *(name++) = '>';
}
*(name++) = '&';
- if (do_open(gv,mode,name - mode,fp))
+ if (do_open(gv,mode,name - mode,FALSE,0,0,fp))
sv_setsv(ST(0),newRV((SV*)gv));
}
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index 286695feb3..e2f5b287e3 100644
--- a/vms/gen_shrfls.pl
+++ b/vms/gen_shrfls.pl
@@ -119,8 +119,8 @@ sub scan_enum {
$line =~ s/,?\s*\n?$//;
print "\tfiltered to \\$line\\\n" if $debug > 1;
if ($line =~ /(\w+)$/) {
- print "\tvar name is \\$1\\\n" if $debug > 1;
- $vars{$1}++;
+ print "\tconstant name is \\$1\\\n" if $debug > 1;
+ $enums{$1}++;
}
}
@@ -152,6 +152,7 @@ sub scan_func {
}
}
+$used_expectation_enum = $used_opcode_enum = 0; # avoid warnings
if ($docc) {
open(CPP,"${cc_cmd}/NoObj/PreProc=Sys\$Output ${dir}perl.h|")
or die "$0: Can't preprocess ${dir}perl.h: $!\n";
@@ -190,7 +191,19 @@ LINE: while (<CPP>) {
last LINE unless $_ = <CPP>;
}
print $_ if $debug > 3;
- if (/^EXT/) { &scan_var($_); }
+ if (($type) = /^EXT\s+(\w+)/) {
+ if ($isvaxc) {
+ if ($type eq 'expectation') {
+ $used_expectation_enum++;
+ print "\tsaw global use of enum \"expectation\"\n" if $debug > 1;
+ }
+ if ($type eq 'opcode') {
+ $used_opcode_enum++;
+ print "\tsaw global use of enum \"opcode\"\n" if $debug > 1;
+ }
+ }
+ &scan_var($_);
+ }
}
close CPP;
while (<DATA>) {
@@ -208,6 +221,22 @@ foreach (split /\s+/, $extnames) {
print "Adding boot_$pkgname to \%fcns (for extension $_)\n" if $debug;
}
+# If we're using VAXC, fold in the names of the constants for enums
+# we've seen as the type of global vars.
+if ($isvaxc) {
+ foreach (keys %enums) {
+ if (/^OP/) {
+ $vars{$_}++ if $used_opcode_enum;
+ next;
+ }
+ if (/^X/) {
+ $vars{$_}++ if $used_expectation_enum;
+ next;
+ }
+ print STDERR "Unrecognized enum constant \"$_\" ignored\n";
+ }
+}
+
# Eventually, we'll check against existing copies here, so we can add new
# symbols to an existing options file in an upwardly-compatible manner.
diff --git a/vms/genconfig.pl b/vms/genconfig.pl
index 9200814ef0..a4721ba4b0 100644
--- a/vms/genconfig.pl
+++ b/vms/genconfig.pl
@@ -41,19 +41,20 @@ cf_time='$time'
osname='VMS'
ld='Link'
lddlflags='/Share'
-libc=''
ranlib=''
ar=''
eunicefix=':'
+hint='none'
hintfile=''
intsize='4'
alignbytes='8'
shrplib='define'
usemymalloc='n'
+spitshell='write sys\$output '
EndOfIntro
$cf_by = (getpwuid($<))[0];
-print OUT "cf_by='$cf_by'\nperladmin='$cf_by'\n";
+print OUT "cf_by='$cf_by'\n";
$hw_model = `Write Sys\$Output F\$GetSyi("HW_MODEL")`;
chomp $hw_model;
@@ -68,46 +69,80 @@ else {
$archsufx = 'VAX';
}
$osvers = `Write Sys\$Output F\$GetSyi("VERSION")`;
-$osvers =~ s/^V(\S+)\s*\n?$/$1/;
+$osvers =~ s/^V?(\S+)\s*\n?$/$1/;
print OUT "osvers='$osvers'\n";
foreach (@ARGV) {
($key,$val) = split('=',$_,2);
if ($key eq 'cc') { # Figure out which C compiler we're using
- if (`$val/NoObject/NoList _nla0:/Version` =~ /GNU/) {
- print OUT "vms_cc_type='gcc'\n";
- print OUT "d_attribut='define'\n";
+ my($cc,$ccflags) = split('/',$val,2);
+ my($d_attr);
+ $ccflags = "/$ccflags";
+ if ($ccflags =~s!/DECC!!ig) {
+ $cc .= '/DECC';
+ $cctype = 'decc';
+ $d_attr = 'undef';
+ }
+ elsif ($ccflags =~s!/VAXC!!ig) {
+ $cc .= '/VAXC';
+ $cctype = 'vaxc';
+ $d_attr = 'undef';
+ }
+ elsif (`$val/NoObject/NoList _nla0:/Version` =~ /GNU/) {
+ $cctype = 'gcc';
+ $d_attr = 'define';
}
elsif ($archsufx eq 'VAX' &&
`$val/NoObject/NoList /prefix=all _nla0:` =~ /IVQUAL/) {
- print OUT "vms_cc_type='vaxc'\n";
- print OUT "d_attribut='undef'\n";
+ $cctype = 'vaxc';
+ $d_attr = 'undef';
}
else {
- print OUT "vms_cc_type='decc'\n";
- print OUT "d_attribut='undef'\n";
- # DECC for VAX requires filename in /object qualifier, so we
+ $cctype = 'decc';
+ $d_attr = 'undef';
+ }
+ print OUT "vms_cc_type='$cctype'\n";
+ print OUT "d_attribut='$d_attr'\n";
+ print OUT "cc='$cc'\n";
+ if ( ($cctype eq 'decc' and $archsufx eq 'VAX') || $cctype eq 'gcc') {
+ # gcc and DECC for VAX requires filename in /object qualifier, so we
# have to remove it here. Alas, this means we lose the user's
# object file suffix if it's not .obj.
- $val =~ s#/obj(?:ect)?=[^/\s]+##i if $archsufx eq 'VAX';;
+ $ccflags =~ s#/obj(?:ect)?=[^/\s]+##i;
}
+ print OUT "ccflags='$ccflags'\n";
+ $dosock = ($ccflags =~ m!/DEF[^/]+VMS_DO_SOCKETS!i and
+ $ccflags !~ m!/UND[^/]+VMS_DO_SOCKETS!i);
+ next;
}
print OUT "$key=\'$val\'\n";
- if ($val =~/VMS_DO_SOCKETS/i) {
- $dosock = 1;
- # Are there any other logicals which TCP/IP stacks use for the host name?
- $myname = $ENV{'ARPANET_HOST_NAME'} || $ENV{'INTERNET_HOST_NAME'} ||
- $ENV{'MULTINET_HOST_NAME'} || $ENV{'UCX$INET_HOST'} ||
- $ENV{'TCPWARE_DOMAINNAME'} || $ENV{'NEWS_ADDRESS'};
- if (!$myname) {
- ($myname) = `hostname` =~ /^(\S+)/;
- if ($myname =~ /IVVERB/) {
- warn "Can't determine TCP/IP hostname; skipping \$Config{'myhostname'}";
- }
- }
- print OUT "myhostname='$myname'\n" if $myname;
+}
+
+# Are there any other logicals which TCP/IP stacks use for the host name?
+$myname = $ENV{'ARPANET_HOST_NAME'} || $ENV{'INTERNET_HOST_NAME'} ||
+ $ENV{'MULTINET_HOST_NAME'} || $ENV{'UCX$INET_HOST'} ||
+ $ENV{'TCPWARE_DOMAINNAME'} || $ENV{'NEWS_ADDRESS'};
+if (!$myname) {
+ ($myname) = `hostname` =~ /^(\S+)/;
+ if ($myname =~ /IVVERB/) {
+ warn "Can't determine TCP/IP hostname" if $dosock;
+ $myname = '';
}
}
-if (!$dosock) { print OUT "myhostname='$ENV{'SYS$NODE'}'\n"; }
+$myname = $ENV{'SYS$NODE'} unless $myname;
+($myhostname,$mydomain) = split(/\./,$myname,2);
+print OUT "myhostname='$myhostname'\n" if $myhostname;
+if ($mydomain) {
+ print OUT "mydomain='.$mydomain'\n";
+ print OUT "perladmin='$cf_by\@$myhostname.$mydomain'\n";
+ print OUT "cf_email='$cf_by\@$myhostname.$mydomain'\n";
+}
+else {
+ print OUT "perladmin='$cf_by'\n";
+ print OUT "cf_email='$cf_by'\n";
+}
+chomp($hwname = `Write Sys\$Output F\$GetSyi("HW_NAME")`);
+$hwname = $archsufx if $hwname =~ /IVKEYW/; # *really* old VMS version
+print OUT "myuname='VMS $myname $osvers $hwname'\n";
while (<IN>) { # roll through the comment header in Config.VMS
last if /config-start/;
@@ -122,12 +157,18 @@ while (<IN>) {
s/^\s*//;
$_ = $line . $_;
}
- next unless my ($blocked,$un,$token,$val) = m%(\/\*)?\s*\#\s*(un)?def\w*\s*([A-za-z0-9]\w+)\S*\s*(.*)%;
+ next unless my ($blocked,$un,$token,$val) = m%^(\/\*)?\s*\#\s*(un)?def\w*\s*([A-za-z0-9]\w+)\S*\s*(.*)%;
next if /config-skip/;
$state = ($blocked || $un) ? 'undef' : 'define';
$token =~ tr/A-Z/a-z/;
$token =~ s/_exp$/exp/; # Config.pm has 'privlibexp' etc. where config.h
# has 'privlib_exp' etc.
+ # Fixup differences between Configure vars and config.h manifests
+ # This isn't comprehensize; we fix 'em as we need 'em.
+ $token = 'castneg' if $token eq 'castnegfloat';
+ $token = 'dlsymun' if $token eq 'dlsym_needs_underscore';
+ $token = 'stdstdio' if $token eq 'use_stdio_ptr';
+ $token = 'stdiobase' if $token eq 'use_stdio_base';
$val =~ s%/\*.*\*/\s*%%g; $val =~ s/\s*$//; # strip off trailing comment
$val =~ s/^"//; $val =~ s/"$//; # remove end quotes
$val =~ s/","/ /g; # make signal list look nice
@@ -161,12 +202,25 @@ if (open(OPT,"${outdir}crtl.opt")) {
while (<OPT>) {
next unless m#/(sha|lib)#i;
chomp;
- push(@libs,$_);
+ if (/crtl/i || /gcclib/i) { push(@crtls,$_); }
+ else { push(@libs,$_); }
}
close OPT;
print OUT "libs='",join(' ',@libs),"'\n";
+ push(@crtls,'(DECCRTL)') if $cctype eq 'decc';
+ print OUT "libc='",join(' ',@crtls),"'\n";
+}
+else { warn "Can't read ${outdir}crtl.opt - skipping 'libs' & 'libc'"; }
+
+if (open(PL,"${outdir}patchlevel.h")) {
+ while (<PL>) {
+ next unless /PATCHLEVEL\s+(\S+)/;
+ print OUT "PATCHLEVEL='$1'\n";
+ last;
+ }
+ close PL;
}
-else { warn "Can't read ${outdir}crtl.opt - skipping \$Config{'libs'}"; }
+else { warn "Can't read ${outdir}patchlevel.h - skipping 'PATCHLEVEL'"; }
# simple pager support for perldoc
if (`most nl:` =~ /IVVERB/) {
@@ -186,20 +240,16 @@ __END__
# The definitions in this block are constant across most systems, and
# should only rarely need to be changed.
-PATCHLEVEL=002
ccdlflags=
cccdlflags=
usedl=true
dlobj=dl_vms.obj
dlsrc=dl_vms.c
-d_dlsymun=undef
so=exe
dlext=exe
libpth=/sys$share /sys$library
-d_stdstdio=undef
usevfork=false
castflags=0
-d_castneg=define # should be same as d_castnegfloat from config.vms
signal_t=void
timetype=long
builddir=perl_root:[000000]
@@ -209,6 +259,7 @@ privlib=perl_root:[lib]
installbin=perl_root:[000000]
installman1dir=perl_root:[man.man1]
installman3dir=perl_root:[man.man3]
-man1ext=.rno
-man3ext=.rno
+man1ext=rno
+man3ext=rno
binexp=perl_root:[000000] # should be same as installbin
+useposix=false
diff --git a/vms/make_command.com b/vms/make_command.com
new file mode 100644
index 0000000000..c3a9da8b80
--- /dev/null
+++ b/vms/make_command.com
@@ -0,0 +1,21 @@
+$! MAKE_COMMAND.COM
+$! Record MM[SK]/Make parameters in configuration report
+$!
+$! Author: Peter Prymmer <pvhp@lns62.lns.cornell.edu>
+$! Version: 1.0 18-Jan-1996
+$!
+$! DCL usage (choose one):
+$! @MAKE_COMMAND !or
+$! @MAKE_COMMAND/OUTPUT=MYCONFIG.OUT
+$!------------------------------------------------
+$ $mms = "'"+p1
+$ $makeline = p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8
+$quotable:
+$ if f$locate("""",$makeline).lt.f$length($makeline)
+$ then
+$ $makeline = $makeline - """"
+$ goto quotable
+$ endif
+$ $makeline = f$edit($makeline,"COMPRESS,TRIM")
+$ write sys$output " make_cmd=''$mms'"+" ''$makeline''"
+$!------------------------------------------------
diff --git a/vms/mms2make.pl b/vms/mms2make.pl
index 6fdc924081..6b35e75ffb 100644
--- a/vms/mms2make.pl
+++ b/vms/mms2make.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
#
# mms2make.pl - convert Descrip.MMS file to Makefile
-# Version 2.0 29-Sep-1994
+# Version 2.2 29-Jan-1996
# David Denholm <denholm@conmat.phys.soton.ac.uk>
#
# 1.0 06-Aug-1994 Charles Bailey bailey@genetics.upenn.edu
@@ -18,13 +18,15 @@
# an empty @conditions [assume nesting in descrip.mms is correct]
# 2.1 26-Feb-1995 Charles Bailey bailey@genetics.upenn.edu
# - handle MMS macros generated by MakeMaker
+# 2.2 29-Jan-1996 Charles Bailey bailey@genetics.upenn.edu
+# - Fix output file name to work under Unix
if ($#ARGV > -1 && $ARGV[0] =~ /^[\-\/]trim/i) {
$do_trim = 1;
shift @ARGV;
}
$infile = $#ARGV > -1 ? shift(@ARGV) : "Descrip.MMS";
-$outfile = $#ARGV > -1 ? shift(@ARGV) : "Makefile.";
+$outfile = $#ARGV > -1 ? shift(@ARGV) : "Makefile";
# set any other args in %macros - set VAXC by default
foreach (@ARGV) { $macros{"\U$_"}=1 }
diff --git a/vms/myconfig.com b/vms/myconfig.com
new file mode 100644
index 0000000000..b9f1bcd476
--- /dev/null
+++ b/vms/myconfig.com
@@ -0,0 +1,319 @@
+$! #!/bin/sh ---> MYCONFIG.COM
+
+$! # This script is designed to provide a handy summary of the configuration
+$! # information being used to build perl. This is especially useful if you
+$! # are requesting help from comp.lang.perl on usenet or via mail.
+
+$! DCL-ified by Peter Prymmer <pvhp@lns62.lns.cornell.edu> 22-DEC-1995
+$! DCL usage (choose one):
+$! @MYCONFIG !or
+$! @MYCONFIG/OUTPUT=MYCONFIG.OUT !or
+$! @MYCONFIG [node::][which$disk:][[dir.subdir]]CONFIG.SH !or
+$! @MYCONFIG/OUTPUT=MYCONFIG.OUT [node::][w$disk:][[dir]]CONFIG.SH
+$! version 2:
+$! Incorporates Charles Bailey's ideas about bootstrapping system info -
+$! myconfig.com is now callable as a "myconfig" target in your maker and
+$! may even work if miniperl.exe and config.sh files fail to be made.
+$! Thus if:
+$! MMK/DESCRIP=[.VMS] !(or MMS or MAKE)
+$! does not work then try:
+$! MMK/DESCRIP=[.VMS]/OUTPUT=MYPERLBUILD.PROBLEM !(or MMS or MAKE)
+$! Then discuss the MYPERLBUILD.PROBLEM file with a local expert.
+$! If that still does not work then try:
+$! MMK/DESCRIP=[.VMS]/OUT=MYNONFIG.OUT MYCONFIG !(or MMS or MAKE)
+$! send output (MYNONFIG.OUT) to an outside expert and ask politely for help.
+
+$ ECHO = "WRITE SYS$OUTPUT "
+$ RATHER_LONG_DEFAULT_DIRECTORY_NAME = F$ENVIRONMENT("DEFAULT")
+
+$ if (p1.nes."").and.(p2.eqs."")
+$ then RATHER_LONG_FILENAME_TO_FIND = p1 !no typo-checking (experts only)
+$ else RATHER_LONG_FILENAME_TO_FIND = "CONFIG.SH"
+$ endif
+$Research:
+$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
+$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
+$ then
+$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
+$ then
+$ set default [-]
+$ goto Research
+$ else
+$ ECHO "Can't find the perl config.sh file produced by Configure"
+$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
+$! exit 3
+$ goto cannot_find_config_sh
+$ endif
+$ endif
+
+$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
+$Loop:
+$ read/end_of_file = Done RATHER_LONG_CONFIG_FILE_HANDLE line
+$ name = f$extract(0,f$locate("=",line),line)
+$ start = f$locate("'",line)+1
+$ stop = f$locate("'",line)
+$ value = f$extract(start,stop-start,line)
+$ if (f$locate("#",name).eqs.f$length(name)).and. -
+ (name.nes."").and. -
+ (name.nes."'") - !bug in genconfig.pl (vms) for osvers='' ?
+ then $$'name' = "'" + value !$ not necessary but looks more sh-ish
+$ goto Loop
+
+$Done:
+$ close RATHER_LONG_CONFIG_FILE_HANDLE
+$ goto spit_it_out
+
+$cannot_find_config_sh:
+$! these parameters are assumed to be passed from make/mm[s|k]:
+$! p1=$(CC), p2=$(CFLAGS), p3=$(LINKFLAGS),
+$! p4=$(LIBS1), p5=$(LIBS2), p6=$(SOCKLIB),
+$! p7=$(EXT), p8=$(DBG)
+$! so assign to appropriate $var:
+$ $cc = "'"+p1+"'" ! p1=$(CC) from make
+$ $ccflags = "'"+p2+"'" ! p2=$(CFLAGS) from make
+$ $ldflags = "'"+p3+"'" ! p3=$(LINKFLAGS) from make
+$ $libs = "'"+p4+" "+p5+" "+p6+"'" ! p4$(LIBS1),p5$(LIBS2),p6$(SOCKLIB)frm make
+$ $staticexts = "'"+p7+"'" ! p7=$(EXT) from make
+
+$! hard-coded stuff (for now):
+$ $cppflags = "'"+"'" !(vestigal)
+$ $optimize = "'"+"'" !descrip.mms has /Optimize=2 in $(XTRACCFLAGS)
+
+$! following assigns done via `dcl` calls in genconfig.pl anyway:
+$ $osname = "'"+f$edit(f$getsyi("NODE_SWTYPE"),"COLLAPSE") !genconfig.pl has "osname='VMS'"
+$ $osvers = f$edit(f$getsyi("VERSION")-"V","COLLAPSE")
+$ if f$getsyi("HW_MODEL").GT.1024
+$ then $$archname = "'VMS_AXP'" !string from descrip.mms vmsperl 12-21-95
+$ else $$archname = "'VMS_VAX'" !string from descrip.mms vmsperl 12-21-95
+$ endif
+$ $myname = ""
+$ if $myname.eqs."" then $$myname = f$trnlnm("ARPANET_HOST_NAME")
+$ if $myname.eqs."" then $$myname = f$trnlnm("INTERNET_HOST_NAME")
+$ if $myname.eqs."" then $$myname = f$trnlnm("MULTINET_HOST_NAME")
+$ if $myname.eqs."" then $$myname = f$trnlnm("UCX$INET_HOST_NAME")
+$ if $myname.eqs."" then $$myname = f$trnlnm("TCPWARE_DOMAINNAME")
+$ if $myname.eqs."" then $$myname = f$trnlnm("NEWS_ADDRESS")
+$ if $myname.eqs."" then $$myname = f$trnlnm("SYS$NODE")
+$! Is this same as genconfig.pl ? (spacing/order unknown):
+$ $myuname=$osname+" "+$myname+" "+$osvers+" "+F$GetSyi("HW_NAME")+"'"
+$ $osname = $osname+"'"
+$ $osvers = "'"+$osvers+"'"
+
+$look_for_patchlevel_h:
+$!
+$ RATHER_LONG_FILENAME_TO_FIND = "PATCHLEVEL.H"
+$Research_patchlevel_h:
+$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
+$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
+$ then
+$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
+$ then
+$ set default [-]
+$ goto Research_patchlevel_h
+$ else
+$ ECHO "Can't find the header file patchlevel.h used to make config.sh"
+$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
+$ goto look_for_genconfig.pl
+$ endif
+$ endif
+
+$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
+$read_patchlevel_h:
+$ read/end_of_file = patchlevel_h_Done RATHER_LONG_CONFIG_FILE_HANDLE line
+$ if f$locate("PATCHLEVEL",line).ne.f$length(line)
+$ then
+$ line = f$edit(line,"TRIM,COMPRESS")
+$ $PATCHLEVEL = f$element(2," ",line)
+$ goto patchlevel_h_Done
+$ endif
+$ goto read_patchlevel_h
+
+$patchlevel_h_Done:
+$ close RATHER_LONG_CONFIG_FILE_HANDLE
+$ if $PATCHLEVEL.eqs.""
+$ then
+$ echo "warning: PATCHLEVEL was not found in ''RATHER_LONG_FILENAME_TO_FIND':"
+$ endif
+
+$look_for_genconfig_pl:
+$!
+$ if f$search("VMS.DIR").nes."" then set default [.vms]
+$ RATHER_LONG_FILENAME_TO_FIND = "GENCONFIG.PL"
+$ genconfig_pl_dir = ""
+$Research_genconfig_pl:
+$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
+$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
+$ then
+$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
+$ then
+$ set default [-]
+$ goto Research_genconfig_pl
+$ else
+$ ECHO "Can't find the perl genconfig.pl used to make config.sh"
+$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
+$ goto look_for_config_vms
+$ endif
+$ else !genconfig.pl has been found
+$ genconfig_pl_dir = f$parse(f$environment("DEFAULT"),,,"DIRECTORY",)
+$ endif
+
+$ cnfg_keys = "package/hintfile/ld/dlext/d_stdstdio/"
+$ cnfg_keys = cnfg_keys + "usevfork/usemymalloc/so/libpth/"
+$ cnfg_keys = cnfg_keys + "dlsrc/cccdlflags/ccdlflags/lddlflags/"
+
+$ cnfg_vars = "$package/$hint/$ld/$dlext/$d_stdstdio/"
+$ cnfg_vars = cnfg_vars + "$usevfork/$usemymalloc/$so/$libpth/"
+$ cnfg_vars = cnfg_vars + "$dlsrc/$cccdlflags/$ccdlflags/$lddlflags/"
+
+$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
+$read_genconfig_pl:
+$ read/end_of_file = Genconfig_pl_Done RATHER_LONG_CONFIG_FILE_HANDLE line
+$ if f$locate("=",line).ne.f$length(line) !then may be an assigment
+$ then
+$ name = f$edit( f$extract(0,f$locate("=",line),line), "COLLAPSE")
+$ num = 0
+$key_genconfig_pl:
+$ key = f$element(num,"/",cnfg_keys)
+$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
+$ then
+$ if key.eqs.name !then is key
+$ then
+$ start = f$locate("=",line)+1
+$ stop = f$length(line)
+$ value = f$extract(start,stop-start,line)
+$ var = f$element(num,"/",cnfg_vars)
+$ 'var' = value
+$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches
+$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches
+$ endif
+$ num = num + 1
+$ goto key_genconfig_pl
+$ endif ! not end of cnfg_keys
+$ endif ! then may be an assigment
+$ goto read_genconfig_pl
+
+$Genconfig_pl_Done:
+$ close RATHER_LONG_CONFIG_FILE_HANDLE
+$ if cnfg_vars.nes.""
+$ then
+$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
+$ echo "''cnfg_vars'"
+$ endif
+
+$ if (p8.nes."").and.($ld.nes."") then $ld = $ld + " DBG='"+p8+"'"
+
+$look_for_config_vms:
+$ RATHER_LONG_FILENAME_TO_FIND = "''genconfig_pl_dir'CONFIG.VMS"
+
+$Research_config_vms:
+$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
+$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
+$ then
+$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
+$ then
+$ set default [-]
+$ goto Research_config_vms
+$ else
+$ ECHO "Can't find the perl config.vms used to make config.sh"
+$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
+$ stop
+$ exit 3
+$ endif
+$ endif
+
+$ cnfg_keys = "MEM_ALIGNBYTES/CASTNEGFLOAT/CASTFLAGS/RANDBITS/STDCHAR/"
+$ cnfg_keys = cnfg_keys+"CASTI32/INTSIZE/VOIDFLAGS/DLSYM_NEEDS_UNDERSCORE"
+
+$ cnfg_vars = "$alignbytes/$d_castneg/$castflags/$randbits/$stdchar/"
+$ cnfg_vars = cnfg_vars+"$d_casti32/$intsize/$voidflags/$d_dlsymun/"
+
+$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
+$read_config_vms:
+$ read/end_of_file = config_vms_Done RATHER_LONG_CONFIG_FILE_HANDLE line
+$! look for "#define" or "#undef"
+$ if (f$length(line).ne.0).and.-
+ ((f$locate("#define",line).eq.0).or.(f$locate("#undef",line).eq.0))
+$ then
+$ line = f$edit(line,"COMPRESS, TRIM")
+$ name = f$element(1," ",line) !macro
+$ num = 0
+$key_config_vms:
+$ key = f$element(num,"/",cnfg_keys)
+$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
+$ then
+$ if key.eqs.name !then is key
+$ then
+$ var = f$element(num,"/",cnfg_vars)
+$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches
+$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches
+$ if (f$locate("#undef",line).eq.0)
+$ then
+$ 'var' = "'undef'"
+$ else !is a #define
+$strip_comment:
+$ start = f$locate("/*",line)
+$ if start.ne.f$length(line) !comment started
+$ then
+$ if f$locate("*/",line).ne.f$length(line) !comment stopped
+$ then stop = f$locate("*/",line)+2
+$ else stop = f$locate("*/",line)
+$ endif
+$ comment = f$extract(start,stop-start,line)
+$ line = line - comment
+$ goto strip_comment
+$ endif
+$ line = f$edit(line,"TRIM")
+$ start = f$locate(key,line)+f$length(key)
+$ stop = f$length(line)
+$ value = f$edit(f$extract(start,stop-start,line),"TRIM")
+$ if (value.nes."")
+$ then
+$ 'var' = "'"+value+"'"
+$ else
+$ 'var' = "'define'"
+$ endif
+$ endif !#define
+$ endif ! is key of interest
+$ num = num + 1
+$ goto key_config_vms
+$ endif ! not end of cnfg_keys
+$ endif ! then may be #define or #undef of interest
+$ goto read_config_vms
+
+$config_vms_Done:
+$ close RATHER_LONG_CONFIG_FILE_HANDLE
+$ if cnfg_vars.nes.""
+$ then
+$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
+$ echo "''cnfg_vars'"
+$ endif
+
+$spit_it_out:
+$! $spitshell = ECHO !<<!GROK!THIS!
+$ ECHO " "
+$ ECHO "Summary of my ''$package' (patchlevel ''$PATCHLEVEL') configuration:"
+$ ECHO " Platform:"
+$ ECHO " osname=''$osname', osver=''$osvers', archname=''$archname'"
+$ ECHO " uname=''$myuname'" !->d_has_uname?
+$ ECHO " hint=''$hint'" !->hintfile?
+$ ECHO " static exts=''$staticexts'" ! added for VMS
+$ ECHO " Compiler:"
+$ ECHO " cc=''$cc', optimize=''$optimize', ld=''$ld'"
+$ ECHO " cppflags=''$cppflags'"
+$ ECHO " ccflags =''$ccflags'" !->vms_cc_type?
+$ ECHO " ldflags =''$ldflags'"
+$ ECHO " stdchar=''$stdchar', d_stdstdio=''$d_stdstdio', usevfork=''$usevfork'"
+$ ECHO " voidflags=''$voidflags', castflags=''$castflags', d_casti32=''$d_casti32', d_castneg=''$d_castneg'"
+$ ECHO " intsize=''$intsize', alignbytes=''$alignbytes', usemymalloc=''$usemymalloc', randbits=''$randbits'"
+$ ECHO " Libraries:"
+$ ECHO " so=''$so'"
+$ ECHO " libpth=''$libpth'"
+$ ECHO " libs=''$libs'"
+$ ECHO " libc=''$libc'"
+$ ECHO " Dynamic Linking:"
+$ ECHO " dlsrc=''$dlsrc', dlext=''$dlext', d_dlsymun=''$d_dlsymun'"
+$ ECHO " cccdlflags=''$cccdlflags', ccdlflags=''$ccdlflags', lddlflags=''$lddlflags'"
+$ ECHO " "
+$ !GROK!THIS!
+$ SET DEFAULT 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
+$ EXIT
diff --git a/vms/perlvms.pod b/vms/perlvms.pod
index 87fcb5f7e0..47ee3d3afd 100644
--- a/vms/perlvms.pod
+++ b/vms/perlvms.pod
@@ -104,17 +104,23 @@ In general, the distributed kit for a Perl extension includes
a file named Makefile.PL, which is a Perl program which is used
to create a F<Descrip.MMS> file which can be used to build and
install the files required by the extension. The kit should be
-unpacked into a directory tree E<not> under the main Perl source
+unpacked into a directory tree B<not> under the main Perl source
directory, and the procedure for building the extension is simply
-=over 4
-
$ perl Makefile.PL ! Create Descrip.MMS
$ mmk ! Build necessary files
$ mmk test ! Run test code, if supplied
$ mmk install ! Install into public Perl tree
-=back
+I<N.B.> The procedure by which extensions are built and
+tested creates several levels (at least 4) under the
+directory in which the extension's source files live.
+For this reason, you shouldn't nest the source directory
+too deeply in your directory structure, lest you eccedd RMS'
+maximum of 8 levels of subdirectory in a filespec. (You
+can use rooted logical names to get another 8 levels of
+nesting, if you can't place the files near the top of
+the physical directory structure.)
VMS support for this process in the current release of Perl
is sufficient to handle most extensions. However, it does
@@ -241,10 +247,24 @@ specifications may use either VMS or Unix syntax.
Reading the elements of the %ENV array returns the
translation of the logical name specified by the key,
according to the normal search order of access modes and
-logical name tables. In addition, the keys C<home>,
-C<path>,C<term>, and C<user> return the CRTL "environment
-variables" of the same names. The key C<default> returns the
-current default device and directory specification.
+logical name tables. If you append a semicolon to the
+logical name, followed by an integer, that integer is
+used as the translation index for the logical name,
+so that you can look up successive values for search
+list logical names. For instance, if you say
+
+ $ Define STORY once,upon,a,time,there,was
+ $ perl -e "for ($i = 0; $i <= 6; $i++) " -
+ _$ -e "{ print $ENV{'foo'.$i},' '}"
+
+Perl will print C<ONCE UPON A TIME THERE WAS>.
+
+The %ENV keys C<home>, C<path>,C<term>, and C<user>
+return the CRTL "environment variables" of the same
+names, if these logical names are not defined. The
+key C<default> returns the current default device
+and directory specification, regardless of whether
+there is a logical name DEFAULT defined..
Setting an element of %ENV defines a supervisor-mode logical
name in the process logical name table. C<Undef>ing or
@@ -254,7 +274,8 @@ name table. If you use C<undef>, the %ENV element remains
empty. If you use C<delete>, another attempt is made at
logical name translation after the deletion, so an inner-mode
logical name or a name in another logical name table will
-replace the logical name just deleted.
+replace the logical name just deleted. It is not possible
+at present to define a search list logical name via %ENV.
In all operations on %ENV, the key string is treated as if it
were entirely uppercase, regardless of the case actually
@@ -268,15 +289,15 @@ Perl functions were implemented in the VMS port of Perl
file tests*, abs, alarm, atan, binmode*, bless,
caller, chdir, chmod, chown, chomp, chop, chr,
- close, closedir, cos, defined, delete, die, do,
- each, endpwent, eof, eval, exec*, exists, exit,
- exp, fileno, fork*, getc, getpwent*, getpwnam*,
- getpwuid*, glob, gmtime*, goto, grep, hex, import,
- index, int, join, keys, kill*, last, lc, lcfirst,
- length, local, localtime, log, m//, map, mkdir, my,
- next, no, oct, open, opendir, ord, pack, pipe, pop,
- pos, print, printf, push, q//, qq//, qw//, qx//,
- quotemeta, rand, read, readdir, redo, ref, rename,
+ close, closedir, cos, crypt*, defined, delete,
+ die, do, each, endpwent, eof, eval, exec*, exists,
+ exit, exp, fileno, fork*, getc, getlogin, getpwent*,
+ getpwnam*, getpwuid*, glob, gmtime*, goto, grep, hex,
+ import, index, int, join, keys, kill*, last, lc,
+ lcfirst, length, local, localtime, log, m//, map,
+ mkdir, my, next, no, oct, open, opendir, ord, pack,
+ pipe, pop, pos, print, printf, push, q//, qq//, qw//,
+ qx//, quotemeta, rand, read, readdir, redo, ref, rename,
require, reset, return, reverse, rewinddir, rindex,
rmdir, s///, scalar, seek, seekdir, select(internal),
select (system call)*, setpwent, shift, sin, sleep,
@@ -290,14 +311,12 @@ The following functions were not implemented in the VMS port,
and calling them produces a fatal error (usually) or
undefined behavior (rarely, we hope):
- chroot, crypt, dbmclose, dbmopen, dump, fcntl,
- flock, getlogin, getpgrp, getppid, getpriority,
- getgrent, kill, getgrgid, getgrnam, setgrent,
- endgrent, ioctl, link, lstst, msgctl, msgget,
- msgsend, msgrcv, readlink, select(system call),
- semctl, semget, semop, setpgrp, setpriority, shmctl,
- shmget, shmread, shmwrite, socketpair, symlink,
- syscall, truncate
+ chroot, dbmclose, dbmopen, dump, fcntl, flock,
+ getpgrp, getppid, getpriority, getgrent, getgrgid,
+ getgrnam, setgrent, endgrent, ioctl, link, lstat,
+ msgctl, msgget, msgsend, msgrcv, readlink, semctl,
+ semget, semop, setpgrp, setpriority, shmctl, shmget,
+ shmread, shmwrite, socketpair, symlink, syscall, truncate
The following functions may or may not be implemented,
depending on what type of socket support you've built into
@@ -309,8 +328,8 @@ your copy of Perl:
getnetent, getprotoent, getservent, sethostent,
setnetent, setprotoent, setservent, endhostent,
endnetent, endprotoent, endservent, getsockname,
- getsockopt, listen, recv, send, setsockopt,
- shutdown, socket
+ getsockopt, listen, recv, select(system call)*,
+ send, setsockopt, shutdown, socket
=item File tests
@@ -336,6 +355,33 @@ The C<binmode> operator has no effect under VMS. It will
return TRUE whenever called, but will not affect I/O
operations on the filehandle given as its argument.
+=item crypt PLAINTEXT, USER
+
+The C<crypt> operator uses the C<sys$hash_password> system
+service to generate the hashed representation of PLAINTEXT.
+If USER is a valid username, the algorithm and salt values
+are taken from that user's UAF record. If it is not, then
+the preferred algorithm and a salt of 0 are used. The
+quadword encrypted value is returned as an 8-character string.
+
+The value returned by C<crypt> may be compared against
+the encrypted password from the UAF returned by the C<getpw*>
+functions, in order to authenticate users. If you're
+going to do this, remember that the encrypted password in
+the UAF was generated using uppercase username and
+password strings; you'll have to upcase the arguments to
+C<crypt> to insure that you'll get the proper value:
+
+ sub validate_passwd {
+ my($user,$passwd) = @_;
+ my($pwdhash);
+ if ( !($pwdhash = (getpwnam($user))[1]) ||
+ $pwdhash ne crypt("\U$passwd","\U$name") ) {
+ intruder_alert($name);
+ }
+ return 1;
+ }
+
=item exec LIST
The C<exec> operator behaves in one of two different ways.
@@ -379,7 +425,9 @@ subprocess is not recommended under VMS; wherever possible,
use the C<system> operator or piped filehandles instead.
=item getpwent
+
=item getpwnam
+
=item getpwuid
These operators obtain the information described in L<perlfunc>,
diff --git a/vms/perly_c.vms b/vms/perly_c.vms
index 4cc29e3ec8..86449982b7 100644
--- a/vms/perly_c.vms
+++ b/vms/perly_c.vms
@@ -1,3 +1,4 @@
+/* Postprocessed by vms_yfix.pl 1.1 to add VMS declarations of globals */
#ifndef lint
static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
#endif
@@ -19,17 +20,17 @@ dEXT short yylhs[] = { -1,
9, 9, 9, 9, 30, 30, 8, 8, 8, 8,
8, 8, 8, 8, 10, 10, 25, 25, 29, 29,
1, 1, 1, 1, 2, 2, 32, 32, 28, 28,
- 4, 33, 33, 34, 13, 13, 13, 13, 12, 12,
- 12, 26, 26, 26, 26, 26, 26, 26, 26, 27,
- 27, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 4, 33, 33, 34, 13, 13, 13, 12, 12, 12,
+ 26, 26, 26, 26, 26, 26, 26, 26, 27, 27,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 22, 22, 23, 23, 23, 20, 15,
- 16, 17, 18, 19, 24, 24, 24, 24,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 22, 22, 23, 23, 23, 20,
+ 15, 16, 17, 18, 19, 24, 24, 24, 24,
};
dEXT short yylen[] = { 2,
0, 2, 4, 0, 0, 2, 2, 2, 1, 2,
@@ -37,983 +38,1068 @@ dEXT short yylen[] = { 2,
6, 6, 4, 4, 0, 2, 7, 7, 5, 5,
8, 7, 10, 3, 0, 1, 0, 1, 0, 1,
1, 1, 1, 1, 4, 3, 5, 5, 0, 1,
- 0, 3, 2, 4, 3, 3, 2, 1, 2, 3,
- 1, 3, 5, 6, 3, 5, 2, 4, 4, 1,
- 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 5, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 3, 2, 4,
- 3, 4, 1, 1, 4, 5, 4, 1, 1, 1,
+ 0, 3, 2, 5, 3, 3, 1, 2, 3, 1,
+ 3, 5, 6, 3, 5, 2, 4, 4, 1, 1,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 5, 3, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 3, 2, 3, 2, 4, 3,
+ 4, 1, 5, 1, 4, 5, 4, 1, 1, 1,
5, 6, 5, 6, 5, 4, 5, 1, 1, 3,
4, 3, 2, 2, 4, 5, 4, 5, 1, 2,
- 1, 2, 2, 2, 1, 3, 1, 3, 4, 4,
- 6, 1, 1, 0, 1, 0, 1, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
+ 2, 1, 2, 2, 2, 1, 3, 1, 3, 4,
+ 4, 6, 1, 1, 0, 1, 0, 1, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 1, 1,
};
dEXT short yydefred[] = { 1,
- 0, 5, 0, 40, 51, 51, 0, 0, 6, 41,
+ 0, 5, 0, 40, 51, 51, 0, 51, 6, 41,
7, 9, 0, 42, 43, 44, 0, 0, 0, 53,
- 0, 12, 4, 142, 0, 0, 118, 0, 51, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
- 0, 0, 0, 0, 0, 0, 51, 0, 0, 0,
- 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 12, 4, 143, 0, 0, 118, 0, 138, 0,
+ 51, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 10, 0, 0, 0,
0, 0, 0, 0, 0, 8, 0, 0, 0, 0,
- 0, 108, 110, 104, 0, 0, 143, 0, 46, 0,
- 52, 0, 0, 5, 155, 158, 157, 156, 0, 0,
+ 0, 108, 110, 0, 0, 0, 144, 0, 46, 0,
+ 52, 0, 5, 156, 159, 158, 157, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 153, 0, 124, 0,
- 0, 0, 0, 0, 0, 57, 0, 0, 67, 0,
- 0, 132, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 0, 149, 150, 151, 152, 154,
+ 0, 0, 0, 0, 0, 0, 0, 154, 0, 124,
+ 0, 0, 0, 0, 0, 0, 150, 0, 0, 0,
+ 0, 66, 0, 133, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 98, 0, 151, 152, 153, 155,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 91, 92, 0, 0, 0, 0,
- 0, 0, 0, 11, 45, 50, 0, 54, 0, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 36, 0, 136, 138, 0, 0,
- 0, 0, 0, 0, 101, 0, 122, 0, 0, 0,
- 0, 98, 26, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 70, 0, 71, 0,
- 0, 0, 0, 0, 0, 120, 0, 48, 47, 3,
- 0, 140, 0, 102, 0, 29, 0, 30, 0, 0,
- 0, 23, 0, 24, 0, 0, 0, 139, 148, 68,
- 0, 125, 0, 127, 0, 100, 69, 0, 0, 0,
- 0, 0, 0, 0, 107, 0, 105, 0, 116, 121,
- 66, 0, 0, 0, 0, 19, 0, 0, 0, 0,
- 0, 63, 126, 128, 115, 0, 113, 0, 0, 106,
- 0, 111, 117, 141, 27, 28, 21, 0, 22, 0,
- 32, 0, 114, 112, 64, 0, 0, 31, 0, 0,
- 20, 33,
+ 0, 0, 0, 0, 90, 91, 0, 0, 0, 0,
+ 0, 0, 0, 0, 11, 45, 50, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 36, 0, 137, 139,
+ 0, 0, 0, 0, 0, 0, 100, 0, 122, 0,
+ 0, 0, 97, 26, 0, 0, 0, 0, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 69, 0, 70,
+ 0, 0, 0, 0, 0, 0, 0, 120, 0, 48,
+ 47, 54, 3, 0, 141, 0, 68, 101, 0, 29,
+ 0, 30, 0, 0, 0, 23, 0, 24, 0, 0,
+ 0, 140, 149, 67, 0, 125, 0, 127, 0, 99,
+ 0, 0, 0, 0, 0, 0, 0, 107, 0, 105,
+ 0, 116, 0, 121, 65, 0, 0, 0, 0, 19,
+ 0, 0, 0, 0, 0, 62, 126, 128, 115, 0,
+ 113, 0, 0, 106, 0, 111, 117, 103, 142, 27,
+ 28, 21, 0, 22, 0, 32, 0, 114, 112, 63,
+ 0, 0, 31, 0, 0, 20, 33,
};
dEXT short yydgoto[] = { 1,
- 9, 10, 84, 17, 87, 3, 11, 12, 66, 193,
- 262, 67, 200, 69, 70, 71, 72, 73, 74, 75,
- 195, 83, 201, 89, 185, 77, 240, 177, 13, 142,
+ 9, 10, 83, 17, 86, 3, 11, 12, 66, 195,
+ 266, 67, 202, 69, 70, 71, 72, 73, 74, 75,
+ 197, 122, 203, 88, 187, 77, 241, 178, 13, 142,
2, 14, 15, 16,
};
dEXT short yysindex[] = { 0,
- 0, 0, -105, 0, 0, 0, -47, -232, 0, 0,
- 0, 0, 570, 0, 0, 0, -112, -217, 10, 0,
- 2121, 0, 0, 0, -35, -35, 0, 46, 0, -3,
- 1, 8, 14, 55, 2121, 56, 60, 63, 0, -35,
- 1806, 2121, 941, -178, 1846, 997, 0, 1911, 2121, 2121,
- 2121, 2121, 2121, 2121, 1272, 0, 2121, 2121, 1312, -35,
- -35, -35, -35, -35, -183, 0, 71, 227, 3368, -55,
- -49, 0, 0, 0, 89, 48, 0, 20, 0, -118,
- 0, 71, 85, 0, 0, 0, 0, 0, 2121, 106,
- 2121, -118, 1846, 20, 1846, 20, 1846, 20, 1846, 20,
- 1371, 115, 3368, 116, 1411, 901, 0, 125, 0, 864,
- -1, 864, 41, -53, 2121, 0, 0, -55, 0, 2121,
- 20, 0, 864, 864, 510, 510, 510, -89, -89, 80,
- -38, 510, 510, 0, -84, 0, 0, 0, 0, 0,
- 20, 0, 2121, 1846, 1846, 1846, 1846, 1846, 1846, 1846,
- 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
- 2121, 2121, 2121, 2121, 0, 0, -21, 1846, 1846, 1846,
- 1846, 1846, 1451, 0, 0, 0, -29, 0, -115, 0,
- 1846, 614, 20, -187, 131, -183, -34, -183, -27, -140,
- 4, -140, 114, 208, 0, 1846, 0, 0, 6, -6,
- 135, 1846, 1726, 1766, 0, 57, 0, 71, 2121, 1846,
- 94, 0, 0, 3368, -187, -187, -187, -187, -113, 0,
- 67, 2023, 864, 1613, 445, 685, 3368, 3106, 363, 771,
- 1082, 1235, 1465, 510, 510, 1846, 0, 1846, 0, 147,
- -77, 88, -72, 95, -67, 0, 18, 0, 0, 0,
- 148, 0, 2121, 0, 20, 0, 20, 0, 20, 20,
- 150, 0, 20, 0, 1846, 20, 26, 0, 0, 0,
- 32, 0, 69, 0, 82, 0, 0, -62, 1846, 66,
- 2121, 97, -41, 1846, 0, 68, 0, 73, 0, 0,
- 0, 2844, -183, -183, -140, 0, 1846, -140, 129, -183,
- 20, 0, 0, 0, 0, 99, 0, 3756, 78, 0,
- 153, 0, 0, 0, 0, 0, 0, 84, 0, 1371,
- 0, -183, 0, 0, 0, 20, 155, 0, -140, 20,
- 0, 0,
+ 0, 0, -82, 0, 0, 0, -52, 0, 0, 0,
+ 0, 0, 853, 0, 0, 0, -80, -256, -19, 0,
+ -245, 0, 0, 0, 19, 19, 0, 20, 0, 2177,
+ 0, 0, -2, 1, 28, 41, 133, 2177, 27, 33,
+ 52, 19, 1028, 2177, 1303, -210, 19, 2177, 965, 1359,
+ 2177, 2177, 2177, 2177, 2177, 1415, 0, 2177, 2177, 1478,
+ 19, 19, 19, 19, -225, 0, 71, 209, 1535, -49,
+ -30, 0, 0, 8, 101, 42, 0, 30, 0, -112,
+ 0, 2177, 0, 0, 0, 0, 0, 2177, 127, 2177,
+ 1535, 30, -112, 2177, 30, 2177, 30, 2177, 30, 2177,
+ 30, 1712, 128, 1535, 139, 1768, 965, 0, 141, 0,
+ 1485, -14, 1485, 65, -42, 2177, 0, 71, 0, 71,
+ -49, 0, 2177, 0, 1485, 334, 334, 334, -47, -47,
+ 92, -26, 334, 334, 0, 63, 0, 0, 0, 0,
+ 30, 0, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 0, 0, -27, 2177, 2177, 2177,
+ 2177, 2177, 2177, 1824, 0, 0, 0, -48, 137, -92,
+ 0, 2177, 221, 2177, 30, -191, 151, -225, -22, -225,
+ -12, -147, 7, -147, 138, 5, 0, 2177, 0, 0,
+ 9, -39, 160, 2177, 1887, 2121, 0, 77, 0, 71,
+ 2177, 113, 0, 0, 1535, -191, -191, -191, -191, -86,
+ 0, -20, 395, 1485, 1566, 461, -88, 1535, 4122, 1064,
+ 679, 364, 1120, 728, 334, 334, 2177, 0, 2177, 0,
+ 174, 89, 51, 98, 55, 118, 57, 0, 11, 0,
+ 0, 0, 0, 175, 0, 2177, 0, 0, 30, 0,
+ 30, 0, 30, 30, 178, 0, 30, 0, 2177, 30,
+ 15, 0, 0, 0, 22, 0, 25, 0, 29, 0,
+ 152, 2177, 94, 2177, 59, 177, 2177, 0, 96, 0,
+ 97, 0, 102, 0, 0, 1190, -225, -225, -147, 0,
+ 2177, -147, 176, -225, 30, 0, 0, 0, 0, 205,
+ 0, 3039, 111, 0, 206, 0, 0, 0, 0, 0,
+ 0, 0, 37, 0, 1712, 0, -225, 0, 0, 0,
+ 30, 208, 0, -147, 30, 0, 0,
};
dEXT short yyrindex[] = { 0,
- 0, 0, 141, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 297, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2299, 2164, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2658, 0, 2703, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0, 58, 3, 170, 2748,
- 2796, 0, 0, 0, 2209, 0, 0, 0, 0, -26,
- 0, 2380, 0, 0, 0, 0, 0, 0, 2426, 0,
- 0, 83, 166, 0, 0, 0, 0, 0, 0, 0,
- 154, 0, 1341, 0, 0, 171, 0, 2254, 0, 3507,
- 2748, 3552, 0, 0, 2426, 0, 431, 502, 0, 0,
- 0, 0, 3585, 3630, 2980, 3028, 3073, 2890, 2935, 2471,
- 0, 3152, 3197, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2516, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2253, 505, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2847, 2935,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 0, -35, 10, 53, 3109,
+ 3156, 0, 0, 2298, 1976, 0, 0, 0, 0, -23,
+ 0, 230, 0, 0, 0, 0, 0, 2385, 0, 0,
+ 1004, 0, 168, 253, 0, 0, 0, 0, 0, 0,
+ 0, 254, 0, 2242, 0, 0, 274, 0, 2032, 0,
+ 3844, 3109, 3902, 0, 0, 2385, 0, 2440, 452, 2554,
+ 572, 0, 0, 0, 3981, 3274, 3312, 3421, 3200, 3237,
+ 2661, 0, 3560, 3596, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2714, 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, 845, 0,
- 171, 0, 0, 19, 0, 13, 0, 13, 0, 76,
- 0, 76, 0, 158, 0, 0, 0, 0, 0, 177,
- 0, 0, 0, 0, 0, 0, 0, 2564, 2426, 0,
- 2612, 0, 0, 2080, 23, 30, 39, 52, 827, 0,
- 0, -36, 3678, 1208, 3335, 3414, 2574, 0, 1049, 3739,
- 3646, 3694, 3462, 3245, 3290, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 909,
+ 0, 274, 0, 2385, 0, 39, 0, 107, 0, 107,
+ 0, 170, 0, 170, 0, 262, 0, 0, 0, 0,
+ 0, 288, 0, 0, 0, 0, 0, 0, 0, 2805,
+ 0, 2757, 0, 0, 2650, 49, 58, 61, 64, 365,
+ 0, 0, -31, 4018, 4028, 3719, 630, 2995, 0, 1623,
+ 4106, 4096, 4064, 3756, 3640, 3683, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 171, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 13, 76, 0, 0, 76, 0, 13,
- 0, 0, 0, 0, 0, 0, 0, 776, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
- 0, 13, 0, 0, 0, 0, 0, 0, 76, 0,
- 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 277, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 274, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 107, 107, 170, 0,
+ 0, 170, 0, 107, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 300, 0, 107, 0, 0, 0,
+ 0, 0, 0, 170, 0, 0, 0,
};
dEXT short yygindex[] = { 0,
- 0, 0, 0, 37, -13, 157, 0, 0, 0, -82,
- -168, 470, 360, 3971, 1933, 0, 0, 0, 0, 0,
- 230, -14, -152, 1366, -20, 0, 0, 156, 0, -125,
+ 0, 0, 0, 506, -13, 255, 0, 0, 0, 18,
+ -180, 839, -11, 4398, 2162, 0, 0, 0, 0, 0,
+ 342, -57, -174, 1032, 90, 0, 0, 267, 0, -172,
0, 0, 0, 0,
};
-#define YYTABLESIZE 4252
+#define YYTABLESIZE 4682
dEXT short yytable[] = { 65,
- 61, 168, 211, 79, 81, 206, 257, 81, 212, 250,
- 23, 20, 25, 259, 61, 285, 94, 96, 98, 100,
- 287, 81, 81, 264, 21, 289, 81, 109, 251, 248,
- 305, 119, 49, 150, 122, 170, 93, 269, 204, 80,
- 95, 172, 18, 13, 263, 25, 268, 97, 25, 25,
- 25, 310, 25, 99, 25, 25, 81, 25, 290, 38,
- 256, 13, 258, 16, 175, 92, 301, 169, 81, 238,
- 17, 25, 302, 171, 180, 18, 25, 38, 115, 14,
- 186, 16, 188, 121, 190, 91, 192, 23, 17, 170,
- 61, 141, 15, 23, 101, 104, 49, 14, 58, 105,
- 207, 236, 106, 25, 148, 149, 174, 209, 18, 303,
- 15, 18, 18, 18, 143, 18, 58, 18, 18, 23,
- 18, 169, 304, 23, 326, 280, 317, 213, 173, 319,
- 23, 311, 260, 261, 18, 25, 23, 25, 25, 18,
- 2, 176, 23, 178, 78, 181, 286, 4, 5, 6,
- 58, 7, 8, 288, 196, 309, 197, 4, 5, 6,
- 331, 7, 8, 249, 203, 205, 18, 315, 316, 254,
- 210, 255, 265, 39, 321, 270, 39, 39, 39, 149,
- 39, 276, 39, 39, 279, 39, 284, 320, 291, 297,
- 307, 323, 312, 325, 277, 330, 328, 313, 18, 39,
- 18, 18, 324, 144, 39, 49, 37, 148, 149, 19,
- 61, 146, 35, 61, 148, 149, 13, 147, 37, 148,
- 149, 85, 35, 167, 148, 149, 86, 61, 61, 148,
- 149, 39, 81, 81, 81, 81, 237, 327, 148, 149,
- 179, 293, 76, 294, 299, 295, 296, 183, 266, 298,
- 148, 149, 300, 148, 149, 81, 81, 148, 149, 0,
- 81, 0, 61, 39, 148, 149, 39, 0, 25, 25,
- 25, 25, 25, 25, 0, 25, 25, 25, 25, 25,
- 25, 25, 25, 25, 25, 148, 149, 322, 25, 25,
- 0, 25, 25, 25, 25, 148, 149, 148, 149, 25,
- 25, 25, 25, 25, 0, 0, 25, 25, 25, 148,
- 149, 0, 329, 0, 25, 25, 332, 148, 149, 25,
- 0, 25, 25, 148, 149, 0, 58, 58, 58, 58,
- 0, 18, 18, 18, 18, 18, 18, 0, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 0, 58,
- 58, 18, 18, 0, 18, 18, 18, 18, 148, 149,
- 148, 149, 18, 18, 18, 18, 18, 0, 0, 18,
- 18, 18, 68, 148, 149, 148, 149, 18, 18, 148,
- 149, 0, 18, 0, 18, 18, 148, 149, 148, 149,
- 148, 149, 0, 0, 0, 0, 39, 39, 39, 39,
- 39, 39, 114, 0, 116, 0, 39, 0, 0, 39,
- 39, 39, 39, 0, 131, 0, 39, 39, 135, 39,
- 39, 39, 39, 0, 0, 0, 0, 39, 39, 39,
- 39, 39, 0, 0, 39, 39, 39, 0, 61, 61,
- 61, 61, 39, 39, 0, 0, 0, 39, 0, 39,
- 39, 0, 184, 168, 187, 0, 189, 0, 191, 0,
- 194, 61, 61, 155, 199, 0, 155, 155, 155, 0,
- 155, 142, 155, 155, 142, 155, 144, 145, 146, 147,
- 0, 0, 0, 0, 0, 150, 0, 0, 142, 142,
- 82, 0, 0, 142, 155, 144, 145, 146, 147, 148,
- 149, 0, 0, 215, 216, 217, 218, 219, 220, 221,
- 0, 0, 0, 0, 0, 82, 0, 0, 148, 149,
- 0, 142, 0, 142, 0, 0, 0, 241, 242, 243,
- 244, 245, 247, 0, 156, 168, 0, 156, 156, 156,
- 0, 156, 103, 156, 156, 103, 156, 0, 0, 0,
- 0, 0, 0, 142, 0, 267, 155, 0, 82, 103,
- 103, 271, 273, 275, 103, 156, 0, 150, 0, 278,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 0, 0, 0, 0, 208,
- 0, 0, 0, 0, 103, 282, 0, 283, 0, 0,
- 168, 0, 50, 0, 0, 61, 63, 60, 0, 55,
- 0, 64, 58, 0, 57, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 184, 0, 0, 156, 56, 0,
- 0, 0, 150, 62, 0, 0, 0, 0, 306, 0,
- 0, 0, 0, 0, 0, 152, 153, 154, 155, 0,
- 0, 0, 0, 0, 252, 0, 318, 253, 0, 0,
- 59, 159, 160, 161, 0, 0, 162, 163, 0, 0,
- 164, 0, 0, 165, 166, 167, 157, 0, 82, 68,
- 0, 0, 0, 0, 0, 0, 0, 155, 155, 155,
- 155, 155, 23, 0, 0, 51, 155, 0, 0, 142,
- 142, 142, 142, 0, 168, 0, 0, 155, 142, 155,
- 155, 155, 155, 142, 142, 142, 142, 155, 155, 155,
- 155, 155, 142, 142, 155, 155, 155, 142, 142, 142,
- 142, 142, 155, 155, 142, 142, 150, 155, 142, 155,
- 155, 142, 142, 142, 0, 0, 0, 0, 0, 163,
+ 80, 68, 168, 79, 273, 57, 20, 254, 61, 80,
+ 250, 82, 80, 268, 212, 260, 208, 262, 261, 95,
+ 97, 99, 101, 57, 179, 206, 80, 80, 263, 110,
+ 181, 80, 253, 115, 150, 49, 124, 94, 283, 81,
+ 96, 170, 23, 168, 132, 270, 116, 267, 136, 272,
+ 13, 294, 141, 83, 61, 305, 83, 57, 209, 90,
+ 172, 80, 306, 239, 176, 307, 105, 98, 13, 308,
+ 83, 83, 106, 169, 23, 150, 170, 331, 184, 38,
+ 100, 188, 186, 190, 189, 192, 191, 194, 193, 16,
+ 196, 107, 171, 60, 201, 237, 60, 38, 17, 49,
+ 175, 14, 148, 149, 15, 83, 25, 16, 169, 289,
+ 60, 60, 315, 291, 143, 293, 17, 313, 322, 14,
+ 23, 324, 15, 23, 320, 321, 257, 214, 264, 265,
+ 173, 326, 216, 217, 218, 219, 220, 221, 222, 25,
+ 174, 23, 25, 25, 25, 60, 25, 177, 25, 25,
+ 23, 25, 23, 336, 333, 213, 242, 243, 244, 245,
+ 246, 247, 249, 23, 251, 25, 182, 198, 61, 18,
+ 25, 258, 102, 4, 5, 6, 78, 7, 8, 199,
+ 205, 288, 211, 4, 5, 6, 271, 7, 8, 207,
+ 290, 259, 275, 277, 279, 252, 269, 25, 154, 281,
+ 274, 280, 18, 282, 19, 18, 18, 18, 149, 18,
+ 292, 18, 18, 287, 18, 295, 163, 301, 311, 164,
+ 316, 317, 165, 166, 167, 285, 318, 286, 18, 25,
+ 238, 25, 25, 18, 325, 329, 57, 57, 57, 57,
+ 80, 80, 80, 80, 309, 297, 330, 298, 335, 299,
+ 300, 148, 149, 302, 148, 149, 304, 186, 57, 57,
+ 18, 255, 80, 80, 256, 167, 80, 148, 149, 314,
+ 310, 148, 149, 148, 149, 84, 144, 145, 146, 147,
+ 85, 148, 149, 157, 83, 83, 83, 83, 145, 323,
+ 49, 327, 18, 37, 18, 18, 2, 328, 148, 149,
+ 148, 149, 148, 149, 148, 149, 83, 83, 148, 149,
+ 83, 168, 35, 68, 147, 148, 149, 334, 148, 149,
+ 13, 337, 148, 149, 60, 60, 60, 60, 148, 39,
+ 148, 149, 39, 39, 39, 37, 39, 180, 39, 39,
+ 35, 39, 332, 150, 148, 149, 60, 60, 148, 149,
+ 148, 149, 148, 149, 76, 39, 148, 149, 303, 185,
+ 39, 0, 25, 25, 25, 25, 25, 25, 0, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 148, 149, 0, 25, 25, 39, 25, 25,
+ 25, 148, 149, 0, 0, 25, 25, 25, 25, 25,
+ 0, 0, 25, 25, 0, 56, 0, 0, 56, 25,
+ 0, 148, 149, 25, 0, 25, 25, 0, 0, 39,
+ 0, 0, 39, 56, 168, 18, 18, 18, 18, 18,
+ 18, 0, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 148, 149, 0, 18, 18,
+ 0, 18, 18, 18, 168, 0, 150, 56, 18, 18,
+ 18, 18, 18, 0, 0, 18, 18, 0, 0, 0,
+ 148, 149, 18, 0, 0, 0, 18, 0, 18, 18,
+ 144, 145, 146, 147, 156, 168, 150, 156, 156, 156,
+ 0, 156, 143, 156, 156, 143, 156, 0, 148, 149,
+ 0, 151, 148, 149, 0, 152, 153, 154, 155, 143,
+ 143, 18, 0, 21, 143, 156, 0, 150, 156, 158,
+ 159, 160, 161, 0, 162, 163, 0, 0, 164, 0,
+ 0, 165, 166, 167, 0, 0, 92, 93, 0, 0,
+ 0, 0, 143, 0, 143, 136, 0, 0, 136, 0,
+ 0, 168, 39, 39, 39, 39, 39, 39, 0, 39,
+ 39, 39, 136, 136, 0, 39, 0, 136, 39, 39,
+ 39, 39, 0, 0, 143, 39, 39, 156, 39, 39,
+ 39, 0, 0, 150, 0, 39, 39, 39, 39, 39,
+ 0, 0, 39, 39, 0, 136, 0, 136, 0, 39,
+ 0, 0, 0, 39, 157, 39, 39, 157, 157, 157,
+ 0, 157, 102, 157, 157, 102, 157, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 136, 0, 102,
+ 102, 0, 0, 0, 102, 157, 56, 56, 56, 56,
+ 0, 164, 0, 0, 165, 166, 167, 0, 152, 153,
+ 154, 155, 0, 0, 0, 0, 0, 0, 56, 0,
+ 0, 0, 0, 0, 102, 161, 0, 162, 163, 0,
+ 74, 164, 0, 74, 165, 166, 167, 0, 0, 152,
+ 153, 154, 155, 0, 0, 0, 0, 74, 74, 0,
+ 0, 0, 74, 158, 159, 160, 161, 157, 162, 163,
0, 0, 164, 0, 0, 165, 166, 167, 156, 156,
- 156, 156, 156, 0, 0, 0, 0, 156, 0, 0,
- 103, 103, 103, 103, 0, 168, 0, 0, 156, 103,
- 156, 156, 156, 156, 103, 103, 103, 103, 156, 156,
- 156, 156, 156, 103, 103, 156, 156, 156, 103, 103,
- 103, 103, 103, 156, 156, 103, 103, 150, 156, 103,
- 156, 156, 103, 103, 103, 0, 84, 164, 0, 84,
- 165, 166, 167, 0, 0, 22, 24, 25, 26, 27,
- 28, 0, 0, 84, 84, 29, 0, 0, 30, 31,
- 32, 33, 0, 0, 0, 34, 35, 0, 36, 37,
- 38, 39, 0, 0, 0, 0, 40, 41, 42, 43,
- 44, 168, 0, 45, 46, 47, 0, 56, 84, 0,
- 56, 48, 49, 0, 0, 0, 52, 39, 53, 54,
- 39, 39, 39, 0, 39, 56, 39, 39, 0, 39,
- 0, 151, 0, 150, 0, 0, 152, 153, 154, 155,
- 0, 0, 0, 39, 0, 0, 0, 0, 39, 0,
- 156, 158, 159, 160, 161, 0, 0, 162, 163, 56,
+ 156, 156, 156, 0, 156, 156, 156, 0, 0, 0,
+ 156, 0, 74, 143, 143, 143, 143, 0, 0, 0,
+ 0, 156, 143, 156, 156, 156, 143, 143, 143, 143,
+ 156, 156, 156, 156, 156, 143, 143, 156, 156, 143,
+ 143, 143, 143, 143, 156, 143, 143, 0, 156, 143,
+ 156, 156, 143, 143, 143, 163, 0, 0, 164, 168,
+ 0, 165, 166, 167, 0, 0, 136, 136, 136, 136,
+ 0, 0, 0, 0, 0, 136, 0, 0, 0, 136,
+ 136, 136, 136, 0, 0, 0, 0, 0, 136, 136,
+ 0, 150, 136, 136, 136, 136, 136, 0, 136, 136,
+ 0, 0, 136, 0, 0, 136, 136, 136, 168, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 157, 157,
+ 157, 157, 157, 0, 157, 157, 157, 0, 0, 0,
+ 157, 0, 0, 102, 102, 102, 102, 0, 0, 0,
+ 150, 157, 102, 157, 157, 157, 102, 102, 102, 102,
+ 157, 157, 157, 157, 157, 102, 102, 157, 157, 102,
+ 102, 102, 102, 102, 157, 102, 102, 0, 157, 102,
+ 157, 157, 102, 102, 102, 51, 118, 120, 61, 63,
+ 47, 0, 56, 0, 64, 59, 0, 58, 0, 0,
+ 0, 74, 74, 74, 74, 0, 0, 0, 0, 0,
+ 74, 57, 0, 0, 74, 74, 62, 74, 0, 0,
+ 120, 0, 0, 74, 74, 0, 120, 74, 74, 74,
+ 74, 74, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 39, 0, 60, 39, 39, 39, 0, 39, 0,
+ 39, 39, 0, 39, 120, 0, 0, 0, 0, 0,
+ 0, 210, 0, 152, 153, 154, 155, 39, 0, 0,
+ 0, 0, 39, 0, 0, 23, 0, 0, 52, 160,
+ 161, 0, 162, 163, 0, 0, 164, 0, 0, 165,
+ 166, 167, 0, 0, 0, 0, 0, 51, 0, 39,
+ 61, 63, 47, 0, 56, 0, 64, 59, 0, 58,
+ 0, 0, 0, 0, 154, 155, 0, 0, 0, 0,
+ 0, 0, 120, 0, 0, 0, 0, 0, 62, 0,
+ 0, 39, 163, 0, 39, 164, 0, 0, 165, 166,
+ 167, 0, 0, 0, 135, 0, 0, 135, 0, 0,
+ 0, 0, 0, 0, 0, 60, 0, 89, 0, 0,
+ 51, 135, 135, 61, 63, 47, 0, 56, 0, 64,
+ 59, 0, 58, 108, 0, 0, 0, 0, 117, 0,
+ 123, 0, 0, 0, 0, 0, 0, 23, 0, 0,
+ 52, 62, 137, 138, 139, 140, 135, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 60, 0,
+ 0, 32, 0, 0, 33, 34, 35, 36, 0, 0,
+ 0, 37, 38, 0, 39, 40, 41, 0, 204, 0,
+ 0, 42, 43, 44, 45, 46, 0, 0, 48, 49,
+ 23, 0, 0, 52, 168, 50, 0, 0, 0, 53,
+ 0, 54, 55, 0, 39, 39, 39, 39, 39, 39,
+ 0, 39, 39, 39, 0, 0, 0, 39, 0, 0,
+ 39, 39, 39, 39, 0, 0, 150, 39, 39, 0,
+ 39, 39, 39, 0, 0, 0, 0, 39, 39, 39,
+ 39, 39, 0, 0, 39, 39, 0, 0, 0, 0,
+ 168, 39, 0, 0, 0, 39, 0, 39, 39, 0,
+ 0, 119, 25, 26, 27, 28, 85, 29, 30, 31,
+ 319, 0, 0, 32, 0, 0, 0, 0, 0, 0,
+ 0, 0, 150, 0, 38, 0, 39, 40, 41, 0,
+ 0, 0, 157, 42, 43, 44, 45, 46, 0, 0,
+ 48, 49, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 53, 0, 54, 55, 135, 135, 135, 135, 0,
+ 168, 0, 0, 0, 109, 25, 26, 27, 28, 0,
+ 29, 30, 31, 0, 0, 0, 32, 135, 135, 0,
+ 0, 0, 0, 0, 0, 0, 0, 38, 0, 39,
+ 40, 41, 150, 0, 0, 0, 42, 43, 44, 45,
+ 46, 0, 0, 48, 49, 0, 0, 0, 0, 0,
+ 50, 0, 0, 0, 53, 51, 54, 55, 61, 63,
+ 47, 0, 56, 0, 64, 59, 0, 58, 152, 153,
+ 154, 155, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 114, 0, 159, 160, 161, 62, 162, 163, 0,
0, 164, 0, 0, 165, 166, 167, 0, 0, 0,
- 0, 0, 0, 50, 0, 39, 61, 63, 60, 0,
- 55, 0, 64, 58, 0, 57, 0, 0, 0, 0,
- 0, 0, 0, 0, 168, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0, 0, 39, 0, 154,
- 39, 0, 0, 50, 0, 0, 61, 63, 60, 0,
- 55, 0, 64, 58, 0, 57, 150, 0, 0, 163,
- 0, 59, 164, 0, 0, 165, 166, 167, 0, 113,
- 0, 0, 0, 0, 62, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 23, 0, 0, 51, 0, 0, 50,
- 0, 59, 61, 63, 60, 0, 55, 0, 64, 58,
- 0, 57, 0, 0, 84, 84, 84, 84, 0, 0,
- 0, 0, 0, 152, 153, 154, 155, 0, 0, 0,
- 62, 0, 0, 0, 0, 0, 51, 84, 84, 0,
- 160, 161, 84, 0, 162, 163, 0, 0, 164, 0,
- 0, 165, 166, 167, 0, 0, 0, 59, 0, 83,
- 0, 0, 83, 0, 0, 56, 56, 56, 56, 0,
- 39, 39, 39, 39, 39, 39, 83, 83, 0, 0,
- 39, 83, 0, 39, 39, 39, 39, 0, 56, 23,
- 39, 39, 51, 39, 39, 39, 39, 0, 0, 0,
- 0, 39, 39, 39, 39, 39, 0, 0, 39, 39,
- 39, 83, 0, 0, 0, 0, 39, 39, 154, 155,
- 0, 39, 0, 39, 39, 0, 0, 117, 25, 26,
- 27, 28, 86, 0, 0, 0, 29, 162, 163, 0,
- 0, 164, 168, 0, 165, 166, 167, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 0, 45, 46, 47, 24, 25, 26,
- 27, 28, 48, 49, 150, 0, 29, 52, 0, 53,
- 54, 0, 0, 0, 0, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 0, 45, 46, 47, 0, 0, 0,
- 0, 0, 48, 49, 0, 0, 0, 52, 78, 53,
- 54, 78, 0, 117, 25, 26, 27, 28, 86, 0,
- 0, 0, 29, 0, 0, 78, 78, 0, 0, 0,
- 78, 0, 0, 35, 0, 36, 37, 38, 39, 0,
- 0, 0, 0, 40, 41, 42, 43, 44, 0, 0,
- 0, 46, 47, 0, 0, 0, 0, 0, 48, 49,
- 78, 0, 0, 52, 50, 53, 54, 61, 63, 60,
- 0, 55, 130, 64, 58, 0, 57, 83, 83, 83,
- 83, 0, 0, 0, 0, 168, 83, 0, 0, 0,
- 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
- 83, 83, 0, 0, 50, 83, 83, 61, 63, 60,
- 0, 55, 0, 64, 58, 0, 57, 150, 0, 0,
- 0, 0, 59, 0, 152, 153, 154, 155, 0, 0,
- 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
- 0, 130, 161, 0, 130, 162, 163, 0, 0, 164,
- 0, 90, 165, 166, 167, 0, 0, 51, 130, 130,
- 0, 0, 59, 50, 134, 107, 61, 63, 60, 0,
- 55, 120, 64, 58, 0, 57, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 136, 137, 138, 139, 140,
- 0, 0, 0, 130, 62, 0, 0, 51, 0, 0,
- 0, 0, 0, 50, 0, 0, 61, 63, 60, 0,
- 55, 198, 64, 58, 0, 57, 0, 0, 0, 0,
- 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 202, 0, 0, 62, 0, 78, 78, 78, 78,
- 0, 0, 0, 50, 0, 78, 61, 63, 60, 0,
- 55, 246, 64, 58, 0, 57, 51, 0, 0, 78,
- 78, 59, 0, 0, 78, 78, 78, 78, 78, 0,
- 0, 0, 0, 0, 62, 0, 0, 152, 153, 154,
- 155, 0, 0, 0, 0, 0, 0, 0, 24, 25,
- 26, 27, 28, 0, 0, 0, 51, 29, 162, 163,
- 0, 59, 164, 0, 0, 165, 166, 167, 35, 0,
- 36, 37, 38, 39, 0, 168, 0, 0, 40, 41,
- 42, 43, 44, 0, 0, 45, 46, 47, 24, 25,
- 26, 27, 28, 48, 49, 0, 51, 29, 52, 0,
- 53, 54, 0, 0, 0, 0, 0, 150, 35, 0,
- 36, 37, 38, 39, 0, 0, 0, 0, 40, 41,
- 42, 43, 44, 0, 0, 45, 46, 47, 0, 130,
- 130, 130, 130, 48, 49, 0, 0, 0, 52, 0,
- 53, 54, 0, 0, 0, 0, 22, 24, 25, 26,
- 27, 28, 130, 130, 0, 0, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 0, 45, 46, 47, 24, 25, 26,
- 27, 28, 48, 49, 0, 0, 29, 52, 0, 53,
- 54, 0, 0, 0, 0, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 168, 45, 46, 47, 24, 25, 26,
- 27, 28, 48, 49, 0, 0, 29, 52, 0, 53,
- 54, 0, 0, 0, 0, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 150, 0, 40, 41, 42,
- 43, 44, 0, 0, 45, 46, 47, 0, 0, 154,
- 155, 0, 48, 49, 0, 0, 0, 52, 50, 53,
- 54, 61, 63, 60, 0, 55, 272, 64, 58, 163,
- 57, 0, 164, 0, 0, 165, 166, 167, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
- 0, 61, 63, 60, 0, 55, 274, 64, 58, 0,
- 57, 0, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
- 0, 61, 63, 60, 0, 55, 0, 64, 58, 0,
- 57, 51, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
- 0, 61, 63, 60, 0, 55, 0, 64, 58, 0,
- 57, 51, 0, 0, 0, 152, 59, 154, 155, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 0, 0, 0, 0, 0, 162, 163, 0, 0,
- 164, 0, 0, 165, 166, 167, 0, 0, 23, 0,
- 0, 51, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 0, 50, 0, 0, 61, 63, 60, 0,
- 55, 0, 64, 58, 0, 57, 0, 88, 88, 0,
- 0, 0, 0, 0, 0, 0, 102, 0, 0, 0,
- 0, 51, 88, 111, 62, 0, 0, 0, 118, 0,
- 0, 0, 24, 25, 26, 27, 28, 0, 0, 0,
- 0, 29, 88, 88, 88, 88, 88, 0, 0, 0,
- 0, 59, 35, 0, 36, 37, 38, 39, 0, 0,
- 0, 0, 40, 41, 42, 43, 44, 0, 0, 45,
- 46, 47, 24, 25, 26, 27, 28, 48, 49, 0,
- 0, 29, 52, 23, 53, 54, 51, 0, 118, 0,
- 0, 0, 35, 0, 36, 37, 38, 39, 0, 0,
- 0, 0, 40, 41, 42, 43, 44, 0, 0, 45,
- 46, 47, 108, 25, 26, 27, 28, 48, 49, 0,
- 0, 29, 52, 0, 53, 54, 0, 0, 0, 0,
- 0, 0, 35, 0, 36, 37, 38, 39, 0, 0,
- 0, 0, 40, 41, 42, 43, 44, 0, 0, 239,
- 46, 47, 24, 25, 26, 27, 28, 48, 49, 0,
- 0, 29, 52, 168, 53, 54, 0, 0, 0, 0,
- 60, 0, 35, 60, 36, 37, 38, 39, 0, 0,
- 0, 0, 40, 41, 42, 43, 44, 60, 60, 45,
- 46, 47, 0, 0, 0, 150, 0, 48, 49, 0,
- 0, 0, 52, 50, 53, 54, 61, 63, 60, 0,
- 55, 0, 64, 58, 0, 57, 0, 24, 25, 26,
- 27, 28, 60, 0, 0, 0, 29, 0, 0, 0,
- 0, 0, 0, 0, 62, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 0, 135, 46, 47, 135, 0, 0,
- 0, 59, 48, 49, 0, 0, 0, 52, 0, 53,
- 54, 135, 135, 0, 0, 0, 135, 0, 0, 0,
+ 0, 51, 0, 60, 61, 63, 47, 0, 56, 0,
+ 64, 59, 0, 58, 152, 153, 154, 155, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 62, 162, 163, 0, 0, 164, 52, 0,
+ 165, 166, 167, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 0, 60,
+ 61, 63, 47, 0, 56, 131, 64, 59, 0, 58,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 0, 0, 119,
- 0, 0, 119, 0, 135, 0, 135, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 119, 119, 0, 0,
- 0, 119, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 0, 0, 0, 142, 0, 0, 142, 0, 119,
- 0, 119, 0, 0, 0, 152, 153, 154, 155, 0,
- 0, 142, 142, 0, 0, 0, 142, 0, 0, 0,
- 158, 159, 160, 161, 0, 0, 162, 163, 0, 0,
- 164, 119, 0, 165, 166, 167, 0, 0, 0, 129,
- 0, 0, 129, 0, 142, 0, 142, 0, 60, 60,
- 60, 60, 0, 0, 0, 0, 129, 129, 0, 0,
- 0, 129, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 60, 60, 0, 0, 0, 142, 24, 25, 26,
- 27, 28, 0, 0, 0, 0, 29, 0, 0, 0,
- 0, 129, 0, 0, 0, 0, 0, 35, 0, 36,
- 37, 38, 39, 0, 0, 0, 0, 40, 41, 42,
- 43, 44, 0, 0, 0, 46, 47, 0, 0, 0,
- 145, 129, 48, 49, 0, 0, 0, 52, 0, 53,
- 54, 0, 135, 135, 135, 135, 0, 145, 145, 0,
- 0, 135, 145, 0, 0, 0, 135, 135, 135, 135,
- 0, 0, 0, 0, 0, 135, 135, 0, 0, 0,
- 135, 135, 135, 135, 135, 0, 144, 135, 135, 144,
- 145, 135, 145, 0, 135, 135, 135, 119, 119, 119,
- 119, 0, 0, 144, 144, 0, 119, 0, 144, 0,
- 0, 119, 119, 119, 119, 0, 0, 0, 0, 0,
- 119, 119, 145, 0, 0, 119, 119, 119, 119, 119,
- 0, 97, 119, 119, 97, 0, 119, 0, 144, 119,
- 119, 119, 142, 142, 142, 142, 0, 0, 97, 97,
- 0, 142, 0, 97, 0, 0, 142, 142, 142, 142,
- 0, 0, 0, 0, 0, 142, 142, 0, 144, 0,
- 142, 142, 142, 142, 142, 0, 59, 142, 142, 59,
- 0, 142, 0, 97, 142, 142, 142, 129, 129, 129,
- 129, 0, 0, 59, 59, 0, 129, 0, 59, 0,
- 0, 129, 129, 129, 129, 0, 0, 0, 0, 0,
- 129, 129, 0, 97, 0, 129, 129, 129, 129, 129,
- 0, 0, 129, 129, 62, 0, 129, 0, 59, 129,
- 129, 129, 0, 0, 72, 0, 0, 72, 0, 0,
- 0, 62, 62, 0, 0, 0, 62, 0, 0, 0,
- 0, 72, 72, 0, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 145, 145,
- 145, 145, 96, 0, 62, 96, 62, 145, 0, 0,
- 0, 0, 145, 145, 145, 145, 72, 0, 0, 96,
- 96, 145, 145, 0, 96, 0, 145, 145, 145, 145,
- 145, 0, 0, 145, 145, 0, 62, 145, 0, 0,
- 145, 145, 145, 0, 144, 144, 144, 144, 144, 0,
- 0, 144, 0, 144, 96, 0, 0, 0, 144, 144,
- 144, 144, 0, 0, 0, 144, 144, 144, 144, 0,
- 144, 0, 144, 144, 144, 144, 144, 0, 0, 144,
- 144, 0, 0, 144, 96, 0, 144, 144, 144, 97,
- 97, 97, 97, 131, 0, 0, 131, 0, 97, 0,
- 144, 0, 0, 97, 97, 97, 97, 0, 0, 0,
- 131, 131, 97, 97, 0, 131, 0, 97, 97, 97,
- 97, 97, 0, 0, 97, 97, 0, 0, 97, 0,
- 0, 97, 97, 97, 59, 59, 59, 59, 103, 0,
- 0, 103, 0, 59, 0, 131, 0, 0, 59, 59,
- 59, 59, 0, 0, 0, 103, 103, 59, 59, 0,
- 103, 0, 59, 59, 59, 59, 59, 0, 0, 59,
- 59, 0, 0, 59, 0, 0, 59, 59, 59, 0,
- 0, 0, 62, 62, 62, 62, 109, 0, 0, 109,
- 103, 62, 72, 72, 72, 72, 62, 62, 62, 62,
- 0, 0, 0, 109, 109, 62, 62, 0, 109, 0,
- 62, 62, 62, 62, 62, 72, 72, 62, 62, 0,
- 0, 62, 0, 0, 62, 62, 62, 0, 0, 0,
- 96, 96, 96, 96, 314, 0, 0, 0, 109, 96,
- 0, 0, 0, 0, 96, 96, 96, 96, 0, 0,
- 0, 0, 0, 96, 96, 0, 157, 0, 96, 96,
- 96, 96, 96, 0, 0, 96, 96, 0, 0, 96,
- 0, 0, 96, 96, 96, 0, 144, 144, 144, 144,
- 93, 0, 0, 93, 168, 144, 0, 0, 0, 0,
- 144, 144, 144, 144, 0, 0, 0, 93, 93, 144,
- 144, 0, 93, 0, 144, 144, 144, 144, 144, 0,
- 0, 144, 144, 0, 0, 144, 150, 0, 144, 144,
- 144, 131, 131, 131, 131, 94, 0, 0, 94, 0,
- 131, 0, 93, 0, 0, 131, 131, 131, 131, 0,
- 0, 0, 94, 94, 131, 131, 0, 94, 0, 131,
- 131, 131, 131, 131, 0, 0, 131, 131, 0, 0,
- 131, 0, 0, 131, 131, 131, 103, 103, 103, 103,
- 88, 0, 0, 88, 0, 103, 0, 94, 0, 0,
- 103, 103, 103, 103, 0, 0, 0, 88, 88, 103,
- 103, 0, 88, 0, 103, 103, 103, 103, 103, 0,
- 0, 103, 103, 0, 0, 103, 0, 0, 103, 103,
- 103, 0, 0, 0, 109, 109, 109, 109, 89, 0,
- 0, 89, 88, 109, 0, 0, 0, 0, 109, 109,
- 109, 109, 0, 0, 0, 89, 89, 109, 109, 0,
- 89, 0, 109, 109, 109, 109, 109, 0, 0, 109,
- 109, 0, 0, 109, 0, 0, 109, 109, 109, 0,
- 0, 0, 0, 90, 0, 0, 90, 0, 0, 0,
- 89, 151, 0, 0, 0, 0, 152, 153, 154, 155,
- 90, 90, 0, 0, 0, 90, 0, 0, 0, 0,
- 156, 158, 159, 160, 161, 0, 0, 162, 163, 0,
- 0, 164, 0, 0, 165, 166, 167, 0, 93, 93,
- 93, 93, 0, 281, 0, 90, 0, 93, 157, 0,
- 0, 0, 93, 93, 93, 93, 0, 0, 0, 0,
- 0, 93, 93, 0, 0, 0, 93, 93, 93, 93,
- 93, 0, 86, 93, 93, 86, 168, 93, 0, 0,
- 0, 0, 0, 94, 94, 94, 94, 0, 0, 86,
- 86, 0, 94, 0, 86, 0, 0, 94, 94, 94,
- 94, 0, 0, 0, 0, 0, 94, 94, 150, 0,
- 0, 94, 94, 94, 94, 94, 0, 87, 94, 94,
- 87, 0, 94, 0, 86, 0, 0, 0, 88, 88,
- 88, 88, 0, 0, 87, 87, 0, 88, 0, 87,
- 0, 0, 88, 88, 88, 88, 0, 0, 0, 0,
- 0, 88, 88, 0, 0, 0, 88, 88, 88, 88,
- 88, 0, 0, 88, 88, 85, 0, 0, 85, 87,
- 0, 0, 0, 0, 0, 0, 89, 89, 89, 89,
- 0, 0, 85, 85, 0, 89, 0, 85, 0, 0,
- 89, 89, 89, 89, 0, 0, 0, 0, 0, 89,
- 89, 0, 0, 0, 89, 89, 89, 89, 89, 0,
- 73, 89, 89, 73, 0, 0, 0, 85, 0, 0,
- 0, 90, 90, 90, 90, 0, 0, 73, 73, 0,
- 90, 0, 73, 0, 0, 90, 90, 90, 90, 0,
- 0, 0, 0, 0, 90, 90, 0, 0, 0, 90,
- 90, 90, 90, 90, 0, 74, 90, 90, 74, 0,
- 0, 0, 73, 151, 0, 0, 0, 0, 152, 153,
- 154, 155, 74, 74, 0, 0, 0, 74, 0, 0,
- 0, 0, 156, 158, 159, 160, 161, 0, 0, 162,
+ 151, 0, 0, 0, 152, 153, 154, 155, 62, 0,
+ 0, 23, 0, 0, 52, 0, 0, 156, 158, 159,
+ 160, 161, 0, 162, 163, 0, 0, 164, 0, 0,
+ 165, 166, 167, 0, 0, 60, 0, 0, 0, 0,
+ 51, 0, 0, 61, 63, 47, 0, 56, 0, 64,
+ 59, 0, 58, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 52, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 60, 0,
+ 135, 32, 0, 0, 0, 168, 0, 0, 0, 0,
+ 0, 0, 38, 0, 39, 40, 41, 0, 0, 0,
+ 0, 42, 43, 44, 45, 46, 0, 157, 48, 49,
+ 0, 0, 0, 52, 0, 50, 0, 150, 0, 53,
+ 0, 54, 55, 0, 0, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 0, 168, 0, 32, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
+ 39, 40, 41, 0, 0, 0, 0, 42, 43, 44,
+ 45, 46, 0, 0, 48, 49, 168, 150, 0, 0,
+ 0, 50, 0, 82, 0, 53, 82, 54, 55, 0,
+ 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
+ 82, 82, 0, 32, 0, 82, 0, 0, 150, 0,
+ 0, 0, 0, 0, 38, 0, 39, 40, 41, 0,
+ 0, 0, 0, 42, 43, 44, 45, 46, 0, 0,
+ 48, 49, 0, 0, 0, 82, 0, 50, 0, 0,
+ 0, 53, 0, 54, 55, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 24, 25, 26, 27, 28, 0,
+ 29, 30, 31, 0, 51, 0, 32, 61, 63, 47,
+ 0, 56, 0, 64, 59, 0, 58, 38, 0, 39,
+ 40, 41, 0, 0, 0, 0, 42, 43, 44, 45,
+ 46, 154, 155, 48, 49, 62, 0, 0, 0, 0,
+ 50, 0, 0, 0, 53, 0, 54, 55, 162, 163,
+ 0, 0, 164, 0, 0, 165, 166, 167, 0, 0,
+ 51, 0, 60, 61, 63, 47, 0, 56, 200, 64,
+ 59, 0, 58, 0, 0, 151, 0, 0, 0, 152,
+ 153, 154, 155, 0, 0, 0, 0, 0, 0, 0,
+ 0, 62, 156, 158, 159, 160, 161, 52, 162, 163,
+ 0, 0, 164, 0, 0, 165, 166, 167, 0, 0,
+ 152, 0, 154, 155, 0, 0, 51, 0, 60, 61,
+ 63, 47, 0, 56, 248, 64, 59, 0, 58, 162,
163, 0, 0, 164, 0, 0, 165, 166, 167, 0,
- 86, 86, 86, 86, 0, 0, 0, 74, 0, 86,
- 157, 0, 0, 0, 86, 86, 86, 86, 0, 0,
- 0, 0, 0, 86, 86, 0, 0, 0, 86, 86,
- 86, 86, 86, 0, 75, 86, 86, 75, 168, 0,
- 0, 0, 0, 0, 0, 87, 87, 87, 87, 0,
- 0, 75, 75, 0, 87, 0, 75, 0, 0, 87,
- 87, 87, 87, 0, 0, 0, 0, 0, 87, 87,
- 150, 0, 0, 87, 87, 87, 87, 87, 0, 0,
- 87, 87, 76, 0, 0, 76, 75, 0, 0, 0,
- 0, 0, 0, 85, 85, 85, 85, 0, 0, 76,
- 76, 0, 85, 0, 76, 0, 0, 85, 85, 85,
- 85, 0, 0, 0, 0, 0, 85, 85, 0, 0,
- 0, 85, 85, 85, 85, 85, 0, 123, 85, 85,
- 123, 0, 0, 0, 76, 0, 0, 0, 73, 73,
- 73, 73, 0, 0, 123, 123, 0, 73, 0, 123,
- 0, 0, 73, 73, 73, 73, 0, 0, 0, 0,
- 0, 73, 73, 0, 0, 0, 73, 73, 73, 73,
- 73, 0, 95, 73, 73, 95, 0, 0, 0, 123,
- 0, 0, 0, 74, 74, 74, 74, 0, 0, 95,
- 95, 0, 74, 0, 95, 0, 0, 74, 74, 74,
- 74, 0, 0, 0, 0, 133, 74, 74, 133, 0,
- 0, 74, 74, 74, 74, 74, 0, 0, 74, 0,
- 0, 0, 133, 133, 95, 151, 0, 133, 0, 0,
- 152, 153, 154, 155, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 156, 158, 159, 160, 161, 0,
- 134, 162, 163, 134, 0, 164, 0, 133, 165, 166,
- 167, 0, 75, 75, 75, 75, 80, 134, 134, 80,
- 0, 75, 134, 0, 0, 0, 75, 75, 0, 75,
- 0, 0, 0, 80, 80, 75, 75, 0, 80, 0,
- 75, 75, 75, 75, 75, 0, 0, 75, 77, 0,
- 0, 77, 134, 0, 0, 0, 0, 0, 0, 0,
- 76, 76, 76, 76, 79, 77, 77, 79, 80, 76,
- 77, 0, 0, 0, 76, 76, 0, 0, 0, 0,
- 0, 79, 79, 76, 76, 0, 79, 0, 76, 76,
- 76, 76, 76, 0, 0, 76, 0, 0, 0, 0,
- 77, 0, 0, 0, 0, 123, 123, 123, 123, 82,
- 0, 0, 82, 0, 123, 0, 79, 0, 0, 123,
- 123, 0, 0, 0, 0, 0, 82, 82, 123, 123,
- 0, 82, 0, 123, 123, 123, 123, 123, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 157, 0,
- 95, 95, 95, 95, 0, 0, 0, 0, 0, 95,
- 0, 82, 0, 0, 95, 95, 0, 0, 0, 0,
- 0, 0, 0, 95, 95, 0, 168, 0, 95, 95,
- 95, 95, 95, 133, 133, 133, 133, 0, 0, 0,
- 0, 0, 133, 0, 0, 0, 0, 133, 133, 0,
- 0, 0, 0, 0, 0, 0, 133, 133, 150, 0,
- 0, 133, 133, 133, 133, 133, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 134, 134,
- 134, 134, 0, 0, 0, 0, 0, 134, 0, 0,
- 0, 0, 134, 134, 80, 80, 80, 80, 0, 0,
- 0, 134, 134, 80, 0, 0, 134, 134, 134, 134,
- 134, 0, 0, 0, 0, 0, 0, 80, 80, 0,
- 0, 0, 80, 80, 80, 80, 77, 77, 77, 77,
- 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
- 0, 77, 79, 79, 79, 79, 0, 0, 0, 77,
- 77, 79, 0, 0, 77, 77, 77, 77, 77, 0,
- 0, 0, 0, 0, 0, 79, 79, 0, 0, 0,
- 79, 79, 79, 79, 79, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 103, 0, 82, 82, 82,
- 82, 110, 112, 0, 0, 0, 82, 0, 123, 124,
- 125, 126, 127, 128, 129, 0, 0, 132, 133, 0,
- 82, 82, 0, 151, 0, 82, 82, 82, 152, 153,
- 154, 155, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 158, 159, 160, 161, 0, 0, 162,
- 163, 182, 0, 164, 0, 0, 165, 166, 167, 0,
+ 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
+ 0, 0, 0, 52, 82, 82, 82, 82, 0, 0,
+ 0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 60, 0, 82, 82, 0, 51,
+ 82, 82, 61, 63, 47, 0, 56, 276, 64, 59,
+ 0, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
+ 62, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 22, 24, 25,
+ 26, 27, 28, 0, 29, 30, 31, 60, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 38, 0, 39, 40, 41, 0, 0, 0, 0,
+ 42, 43, 44, 45, 46, 0, 0, 48, 49, 0,
+ 0, 0, 52, 0, 50, 0, 119, 0, 53, 119,
+ 54, 55, 0, 0, 24, 25, 26, 27, 28, 0,
+ 29, 30, 31, 119, 119, 0, 32, 0, 119, 0,
+ 0, 0, 0, 0, 0, 0, 0, 38, 0, 39,
+ 40, 41, 0, 0, 0, 0, 42, 43, 44, 45,
+ 46, 0, 0, 48, 49, 0, 119, 0, 119, 0,
+ 50, 0, 143, 0, 53, 143, 54, 55, 0, 0,
+ 24, 25, 26, 27, 28, 0, 29, 30, 31, 143,
+ 143, 0, 32, 0, 143, 0, 0, 0, 119, 0,
+ 0, 0, 0, 38, 0, 39, 40, 41, 0, 0,
+ 0, 0, 42, 43, 44, 45, 46, 0, 0, 48,
+ 49, 0, 143, 0, 143, 0, 50, 0, 0, 0,
+ 53, 0, 54, 55, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 0, 51, 143, 32, 61, 63, 47, 0,
+ 56, 278, 64, 59, 0, 58, 38, 0, 39, 40,
+ 41, 0, 0, 0, 0, 42, 43, 44, 45, 46,
+ 0, 0, 48, 49, 62, 0, 87, 87, 0, 50,
+ 0, 0, 0, 53, 0, 54, 55, 0, 103, 0,
+ 0, 0, 0, 87, 112, 0, 0, 0, 87, 51,
+ 121, 60, 61, 63, 47, 0, 56, 0, 64, 59,
+ 0, 58, 87, 87, 87, 87, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62, 0, 0, 0, 0, 0, 52, 119, 119, 119,
+ 119, 0, 0, 0, 0, 0, 119, 0, 0, 0,
+ 119, 119, 119, 119, 0, 0, 0, 60, 121, 119,
+ 119, 0, 0, 119, 119, 119, 119, 119, 0, 119,
+ 119, 0, 130, 119, 0, 130, 119, 119, 119, 0,
+ 0, 0, 0, 129, 0, 0, 129, 0, 0, 130,
+ 130, 0, 52, 143, 143, 143, 143, 0, 0, 0,
+ 129, 129, 143, 0, 0, 129, 143, 143, 143, 143,
+ 0, 0, 0, 0, 0, 143, 143, 0, 240, 143,
+ 143, 143, 143, 143, 130, 143, 143, 0, 104, 143,
+ 0, 104, 143, 143, 143, 129, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 104, 104, 0, 0, 0,
+ 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 129, 0, 24, 25, 26,
+ 27, 28, 0, 29, 30, 31, 0, 0, 104, 32,
+ 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 38, 0, 39, 40, 41, 0, 0, 0, 0, 42,
+ 43, 44, 45, 46, 0, 0, 48, 49, 0, 0,
+ 0, 0, 0, 50, 0, 145, 0, 53, 145, 54,
+ 55, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 145, 145, 0, 32, 0, 145, 0, 0,
+ 0, 0, 0, 0, 0, 0, 38, 0, 39, 40,
+ 41, 0, 0, 0, 0, 42, 43, 44, 45, 46,
+ 0, 0, 48, 49, 0, 0, 0, 145, 0, 50,
+ 131, 0, 0, 53, 0, 54, 55, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 131, 131, 0,
+ 0, 0, 131, 0, 0, 0, 0, 145, 0, 0,
+ 0, 0, 0, 130, 130, 130, 130, 0, 0, 0,
+ 0, 0, 0, 0, 129, 129, 129, 129, 0, 0,
+ 131, 0, 131, 129, 0, 130, 130, 129, 129, 129,
+ 129, 0, 0, 0, 0, 0, 129, 129, 0, 0,
+ 129, 129, 129, 129, 129, 0, 129, 129, 0, 0,
+ 129, 0, 131, 129, 129, 129, 0, 0, 0, 104,
+ 104, 104, 104, 0, 0, 0, 0, 0, 104, 0,
+ 0, 0, 104, 104, 104, 104, 0, 0, 0, 0,
+ 0, 104, 104, 0, 146, 104, 104, 104, 104, 104,
+ 0, 104, 104, 0, 0, 104, 0, 0, 104, 104,
+ 104, 146, 146, 0, 0, 0, 146, 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, 146, 0, 146, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 145, 145, 145, 145,
+ 0, 0, 0, 0, 0, 145, 0, 0, 0, 145,
+ 145, 145, 145, 0, 0, 0, 146, 0, 145, 145,
+ 0, 0, 145, 145, 145, 145, 145, 0, 145, 145,
+ 59, 0, 145, 59, 0, 145, 145, 145, 0, 0,
+ 0, 96, 0, 0, 96, 0, 0, 59, 59, 0,
+ 0, 131, 131, 131, 131, 0, 0, 0, 96, 96,
+ 131, 0, 0, 96, 131, 131, 131, 131, 0, 0,
+ 0, 0, 0, 131, 131, 0, 0, 131, 131, 131,
+ 131, 131, 59, 131, 131, 0, 0, 131, 0, 0,
+ 131, 131, 131, 96, 58, 0, 0, 58, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 58, 58, 0, 0, 0, 58, 0, 0, 0,
+ 0, 0, 0, 96, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0, 0,
+ 95, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+ 0, 0, 0, 0, 95, 95, 0, 0, 0, 95,
+ 0, 0, 0, 0, 0, 146, 146, 146, 146, 0,
+ 0, 0, 0, 0, 146, 0, 58, 0, 146, 146,
+ 146, 146, 0, 0, 0, 61, 0, 146, 146, 95,
+ 0, 146, 146, 146, 146, 146, 0, 146, 146, 0,
+ 0, 146, 61, 61, 146, 146, 146, 61, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,
+ 0, 0, 0, 0, 0, 0, 0, 145, 0, 0,
+ 145, 0, 0, 0, 0, 61, 0, 61, 0, 0,
+ 0, 0, 0, 0, 145, 145, 0, 0, 0, 145,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 59, 59, 59, 59, 0, 0, 61, 0, 0,
+ 0, 0, 96, 96, 96, 96, 0, 0, 0, 145,
+ 0, 96, 0, 59, 59, 96, 96, 96, 96, 0,
+ 0, 0, 0, 0, 96, 96, 0, 0, 96, 96,
+ 96, 96, 96, 0, 96, 96, 0, 0, 96, 0,
+ 0, 96, 96, 96, 0, 132, 0, 0, 132, 0,
+ 0, 0, 0, 0, 0, 58, 58, 58, 58, 0,
+ 0, 0, 132, 132, 58, 0, 0, 132, 58, 58,
+ 58, 58, 0, 0, 0, 0, 0, 58, 58, 0,
+ 0, 58, 58, 58, 58, 58, 0, 58, 58, 0,
+ 0, 58, 0, 0, 58, 58, 58, 132, 95, 95,
+ 95, 95, 0, 0, 0, 71, 0, 95, 71, 0,
+ 0, 95, 95, 95, 95, 0, 0, 0, 0, 0,
+ 95, 95, 71, 71, 95, 95, 95, 95, 95, 0,
+ 95, 95, 0, 0, 95, 0, 0, 95, 95, 95,
+ 0, 0, 0, 0, 0, 0, 61, 61, 61, 61,
+ 0, 0, 0, 0, 0, 61, 0, 71, 0, 61,
+ 61, 61, 61, 0, 0, 0, 0, 0, 61, 61,
+ 0, 157, 61, 61, 61, 61, 61, 0, 61, 61,
+ 0, 0, 61, 0, 0, 61, 61, 61, 145, 145,
+ 145, 145, 0, 0, 0, 0, 0, 145, 0, 168,
+ 0, 145, 145, 145, 145, 0, 0, 0, 0, 0,
+ 145, 145, 0, 0, 145, 145, 145, 145, 145, 102,
+ 145, 145, 102, 0, 145, 0, 0, 145, 145, 145,
+ 0, 150, 0, 0, 0, 0, 102, 102, 0, 0,
+ 0, 102, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 109, 0, 0, 109,
+ 0, 102, 0, 0, 0, 0, 132, 132, 132, 132,
+ 0, 0, 0, 109, 109, 132, 0, 0, 109, 132,
+ 132, 132, 132, 0, 0, 0, 0, 0, 132, 132,
+ 0, 0, 132, 132, 132, 132, 132, 0, 132, 132,
+ 92, 0, 132, 92, 0, 132, 132, 132, 109, 0,
+ 0, 0, 0, 0, 0, 0, 0, 92, 92, 0,
+ 0, 0, 92, 0, 0, 0, 71, 71, 71, 71,
+ 0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
+ 93, 0, 0, 0, 0, 0, 0, 0, 71, 71,
+ 0, 0, 92, 0, 93, 93, 0, 0, 0, 93,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 87, 0, 0, 87, 0, 151,
+ 0, 0, 0, 152, 153, 154, 155, 0, 0, 93,
+ 0, 87, 87, 0, 0, 0, 87, 158, 159, 160,
+ 161, 0, 162, 163, 0, 0, 164, 0, 0, 165,
+ 166, 167, 88, 0, 0, 88, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 87, 0, 0, 88,
+ 88, 0, 0, 0, 88, 0, 0, 0, 0, 0,
+ 102, 102, 102, 102, 0, 0, 0, 0, 0, 102,
+ 0, 0, 0, 102, 102, 102, 102, 0, 0, 0,
+ 0, 0, 102, 102, 88, 0, 102, 102, 102, 102,
+ 102, 0, 102, 102, 0, 0, 102, 0, 0, 102,
+ 102, 102, 0, 0, 0, 0, 0, 109, 109, 109,
+ 109, 0, 0, 0, 0, 0, 109, 0, 0, 0,
+ 109, 109, 109, 109, 0, 0, 0, 0, 0, 109,
+ 109, 0, 0, 109, 109, 109, 109, 109, 0, 109,
+ 109, 89, 0, 109, 89, 0, 109, 109, 109, 0,
+ 0, 92, 92, 92, 92, 0, 0, 0, 89, 89,
+ 92, 0, 0, 89, 92, 92, 92, 92, 0, 0,
+ 0, 0, 0, 92, 92, 0, 0, 92, 92, 92,
+ 92, 92, 0, 92, 92, 0, 0, 92, 93, 93,
+ 93, 93, 0, 89, 0, 0, 0, 93, 0, 0,
+ 0, 93, 93, 93, 93, 0, 0, 0, 0, 0,
+ 93, 93, 0, 0, 93, 93, 93, 93, 93, 0,
+ 93, 93, 0, 0, 93, 87, 87, 87, 87, 0,
+ 0, 0, 0, 0, 87, 0, 0, 0, 87, 87,
+ 87, 87, 0, 0, 0, 0, 0, 87, 87, 0,
+ 0, 87, 87, 87, 87, 87, 0, 87, 87, 0,
+ 0, 0, 0, 88, 88, 88, 88, 0, 0, 0,
+ 0, 0, 88, 0, 0, 0, 88, 88, 88, 88,
+ 85, 0, 0, 85, 0, 88, 88, 0, 0, 88,
+ 88, 88, 88, 88, 0, 88, 88, 85, 85, 0,
+ 0, 0, 85, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 86, 0, 0, 86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 85, 86, 86, 0, 0, 0, 86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 84, 0, 0, 84, 0, 0, 0, 0, 86, 0,
+ 0, 0, 89, 89, 89, 89, 0, 84, 84, 0,
+ 0, 89, 84, 0, 0, 89, 89, 89, 89, 0,
+ 0, 0, 0, 0, 89, 89, 0, 0, 89, 89,
+ 89, 89, 89, 72, 89, 89, 72, 0, 0, 0,
+ 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,
+ 72, 72, 0, 0, 0, 72, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 0, 0, 73, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 72, 73, 73, 0, 0,
+ 0, 73, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 75, 0, 0, 75,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 73, 0, 75, 75, 0, 0, 0, 75, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 85, 85, 85, 85, 0, 0, 0, 0, 0,
+ 85, 0, 0, 0, 85, 85, 85, 85, 75, 0,
+ 0, 0, 0, 85, 85, 0, 0, 85, 85, 85,
+ 85, 85, 0, 85, 85, 0, 0, 86, 86, 86,
+ 86, 0, 0, 0, 0, 0, 86, 0, 0, 0,
+ 86, 86, 86, 86, 123, 0, 0, 123, 0, 86,
+ 86, 0, 0, 86, 86, 86, 86, 86, 0, 86,
+ 86, 123, 123, 0, 0, 0, 123, 0, 0, 0,
+ 0, 84, 84, 84, 84, 0, 0, 0, 0, 0,
+ 84, 0, 0, 0, 84, 84, 84, 84, 0, 0,
+ 0, 0, 0, 84, 84, 0, 123, 84, 84, 84,
+ 84, 84, 94, 84, 84, 94, 0, 0, 0, 0,
+ 0, 0, 0, 0, 72, 72, 72, 72, 0, 94,
+ 94, 0, 0, 72, 94, 0, 0, 72, 72, 72,
+ 72, 0, 0, 0, 0, 0, 72, 72, 0, 0,
+ 72, 72, 72, 72, 72, 0, 72, 72, 0, 0,
+ 73, 73, 73, 73, 94, 0, 0, 0, 0, 73,
+ 0, 0, 0, 73, 73, 73, 73, 0, 0, 0,
+ 0, 0, 73, 73, 0, 0, 73, 73, 73, 73,
+ 73, 134, 73, 0, 134, 0, 0, 75, 75, 75,
+ 75, 0, 0, 0, 0, 0, 75, 0, 134, 134,
+ 75, 75, 0, 134, 0, 0, 0, 0, 0, 75,
+ 75, 0, 0, 75, 75, 75, 75, 75, 76, 75,
+ 0, 76, 0, 0, 0, 0, 0, 0, 77, 0,
+ 0, 77, 0, 134, 0, 76, 76, 0, 0, 0,
+ 76, 0, 0, 0, 0, 77, 77, 0, 0, 0,
+ 77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 78, 0, 0, 78, 0, 0,
+ 76, 0, 0, 0, 0, 123, 123, 123, 123, 0,
+ 77, 78, 78, 0, 123, 0, 78, 0, 123, 123,
+ 0, 0, 0, 0, 0, 0, 79, 123, 123, 79,
+ 0, 123, 123, 123, 123, 123, 81, 0, 0, 81,
+ 0, 0, 0, 79, 79, 0, 78, 0, 79, 0,
+ 0, 0, 0, 81, 81, 0, 0, 0, 81, 0,
+ 0, 0, 0, 94, 94, 94, 94, 0, 0, 284,
+ 0, 0, 94, 0, 157, 0, 94, 94, 79, 0,
+ 0, 0, 0, 0, 0, 94, 94, 0, 81, 94,
+ 94, 94, 94, 94, 0, 0, 0, 0, 0, 0,
+ 0, 0, 168, 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, 150, 0, 0, 0, 0, 0,
+ 0, 0, 134, 134, 134, 134, 0, 0, 0, 0,
+ 0, 134, 0, 0, 0, 134, 134, 0, 0, 0,
+ 0, 0, 0, 0, 134, 134, 0, 0, 134, 134,
+ 134, 134, 134, 0, 0, 0, 0, 0, 0, 76,
+ 76, 76, 76, 0, 0, 0, 0, 0, 76, 77,
+ 77, 77, 77, 76, 0, 0, 0, 0, 77, 0,
+ 0, 76, 76, 0, 0, 76, 76, 76, 76, 76,
+ 0, 77, 77, 0, 0, 77, 77, 77, 77, 77,
+ 0, 0, 0, 0, 0, 78, 78, 78, 78, 0,
+ 0, 0, 0, 0, 78, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 78, 78, 0,
+ 0, 78, 78, 78, 78, 78, 0, 79, 79, 79,
+ 79, 0, 0, 0, 0, 0, 79, 81, 81, 81,
+ 81, 0, 0, 0, 0, 0, 81, 0, 0, 79,
+ 79, 0, 0, 79, 79, 79, 79, 0, 0, 81,
+ 81, 0, 151, 81, 81, 81, 152, 153, 154, 155,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 156,
+ 158, 159, 160, 161, 0, 162, 163, 91, 0, 164,
+ 0, 0, 165, 166, 167, 104, 0, 0, 0, 0,
+ 111, 113, 0, 0, 0, 0, 0, 125, 126, 127,
+ 128, 129, 130, 0, 0, 133, 134, 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, 183, 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, 214, 0, 0, 0, 0, 0, 0,
- 0, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 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, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 292, 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, 308,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 296, 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, 312,
};
dEXT short yycheck[] = { 13,
- 36, 91, 41, 17, 41, 59, 41, 44, 93, 125,
- 123, 59, 0, 41, 36, 93, 30, 31, 32, 33,
- 93, 58, 59, 192, 257, 93, 63, 41, 181, 59,
- 93, 46, 59, 123, 48, 91, 40, 44, 40, 257,
- 40, 91, 6, 41, 41, 33, 41, 40, 36, 37,
- 38, 93, 40, 40, 42, 43, 93, 45, 41, 41,
- 186, 59, 188, 41, 78, 29, 41, 123, 59, 91,
- 41, 59, 41, 123, 89, 0, 64, 59, 257, 41,
- 94, 59, 96, 47, 98, 40, 100, 123, 59, 91,
- 36, 275, 41, 123, 40, 40, 123, 59, 41, 40,
- 115, 123, 40, 91, 292, 293, 59, 121, 33, 41,
- 59, 36, 37, 38, 44, 40, 59, 42, 43, 123,
- 45, 123, 41, 123, 41, 59, 295, 141, 40, 298,
- 123, 284, 273, 274, 59, 123, 123, 125, 126, 64,
- 0, 260, 123, 59, 257, 40, 59, 263, 264, 265,
- 93, 267, 268, 59, 40, 59, 41, 263, 264, 265,
- 329, 267, 268, 177, 40, 125, 91, 293, 294, 183,
- 91, 41, 59, 33, 300, 41, 36, 37, 38, 293,
- 40, 125, 42, 43, 91, 45, 40, 59, 41, 40,
- 125, 93, 125, 41, 209, 41, 322, 125, 123, 59,
- 125, 126, 125, 59, 64, 123, 41, 292, 293, 257,
- 41, 41, 59, 44, 292, 293, 59, 41, 59, 292,
- 293, 257, 41, 313, 292, 293, 262, 58, 59, 292,
- 293, 91, 269, 270, 271, 272, 258, 320, 292, 293,
- 84, 255, 13, 257, 265, 259, 260, 92, 41, 263,
- 292, 293, 266, 292, 293, 292, 293, 292, 293, -1,
- 297, -1, 93, 123, 292, 293, 126, -1, 256, 257,
- 258, 259, 260, 261, -1, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 292, 293, 301, 276, 277,
- -1, 279, 280, 281, 282, 292, 293, 292, 293, 287,
- 288, 289, 290, 291, -1, -1, 294, 295, 296, 292,
- 293, -1, 326, -1, 302, 303, 330, 292, 293, 307,
- -1, 309, 310, 292, 293, -1, 269, 270, 271, 272,
- -1, 256, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, 292,
- 293, 276, 277, -1, 279, 280, 281, 282, 292, 293,
- 292, 293, 287, 288, 289, 290, 291, -1, -1, 294,
- 295, 296, 13, 292, 293, 292, 293, 302, 303, 292,
- 293, -1, 307, -1, 309, 310, 292, 293, 292, 293,
- 292, 293, -1, -1, -1, -1, 256, 257, 258, 259,
- 260, 261, 43, -1, 45, -1, 266, -1, -1, 269,
- 270, 271, 272, -1, 55, -1, 276, 277, 59, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, 294, 295, 296, -1, 269, 270,
- 271, 272, 302, 303, -1, -1, -1, 307, -1, 309,
- 310, -1, 93, 91, 95, -1, 97, -1, 99, -1,
- 101, 292, 293, 33, 105, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, 44, 45, 269, 270, 271, 272,
- -1, -1, -1, -1, -1, 123, -1, -1, 58, 59,
- 21, -1, -1, 63, 64, 269, 270, 271, 272, 292,
- 293, -1, -1, 144, 145, 146, 147, 148, 149, 150,
- -1, -1, -1, -1, -1, 46, -1, -1, 292, 293,
- -1, 91, -1, 93, -1, -1, -1, 168, 169, 170,
- 171, 172, 173, -1, 33, 91, -1, 36, 37, 38,
+ 257, 13, 91, 17, 44, 41, 59, 182, 36, 41,
+ 59, 257, 44, 194, 41, 188, 59, 190, 41, 33,
+ 34, 35, 36, 59, 82, 40, 58, 59, 41, 43,
+ 88, 63, 125, 45, 123, 59, 50, 40, 59, 59,
+ 40, 91, 123, 91, 56, 41, 257, 41, 60, 41,
+ 41, 41, 278, 41, 36, 41, 44, 93, 116, 40,
+ 91, 93, 41, 91, 78, 41, 40, 40, 59, 41,
+ 58, 59, 40, 123, 123, 123, 91, 41, 92, 41,
+ 40, 95, 94, 97, 96, 99, 98, 101, 100, 41,
+ 102, 40, 123, 41, 106, 123, 44, 59, 41, 123,
+ 59, 41, 294, 295, 41, 93, 0, 59, 123, 59,
+ 58, 59, 287, 59, 44, 59, 59, 59, 299, 59,
+ 123, 302, 59, 123, 297, 298, 184, 141, 276, 277,
+ 123, 304, 144, 145, 146, 147, 148, 149, 150, 33,
+ 40, 123, 36, 37, 38, 93, 40, 260, 42, 43,
+ 123, 45, 123, 334, 327, 93, 168, 169, 170, 171,
+ 172, 173, 174, 123, 178, 59, 40, 40, 36, 0,
+ 64, 185, 40, 266, 267, 268, 257, 270, 271, 41,
+ 40, 93, 91, 266, 267, 268, 198, 270, 271, 125,
+ 93, 41, 204, 205, 206, 59, 59, 91, 287, 211,
+ 41, 125, 33, 91, 257, 36, 37, 38, 295, 40,
+ 93, 42, 43, 40, 45, 41, 305, 40, 125, 308,
+ 125, 125, 311, 312, 313, 237, 125, 239, 59, 123,
+ 258, 125, 126, 64, 59, 125, 272, 273, 274, 275,
+ 272, 273, 274, 275, 93, 259, 41, 261, 41, 263,
+ 264, 294, 295, 267, 294, 295, 270, 269, 294, 295,
+ 91, 41, 294, 295, 44, 313, 298, 294, 295, 93,
+ 282, 294, 295, 294, 295, 257, 272, 273, 274, 275,
+ 262, 294, 295, 63, 272, 273, 274, 275, 59, 301,
+ 123, 305, 123, 41, 125, 126, 0, 93, 294, 295,
+ 294, 295, 294, 295, 294, 295, 294, 295, 294, 295,
+ 298, 91, 59, 325, 41, 294, 295, 331, 294, 295,
+ 59, 335, 294, 295, 272, 273, 274, 275, 41, 33,
+ 294, 295, 36, 37, 38, 59, 40, 83, 42, 43,
+ 41, 45, 325, 123, 294, 295, 294, 295, 294, 295,
+ 294, 295, 294, 295, 13, 59, 294, 295, 269, 93,
+ 64, -1, 256, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 294, 295, -1, 279, 280, 91, 282, 283,
+ 284, 294, 295, -1, -1, 289, 290, 291, 292, 293,
+ -1, -1, 296, 297, -1, 41, -1, -1, 44, 303,
+ -1, 294, 295, 307, -1, 309, 310, -1, -1, 123,
+ -1, -1, 126, 59, 91, 256, 257, 258, 259, 260,
+ 261, -1, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 294, 295, -1, 279, 280,
+ -1, 282, 283, 284, 91, -1, 123, 93, 289, 290,
+ 291, 292, 293, -1, -1, 296, 297, -1, -1, -1,
+ 294, 295, 303, -1, -1, -1, 307, -1, 309, 310,
+ 272, 273, 274, 275, 33, 91, 123, 36, 37, 38,
+ -1, 40, 41, 42, 43, 44, 45, -1, 294, 295,
+ -1, 281, 294, 295, -1, 285, 286, 287, 288, 58,
+ 59, 6, -1, 8, 63, 64, -1, 123, 298, 299,
+ 300, 301, 302, -1, 304, 305, -1, -1, 308, -1,
+ -1, 311, 312, 313, -1, -1, 31, 32, -1, -1,
+ -1, -1, 91, -1, 93, 41, -1, -1, 44, -1,
+ -1, 91, 256, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, -1, 63, 272, 273,
+ 274, 275, -1, -1, 123, 279, 280, 126, 282, 283,
+ 284, -1, -1, 123, -1, 289, 290, 291, 292, 293,
+ -1, -1, 296, 297, -1, 91, -1, 93, -1, 303,
+ -1, -1, -1, 307, 33, 309, 310, 36, 37, 38,
-1, 40, 41, 42, 43, 44, 45, -1, -1, -1,
- -1, -1, -1, 123, -1, 196, 126, -1, 89, 58,
- 59, 202, 203, 204, 63, 64, -1, 123, -1, 210,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 115, -1, -1, -1, -1, 120,
- -1, -1, -1, -1, 93, 236, -1, 238, -1, -1,
- 91, -1, 33, -1, -1, 36, 37, 38, -1, 40,
- -1, 42, 43, -1, 45, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 265, -1, -1, 126, 59, -1,
- -1, -1, 123, 64, -1, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, -1, 283, 284, 285, 286, -1,
- -1, -1, -1, -1, 41, -1, 297, 44, -1, -1,
- 91, 299, 300, 301, -1, -1, 304, 305, -1, -1,
- 308, -1, -1, 311, 312, 313, 63, -1, 209, 320,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, 261, 123, -1, -1, 126, 266, -1, -1, 269,
- 270, 271, 272, -1, 91, -1, -1, 277, 278, 279,
- 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, 305, 123, 307, 308, 309,
- 310, 311, 312, 313, -1, -1, -1, -1, -1, 305,
+ -1, -1, -1, -1, -1, -1, -1, 123, -1, 58,
+ 59, -1, -1, -1, 63, 64, 272, 273, 274, 275,
+ -1, 308, -1, -1, 311, 312, 313, -1, 285, 286,
+ 287, 288, -1, -1, -1, -1, -1, -1, 294, -1,
+ -1, -1, -1, -1, 93, 302, -1, 304, 305, -1,
+ 41, 308, -1, 44, 311, 312, 313, -1, -1, 285,
+ 286, 287, 288, -1, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, 299, 300, 301, 302, 126, 304, 305,
-1, -1, 308, -1, -1, 311, 312, 313, 257, 258,
- 259, 260, 261, -1, -1, -1, -1, 266, -1, -1,
- 269, 270, 271, 272, -1, 91, -1, -1, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 259, 260, 261, -1, 263, 264, 265, -1, -1, -1,
+ 269, -1, 93, 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, 305, 123, 307, 308,
- 309, 310, 311, 312, 313, -1, 41, 308, -1, 44,
- 311, 312, 313, -1, -1, 256, 257, 258, 259, 260,
- 261, -1, -1, 58, 59, 266, -1, -1, 269, 270,
- 271, 272, -1, -1, -1, 276, 277, -1, 279, 280,
- 281, 282, -1, -1, -1, -1, 287, 288, 289, 290,
- 291, 91, -1, 294, 295, 296, -1, 41, 93, -1,
- 44, 302, 303, -1, -1, -1, 307, 33, 309, 310,
- 36, 37, 38, -1, 40, 59, 42, 43, -1, 45,
- -1, 278, -1, 123, -1, -1, 283, 284, 285, 286,
- -1, -1, -1, 59, -1, -1, -1, -1, 64, -1,
- 297, 298, 299, 300, 301, -1, -1, 304, 305, 93,
+ 299, 300, 301, 302, 303, 304, 305, -1, 307, 308,
+ 309, 310, 311, 312, 313, 305, -1, -1, 308, 91,
+ -1, 311, 312, 313, -1, -1, 272, 273, 274, 275,
+ -1, -1, -1, -1, -1, 281, -1, -1, -1, 285,
+ 286, 287, 288, -1, -1, -1, -1, -1, 294, 295,
+ -1, 123, 298, 299, 300, 301, 302, -1, 304, 305,
+ -1, -1, 308, -1, -1, 311, 312, 313, 91, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
+ 259, 260, 261, -1, 263, 264, 265, -1, -1, -1,
+ 269, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ 123, 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, 305, -1, 307, 308,
+ 309, 310, 311, 312, 313, 33, 48, 49, 36, 37,
+ 38, -1, 40, -1, 42, 43, -1, 45, -1, -1,
+ -1, 272, 273, 274, 275, -1, -1, -1, -1, -1,
+ 281, 59, -1, -1, 285, 286, 64, 288, -1, -1,
+ 82, -1, -1, 294, 295, -1, 88, 298, 299, 300,
+ 301, 302, -1, 304, -1, -1, -1, -1, -1, -1,
+ -1, 33, -1, 91, 36, 37, 38, -1, 40, -1,
+ 42, 43, -1, 45, 116, -1, -1, -1, -1, -1,
+ -1, 123, -1, 285, 286, 287, 288, 59, -1, -1,
+ -1, -1, 64, -1, -1, 123, -1, -1, 126, 301,
+ 302, -1, 304, 305, -1, -1, 308, -1, -1, 311,
+ 312, 313, -1, -1, -1, -1, -1, 33, -1, 91,
+ 36, 37, 38, -1, 40, -1, 42, 43, -1, 45,
+ -1, -1, -1, -1, 287, 288, -1, -1, -1, -1,
+ -1, -1, 184, -1, -1, -1, -1, -1, 64, -1,
+ -1, 123, 305, -1, 126, 308, -1, -1, 311, 312,
+ 313, -1, -1, -1, 41, -1, -1, 44, -1, -1,
+ -1, -1, -1, -1, -1, 91, -1, 26, -1, -1,
+ 33, 58, 59, 36, 37, 38, -1, 40, -1, 42,
+ 43, -1, 45, 42, -1, -1, -1, -1, 47, -1,
+ 49, -1, -1, -1, -1, -1, -1, 123, -1, -1,
+ 126, 64, 61, 62, 63, 64, 93, -1, -1, -1,
+ -1, -1, -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, -1, 107, -1,
+ -1, 289, 290, 291, 292, 293, -1, -1, 296, 297,
+ 123, -1, -1, 126, 91, 303, -1, -1, -1, 307,
+ -1, 309, 310, -1, 256, 257, 258, 259, 260, 261,
+ -1, 263, 264, 265, -1, -1, -1, 269, -1, -1,
+ 272, 273, 274, 275, -1, -1, 123, 279, 280, -1,
+ 282, 283, 284, -1, -1, -1, -1, 289, 290, 291,
+ 292, 293, -1, -1, 296, 297, -1, -1, -1, -1,
+ 91, 303, -1, -1, -1, 307, -1, 309, 310, -1,
+ -1, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 41, -1, -1, 269, -1, -1, -1, -1, -1, -1,
+ -1, -1, 123, -1, 280, -1, 282, 283, 284, -1,
+ -1, -1, 63, 289, 290, 291, 292, 293, -1, -1,
+ 296, 297, -1, -1, -1, -1, -1, 303, -1, -1,
+ -1, 307, -1, 309, 310, 272, 273, 274, 275, -1,
+ 91, -1, -1, -1, 257, 258, 259, 260, 261, -1,
+ 263, 264, 265, -1, -1, -1, 269, 294, 295, -1,
+ -1, -1, -1, -1, -1, -1, -1, 280, -1, 282,
+ 283, 284, 123, -1, -1, -1, 289, 290, 291, 292,
+ 293, -1, -1, 296, 297, -1, -1, -1, -1, -1,
+ 303, -1, -1, -1, 307, 33, 309, 310, 36, 37,
+ 38, -1, 40, -1, 42, 43, -1, 45, 285, 286,
+ 287, 288, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 59, -1, 300, 301, 302, 64, 304, 305, -1,
-1, 308, -1, -1, 311, 312, 313, -1, -1, -1,
- -1, -1, -1, 33, -1, 91, 36, 37, 38, -1,
- 40, -1, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, -1, -1, -1, 91, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 64, -1, -1, 123, -1, 285,
- 126, -1, -1, 33, -1, -1, 36, 37, 38, -1,
- 40, -1, 42, 43, -1, 45, 123, -1, -1, 305,
- -1, 91, 308, -1, -1, 311, 312, 313, -1, 59,
- -1, -1, -1, -1, 64, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 123, -1, -1, 126, -1, -1, 33,
- -1, 91, 36, 37, 38, -1, 40, -1, 42, 43,
- -1, 45, -1, -1, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, 283, 284, 285, 286, -1, -1, -1,
- 64, -1, -1, -1, -1, -1, 126, 292, 293, -1,
- 300, 301, 297, -1, 304, 305, -1, -1, 308, -1,
- -1, 311, 312, 313, -1, -1, -1, 91, -1, 41,
- -1, -1, 44, -1, -1, 269, 270, 271, 272, -1,
- 256, 257, 258, 259, 260, 261, 58, 59, -1, -1,
- 266, 63, -1, 269, 270, 271, 272, -1, 292, 123,
- 276, 277, 126, 279, 280, 281, 282, -1, -1, -1,
- -1, 287, 288, 289, 290, 291, -1, -1, 294, 295,
- 296, 93, -1, -1, -1, -1, 302, 303, 285, 286,
- -1, 307, -1, 309, 310, -1, -1, 257, 258, 259,
- 260, 261, 262, -1, -1, -1, 266, 304, 305, -1,
- -1, 308, 91, -1, 311, 312, 313, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, 294, 295, 296, 257, 258, 259,
- 260, 261, 302, 303, 123, -1, 266, 307, -1, 309,
- 310, -1, -1, -1, -1, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, 294, 295, 296, -1, -1, -1,
- -1, -1, 302, 303, -1, -1, -1, 307, 41, 309,
- 310, 44, -1, 257, 258, 259, 260, 261, 262, -1,
- -1, -1, 266, -1, -1, 58, 59, -1, -1, -1,
- 63, -1, -1, 277, -1, 279, 280, 281, 282, -1,
- -1, -1, -1, 287, 288, 289, 290, 291, -1, -1,
- -1, 295, 296, -1, -1, -1, -1, -1, 302, 303,
- 93, -1, -1, 307, 33, 309, 310, 36, 37, 38,
- -1, 40, 41, 42, 43, -1, 45, 269, 270, 271,
- 272, -1, -1, -1, -1, 91, 278, -1, -1, -1,
- -1, -1, -1, -1, -1, 64, -1, -1, -1, -1,
- 292, 293, -1, -1, 33, 297, 298, 36, 37, 38,
- -1, 40, -1, 42, 43, -1, 45, 123, -1, -1,
- -1, -1, 91, -1, 283, 284, 285, 286, -1, -1,
- -1, -1, -1, -1, -1, 64, -1, -1, -1, -1,
- -1, 41, 301, -1, 44, 304, 305, -1, -1, 308,
- -1, 26, 311, 312, 313, -1, -1, 126, 58, 59,
- -1, -1, 91, 33, 93, 40, 36, 37, 38, -1,
- 40, 46, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 60, 61, 62, 63, 64,
- -1, -1, -1, 93, 64, -1, -1, 126, -1, -1,
- -1, -1, -1, 33, -1, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 106, -1, -1, 64, -1, 269, 270, 271, 272,
- -1, -1, -1, 33, -1, 278, 36, 37, 38, -1,
- 40, 41, 42, 43, -1, 45, 126, -1, -1, 292,
- 293, 91, -1, -1, 297, 298, 299, 300, 301, -1,
- -1, -1, -1, -1, 64, -1, -1, 283, 284, 285,
- 286, -1, -1, -1, -1, -1, -1, -1, 257, 258,
- 259, 260, 261, -1, -1, -1, 126, 266, 304, 305,
- -1, 91, 308, -1, -1, 311, 312, 313, 277, -1,
- 279, 280, 281, 282, -1, 91, -1, -1, 287, 288,
- 289, 290, 291, -1, -1, 294, 295, 296, 257, 258,
- 259, 260, 261, 302, 303, -1, 126, 266, 307, -1,
- 309, 310, -1, -1, -1, -1, -1, 123, 277, -1,
- 279, 280, 281, 282, -1, -1, -1, -1, 287, 288,
- 289, 290, 291, -1, -1, 294, 295, 296, -1, 269,
- 270, 271, 272, 302, 303, -1, -1, -1, 307, -1,
- 309, 310, -1, -1, -1, -1, 256, 257, 258, 259,
- 260, 261, 292, 293, -1, -1, 266, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, 294, 295, 296, 257, 258, 259,
- 260, 261, 302, 303, -1, -1, 266, 307, -1, 309,
- 310, -1, -1, -1, -1, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, 91, 294, 295, 296, 257, 258, 259,
- 260, 261, 302, 303, -1, -1, 266, 307, -1, 309,
- 310, -1, -1, -1, -1, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, 123, -1, 287, 288, 289,
- 290, 291, -1, -1, 294, 295, 296, -1, -1, 285,
- 286, -1, 302, 303, -1, -1, -1, 307, 33, 309,
- 310, 36, 37, 38, -1, 40, 41, 42, 43, 305,
- 45, -1, 308, -1, -1, 311, 312, 313, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, 41, 42, 43, -1,
- 45, -1, -1, -1, -1, -1, 91, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, -1, 42, 43, -1,
- 45, 126, -1, -1, -1, -1, 91, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, -1, 42, 43, -1,
- 45, 126, -1, -1, -1, 283, 91, 285, 286, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, -1, -1, 304, 305, -1, -1,
- 308, -1, -1, 311, 312, 313, -1, -1, 123, -1,
- -1, 126, -1, -1, -1, -1, 91, -1, -1, -1,
- -1, -1, -1, 33, -1, -1, 36, 37, 38, -1,
- 40, -1, 42, 43, -1, 45, -1, 25, 26, -1,
- -1, -1, -1, -1, -1, -1, 34, -1, -1, -1,
- -1, 126, 40, 41, 64, -1, -1, -1, 46, -1,
- -1, -1, 257, 258, 259, 260, 261, -1, -1, -1,
- -1, 266, 60, 61, 62, 63, 64, -1, -1, -1,
- -1, 91, 277, -1, 279, 280, 281, 282, -1, -1,
- -1, -1, 287, 288, 289, 290, 291, -1, -1, 294,
- 295, 296, 257, 258, 259, 260, 261, 302, 303, -1,
- -1, 266, 307, 123, 309, 310, 126, -1, 106, -1,
- -1, -1, 277, -1, 279, 280, 281, 282, -1, -1,
- -1, -1, 287, 288, 289, 290, 291, -1, -1, 294,
- 295, 296, 257, 258, 259, 260, 261, 302, 303, -1,
- -1, 266, 307, -1, 309, 310, -1, -1, -1, -1,
- -1, -1, 277, -1, 279, 280, 281, 282, -1, -1,
- -1, -1, 287, 288, 289, 290, 291, -1, -1, 167,
- 295, 296, 257, 258, 259, 260, 261, 302, 303, -1,
- -1, 266, 307, 91, 309, 310, -1, -1, -1, -1,
- 41, -1, 277, 44, 279, 280, 281, 282, -1, -1,
- -1, -1, 287, 288, 289, 290, 291, 58, 59, 294,
- 295, 296, -1, -1, -1, 123, -1, 302, 303, -1,
- -1, -1, 307, 33, 309, 310, 36, 37, 38, -1,
- 40, -1, 42, 43, -1, 45, -1, 257, 258, 259,
- 260, 261, 93, -1, -1, -1, 266, -1, -1, -1,
- -1, -1, -1, -1, 64, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, 41, 295, 296, 44, -1, -1,
- -1, 91, 302, 303, -1, -1, -1, 307, -1, 309,
- 310, 58, 59, -1, -1, -1, 63, -1, -1, -1,
+ -1, 33, -1, 91, 36, 37, 38, -1, 40, -1,
+ 42, 43, -1, 45, 285, 286, 287, 288, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 126, -1, -1, 41,
- -1, -1, 44, -1, 91, -1, 93, -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, -1, -1, -1, -1, 123, -1, -1, -1,
- -1, -1, -1, -1, 41, -1, -1, 44, -1, 91,
- -1, 93, -1, -1, -1, 283, 284, 285, 286, -1,
- -1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
- 298, 299, 300, 301, -1, -1, 304, 305, -1, -1,
- 308, 123, -1, 311, 312, 313, -1, -1, -1, 41,
- -1, -1, 44, -1, 91, -1, 93, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, 58, 59, -1, -1,
- -1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 292, 293, -1, -1, -1, 123, 257, 258, 259,
- 260, 261, -1, -1, -1, -1, 266, -1, -1, -1,
- -1, 93, -1, -1, -1, -1, -1, 277, -1, 279,
- 280, 281, 282, -1, -1, -1, -1, 287, 288, 289,
- 290, 291, -1, -1, -1, 295, 296, -1, -1, -1,
- 41, 123, 302, 303, -1, -1, -1, 307, -1, 309,
- 310, -1, 269, 270, 271, 272, -1, 58, 59, -1,
- -1, 278, 63, -1, -1, -1, 283, 284, 285, 286,
- -1, -1, -1, -1, -1, 292, 293, -1, -1, -1,
- 297, 298, 299, 300, 301, -1, 41, 304, 305, 44,
- 91, 308, 93, -1, 311, 312, 313, 269, 270, 271,
- 272, -1, -1, 58, 59, -1, 278, -1, 63, -1,
- -1, 283, 284, 285, 286, -1, -1, -1, -1, -1,
- 292, 293, 123, -1, -1, 297, 298, 299, 300, 301,
- -1, 41, 304, 305, 44, -1, 308, -1, 93, 311,
- 312, 313, 269, 270, 271, 272, -1, -1, 58, 59,
- -1, 278, -1, 63, -1, -1, 283, 284, 285, 286,
- -1, -1, -1, -1, -1, 292, 293, -1, 123, -1,
- 297, 298, 299, 300, 301, -1, 41, 304, 305, 44,
- -1, 308, -1, 93, 311, 312, 313, 269, 270, 271,
- 272, -1, -1, 58, 59, -1, 278, -1, 63, -1,
- -1, 283, 284, 285, 286, -1, -1, -1, -1, -1,
- 292, 293, -1, 123, -1, 297, 298, 299, 300, 301,
- -1, -1, 304, 305, 41, -1, 308, -1, 93, 311,
- 312, 313, -1, -1, 41, -1, -1, 44, -1, -1,
- -1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
- -1, 58, 59, -1, -1, -1, -1, -1, 123, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 269, 270,
- 271, 272, 41, -1, 91, 44, 93, 278, -1, -1,
- -1, -1, 283, 284, 285, 286, 93, -1, -1, 58,
- 59, 292, 293, -1, 63, -1, 297, 298, 299, 300,
- 301, -1, -1, 304, 305, -1, 123, 308, -1, -1,
- 311, 312, 313, -1, 269, 270, 271, 272, 41, -1,
- -1, 44, -1, 278, 93, -1, -1, -1, 283, 284,
- 285, 286, -1, -1, -1, 58, 59, 292, 293, -1,
- 63, -1, 297, 298, 299, 300, 301, -1, -1, 304,
- 305, -1, -1, 308, 123, -1, 311, 312, 313, 269,
- 270, 271, 272, 41, -1, -1, 44, -1, 278, -1,
- 93, -1, -1, 283, 284, 285, 286, -1, -1, -1,
- 58, 59, 292, 293, -1, 63, -1, 297, 298, 299,
- 300, 301, -1, -1, 304, 305, -1, -1, 308, -1,
- -1, 311, 312, 313, 269, 270, 271, 272, 41, -1,
- -1, 44, -1, 278, -1, 93, -1, -1, 283, 284,
- 285, 286, -1, -1, -1, 58, 59, 292, 293, -1,
- 63, -1, 297, 298, 299, 300, 301, -1, -1, 304,
+ -1, -1, 64, 304, 305, -1, -1, 308, 126, -1,
+ 311, 312, 313, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -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,
+ 281, -1, -1, -1, 285, 286, 287, 288, 64, -1,
+ -1, 123, -1, -1, 126, -1, -1, 298, 299, 300,
+ 301, 302, -1, 304, 305, -1, -1, 308, -1, -1,
+ 311, 312, 313, -1, -1, 91, -1, -1, -1, -1,
+ 33, -1, -1, 36, 37, 38, -1, 40, -1, 42,
+ 43, -1, 45, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 126, 64, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, 91, -1,
+ 93, 269, -1, -1, -1, 91, -1, -1, -1, -1,
+ -1, -1, 280, -1, 282, 283, 284, -1, -1, -1,
+ -1, 289, 290, 291, 292, 293, -1, 63, 296, 297,
+ -1, -1, -1, 126, -1, 303, -1, 123, -1, 307,
+ -1, 309, 310, -1, -1, 257, 258, 259, 260, 261,
+ -1, 263, 264, 265, -1, 91, -1, 269, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 280, -1,
+ 282, 283, 284, -1, -1, -1, -1, 289, 290, 291,
+ 292, 293, -1, -1, 296, 297, 91, 123, -1, -1,
+ -1, 303, -1, 41, -1, 307, 44, 309, 310, -1,
+ -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
+ 58, 59, -1, 269, -1, 63, -1, -1, 123, -1,
+ -1, -1, -1, -1, 280, -1, 282, 283, 284, -1,
+ -1, -1, -1, 289, 290, 291, 292, 293, -1, -1,
+ 296, 297, -1, -1, -1, 93, -1, 303, -1, -1,
+ -1, 307, -1, 309, 310, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 257, 258, 259, 260, 261, -1,
+ 263, 264, 265, -1, 33, -1, 269, 36, 37, 38,
+ -1, 40, -1, 42, 43, -1, 45, 280, -1, 282,
+ 283, 284, -1, -1, -1, -1, 289, 290, 291, 292,
+ 293, 287, 288, 296, 297, 64, -1, -1, -1, -1,
+ 303, -1, -1, -1, 307, -1, 309, 310, 304, 305,
+ -1, -1, 308, -1, -1, 311, 312, 313, -1, -1,
+ 33, -1, 91, 36, 37, 38, -1, 40, 41, 42,
+ 43, -1, 45, -1, -1, 281, -1, -1, -1, 285,
+ 286, 287, 288, -1, -1, -1, -1, -1, -1, -1,
+ -1, 64, 298, 299, 300, 301, 302, 126, 304, 305,
+ -1, -1, 308, -1, -1, 311, 312, 313, -1, -1,
+ 285, -1, 287, 288, -1, -1, 33, -1, 91, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, 304,
305, -1, -1, 308, -1, -1, 311, 312, 313, -1,
- -1, -1, 269, 270, 271, 272, 41, -1, -1, 44,
- 93, 278, 269, 270, 271, 272, 283, 284, 285, 286,
- -1, -1, -1, 58, 59, 292, 293, -1, 63, -1,
- 297, 298, 299, 300, 301, 292, 293, 304, 305, -1,
- -1, 308, -1, -1, 311, 312, 313, -1, -1, -1,
- 269, 270, 271, 272, 41, -1, -1, -1, 93, 278,
- -1, -1, -1, -1, 283, 284, 285, 286, -1, -1,
- -1, -1, -1, 292, 293, -1, 63, -1, 297, 298,
- 299, 300, 301, -1, -1, 304, 305, -1, -1, 308,
- -1, -1, 311, 312, 313, -1, 269, 270, 271, 272,
- 41, -1, -1, 44, 91, 278, -1, -1, -1, -1,
- 283, 284, 285, 286, -1, -1, -1, 58, 59, 292,
- 293, -1, 63, -1, 297, 298, 299, 300, 301, -1,
- -1, 304, 305, -1, -1, 308, 123, -1, 311, 312,
- 313, 269, 270, 271, 272, 41, -1, -1, 44, -1,
- 278, -1, 93, -1, -1, 283, 284, 285, 286, -1,
- -1, -1, 58, 59, 292, 293, -1, 63, -1, 297,
- 298, 299, 300, 301, -1, -1, 304, 305, -1, -1,
- 308, -1, -1, 311, 312, 313, 269, 270, 271, 272,
- 41, -1, -1, 44, -1, 278, -1, 93, -1, -1,
- 283, 284, 285, 286, -1, -1, -1, 58, 59, 292,
- 293, -1, 63, -1, 297, 298, 299, 300, 301, -1,
+ -1, -1, -1, -1, -1, -1, -1, 64, -1, -1,
+ -1, -1, -1, 126, 272, 273, 274, 275, -1, -1,
+ -1, -1, -1, 281, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 91, -1, 294, 295, -1, 33,
+ 298, 299, 36, 37, 38, -1, 40, 41, 42, 43,
+ -1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 126,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -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, -1, -1, -1, -1,
+ 289, 290, 291, 292, 293, -1, -1, 296, 297, -1,
+ -1, -1, 126, -1, 303, -1, 41, -1, 307, 44,
+ 309, 310, -1, -1, 257, 258, 259, 260, 261, -1,
+ 263, 264, 265, 58, 59, -1, 269, -1, 63, -1,
+ -1, -1, -1, -1, -1, -1, -1, 280, -1, 282,
+ 283, 284, -1, -1, -1, -1, 289, 290, 291, 292,
+ 293, -1, -1, 296, 297, -1, 91, -1, 93, -1,
+ 303, -1, 41, -1, 307, 44, 309, 310, -1, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, 58,
+ 59, -1, 269, -1, 63, -1, -1, -1, 123, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, -1, -1,
+ -1, -1, 289, 290, 291, 292, 293, -1, -1, 296,
+ 297, -1, 91, -1, 93, -1, 303, -1, -1, -1,
+ 307, -1, 309, 310, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, -1, 33, 123, 269, 36, 37, 38, -1,
+ 40, 41, 42, 43, -1, 45, 280, -1, 282, 283,
+ 284, -1, -1, -1, -1, 289, 290, 291, 292, 293,
+ -1, -1, 296, 297, 64, -1, 25, 26, -1, 303,
+ -1, -1, -1, 307, -1, 309, 310, -1, 37, -1,
+ -1, -1, -1, 42, 43, -1, -1, -1, 47, 33,
+ 49, 91, 36, 37, 38, -1, 40, -1, 42, 43,
+ -1, 45, 61, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 64, -1, -1, -1, -1, -1, 126, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, -1, -1, -1,
+ 285, 286, 287, 288, -1, -1, -1, 91, 107, 294,
+ 295, -1, -1, 298, 299, 300, 301, 302, -1, 304,
+ 305, -1, 41, 308, -1, 44, 311, 312, 313, -1,
+ -1, -1, -1, 41, -1, -1, 44, -1, -1, 58,
+ 59, -1, 126, 272, 273, 274, 275, -1, -1, -1,
+ 58, 59, 281, -1, -1, 63, 285, 286, 287, 288,
+ -1, -1, -1, -1, -1, 294, 295, -1, 167, 298,
+ 299, 300, 301, 302, 93, 304, 305, -1, 41, 308,
+ -1, 44, 311, 312, 313, 93, -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, -1, -1, -1, -1, 123, -1, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, -1, -1, 91, 269,
+ 93, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 280, -1, 282, 283, 284, -1, -1, -1, -1, 289,
+ 290, 291, 292, 293, -1, -1, 296, 297, -1, -1,
+ -1, -1, -1, 303, -1, 41, -1, 307, 44, 309,
+ 310, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, -1, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ 284, -1, -1, -1, -1, 289, 290, 291, 292, 293,
+ -1, -1, 296, 297, -1, -1, -1, 93, -1, 303,
+ 41, -1, -1, 307, -1, 309, 310, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, -1, -1, -1, -1, 123, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ -1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
+ 91, -1, 93, 281, -1, 294, 295, 285, 286, 287,
+ 288, -1, -1, -1, -1, -1, 294, 295, -1, -1,
+ 298, 299, 300, 301, 302, -1, 304, 305, -1, -1,
+ 308, -1, 123, 311, 312, 313, -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, 294, 295, -1, 41, 298, 299, 300, 301, 302,
-1, 304, 305, -1, -1, 308, -1, -1, 311, 312,
- 313, -1, -1, -1, 269, 270, 271, 272, 41, -1,
- -1, 44, 93, 278, -1, -1, -1, -1, 283, 284,
- 285, 286, -1, -1, -1, 58, 59, 292, 293, -1,
- 63, -1, 297, 298, 299, 300, 301, -1, -1, 304,
- 305, -1, -1, 308, -1, -1, 311, 312, 313, -1,
- -1, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- 93, 278, -1, -1, -1, -1, 283, 284, 285, 286,
+ 313, 58, 59, -1, -1, -1, 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, -1, -1, -1, 91, -1, 93, -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, 123, -1, 294, 295,
+ -1, -1, 298, 299, 300, 301, 302, -1, 304, 305,
+ 41, -1, 308, 44, -1, 311, 312, 313, -1, -1,
+ -1, 41, -1, -1, 44, -1, -1, 58, 59, -1,
+ -1, 272, 273, 274, 275, -1, -1, -1, 58, 59,
+ 281, -1, -1, 63, 285, 286, 287, 288, -1, -1,
+ -1, -1, -1, 294, 295, -1, -1, 298, 299, 300,
+ 301, 302, 93, 304, 305, -1, -1, 308, -1, -1,
+ 311, 312, 313, 93, 41, -1, -1, 44, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -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, -1, 41, -1, -1,
+ 44, -1, -1, -1, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, -1, -1, 281, -1, 123, -1, 285, 286,
+ 287, 288, -1, -1, -1, 41, -1, 294, 295, 93,
+ -1, 298, 299, 300, 301, 302, -1, 304, 305, -1,
+ -1, 308, 58, 59, 311, 312, 313, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
+ -1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
+ 44, -1, -1, -1, -1, 91, -1, 93, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 272, 273, 274, 275, -1, -1, 123, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, 93,
+ -1, 281, -1, 294, 295, 285, 286, 287, 288, -1,
+ -1, -1, -1, -1, 294, 295, -1, -1, 298, 299,
+ 300, 301, 302, -1, 304, 305, -1, -1, 308, -1,
+ -1, 311, 312, 313, -1, 41, -1, -1, 44, -1,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, 58, 59, 281, -1, -1, 63, 285, 286,
+ 287, 288, -1, -1, -1, -1, -1, 294, 295, -1,
+ -1, 298, 299, 300, 301, 302, -1, 304, 305, -1,
+ -1, 308, -1, -1, 311, 312, 313, 93, 272, 273,
+ 274, 275, -1, -1, -1, 41, -1, 281, 44, -1,
+ -1, 285, 286, 287, 288, -1, -1, -1, -1, -1,
+ 294, 295, 58, 59, 298, 299, 300, 301, 302, -1,
+ 304, 305, -1, -1, 308, -1, -1, 311, 312, 313,
+ -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
+ -1, -1, -1, -1, -1, 281, -1, 93, -1, 285,
+ 286, 287, 288, -1, -1, -1, -1, -1, 294, 295,
+ -1, 63, 298, 299, 300, 301, 302, -1, 304, 305,
+ -1, -1, 308, -1, -1, 311, 312, 313, 272, 273,
+ 274, 275, -1, -1, -1, -1, -1, 281, -1, 91,
+ -1, 285, 286, 287, 288, -1, -1, -1, -1, -1,
+ 294, 295, -1, -1, 298, 299, 300, 301, 302, 41,
+ 304, 305, 44, -1, 308, -1, -1, 311, 312, 313,
+ -1, 123, -1, -1, -1, -1, 58, 59, -1, -1,
+ -1, 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, 41, -1, -1, 44,
+ -1, 93, -1, -1, -1, -1, 272, 273, 274, 275,
+ -1, -1, -1, 58, 59, 281, -1, -1, 63, 285,
+ 286, 287, 288, -1, -1, -1, -1, -1, 294, 295,
+ -1, -1, 298, 299, 300, 301, 302, -1, 304, 305,
+ 41, -1, 308, 44, -1, 311, 312, 313, 93, -1,
+ -1, -1, -1, -1, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, -1, -1, -1, 272, 273, 274, 275,
+ -1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
+ 44, -1, -1, -1, -1, -1, -1, -1, 294, 295,
+ -1, -1, 93, -1, 58, 59, -1, -1, -1, 63,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 41, -1, -1, 44, -1, 281,
+ -1, -1, -1, 285, 286, 287, 288, -1, -1, 93,
+ -1, 58, 59, -1, -1, -1, 63, 299, 300, 301,
+ 302, -1, 304, 305, -1, -1, 308, -1, -1, 311,
+ 312, 313, 41, -1, -1, 44, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 93, -1, -1, 58,
+ 59, -1, -1, -1, 63, -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, 294, 295, 93, -1, 298, 299, 300, 301,
+ 302, -1, 304, 305, -1, -1, 308, -1, -1, 311,
+ 312, 313, -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, 294,
+ 295, -1, -1, 298, 299, 300, 301, 302, -1, 304,
+ 305, 41, -1, 308, 44, -1, 311, 312, 313, -1,
+ -1, 272, 273, 274, 275, -1, -1, -1, 58, 59,
+ 281, -1, -1, 63, 285, 286, 287, 288, -1, -1,
+ -1, -1, -1, 294, 295, -1, -1, 298, 299, 300,
+ 301, 302, -1, 304, 305, -1, -1, 308, 272, 273,
+ 274, 275, -1, 93, -1, -1, -1, 281, -1, -1,
+ -1, 285, 286, 287, 288, -1, -1, -1, -1, -1,
+ 294, 295, -1, -1, 298, 299, 300, 301, 302, -1,
+ 304, 305, -1, -1, 308, 272, 273, 274, 275, -1,
+ -1, -1, -1, -1, 281, -1, -1, -1, 285, 286,
+ 287, 288, -1, -1, -1, -1, -1, 294, 295, -1,
+ -1, 298, 299, 300, 301, 302, -1, 304, 305, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ -1, -1, 281, -1, -1, -1, 285, 286, 287, 288,
+ 41, -1, -1, 44, -1, 294, 295, -1, -1, 298,
+ 299, 300, 301, 302, -1, 304, 305, 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, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 93, 58, 59, -1, -1, -1, 63, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 41, -1, -1, 44, -1, -1, -1, -1, 93, -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, 294, 295, -1, -1, 298, 299,
+ 300, 301, 302, 41, 304, 305, 44, -1, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
- 297, 298, 299, 300, 301, -1, -1, 304, 305, -1,
- -1, 308, -1, -1, 311, 312, 313, -1, 269, 270,
- 271, 272, -1, 58, -1, 93, -1, 278, 63, -1,
- -1, -1, 283, 284, 285, 286, -1, -1, -1, -1,
- -1, 292, 293, -1, -1, -1, 297, 298, 299, 300,
- 301, -1, 41, 304, 305, 44, 91, 308, -1, -1,
- -1, -1, -1, 269, 270, 271, 272, -1, -1, 58,
- 59, -1, 278, -1, 63, -1, -1, 283, 284, 285,
- 286, -1, -1, -1, -1, -1, 292, 293, 123, -1,
- -1, 297, 298, 299, 300, 301, -1, 41, 304, 305,
- 44, -1, 308, -1, 93, -1, -1, -1, 269, 270,
- 271, 272, -1, -1, 58, 59, -1, 278, -1, 63,
- -1, -1, 283, 284, 285, 286, -1, -1, -1, -1,
- -1, 292, 293, -1, -1, -1, 297, 298, 299, 300,
- 301, -1, -1, 304, 305, 41, -1, -1, 44, 93,
- -1, -1, -1, -1, -1, -1, 269, 270, 271, 272,
- -1, -1, 58, 59, -1, 278, -1, 63, -1, -1,
- 283, 284, 285, 286, -1, -1, -1, -1, -1, 292,
- 293, -1, -1, -1, 297, 298, 299, 300, 301, -1,
- 41, 304, 305, 44, -1, -1, -1, 93, -1, -1,
- -1, 269, 270, 271, 272, -1, -1, 58, 59, -1,
- 278, -1, 63, -1, -1, 283, 284, 285, 286, -1,
- -1, -1, -1, -1, 292, 293, -1, -1, -1, 297,
- 298, 299, 300, 301, -1, 41, 304, 305, 44, -1,
- -1, -1, 93, 278, -1, -1, -1, -1, 283, 284,
- 285, 286, 58, 59, -1, -1, -1, 63, -1, -1,
- -1, -1, 297, 298, 299, 300, 301, -1, -1, 304,
- 305, -1, -1, 308, -1, -1, 311, 312, 313, -1,
- 269, 270, 271, 272, -1, -1, -1, 93, -1, 278,
- 63, -1, -1, -1, 283, 284, 285, 286, -1, -1,
- -1, -1, -1, 292, 293, -1, -1, -1, 297, 298,
- 299, 300, 301, -1, 41, 304, 305, 44, 91, -1,
- -1, -1, -1, -1, -1, 269, 270, 271, 272, -1,
- -1, 58, 59, -1, 278, -1, 63, -1, -1, 283,
- 284, 285, 286, -1, -1, -1, -1, -1, 292, 293,
- 123, -1, -1, 297, 298, 299, 300, 301, -1, -1,
- 304, 305, 41, -1, -1, 44, 93, -1, -1, -1,
- -1, -1, -1, 269, 270, 271, 272, -1, -1, 58,
- 59, -1, 278, -1, 63, -1, -1, 283, 284, 285,
- 286, -1, -1, -1, -1, -1, 292, 293, -1, -1,
- -1, 297, 298, 299, 300, 301, -1, 41, 304, 305,
- 44, -1, -1, -1, 93, -1, -1, -1, 269, 270,
- 271, 272, -1, -1, 58, 59, -1, 278, -1, 63,
- -1, -1, 283, 284, 285, 286, -1, -1, -1, -1,
- -1, 292, 293, -1, -1, -1, 297, 298, 299, 300,
- 301, -1, 41, 304, 305, 44, -1, -1, -1, 93,
- -1, -1, -1, 269, 270, 271, 272, -1, -1, 58,
- 59, -1, 278, -1, 63, -1, -1, 283, 284, 285,
- 286, -1, -1, -1, -1, 41, 292, 293, 44, -1,
- -1, 297, 298, 299, 300, 301, -1, -1, 304, -1,
- -1, -1, 58, 59, 93, 278, -1, 63, -1, -1,
- 283, 284, 285, 286, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 297, 298, 299, 300, 301, -1,
- 41, 304, 305, 44, -1, 308, -1, 93, 311, 312,
- 313, -1, 269, 270, 271, 272, 41, 58, 59, 44,
- -1, 278, 63, -1, -1, -1, 283, 284, -1, 286,
- -1, -1, -1, 58, 59, 292, 293, -1, 63, -1,
- 297, 298, 299, 300, 301, -1, -1, 304, 41, -1,
- -1, 44, 93, -1, -1, -1, -1, -1, -1, -1,
- 269, 270, 271, 272, 41, 58, 59, 44, 93, 278,
- 63, -1, -1, -1, 283, 284, -1, -1, -1, -1,
- -1, 58, 59, 292, 293, -1, 63, -1, 297, 298,
- 299, 300, 301, -1, -1, 304, -1, -1, -1, -1,
- 93, -1, -1, -1, -1, 269, 270, 271, 272, 41,
- -1, -1, 44, -1, 278, -1, 93, -1, -1, 283,
- 284, -1, -1, -1, -1, -1, 58, 59, 292, 293,
- -1, 63, -1, 297, 298, 299, 300, 301, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 63, -1,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, 278,
- -1, 93, -1, -1, 283, 284, -1, -1, -1, -1,
- -1, -1, -1, 292, 293, -1, 91, -1, 297, 298,
- 299, 300, 301, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, 278, -1, -1, -1, -1, 283, 284, -1,
- -1, -1, -1, -1, -1, -1, 292, 293, 123, -1,
- -1, 297, 298, 299, 300, 301, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, 278, -1, -1,
- -1, -1, 283, 284, 269, 270, 271, 272, -1, -1,
- -1, 292, 293, 278, -1, -1, 297, 298, 299, 300,
- 301, -1, -1, -1, -1, -1, -1, 292, 293, -1,
- -1, -1, 297, 298, 299, 300, 269, 270, 271, 272,
- -1, -1, -1, -1, -1, 278, -1, -1, -1, -1,
- -1, 284, 269, 270, 271, 272, -1, -1, -1, 292,
- 293, 278, -1, -1, 297, 298, 299, 300, 301, -1,
- -1, -1, -1, -1, -1, 292, 293, -1, -1, -1,
- 297, 298, 299, 300, 301, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 35, -1, 269, 270, 271,
- 272, 41, 42, -1, -1, -1, 278, -1, 48, 49,
- 50, 51, 52, 53, 54, -1, -1, 57, 58, -1,
- 292, 293, -1, 278, -1, 297, 298, 299, 283, 284,
- 285, 286, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 298, 299, 300, 301, -1, -1, 304,
- 305, 91, -1, 308, -1, -1, 311, 312, 313, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 93, 58, 59, -1, -1,
+ -1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 93, -1, 58, 59, -1, -1, -1, 63, -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, 285, 286, 287, 288, 93, -1,
+ -1, -1, -1, 294, 295, -1, -1, 298, 299, 300,
+ 301, 302, -1, 304, 305, -1, -1, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, -1, -1, -1,
+ 285, 286, 287, 288, 41, -1, -1, 44, -1, 294,
+ 295, -1, -1, 298, 299, 300, 301, 302, -1, 304,
+ 305, 58, 59, -1, -1, -1, 63, -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, 294, 295, -1, 93, 298, 299, 300,
+ 301, 302, 41, 304, 305, 44, -1, -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, 294, 295, -1, -1,
+ 298, 299, 300, 301, 302, -1, 304, 305, -1, -1,
+ 272, 273, 274, 275, 93, -1, -1, -1, -1, 281,
+ -1, -1, -1, 285, 286, 287, 288, -1, -1, -1,
+ -1, -1, 294, 295, -1, -1, 298, 299, 300, 301,
+ 302, 41, 304, -1, 44, -1, -1, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, -1, 58, 59,
+ 285, 286, -1, 63, -1, -1, -1, -1, -1, 294,
+ 295, -1, -1, 298, 299, 300, 301, 302, 41, 304,
+ -1, 44, -1, -1, -1, -1, -1, -1, 41, -1,
+ -1, 44, -1, 93, -1, 58, 59, -1, -1, -1,
+ 63, -1, -1, -1, -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,
+ 93, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ 93, 58, 59, -1, 281, -1, 63, -1, 285, 286,
+ -1, -1, -1, -1, -1, -1, 41, 294, 295, 44,
+ -1, 298, 299, 300, 301, 302, 41, -1, -1, 44,
+ -1, -1, -1, 58, 59, -1, 93, -1, 63, -1,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, 58,
+ -1, -1, 281, -1, 63, -1, 285, 286, 93, -1,
+ -1, -1, -1, -1, -1, 294, 295, -1, 93, 298,
+ 299, 300, 301, 302, -1, -1, -1, -1, -1, -1,
+ -1, -1, 91, -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, 123, -1, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, -1,
+ -1, 281, -1, -1, -1, 285, 286, -1, -1, -1,
+ -1, -1, -1, -1, 294, 295, -1, -1, 298, 299,
+ 300, 301, 302, -1, -1, -1, -1, -1, -1, 272,
+ 273, 274, 275, -1, -1, -1, -1, -1, 281, 272,
+ 273, 274, 275, 286, -1, -1, -1, -1, 281, -1,
+ -1, 294, 295, -1, -1, 298, 299, 300, 301, 302,
+ -1, 294, 295, -1, -1, 298, 299, 300, 301, 302,
+ -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, 294, 295, -1,
+ -1, 298, 299, 300, 301, 302, -1, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, -1, -1, 294,
+ 295, -1, -1, 298, 299, 300, 301, -1, -1, 294,
+ 295, -1, 281, 298, 299, 300, 285, 286, 287, 288,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 298,
+ 299, 300, 301, 302, -1, 304, 305, 30, -1, 308,
+ -1, -1, 311, 312, 313, 38, -1, -1, -1, -1,
+ 43, 44, -1, -1, -1, -1, -1, 50, 51, 52,
+ 53, 54, 55, -1, -1, 58, 59, -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, 90, -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, -1, -1,
- -1, -1, -1, 143, -1, -1, -1, -1, -1, -1,
- -1, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 143, -1, -1, -1, -1, -1, -1, -1, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, -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,
@@ -1021,10 +1107,11 @@ dEXT short yycheck[] = { 13,
-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, 253, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 256, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 281,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 284,
};
#define YYFINAL 1
#ifndef YYDEBUG
@@ -1041,13 +1128,13 @@ dEXT char * yyname[] = {
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,
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,
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","LABEL","FORMAT","SUB","ANONSUB","PACKAGE","USE","WHILE",
-"UNTIL","IF","UNLESS","ELSE","ELSIF","CONTINUE","FOR","LOOPEX","DOTDOT","FUNC0",
-"FUNC1","FUNC","FUNC0SUB","RELOP","EQOP","MULOP","ADDOP","DOLSHARP","DO",
-"LOCAL","HASHBRACK","NOAMP","OROP","ANDOP","NOTOP","LSTOP","LSTOPSUB",
-"ASSIGNOP","OROR","ANDAND","BITOROP","BITANDOP","UNIOP","UNIOPSUB","SHIFTOP",
-"MATCHOP","UMINUS","REFGEN","POWOP","PREINC","PREDEC","POSTINC","POSTDEC",
-"ARROW",
+"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","LOCAL","HASHBRACK","NOAMP","OROP","ANDOP",
+"NOTOP","LSTOP","ASSIGNOP","OROR","ANDAND","BITOROP","BITANDOP","UNIOP",
+"SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP","PREINC","PREDEC","POSTINC",
+"POSTDEC","ARROW",
};
dEXT char * yyrule[] = {
"$accept : prog",
@@ -1104,10 +1191,9 @@ dEXT char * yyrule[] = {
"startsub :",
"package : PACKAGE WORD ';'",
"package : PACKAGE ';'",
-"use : USE WORD listexpr ';'",
+"use : USE startsub WORD listexpr ';'",
"expr : expr ANDOP expr",
"expr : expr OROP expr",
-"expr : NOTOP expr",
"expr : argexpr",
"argexpr : argexpr ','",
"argexpr : argexpr ',' term",
@@ -1154,6 +1240,7 @@ dEXT char * yyrule[] = {
"term : HASHBRACK ';' '}'",
"term : ANONSUB startsub proto block",
"term : scalar",
+"term : star '{' expr ';' '}'",
"term : star",
"term : scalar '[' expr ']'",
"term : term ARROW '[' expr ']'",
@@ -1181,6 +1268,7 @@ dEXT char * yyrule[] = {
"term : DO scalar '(' expr ')'",
"term : LOOPEX",
"term : LOOPEX term",
+"term : NOTOP argexpr",
"term : UNIOP",
"term : UNIOP block",
"term : UNIOP term",
@@ -1231,9 +1319,9 @@ dEXT int yyerrflag;
dEXT int yychar;
dEXT YYSTYPE yyval;
dEXT YYSTYPE yylval;
-#line 562 "perly.y"
+#line 572 "perly.y"
/* PROGRAM */
-#line 1307 "y.tab.c"
+#line 1394 "y_tab.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
@@ -1458,7 +1546,7 @@ yyreduce:
switch (yyn)
{
case 1:
-#line 83 "perly.y"
+#line 84 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
yydebug = (debug & 1);
@@ -1467,38 +1555,38 @@ case 1:
}
break;
case 2:
-#line 90 "perly.y"
+#line 91 "perly.y"
{ newPROG(yyvsp[0].opval); }
break;
case 3:
-#line 94 "perly.y"
+#line 95 "perly.y"
{ yyval.opval = block_end(yyvsp[-3].ival,yyvsp[-2].ival,yyvsp[-1].opval); }
break;
case 4:
-#line 98 "perly.y"
+#line 99 "perly.y"
{ yyval.ival = block_start(); }
break;
case 5:
-#line 102 "perly.y"
+#line 103 "perly.y"
{ yyval.opval = Nullop; }
break;
case 6:
-#line 104 "perly.y"
+#line 105 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
case 7:
-#line 106 "perly.y"
+#line 107 "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 8:
-#line 113 "perly.y"
+#line 114 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); }
break;
case 10:
-#line 116 "perly.y"
+#line 117 "perly.y"
{ if (yyvsp[-1].pval != Nullch) {
yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
}
@@ -1509,120 +1597,120 @@ case 10:
expect = XSTATE; }
break;
case 11:
-#line 125 "perly.y"
+#line 126 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
expect = XSTATE; }
break;
case 12:
-#line 130 "perly.y"
+#line 131 "perly.y"
{ yyval.opval = Nullop; }
break;
case 13:
-#line 132 "perly.y"
+#line 133 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 14:
-#line 134 "perly.y"
+#line 135 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 15:
-#line 136 "perly.y"
+#line 137 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 16:
-#line 138 "perly.y"
+#line 139 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); }
break;
case 17:
-#line 140 "perly.y"
+#line 141 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, invert(scalar(yyvsp[0].opval)), yyvsp[-2].opval);}
break;
case 18:
-#line 144 "perly.y"
+#line 145 "perly.y"
{ yyval.opval = Nullop; }
break;
case 19:
-#line 146 "perly.y"
+#line 147 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 20:
-#line 148 "perly.y"
+#line 149 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, 0,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval));
hints |= HINT_BLOCK_SCOPE; }
break;
case 21:
-#line 155 "perly.y"
+#line 156 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); }
break;
case 22:
-#line 158 "perly.y"
+#line 159 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newCONDOP(0,
invert(scalar(yyvsp[-3].opval)), scope(yyvsp[-1].opval), yyvsp[0].opval); }
break;
case 23:
-#line 162 "perly.y"
+#line 163 "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 24:
-#line 166 "perly.y"
+#line 167 "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 25:
-#line 173 "perly.y"
+#line 174 "perly.y"
{ yyval.opval = Nullop; }
break;
case 26:
-#line 175 "perly.y"
+#line 176 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 27:
-#line 179 "perly.y"
+#line 180 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, yyvsp[-6].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval) ); }
break;
case 28:
-#line 184 "perly.y"
+#line 185 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, yyvsp[-6].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
invert(scalar(yyvsp[-3].opval)), yyvsp[-1].opval, yyvsp[0].opval) ); }
break;
case 29:
-#line 189 "perly.y"
+#line 190 "perly.y"
{ copline = yyvsp[-3].ival;
yyval.opval = newSTATEOP(0, yyvsp[-4].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
scope(yyvsp[-2].opval), yyvsp[-1].opval, yyvsp[0].opval) ); }
break;
case 30:
-#line 194 "perly.y"
+#line 195 "perly.y"
{ copline = yyvsp[-3].ival;
yyval.opval = newSTATEOP(0, yyvsp[-4].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
invert(scalar(scope(yyvsp[-2].opval))), yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 31:
-#line 199 "perly.y"
+#line 200 "perly.y"
{ yyval.opval = newFOROP(0, yyvsp[-7].pval, yyvsp[-6].ival, mod(yyvsp[-5].opval, OP_ENTERLOOP),
yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 32:
-#line 202 "perly.y"
+#line 203 "perly.y"
{ yyval.opval = newFOROP(0, yyvsp[-6].pval, yyvsp[-5].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 33:
-#line 205 "perly.y"
+#line 206 "perly.y"
{ copline = yyvsp[-8].ival;
yyval.opval = append_elem(OP_LINESEQ,
newSTATEOP(0, yyvsp[-9].pval, scalar(yyvsp[-6].opval)),
@@ -1631,336 +1719,336 @@ case 33:
scalar(yyvsp[-4].opval), yyvsp[0].opval, scalar(yyvsp[-2].opval)) )); }
break;
case 34:
-#line 212 "perly.y"
+#line 213 "perly.y"
{ yyval.opval = newSTATEOP(0,
yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop,
Nullop, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 35:
-#line 218 "perly.y"
+#line 219 "perly.y"
{ yyval.opval = Nullop; }
break;
case 37:
-#line 223 "perly.y"
+#line 224 "perly.y"
{ (void)scan_num("1"); yyval.opval = yylval.opval; }
break;
case 39:
-#line 228 "perly.y"
+#line 229 "perly.y"
{ yyval.pval = Nullch; }
break;
case 41:
-#line 233 "perly.y"
+#line 234 "perly.y"
{ yyval.ival = 0; }
break;
case 42:
-#line 235 "perly.y"
+#line 236 "perly.y"
{ yyval.ival = 0; }
break;
case 43:
-#line 237 "perly.y"
+#line 238 "perly.y"
{ yyval.ival = 0; }
break;
case 44:
-#line 239 "perly.y"
+#line 240 "perly.y"
{ yyval.ival = 0; }
break;
case 45:
-#line 243 "perly.y"
+#line 244 "perly.y"
{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 46:
-#line 245 "perly.y"
+#line 246 "perly.y"
{ newFORM(yyvsp[-1].ival, Nullop, yyvsp[0].opval); }
break;
case 47:
-#line 249 "perly.y"
+#line 250 "perly.y"
{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 48:
-#line 251 "perly.y"
+#line 252 "perly.y"
{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, Nullop); expect = XSTATE; }
break;
case 49:
-#line 255 "perly.y"
+#line 256 "perly.y"
{ yyval.opval = Nullop; }
break;
case 51:
-#line 260 "perly.y"
+#line 261 "perly.y"
{ yyval.ival = start_subparse(); }
break;
case 52:
-#line 264 "perly.y"
+#line 265 "perly.y"
{ package(yyvsp[-1].opval); }
break;
case 53:
-#line 266 "perly.y"
+#line 267 "perly.y"
{ package(Nullop); }
break;
case 54:
-#line 270 "perly.y"
-{ utilize(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval); }
+#line 271 "perly.y"
+{ utilize(yyvsp[-4].ival, yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval); }
break;
case 55:
-#line 274 "perly.y"
+#line 275 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
case 56:
-#line 276 "perly.y"
+#line 277 "perly.y"
{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 57:
-#line 278 "perly.y"
-{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
-break;
-case 59:
-#line 283 "perly.y"
+case 58:
+#line 282 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 60:
-#line 285 "perly.y"
+case 59:
+#line 284 "perly.y"
{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 62:
-#line 290 "perly.y"
+case 61:
+#line 289 "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 63:
-#line 293 "perly.y"
+case 62:
+#line 292 "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 64:
-#line 296 "perly.y"
+case 63:
+#line 295 "perly.y"
{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
prepend_elem(OP_LIST, yyvsp[-5].opval, yyvsp[-1].opval),
newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); }
break;
-case 65:
-#line 301 "perly.y"
+case 64:
+#line 300 "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 66:
-#line 306 "perly.y"
+case 65:
+#line 305 "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 67:
-#line 311 "perly.y"
+case 66:
+#line 310 "perly.y"
{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 68:
-#line 313 "perly.y"
+case 67:
+#line 312 "perly.y"
{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 69:
-#line 315 "perly.y"
+case 68:
+#line 314 "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].ival)); }
+ yyvsp[-3].opval)); }
break;
-case 72:
-#line 326 "perly.y"
+case 71:
+#line 325 "perly.y"
{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); }
break;
-case 73:
-#line 328 "perly.y"
+case 72:
+#line 327 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 74:
-#line 330 "perly.y"
+case 73:
+#line 329 "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 74:
+#line 333 "perly.y"
+{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
+break;
case 75:
-#line 334 "perly.y"
+#line 335 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 76:
-#line 336 "perly.y"
+#line 337 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 77:
-#line 338 "perly.y"
+#line 339 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 78:
-#line 340 "perly.y"
+#line 341 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 79:
-#line 342 "perly.y"
+#line 343 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 80:
-#line 344 "perly.y"
-{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
-break;
-case 81:
-#line 346 "perly.y"
+#line 345 "perly.y"
{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
break;
-case 82:
-#line 348 "perly.y"
+case 81:
+#line 347 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 83:
-#line 350 "perly.y"
+case 82:
+#line 349 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 84:
-#line 352 "perly.y"
+case 83:
+#line 351 "perly.y"
{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 85:
-#line 354 "perly.y"
+case 84:
+#line 353 "perly.y"
{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 86:
-#line 357 "perly.y"
+case 85:
+#line 356 "perly.y"
{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
break;
-case 87:
-#line 359 "perly.y"
+case 86:
+#line 358 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 88:
-#line 361 "perly.y"
+case 87:
+#line 360 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 89:
-#line 363 "perly.y"
+case 88:
+#line 362 "perly.y"
{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
break;
-case 90:
-#line 365 "perly.y"
+case 89:
+#line 364 "perly.y"
{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
break;
-case 91:
-#line 367 "perly.y"
+case 90:
+#line 366 "perly.y"
{ yyval.opval = newUNOP(OP_POSTINC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTINC)); }
break;
-case 92:
-#line 370 "perly.y"
+case 91:
+#line 369 "perly.y"
{ yyval.opval = newUNOP(OP_POSTDEC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); }
break;
-case 93:
-#line 373 "perly.y"
+case 92:
+#line 372 "perly.y"
{ yyval.opval = newUNOP(OP_PREINC, 0,
mod(scalar(yyvsp[0].opval), OP_PREINC)); }
break;
-case 94:
-#line 376 "perly.y"
+case 93:
+#line 375 "perly.y"
{ yyval.opval = newUNOP(OP_PREDEC, 0,
mod(scalar(yyvsp[0].opval), OP_PREDEC)); }
break;
-case 95:
-#line 379 "perly.y"
+case 94:
+#line 378 "perly.y"
{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
break;
-case 96:
-#line 381 "perly.y"
+case 95:
+#line 380 "perly.y"
{ yyval.opval = sawparens(yyvsp[-1].opval); }
break;
-case 97:
-#line 383 "perly.y"
+case 96:
+#line 382 "perly.y"
{ yyval.opval = sawparens(newNULLLIST()); }
break;
-case 98:
-#line 385 "perly.y"
+case 97:
+#line 384 "perly.y"
{ yyval.opval = newANONLIST(yyvsp[-1].opval); }
break;
-case 99:
-#line 387 "perly.y"
+case 98:
+#line 386 "perly.y"
{ yyval.opval = newANONLIST(Nullop); }
break;
-case 100:
-#line 389 "perly.y"
+case 99:
+#line 388 "perly.y"
{ yyval.opval = newANONHASH(yyvsp[-2].opval); }
break;
-case 101:
-#line 391 "perly.y"
+case 100:
+#line 390 "perly.y"
{ yyval.opval = newANONHASH(Nullop); }
break;
-case 102:
-#line 393 "perly.y"
+case 101:
+#line 392 "perly.y"
{ yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
-case 103:
-#line 395 "perly.y"
+case 102:
+#line 394 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
+case 103:
+#line 396 "perly.y"
+{ yyval.opval = newBINOP(OP_GELEM, 0, newGVREF(0,yyvsp[-4].opval), yyvsp[-2].opval); }
+break;
case 104:
-#line 397 "perly.y"
+#line 398 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 105:
-#line 399 "perly.y"
+#line 400 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); }
break;
case 106:
-#line 401 "perly.y"
+#line 402 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
case 107:
-#line 405 "perly.y"
+#line 406 "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 108:
-#line 409 "perly.y"
+#line 410 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 109:
-#line 411 "perly.y"
+#line 412 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 110:
-#line 413 "perly.y"
+#line 414 "perly.y"
{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));}
break;
case 111:
-#line 415 "perly.y"
+#line 416 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
case 112:
-#line 418 "perly.y"
+#line 419 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
case 113:
-#line 423 "perly.y"
+#line 424 "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 114:
-#line 428 "perly.y"
+#line 429 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); }
break;
case 115:
-#line 430 "perly.y"
+#line 431 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); }
break;
case 116:
-#line 432 "perly.y"
+#line 433 "perly.y"
{ yyval.opval = prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
@@ -1968,7 +2056,7 @@ case 116:
ref(yyvsp[-3].opval, OP_ASLICE))); }
break;
case 117:
-#line 438 "perly.y"
+#line 439 "perly.y"
{ yyval.opval = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1977,13 +2065,12 @@ case 117:
expect = XOPERATOR; }
break;
case 118:
-#line 445 "perly.y"
+#line 446 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 119:
-#line 447 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, 0,
- scalar(yyvsp[0].opval)); }
+#line 448 "perly.y"
+{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); }
break;
case 120:
#line 450 "perly.y"
@@ -1998,7 +2085,7 @@ case 122:
#line 455 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
- yyvsp[0].opval, newCVREF(scalar(yyvsp[-1].opval)))); }
+ yyvsp[0].opval, newCVREF(0,scalar(yyvsp[-1].opval)))); }
break;
case 123:
#line 459 "perly.y"
@@ -2010,146 +2097,158 @@ case 124:
break;
case 125:
#line 463 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
+{ yyval.opval = newUNOP(OP_ENTERSUB,
+ OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
- scalar(newCVREF(scalar(yyvsp[-2].opval))), Nullop)); dep();}
+ scalar(newCVREF(
+ (OPpENTERSUB_AMPER<<8),
+ scalar(yyvsp[-2].opval)
+ )),Nullop)); dep();}
break;
case 126:
-#line 467 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
+#line 471 "perly.y"
+{ yyval.opval = newUNOP(OP_ENTERSUB,
+ OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
yyvsp[-1].opval,
- scalar(newCVREF(scalar(yyvsp[-3].opval))))); dep();}
+ scalar(newCVREF(
+ (OPpENTERSUB_AMPER<<8),
+ scalar(yyvsp[-3].opval)
+ )))); dep();}
break;
case 127:
-#line 472 "perly.y"
+#line 480 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
- scalar(newCVREF(scalar(yyvsp[-2].opval))), Nullop)); dep();}
+ scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();}
break;
case 128:
-#line 476 "perly.y"
+#line 484 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
yyvsp[-1].opval,
- scalar(newCVREF(scalar(yyvsp[-3].opval))))); dep();}
+ scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();}
break;
case 129:
-#line 481 "perly.y"
+#line 489 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
hints |= HINT_BLOCK_SCOPE; }
break;
case 130:
-#line 484 "perly.y"
+#line 492 "perly.y"
{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); }
break;
case 131:
-#line 486 "perly.y"
-{ yyval.opval = newOP(yyvsp[0].ival, 0); }
+#line 494 "perly.y"
+{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
case 132:
-#line 488 "perly.y"
-{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
+#line 496 "perly.y"
+{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
case 133:
-#line 490 "perly.y"
+#line 498 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
case 134:
-#line 492 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
- append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].ival))); }
+#line 500 "perly.y"
+{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
case 135:
-#line 495 "perly.y"
-{ yyval.opval = newOP(yyvsp[0].ival, 0); }
+#line 502 "perly.y"
+{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
case 136:
-#line 497 "perly.y"
-{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
+#line 505 "perly.y"
+{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
case 137:
-#line 499 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, 0,
- scalar(yyvsp[0].ival)); }
+#line 507 "perly.y"
+{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
break;
case 138:
-#line 502 "perly.y"
-{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
+#line 509 "perly.y"
+{ yyval.opval = newUNOP(OP_ENTERSUB, 0,
+ scalar(yyvsp[0].opval)); }
break;
case 139:
-#line 504 "perly.y"
-{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
+#line 512 "perly.y"
+{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
break;
case 140:
-#line 506 "perly.y"
-{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
+#line 514 "perly.y"
+{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
case 141:
-#line 508 "perly.y"
-{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
+#line 516 "perly.y"
+{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
break;
-case 144:
-#line 514 "perly.y"
-{ yyval.opval = Nullop; }
+case 142:
+#line 518 "perly.y"
+{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
break;
case 145:
-#line 516 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
+#line 524 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 146:
-#line 520 "perly.y"
-{ yyval.opval = Nullop; }
+#line 526 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 147:
-#line 522 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
+#line 530 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 148:
-#line 524 "perly.y"
-{ yyval.opval = yyvsp[-1].opval; }
+#line 532 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 149:
-#line 528 "perly.y"
-{ yyval.opval = newCVREF(yyvsp[0].opval); }
+#line 534 "perly.y"
+{ yyval.opval = yyvsp[-1].opval; }
break;
case 150:
-#line 532 "perly.y"
-{ yyval.opval = newSVREF(yyvsp[0].opval); }
+#line 538 "perly.y"
+{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
break;
case 151:
-#line 536 "perly.y"
-{ yyval.opval = newAVREF(yyvsp[0].opval); }
+#line 542 "perly.y"
+{ yyval.opval = newSVREF(yyvsp[0].opval); }
break;
case 152:
-#line 540 "perly.y"
-{ yyval.opval = newHVREF(yyvsp[0].opval); }
+#line 546 "perly.y"
+{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
case 153:
-#line 544 "perly.y"
-{ yyval.opval = newAVREF(yyvsp[0].opval); }
+#line 550 "perly.y"
+{ yyval.opval = newHVREF(yyvsp[0].opval); }
break;
case 154:
-#line 548 "perly.y"
-{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
+#line 554 "perly.y"
+{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
case 155:
-#line 552 "perly.y"
-{ yyval.opval = scalar(yyvsp[0].opval); }
+#line 558 "perly.y"
+{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
break;
case 156:
-#line 554 "perly.y"
-{ yyval.opval = scalar(yyvsp[0].opval); }
+#line 562 "perly.y"
+{ yyval.opval = scalar(yyvsp[0].opval); }
break;
case 157:
-#line 556 "perly.y"
-{ yyval.opval = scope(yyvsp[0].opval); }
+#line 564 "perly.y"
+{ yyval.opval = scalar(yyvsp[0].opval); }
break;
case 158:
-#line 559 "perly.y"
+#line 566 "perly.y"
+{ yyval.opval = scope(yyvsp[0].opval); }
+break;
+case 159:
+#line 569 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-#line 2139 "y.tab.c"
+#line 2237 "y_tab.c"
}
yyssp -= yym;
yystate = *yyssp;
diff --git a/vms/perly_h.vms b/vms/perly_h.vms
index 17a3769ef4..c6ec3a41ad 100644
--- a/vms/perly_h.vms
+++ b/vms/perly_h.vms
@@ -1,50 +1,51 @@
+/* Postprocessed by vms_yfix.pl 1.1 to add VMS declarations of globals */
#define WORD 257
#define METHOD 258
#define FUNCMETH 259
#define THING 260
#define PMFUNC 261
#define PRIVATEREF 262
-#define LABEL 263
-#define FORMAT 264
-#define SUB 265
-#define ANONSUB 266
-#define PACKAGE 267
-#define USE 268
-#define WHILE 269
-#define UNTIL 270
-#define IF 271
-#define UNLESS 272
-#define ELSE 273
-#define ELSIF 274
-#define CONTINUE 275
-#define FOR 276
-#define LOOPEX 277
-#define DOTDOT 278
-#define FUNC0 279
-#define FUNC1 280
-#define FUNC 281
-#define FUNC0SUB 282
-#define RELOP 283
-#define EQOP 284
-#define MULOP 285
-#define ADDOP 286
-#define DOLSHARP 287
-#define DO 288
-#define LOCAL 289
-#define HASHBRACK 290
-#define NOAMP 291
-#define OROP 292
-#define ANDOP 293
-#define NOTOP 294
-#define LSTOP 295
-#define LSTOPSUB 296
-#define ASSIGNOP 297
-#define OROR 298
-#define ANDAND 299
-#define BITOROP 300
-#define BITANDOP 301
-#define UNIOP 302
-#define UNIOPSUB 303
+#define FUNC0SUB 263
+#define UNIOPSUB 264
+#define LSTOPSUB 265
+#define LABEL 266
+#define FORMAT 267
+#define SUB 268
+#define ANONSUB 269
+#define PACKAGE 270
+#define USE 271
+#define WHILE 272
+#define UNTIL 273
+#define IF 274
+#define UNLESS 275
+#define ELSE 276
+#define ELSIF 277
+#define CONTINUE 278
+#define FOR 279
+#define LOOPEX 280
+#define DOTDOT 281
+#define FUNC0 282
+#define FUNC1 283
+#define FUNC 284
+#define RELOP 285
+#define EQOP 286
+#define MULOP 287
+#define ADDOP 288
+#define DOLSHARP 289
+#define DO 290
+#define LOCAL 291
+#define HASHBRACK 292
+#define NOAMP 293
+#define OROP 294
+#define ANDOP 295
+#define NOTOP 296
+#define LSTOP 297
+#define ASSIGNOP 298
+#define OROR 299
+#define ANDAND 300
+#define BITOROP 301
+#define BITANDOP 302
+#define UNIOP 303
#define SHIFTOP 304
#define MATCHOP 305
#define UMINUS 306
diff --git a/vms/sockadapt.c b/vms/sockadapt.c
index 69f5def785..08251d6bdf 100644
--- a/vms/sockadapt.c
+++ b/vms/sockadapt.c
@@ -1,7 +1,7 @@
/* sockadapt.c
*
* Author: Charles Bailey bailey@genetics.upenn.edu
- * Last Revised: 17-Mar-1995
+ * Last Revised: 29-Jan-1996
*
* This file should contain stubs for any of the TCP/IP functions perl5
* requires which are not supported by your TCP/IP stack. These stubs
@@ -13,22 +13,31 @@
#include "EXTERN.h"
#include "perl.h"
+#if defined(__DECC) && defined(__DECC_VER) && (__DECC_VER >= 50200000)
+# define __sockadapt_my_netent_t __struct_netent_ptr32
+# define __sockadapt_my_addr_t __in_addr_t
+# define __sockadapt_my_name_t const char *
+#else
+# define __sockadapt_my_netent_t struct netent *
+# define __sockadapt_my_addr_t long
+# define __sockadapt_my_name_t char *
+#endif
-void endnetent() {
- croak("Function \"endnetent\" not implemented in this version of perl");
-}
-struct netent *getnetbyaddr( long net, int type) {
+__sockadapt_my_netent_t getnetbyaddr( __sockadapt_my_addr_t net, int type) {
croak("Function \"getnetbyaddr\" not implemented in this version of perl");
return (struct netent *)NULL; /* Avoid MISSINGRETURN warning, not reached */
}
-struct netent *getnetbyname( char *name) {
+__sockadapt_my_netent_t getnetbyname( __sockadapt_my_name_t name) {
croak("Function \"getnetbyname\" not implemented in this version of perl");
return (struct netent *)NULL; /* Avoid MISSINGRETURN warning, not reached */
}
-struct netent *getnetent() {
+__sockadapt_my_netent_t getnetent() {
croak("Function \"getnetent\" not implemented in this version of perl");
return (struct netent *)NULL; /* Avoid MISSINGRETURN warning, not reached */
}
void setnetent() {
croak("Function \"setnetent\" not implemented in this version of perl");
}
+void endnetent() {
+ croak("Function \"endnetent\" not implemented in this version of perl");
+}
diff --git a/vms/vms.c b/vms/vms.c
index 9a079414af..10e2db45a9 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -2,7 +2,7 @@
*
* VMS-specific routines for perl5
*
- * Last revised: 22-Nov-1995 by Charles Bailey bailey@genetics.upenn.edu
+ * Last revised: 18-Jan-1996 by Charles Bailey bailey@genetics.upenn.edu
* Version: 5.2.0
*/
@@ -36,6 +36,19 @@
#include "perl.h"
#include "XSUB.h"
+/* gcc's header files don't #define direct access macros
+ * corresponding to VAXC's variant structs */
+#ifdef __GNUC__
+# define uic$v_format uic$r_uic_form.uiv$v_format
+# define uic$v_group uic$r_uic_form.uiv$v_group
+# define uic$v_member uic$r_uic_form.uiv$v_member
+# define prv$v_bypass prv$r_prvdef_bits0.prv$v_bypass
+# define prv$v_grpprv prv$r_prvdef_bits0.prv$v_grpprv
+# define prv$v_readall prv$r_prvdef_bits0.prv$v_readall
+# define prv$v_sysprv prv$r_prvdef_bits0.prv$v_sysprv
+#endif
+
+
struct itmlst_3 {
unsigned short int buflen;
unsigned short int itmcode;
@@ -43,30 +56,34 @@ struct itmlst_3 {
unsigned short int *retlen;
};
-static char *
-my_trnlnm(char *lnm, char *eqv)
+int
+my_trnlnm(char *lnm, char *eqv, unsigned long int idx)
{
static char __my_trnlnm_eqv[LNM$C_NAMLENGTH+1];
unsigned short int eqvlen;
unsigned long int retsts, attr = LNM$M_CASE_BLIND;
$DESCRIPTOR(tabdsc,"LNM$FILE_DEV");
struct dsc$descriptor_s lnmdsc = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,0};
- struct itmlst_3 lnmlst[2] = {{LNM$C_NAMLENGTH, LNM$_STRING,0, &eqvlen},
+ struct itmlst_3 lnmlst[3] = {{sizeof idx, LNM$_INDEX, &idx, 0},
+ {LNM$C_NAMLENGTH, LNM$_STRING, 0, &eqvlen},
{0, 0, 0, 0}};
if (!eqv) eqv = __my_trnlnm_eqv;
- lnmlst[0].bufadr = (void *)eqv;
+ lnmlst[1].bufadr = (void *)eqv;
lnmdsc.dsc$a_pointer = lnm;
lnmdsc.dsc$w_length = strlen(lnm);
retsts = sys$trnlnm(&attr,&tabdsc,&lnmdsc,0,lnmlst);
- if (retsts == SS$_NOLOGNAM || retsts == SS$_IVLOGNAM) return Nullch;
+ if (retsts == SS$_NOLOGNAM || retsts == SS$_IVLOGNAM) {
+ set_vaxc_errno(retsts); set_errno(EINVAL); return 0;
+ }
else if (retsts & 1) {
eqv[eqvlen] = '\0';
- return eqv;
+ return 1;
}
_ckvmssts(retsts); /* Must be an error */
- return Nullch; /* Not reached, assuming _ckvmssts() bails out */
-}
+ return 0; /* Not reached, assuming _ckvmssts() bails out */
+
+} /* end of my_trnlnm */
/* my_getenv
* Translate a logical name. Substitute for CRTL getenv() to avoid
@@ -82,6 +99,7 @@ my_getenv(char *lnm)
{
static char __my_getenv_eqv[LNM$C_NAMLENGTH+1];
char uplnm[LNM$C_NAMLENGTH], *cp1, *cp2;
+ unsigned long int idx = 0;
for (cp1 = lnm, cp2= uplnm; *cp1; cp1++, cp2++) *cp2 = _toupper(*cp1);
*cp2 = '\0';
@@ -89,24 +107,31 @@ my_getenv(char *lnm)
getcwd(__my_getenv_eqv,sizeof __my_getenv_eqv);
return __my_getenv_eqv;
}
- else if (my_trnlnm(uplnm,__my_getenv_eqv) != NULL) {
- return __my_getenv_eqv;
- }
else {
- unsigned long int retsts;
- struct dsc$descriptor_s symdsc = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,0},
- valdsc = {sizeof __my_getenv_eqv,DSC$K_DTYPE_T,
- DSC$K_CLASS_S, __my_getenv_eqv};
- symdsc.dsc$w_length = cp1 - lnm;
- symdsc.dsc$a_pointer = uplnm;
- retsts = lib$get_symbol(&symdsc,&valdsc,&(valdsc.dsc$w_length),0);
- if (retsts == LIB$_INVSYMNAM) return Nullch;
- if (retsts != LIB$_NOSUCHSYM) {
- /* We want to return only logical names or CRTL Unix emulations */
- if (retsts & 1) return Nullch;
- _ckvmssts(retsts);
+ if ((cp2 = strchr(uplnm,';')) != NULL) {
+ *cp2 = '\0';
+ idx = strtoul(cp2+1,NULL,0);
+ }
+ if (my_trnlnm(uplnm,__my_getenv_eqv,idx)) {
+ return __my_getenv_eqv;
+ }
+ else {
+ unsigned long int retsts;
+ struct dsc$descriptor_s symdsc = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,0},
+ valdsc = {sizeof __my_getenv_eqv,DSC$K_DTYPE_T,
+ DSC$K_CLASS_S, __my_getenv_eqv};
+ symdsc.dsc$w_length = cp1 - lnm;
+ symdsc.dsc$a_pointer = uplnm;
+ retsts = lib$get_symbol(&symdsc,&valdsc,&(valdsc.dsc$w_length),0);
+ if (retsts == LIB$_INVSYMNAM) return Nullch;
+ if (retsts != LIB$_NOSUCHSYM) {
+ /* We want to return only logical names or CRTL Unix emulations */
+ if (retsts & 1) return Nullch;
+ _ckvmssts(retsts);
+ }
+ /* Try for CRTL emulation of a Unix/POSIX name */
+ else return getenv(lnm);
}
- else return getenv(lnm); /* Try for CRTL emulation of a Unix/POSIX name */
}
return Nullch;
@@ -149,6 +174,69 @@ my_setenv(char *lnm,char *eqv)
} /* end of my_setenv() */
/*}}}*/
+
+/*{{{ char *my_crypt(const char *textpasswd, const char *usrname)*/
+/* my_crypt - VMS password hashing
+ * my_crypt() provides an interface compatible with the Unix crypt()
+ * C library function, and uses sys$hash_password() to perform VMS
+ * password hashing. The quadword hashed password value is returned
+ * as a NUL-terminated 8 character string. my_crypt() does not change
+ * the case of its string arguments; in order to match the behavior
+ * of LOGINOUT et al., alphabetic characters in both arguments must
+ * be upcased by the caller.
+ */
+char *
+my_crypt(const char *textpasswd, const char *usrname)
+{
+# ifndef UAI$C_PREFERRED_ALGORITHM
+# define UAI$C_PREFERRED_ALGORITHM 127
+# endif
+ unsigned char alg = UAI$C_PREFERRED_ALGORITHM;
+ unsigned short int salt = 0;
+ unsigned long int sts;
+ struct const_dsc {
+ unsigned short int dsc$w_length;
+ unsigned char dsc$b_type;
+ unsigned char dsc$b_class;
+ const char * dsc$a_pointer;
+ } usrdsc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0},
+ txtdsc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
+ struct itmlst_3 uailst[3] = {
+ { sizeof alg, UAI$_ENCRYPT, &alg, 0},
+ { sizeof salt, UAI$_SALT, &salt, 0},
+ { 0, 0, NULL, NULL}};
+ static char hash[9];
+
+ usrdsc.dsc$w_length = strlen(usrname);
+ usrdsc.dsc$a_pointer = usrname;
+ if (!((sts = sys$getuai(0, 0, &usrdsc, uailst, 0, 0, 0)) & 1)) {
+ switch (sts) {
+ case SS$_NOGRPPRV:
+ case SS$_NOSYSPRV:
+ set_errno(EACCES);
+ break;
+ case RMS$_RNF:
+ set_errno(ESRCH); /* There isn't a Unix no-such-user error */
+ break;
+ default:
+ set_errno(EVMSERR);
+ }
+ set_vaxc_errno(sts);
+ if (sts != RMS$_RNF) return NULL;
+ }
+
+ txtdsc.dsc$w_length = strlen(textpasswd);
+ txtdsc.dsc$a_pointer = textpasswd;
+ if (!((sts = sys$hash_password(&txtdsc, alg, salt, &usrdsc, &hash)) & 1)) {
+ set_errno(EVMSERR); set_vaxc_errno(sts); return NULL;
+ }
+
+ return (char *) hash;
+
+} /* end of my_crypt() */
+/*}}}*/
+
+
static char *do_fileify_dirspec(char *, char *, int);
static char *do_tovmsspec(char *, char *, int);
@@ -560,11 +648,11 @@ I32 my_pclose(FILE *fp)
/* get here => no such pipe open */
croak("No such pipe open");
+ fclose(info->fp);
+
if (info->done) retsts = info->completion;
else waitpid(info->pid,(int *) &retsts,0);
- fclose(info->fp);
-
/* remove from list of open pipes */
if (last) last->next = info->next;
else open_pipes = info->next;
@@ -691,15 +779,32 @@ static char *do_fileify_dirspec(char *dir,char *buf,int ts)
char *retspec, *cp1, *cp2, *lastdir;
char trndir[NAM$C_MAXRSS+1], vmsdir[NAM$C_MAXRSS+1];
- if (dir == NULL) return NULL;
+ if (!dir || !*dir) {
+ set_errno(EINVAL); set_vaxc_errno(SS$_BADPARAM); return NULL;
+ }
dirlen = strlen(dir);
if (dir[dirlen-1] == '/') dir[--dirlen] = '\0';
+ if (!dirlen) {
+ set_errno(ENOTDIR);
+ set_vaxc_errno(RMS$_DIR);
+ return NULL;
+ }
if (!strpbrk(dir+1,"/]>:")) {
strcpy(trndir,*dir == '/' ? dir + 1: dir);
- while (!strpbrk(trndir,"/]>:>") && my_trnlnm(trndir,trndir) != NULL) ;
+ while (!strpbrk(trndir,"/]>:>") && my_trnlnm(trndir,trndir,0)) ;
dir = trndir;
dirlen = strlen(dir);
}
+ /* If we were handed a rooted logical name or spec, treat it like a
+ * simple directory, so that
+ * $ Define myroot dev:[dir.]
+ * ... do_fileify_dirspec("myroot",buf,1) ...
+ * does something useful.
+ */
+ if (!strcmp(dir+dirlen-2,".]")) {
+ dir[--dirlen] = '\0';
+ dir[dirlen-1] = ']';
+ }
if (!strpbrk(dir,"]:>")) { /* Unix-style path or plain dir name */
if (dir[0] == '.') {
@@ -848,6 +953,11 @@ static char *do_fileify_dirspec(char *dir,char *buf,int ts)
strcpy(retspec,esa);
return retspec;
}
+ if ((cp1 = strstr(esa,".][000000]")) != NULL) {
+ for (cp2 = cp1 + 9; *cp2; cp1++,cp2++) *cp1 = *cp2;
+ *cp1 = '\0';
+ dirnam.nam$b_esl -= 9;
+ }
if ((cp1 = strrchr(esa,']')) == NULL) cp1 = strrchr(esa,'>');
if (cp1 == NULL) return NULL; /* should never happen */
term = *cp1;
@@ -930,10 +1040,26 @@ static char *do_pathify_dirspec(char *dir,char *buf, int ts)
unsigned long int retlen;
char *retpath, *cp1, *cp2, trndir[NAM$C_MAXRSS+1];
- if (dir == NULL) return NULL;
+ if (!dir || !*dir) {
+ set_errno(EINVAL); set_vaxc_errno(SS$_BADPARAM); return NULL;
+ }
+
+ if (*dir) strcpy(trndir,dir);
+ else getcwd(trndir,sizeof trndir - 1);
+
+ while (!strpbrk(trndir,"/]:>") && my_trnlnm(trndir,trndir,0)) {
+ STRLEN trnlen = strlen(trndir);
- strcpy(trndir,dir);
- while (!strpbrk(trndir,"/]:>") && my_trnlnm(trndir,trndir) != NULL) ;
+ /* Trap simple rooted lnms, and return lnm:[000000] */
+ if (!strcmp(trndir+trnlen-2,".]")) {
+ if (buf) retpath = buf;
+ else if (ts) New(7018,retpath,strlen(dir)+10,char);
+ else retpath = __pathify_retbuf;
+ strcpy(retpath,dir);
+ strcat(retpath,":[000000]");
+ return retpath;
+ }
+ }
dir = trndir;
if (!strpbrk(dir,"]:>")) { /* Unix-style path or plain dir name */
@@ -1201,7 +1327,7 @@ static char *do_tovmsspec(char *path, char *buf, int ts) {
while (*(++cp2) != '/' && *cp2) *(cp1++) = *cp2;
*cp1 = '\0';
- islnm = (my_trnlnm(rslt,trndev) != Nullch);
+ islnm = my_trnlnm(rslt,trndev,0);
trnend = islnm ? strlen(trndev) - 1 : 0;
islnm = trnend ? (trndev[trnend] == ']' || trndev[trnend] == '>') : 0;
rooted = islnm ? (trndev[trnend-1] == '.') : 0;
@@ -1658,7 +1784,6 @@ static void expand_wild_cards(char *item,
int expcount = 0;
unsigned long int context = 0;
int isunix = 0;
-int status_value;
char *had_version;
char *had_device;
int had_directory;
@@ -1667,7 +1792,7 @@ char vmsspec[NAM$C_MAXRSS+1];
$DESCRIPTOR(filespec, "");
$DESCRIPTOR(defaultspec, "SYS$DISK:[]");
$DESCRIPTOR(resultspec, "");
-unsigned long int zero = 0;
+unsigned long int zero = 0, sts;
if (strcspn(item, "*%") == strlen(item))
{
@@ -1692,8 +1817,8 @@ unsigned long int zero = 0;
had_device = strchr(item, ':');
had_directory = (isunix || NULL != strchr(item, '[')) || (NULL != strchr(item, '<'));
- while (1 == (1&lib$find_file(&filespec, &resultspec, &context,
- &defaultspec, 0, &status_value, &zero)))
+ while (1 == (1 & (sts = lib$find_file(&filespec, &resultspec, &context,
+ &defaultspec, 0, 0, &zero))))
{
char *string;
char *c;
@@ -1720,10 +1845,28 @@ unsigned long int zero = 0;
add_item(head, tail, string, count);
++expcount;
}
+ if (sts != RMS$_NMF)
+ {
+ set_vaxc_errno(sts);
+ switch (sts)
+ {
+ case RMS$_FNF:
+ case RMS$_DIR:
+ set_errno(ENOENT); break;
+ case RMS$_DEV:
+ set_errno(ENODEV); break;
+ case RMS$_SYN:
+ set_errno(EINVAL); break;
+ case RMS$_PRV:
+ set_errno(EACCES); break;
+ default:
+ _ckvmssts(sts);
+ }
+ }
if (expcount == 0)
add_item(head, tail, item, count);
- lib$sfree1_dd(&resultspec);
- lib$find_file_end(&context);
+ _ckvmssts(lib$sfree1_dd(&resultspec));
+ _ckvmssts(lib$find_file_end(&context));
}
static int child_st[2];/* Event Flag set when child process completes */
@@ -2035,17 +2178,12 @@ readdir(DIR *dd)
set_vaxc_errno(tmpsts);
switch (tmpsts) {
case RMS$_PRV:
- set_errno(EACCES);
- break;
+ set_errno(EACCES); break;
case RMS$_DEV:
- set_errno(ENODEV);
- break;
+ set_errno(ENODEV); break;
case RMS$_DIR:
- set_errno(ENOTDIR);
- break;
case RMS$_FNF:
- set_errno(ENOENT);
- break;
+ set_errno(ENOENT); break;
default:
set_errno(EVMSERR);
}
@@ -2479,7 +2617,7 @@ static int fillpasswd (const char *name, struct passwd *pwd)
static unsigned short lowner, luic, ldefdev, ldefdir, ldefcli, lpwd;
struct dsc$descriptor_s name_desc;
- int status;
+ unsigned long int sts;
static struct itmlst_3 itmlst[]= {
{UAI$S_OWNER+1, UAI$_OWNER, &owner, &lowner},
@@ -2496,8 +2634,12 @@ static int fillpasswd (const char *name, struct passwd *pwd)
name_desc.dsc$a_pointer= (char *) name;
/* Note that sys$getuai returns many fields as counted strings. */
- status= sys$getuai(0, 0, &name_desc, &itmlst, 0, 0, 0);
- if (!(status&1)) return status;
+ sts= sys$getuai(0, 0, &name_desc, &itmlst, 0, 0, 0);
+ if (sts == SS$_NOSYSPRV || sts == SS$_NOGRPPRV || sts == RMS$_RNF) {
+ set_vaxc_errno(sts); set_errno(sts == RMS$_RNF ? EINVAL : EACCES);
+ }
+ else { _ckvmssts(sts); }
+ if (!(sts & 1)) return 0; /* out here in case _ckvmssts() doesn't abort */
if ((int) owner.length < lowner) lowner= (int) owner.length;
if ((int) defdev.length < ldefdev) ldefdev= (int) defdev.length;
@@ -2526,7 +2668,7 @@ static int fillpasswd (const char *name, struct passwd *pwd)
else
strcpy(pwd->pw_unixdir, pwd->pw_dir);
_mystrtolower(pwd->pw_unixdir);
- return status;
+ return 1;
}
/*
@@ -2540,8 +2682,7 @@ struct passwd *my_getpwnam(char *name)
unsigned long int status, stat;
__pwdcache = __passwd_empty;
- if ((status = fillpasswd(name, &__pwdcache)) == SS$_NOSYSPRV
- || status == SS$_NOGRPPRV || status == RMS$_RNF) {
+ if (!fillpasswd(name, &__pwdcache)) {
/* We still may be able to determine pw_uid and pw_gid */
name_desc.dsc$w_length= strlen(name);
name_desc.dsc$b_dtype= DSC$K_DTYPE_T;
@@ -2551,10 +2692,15 @@ struct passwd *my_getpwnam(char *name)
__pwdcache.pw_uid= uic.uic$l_uic;
__pwdcache.pw_gid= uic.uic$v_group;
}
- else if (stat == SS$_NOSUCHID || stat == RMS$_PRV) return NULL;
- else { _ckvmssts(stat); }
+ else {
+ if (stat == SS$_NOSUCHID || stat == SS$_IVIDENT || stat == RMS$_PRV) {
+ set_vaxc_errno(stat);
+ set_errno(stat == RMS$_PRV ? EACCES : EINVAL);
+ return NULL;
+ }
+ else { _ckvmssts(stat); }
+ }
}
- else { _ckvmssts(status); }
strncpy(__pw_namecache, name, sizeof(__pw_namecache));
__pw_namecache[sizeof __pw_namecache - 1] = '\0';
__pwdcache.pw_name= __pw_namecache;
@@ -2578,6 +2724,8 @@ struct passwd *my_getpwuid(Uid_t uid)
do {
status = sys$idtoasc(-1, &lname, &name_desc, &uic, 0, &contxt);
if (status == SS$_NOSUCHID || status == RMS$_PRV) {
+ set_vaxc_errno(status);
+ set_errno(status == RMS$_PRV ? EACCES : EINVAL);
my_endpwent();
return NULL;
}
@@ -2586,11 +2734,17 @@ struct passwd *my_getpwuid(Uid_t uid)
}
else {
uic.uic$l_uic= uid;
- if (!uic.uic$v_group) uic.uic$v_group= getgid();
+ if (!uic.uic$v_group)
+ uic.uic$v_group= getgid();
if (valid_uic(uic))
status = sys$idtoasc(uic.uic$l_uic, &lname, &name_desc, 0, 0, 0);
else status = SS$_IVIDENT;
- _ckvmssts(status);
+ if (status == SS$_IVIDENT || status == SS$_NOSUCHID ||
+ status == RMS$_PRV) {
+ set_vaxc_errno(status); set_errno(status == RMS$_PRV ? EACCES : EINVAL);
+ return NULL;
+ }
+ else { _ckvmssts(status); }
}
__pw_namecache[lname]= '\0';
_mystrtolower(__pw_namecache);
@@ -2604,9 +2758,7 @@ struct passwd *my_getpwuid(Uid_t uid)
__pwdcache.pw_uid = uic.uic$l_uic;
__pwdcache.pw_gid = uic.uic$v_group;
- status = fillpasswd(__pw_namecache, &__pwdcache);
- if (status != SS$_NOSYSPRV && status != SS$_NOGRPPRV &&
- status != RMS$_RNF) { _ckvmssts(status); }
+ fillpasswd(__pw_namecache, &__pwdcache);
return &__pwdcache;
} /* end of my_getpwuid() */
@@ -2810,7 +2962,7 @@ cando(I32 bit, I32 effective, struct stat *statbufp)
namdsc.dsc$a_pointer = fname;
namdsc.dsc$w_length = sizeof fname - 1;
- retsts = lib$fid_to_name(&devdsc,statbufp->st_inode_u.fid,&namdsc,
+ retsts = lib$fid_to_name(&devdsc,&(statbufp->st_ino),&namdsc,
&namdsc.dsc$w_length,0,0);
if (retsts & 1) {
fname[namdsc.dsc$w_length] = '\0';
@@ -2826,6 +2978,7 @@ cando(I32 bit, I32 effective, struct stat *statbufp)
} /* end of cando() */
/*}}}*/
+
/*{{{I32 cando_by_name(I32 bit, I32 effective, char *fname)*/
I32
cando_by_name(I32 bit, I32 effective, char *fname)
@@ -2884,10 +3037,10 @@ cando_by_name(I32 bit, I32 effective, char *fname)
necessary privs currently enabled? */
_ckvmssts(sys$getjpiw(0,0,0,jpilst,iosb,0,0));
if ((privused & CHP$M_BYPASS) && !curprv.prv$v_bypass) return FALSE;
- if ((privused & CHP$M_SYSPRV) && !curprv.prv$v_sysprv
- && !curprv.prv$v_bypass) return FALSE;
- if ((privused & CHP$M_GRPPRV) && !curprv.prv$v_grpprv
- && !curprv.prv$v_sysprv && !curprv.prv$v_bypass) return FALSE;
+ if ((privused & CHP$M_SYSPRV) && !curprv.prv$v_sysprv &&
+ !curprv.prv$v_bypass) return FALSE;
+ if ((privused & CHP$M_GRPPRV) && !curprv.prv$v_grpprv &&
+ !curprv.prv$v_sysprv && !curprv.prv$v_bypass) return FALSE;
if ((privused & CHP$M_READALL) && !curprv.prv$v_readall) return FALSE;
return TRUE;
}
@@ -2962,6 +3115,17 @@ flex_stat(char *fspec, struct mystat *statbufp)
#define stat mystat
/*}}}*/
+/*{{{char *my_getlogin()*/
+/* VMS cuserid == Unix getlogin, except calling sequence */
+char *
+my_getlogin()
+{
+ static char user[L_cuserid];
+ return cuserid(user);
+}
+/*}}}*/
+
+
/*** The following glue provides 'hooks' to make some of the routines
* from this file available from Perl. These routines are sufficiently
* basic, and are required sufficiently early in the build process,
diff --git a/vms/vms_yfix.pl b/vms/vms_yfix.pl
index 323a40d792..33af914b25 100644
--- a/vms/vms_yfix.pl
+++ b/vms/vms_yfix.pl
@@ -6,20 +6,26 @@
# If it finds that the input files are already patches for VMS,
# it just copies the input to the output.
#
-# Revised 26-May-1995 by Charles Bailey bailey@genetics.upenn.edu
+# Revised 29-Jan-1996 by Charles Bailey bailey@genetics.upenn.edu
+
+$VERSION = '1.1';
($cinfile,$hinfile,$coutfile,$houtfile) = @ARGV;
open C,$cinfile or die "Can't read $cinfile: $!\n";
open COUT, ">$coutfile" or die "Can't create $coutfile: $!\n";
+print COUT <<EOH;
+/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
+EOH
while (<C>) {
- if (/^dEXT/) { # we've already got a fixed copy
- print COUT $_,<C>;
- last;
+ # "y.tab.c" is illegal as a VMS filename; DECC 5.2/VAX preprocessor
+ # doesn't like this.
+ if ( s/^#line\s+(\d+)\s+"y.tab.c"/#line $1 "y_tab.c"/ ) { 1; }
+ else {
+ # add the dEXT tag to definitions of global vars, so we'll insert
+ # a globaldef when perly.c is compiled
+ s/^(short|int|YYSTYPE|char \*)\s*yy/dEXT $1 yy/;
}
- # add the dEXT tag to definitions of global vars, so we'll insert
- # a globaldef when perly.c is compiled
- s/^(short|int|YYSTYPE|char \*)\s*yy/dEXT $1 yy/;
print COUT;
}
close C;
@@ -27,6 +33,9 @@ close COUT;
open H,$hinfile or die "Can't read $hinfile: $!\n";
open HOUT, ">$houtfile" or die "Can't create $houtfile: $!\n";
+print HOUT <<EOH;
+/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
+EOH
$hfixed = 0; # keep -w happy
while (<H>) {
$hfixed = /globalref/ unless $hfixed; # we've already got a fixed copy
diff --git a/vms/vmsish.h b/vms/vmsish.h
index 65f182c2ff..6492773e88 100644
--- a/vms/vmsish.h
+++ b/vms/vmsish.h
@@ -3,7 +3,7 @@
* VMS-specific C header file for perl5.
*
* Last revised: 01-Oct-1995 by Charles Bailey bailey@genetics.upenn.edu
- * Version: 5.2.b1
+ * Version: 5.1.6
*/
#ifndef __vmsish_h_included
@@ -89,6 +89,8 @@
#include "sockadapt.h"
#endif
+#define BIT_BUCKET "_NLA0:"
+#define PERL_SYS_INIT(c,v) getredirection((c),(v))
#define HAS_KILL
#define HAS_WAIT
@@ -177,6 +179,12 @@ struct tms {
#define DYNAMIC_ENV_FETCH 1
#define ENV_HV_NAME "%EnV%VmS%"
+/* Thin jacket around cuserid() tomatch Unix' calling sequence */
+#define getlogin my_getlogin
+
+/* Ditto for sys$hash_passwrod() . . . */
+#define crypt my_crypt
+
/* Use our own stat() clones, which handle Unix-style directory names */
#define Stat(name,bufptr) flex_stat(name,bufptr)
#define Fstat(fd,bufptr) flex_fstat(fd,bufptr)
@@ -228,7 +236,14 @@ struct passwd {
/* Our own stat_t substitute, since we play with st_dev and st_ino -
* we want atomic types so Unix-bound code which compares these fields
- * for two files will work most of the time under VMS
+ * for two files will work most of the time under VMS.
+ * N.B. 1. The st_ino hack assumes that sizeof(unsigned short[3]) ==
+ * sizeof(unsigned) + sizeof(unsigned short). We can't use a union type
+ * to map the unsigned int we want and the unsigned short[3] the CRTL
+ * returns into the same member, since gcc has different ideas than DECC
+ * and VAXC about sizing union types.
+ * N.B 2. The routine cando() in vms.c assumes that &stat.st_ino is the
+ * address of a FID.
*/
/* First, grab the system types, so we don't clobber them later */
#include <stat.h>
@@ -247,10 +262,8 @@ struct passwd {
struct mystat
{
char *st_devnam; /* pointer to device name */
- union {
- unsigned short fid[3];
- unsigned long st_ino_mostly;
- } st_inode_u;
+ unsigned st_ino; /* hack - CRTL uses unsigned short[3] for */
+ unsigned short rvn; /* FID (num,seq,rvn) */
unsigned short st_mode; /* file "mode" i.e. prot, dir, reg, etc. */
int st_nlink; /* for compatibility - not really used */
unsigned st_uid; /* from ACP - QIO uic field */
@@ -265,14 +278,10 @@ struct mystat
char st_fab_fsz; /* fixed header size */
unsigned st_dev; /* encoded device name */
};
-#ifdef st_ino
-# undef st_ino
-#endif
-#define st_ino st_inode_u.st_ino_mostly
#define stat mystat
typedef unsigned mydev_t;
#define dev_t mydev_t
-typedef unsigned long myino_t;
+typedef unsigned myino_t;
#define ino_t myino_t
#if defined(__DECC) || defined(__DECCXX)
# pragma __member_alignment __restore
@@ -294,8 +303,11 @@ typedef unsigned long myino_t;
* __VMS_PROTOTYPES__ and __VMS_SEPYTOTORP__ lines, and must be in the form
* <data type><TAB>name<WHITESPACE>_((<prototype args>));
*/
-typedef char __VMS_PROTOTYPES__; /* prototype section start marker */
+/* prototype section start marker; `typedef' passes through cpp */
+typedef char __VMS_PROTOTYPES__;
+int my_trnlnm _((char *, char *, unsigned long int));
char * my_getenv _((char *));
+char * my_crypt _((const char *, const char *));
unsigned long int waitpid _((unsigned long int, int *, int));
char * my_gconvert _((double, int, int, char *));
int do_rmdir _((char *));
@@ -335,8 +347,10 @@ struct passwd * my_getpwnam _((char *name));
struct passwd * my_getpwuid _((Uid_t uid));
struct passwd * my_getpwent _(());
void my_endpwent _(());
+char * my_getlogin _(());
void init_os_extras _(());
-typedef char __VMS_SEPYTOTORP__; /* prototype section end marker */
+typedef char __VMS_SEPYTOTORP__;
+/* prototype section end marker; `typedef' passes through cpp */
#ifndef VMS_DO_SOCKETS
/* This relies on tricks in perl.h to pick up that these manifest constants